From 953d7d04284640438485b40cfbbf86ecba714497 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 13 May 2025 16:27:34 +0200 Subject: [PATCH] Translated using Weblate (Ukrainian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (340 of 340 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (50 of 50 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (179 of 179 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (339 of 339 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (59 of 59 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (333 of 333 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (333 of 333 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (53 of 53 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (111 of 111 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (80 of 80 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (24 of 24 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (2 of 2 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (48 of 48 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (43 of 43 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (177 of 177 strings) Co-authored-by: Hosted Weblate Co-authored-by: Sotski Eugene Co-authored-by: Максим Горпиніч Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/uk/ Translation: Frigate NVR/common Translation: Frigate NVR/components-camera Translation: Frigate NVR/components-dialog Translation: Frigate NVR/components-icons Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-live Translation: Frigate NVR/views-settings Translation: Frigate NVR/views-system --- web/public/locales/uk/common.json | 9 +- web/public/locales/uk/components/camera.json | 76 ++- web/public/locales/uk/components/dialog.json | 9 +- web/public/locales/uk/components/icons.json | 2 +- web/public/locales/uk/views/events.json | 3 +- web/public/locales/uk/views/explore.json | 197 ++++++- web/public/locales/uk/views/faceLibrary.json | 97 +++- web/public/locales/uk/views/live.json | 6 +- web/public/locales/uk/views/settings.json | 579 ++++++++++++++++++- web/public/locales/uk/views/system.json | 159 ++++- 10 files changed, 1104 insertions(+), 33 deletions(-) diff --git a/web/public/locales/uk/common.json b/web/public/locales/uk/common.json index 79c01da24..564e00a5e 100644 --- a/web/public/locales/uk/common.json +++ b/web/public/locales/uk/common.json @@ -74,6 +74,10 @@ "formattedTimestamp2": { "12hour": "MM/dd h:mm:ssa", "24hour": "d MMM HH:mm:ss" + }, + "formattedTimestampMonthDayYear": { + "24hour": "МММ д, рррр", + "12hour": "МММ д, рррр" } }, "button": { @@ -175,7 +179,10 @@ "title": "Живи", "allCameras": "Всi камери", "cameras": { - "title": "Камери" + "title": "Камери", + "count_one": "{{count}} Камера", + "count_few": "{{count}} Камери", + "count_many": "{{count}} Камер" } }, "review": "Перегляд", diff --git a/web/public/locales/uk/components/camera.json b/web/public/locales/uk/components/camera.json index 26fd97db4..fc7a89c20 100644 --- a/web/public/locales/uk/components/camera.json +++ b/web/public/locales/uk/components/camera.json @@ -1,13 +1,83 @@ { "group": { "name": { - "placeholder": "Введіть назву…" - } + "placeholder": "Введіть назву…", + "errorMessage": { + "exists": "Назва групи камер вже існує.", + "mustLeastCharacters": "Назва групи камер має містити щонайменше 2 символи.", + "nameMustNotPeriod": "Назва групи камер не повинна містити крапку.", + "invalid": "Недійсна назва групи камер." + }, + "label": "Ім'я" + }, + "camera": { + "setting": { + "streamMethod": { + "method": { + "noStreaming": { + "label": "Без потокового передавання", + "desc": "Зображення з камер оновлюватимуться лише раз на хвилину, і пряма трансляція не відбуватиметься." + }, + "continuousStreaming": { + "desc": { + "warning": "Безперервна потокова передача може призвести до високого використання пропускної здатності та проблем із продуктивністю. Використовуйте обережно.", + "title": "Зображення з камери завжди транслюватиметься в реальному часі, коли воно відображається на панелі приладів, навіть якщо жодної активності не виявлено." + }, + "label": "Безперервна потокова передача" + }, + "smartStreaming": { + "label": "Розумне потокове передавання (рекомендовано)", + "desc": "Інтелектуальна потокова передача оновлює зображення з камери раз на хвилину за відсутності видимої активності, щоб заощадити смугу пропускання і ресурси. При виявленні активності зображення плавно перемикається на пряму трансляцію." + } + }, + "label": "Метод потокової передачі" + }, + "audioIsUnavailable": "Аудіо недоступне для цієї трансляції", + "title": "{{cameraName}} Налаштування потокової передачі", + "audio": { + "tips": { + "document": "Прочитайте документацію ", + "title": "Аудіо має виводитися з вашої камери та бути налаштованим у go2rtc для цього потоку." + } + }, + "label": "Налаштування потокової передачі з камери", + "desc": "Змініть параметри прямої трансляції для панелі керування цієї групи камер. Ці налаштування залежать від пристрою/браузера.", + "audioIsAvailable": "Для цього потоку доступне аудіо", + "compatibilityMode": { + "label": "Режим сумісності", + "desc": "Увімкніть цю опцію, лише якщо пряма трансляція вашої камери відображає кольорові артефакти та має діагональну лінію з правого боку зображення." + } + } + }, + "edit": "Редагувати групу камер", + "delete": { + "label": "Видалити групу камер", + "confirm": { + "title": "Підтвердити видалення", + "desc": "Ви впевнені, що хочете видалити групу камер? {{name}}?" + } + }, + "success": "Групу камер ({{name}}) збережено.", + "label": "Групи камер", + "add": "Додати групу камер", + "cameras": { + "label": "Камери", + "desc": "Виберіть камери для цієї групи." + }, + "icon": "Значок" }, "debug": { "zones": "Зони", "mask": "Маска", "motion": "Рух", - "regions": "Регiони" + "regions": "Регiони", + "options": { + "label": "Налаштування", + "title": "Опції", + "showOptions": "Показати параметри", + "hideOptions": "Приховати параметри" + }, + "boundingBox": "Обмежувальна рамка", + "timestamp": "Позначка часу" } } diff --git a/web/public/locales/uk/components/dialog.json b/web/public/locales/uk/components/dialog.json index 60c921b34..43cb9bd9b 100644 --- a/web/public/locales/uk/components/dialog.json +++ b/web/public/locales/uk/components/dialog.json @@ -73,7 +73,10 @@ "end": { "title": "Час закінчення", "label": "Вибрати час закінчення" - } + }, + "lastHour_one": "Остання {{count}} година", + "lastHour_few": "Останні {{count}} години", + "lastHour_many": "Останні {{count}} годин" }, "name": { "placeholder": "Введіть назву для експорту" @@ -92,6 +95,10 @@ "title": "Підтвердити вилучення", "desc": { "selected": "Ви впевнені, що хочете видалити все записане відео, пов'язане з цим пунктом огляду?

Утримуйте клавішу Shift, щоб обійти це діалогове вікно в майбутньому." + }, + "toast": { + "error": "Не вдалося видалити: {{error}}", + "success": "Відеозаписи, пов’язані з вибраними елементами огляду, успішно видалено." } } }, diff --git a/web/public/locales/uk/components/icons.json b/web/public/locales/uk/components/icons.json index 65d0cd681..bb5ab6e94 100644 --- a/web/public/locales/uk/components/icons.json +++ b/web/public/locales/uk/components/icons.json @@ -2,7 +2,7 @@ "iconPicker": { "selectIcon": "Оберіть іконку", "search": { - "placeholder": "Пошук iконки…" + "placeholder": "Пошук значка…" } } } diff --git a/web/public/locales/uk/views/events.json b/web/public/locales/uk/views/events.json index f78ac8501..486923a35 100644 --- a/web/public/locales/uk/views/events.json +++ b/web/public/locales/uk/views/events.json @@ -33,5 +33,6 @@ "newReviewItems": { "label": "Переглянути нові елементи огляду", "button": "Нові матеріали для перегляду" - } + }, + "detected": "виявлено" } diff --git a/web/public/locales/uk/views/explore.json b/web/public/locales/uk/views/explore.json index f87a2c3a2..40cb68fb7 100644 --- a/web/public/locales/uk/views/explore.json +++ b/web/public/locales/uk/views/explore.json @@ -2,9 +2,202 @@ "exploreIsUnavailable": { "downloadingModels": { "tips": { - "documentation": "Прочитати документацію" + "documentation": "Прочитати документацію", + "context": "Можливо, вам варто переіндексувати вбудовування відстежуваних об'єктів після завантаження моделей." + }, + "setup": { + "visionModel": "Модель зору", + "visionModelFeatureExtractor": "Екстрактор ознак моделі зору", + "textModel": "Текстова модель", + "textTokenizer": "Токенізатор тексту" + }, + "error": "Сталася помилка. Перевірте журнали Frigate.", + "context": "Frigate завантажує необхідні моделі вбудовування для підтримки функції семантичного пошуку. Це може тривати кілька хвилин залежно від швидкості вашого мережевого з’єднання." + }, + "title": "Огляд недоступний", + "embeddingsReindexing": { + "context": "Функцію «Дослідити» можна використовувати після завершення переіндексації вбудовування відстежуваних об’єктів.", + "startingUp": "Запуск…", + "estimatedTime": "Орієнтовний час, що залишився:", + "finishingShortly": "Закінчується незабаром", + "step": { + "thumbnailsEmbedded": "Вбудовані мініатюри: ", + "descriptionsEmbedded": "Вбудовані описи: ", + "trackedObjectsProcessed": "Оброблено відстежуваних об'єктів: " } } }, - "documentTitle": "Пошук подій - Frigate" + "documentTitle": "Пошук подій - Frigate", + "searchResult": { + "tooltip": "Збігається з {{type}} на рівні {{confidence}}%", + "deleteTrackedObject": { + "toast": { + "error": "Не вдалося видалити відстежуваний об'єкт: {{errorMessage}}", + "success": "Відстежуваний об'єкт успішно видалено." + } + } + }, + "trackedObjectsCount_one": "{{count}} відстежуваний об'єкт ", + "trackedObjectsCount_few": "{{count}} відстежувані об'єкти ", + "trackedObjectsCount_many": "{{count}} відстежувані об'єктів ", + "objectLifecycle": { + "title": "Життєвий цикл об'єкта", + "createObjectMask": "Створити маску об'єкта", + "annotationSettings": { + "title": "Налаштування анотацій", + "offset": { + "desc": "Ці дані надходять із сигналу виявлення вашої камери, але накладаються на зображення із сигналу запису. Малоймовірно, що два потоки ідеально синхронізовані. В результаті, обмежувальна рамка та відеоматеріал не будуть ідеально вирівняні. Однак, для налаштування цього можна скористатися полем annotation_offset.", + "tips": "ПОРАДА: Уявіть, що є кліп події, в якому людина йде зліва направо. Якщо рамка часової шкали події постійно знаходиться ліворуч від людини, то значення слід зменшити. Аналогічно, якщо людина йде зліва направо, а обмежувальна рамка постійно знаходиться попереду неї, тоді значення слід збільшити.", + "label": "Зсув анотації", + "documentation": "Прочитайте документацію ", + "millisecondsToOffset": "Мілісекунди для зміщення виявлених анотацій. За замовчуванням: 0" + }, + "showAllZones": { + "title": "Показати всі зони", + "desc": "Завжди показувати зони на кадрах, де об'єкти увійшли в зону." + } + }, + "scrollViewTips": "Прокрутіть, щоб переглянути важливі моменти життєвого циклу цього об'єкта.", + "lifecycleItemDesc": { + "attribute": { + "other": "{{label}} визнаний як {{attribute}}", + "faceOrLicense_plate": "{{attribute}} виявлено для {{label}}" + }, + "header": { + "zones": "Зони", + "ratio": "Співвідношення", + "area": "Площа" + }, + "visible": "{{label}} виявлено", + "entered_zone": "{{label}} увійшов {{zones}}", + "active": "{{label}} став активним", + "stationary": "{{label}} став нерухомим", + "gone": "{{label}} ліворуч", + "heard": "{{label}} чув", + "external": "{{label}} виявлено" + }, + "noImageFound": "Для цієї позначки часу не знайдено зображення.", + "adjustAnnotationSettings": "Налаштування параметрів анотацій", + "autoTrackingTips": "Положення обмежувальних рамок будуть неточними для камер з автоматичним відстеженням.", + "carousel": { + "previous": "Попередній слайд", + "next": "Наступний слайд" + } + }, + "details": { + "label": "Мітка", + "editLPR": { + "title": "Редагувати номерний знак", + "desc": "Введіть нове значення номерного знака для цього {{label}}", + "descNoLabel": "Введіть нове значення номерного знака для цього відстежуваного об'єкта" + }, + "item": { + "toast": { + "success": { + "updatedLPR": "Номерний знак успішно оновлено.", + "updatedSublabel": "Підмітку успішно оновлено.", + "regenerate": "Новий опис було запрошено від {{provider}}. Залежно від швидкості вашого провайдера, його перегенерація може зайняти деякий час." + }, + "error": { + "regenerate": "Не вдалося звернутися до {{provider}} для отримання нового опису: {{errorMessage}}", + "updatedSublabelFailed": "Не вдалося оновити підмітку: {{errorMessage}}", + "updatedLPRFailed": "Не вдалося оновити номерний знак: {{errorMessage}}" + } + }, + "button": { + "share": "Поділитися цим оглядом", + "viewInExplore": "Переглянути в розділі «Огляд»" + }, + "tips": { + "hasMissingObjects": "Змініть конфігурацію, якщо хочете, щоб Frigate зберігав відстежувані об'єкти для таких міток: {{objects}}", + "mismatch_one": "{{count}} Виявлено та включено до цього елемента огляду недоступний об’єкт. Ці об’єкти або не кваліфікувалися як сповіщення чи виявлення, або вже були очищені/видалені.", + "mismatch_few": "{{count}} Було виявлено та включено до цього елемента огляду недоступні об’єкти. Ці об’єкти або не кваліфікувалися як сповіщення чи виявлення, або вже були очищені/видалені.", + "mismatch_many": "{{count}} Були виявлені та включені до цього елементи огляду недоступні об’єкти. Ці об’єкти або не кваліфікувалися як сповіщення чи виявлення, або вже були очищені/видалені." + }, + "title": "Огляд деталей товару", + "desc": "Переглянути деталі товару" + }, + "editSubLabel": { + "title": "Редагувати підмітку", + "desc": "Введіть нову підмітку для цього {{label}}", + "descNoLabel": "Введіть нову підмітку для цього відстежуваного об'єкта" + }, + "snapshotScore": { + "label": "Оцінка моментального результату" + }, + "topScore": { + "label": "Найкращий результат", + "info": "Найвищий бал – це найвищий середній бал для відстежуваного об’єкта, тому він може відрізнятися від балу, що відображається на мініатюрі результатів пошуку." + }, + "timestamp": "Позначка часу", + "recognizedLicensePlate": "Розпізнаний номерний знак", + "zones": "Зони", + "description": { + "aiTips": "Фрегат не запитуватиме опис у вашого постачальника генеративного штучного інтелекту, доки не завершиться життєвий цикл відстежуваного об'єкта.", + "placeholder": "Опис відстежуваного об'єкта", + "label": "Опис" + }, + "regenerateFromThumbnails": "Згенерувати з мініатюр", + "tips": { + "descriptionSaved": "Опис успішно збережено", + "saveDescriptionFailed": "Не вдалося оновити опис: {{errorMessage}}" + }, + "objects": "Об'єкти", + "estimatedSpeed": "Орієнтовна швидкість", + "camera": "Камера", + "button": { + "findSimilar": "Знайти схожі", + "regenerate": { + "title": "Регенерувати", + "label": "Згенерувати опис відстежуваного об'єкта повторно" + } + }, + "expandRegenerationMenu": "Розгорнути меню регенерації", + "regenerateFromSnapshot": "Відновити зі знімка" + }, + "dialog": { + "confirmDelete": { + "title": "Підтвердити видалення", + "desc": "Видалення цього відстежуваного об’єкта призведе до видалення знімка, будь-яких збережених вбудованих елементів та будь-яких пов’язаних записів життєвого циклу об’єкта. Записані кадри цього відстежуваного об’єкта в режимі перегляду історії НЕ будуть видалені.

Ви впевнені, що хочете продовжити?" + } + }, + "itemMenu": { + "findSimilar": { + "label": "Знайти схожі", + "aria": "Знайти схожі відстежувані об'єкти" + }, + "viewInHistory": { + "label": "Переглянути в історії", + "aria": "Переглянути в історії" + }, + "downloadVideo": { + "aria": "Завантажити Відео", + "label": "Завантажити Відео" + }, + "submitToPlus": { + "aria": "Надіслати до Frigate Plus", + "label": "Надіслати до Frigate+" + }, + "downloadSnapshot": { + "label": "Завантажити знімок", + "aria": "Завантажити знімок" + }, + "viewObjectLifecycle": { + "label": "Переглянути життєвий цикл об'єкта", + "aria": "Показати життєвий цикл об'єкта" + }, + "deleteTrackedObject": { + "label": "Видалити цей відстежуваний об'єкт" + } + }, + "noTrackedObjects": "Відстежуваних об'єктів не знайдено", + "fetchingTrackedObjectsFailed": "Помилка отримання відстежуваних об'єктів: {{errorMessage}}", + "generativeAI": "Генеративний ШІ", + "trackedObjectDetails": "Деталі відстежуваного об'єкта", + "type": { + "details": "деталі", + "snapshot": "знімок", + "video": "відео", + "object_lifecycle": "життєвий цикл об'єкта" + } } diff --git a/web/public/locales/uk/views/faceLibrary.json b/web/public/locales/uk/views/faceLibrary.json index de1229a8f..ac51cf22f 100644 --- a/web/public/locales/uk/views/faceLibrary.json +++ b/web/public/locales/uk/views/faceLibrary.json @@ -1,5 +1,100 @@ { "selectItem": "Вибрати {{item}}", "documentTitle": "Бібліотека облич - Frigate", - "readTheDocs": "Прочитати документацію" + "readTheDocs": "Прочитати документацію", + "deleteFaceLibrary": { + "desc": "Ви впевнені, що хочете видалити колекцію {{name}}? Це назавжди видалить усі пов’язані з нею обличчя.", + "title": "Видалити ім'я" + }, + "toast": { + "error": { + "renameFaceFailed": "Не вдалося перейменувати обличчя: {{errorMessage}}", + "updateFaceScoreFailed": "Не вдалося оновити оцінку обличчя: {{errorMessage}}", + "deleteFaceFailed": "Не вдалося видалити: {{errorMessage}}", + "uploadingImageFailed": "Не вдалося завантажити зображення: {{errorMessage}}", + "addFaceLibraryFailed": "Не вдалося встановити ім'я обличчя: {{errorMessage}}", + "deleteNameFailed": "Не вдалося видалити ім'я: {{errorMessage}}", + "trainFailed": "Не вдалося тренуватися: {{errorMessage}}" + }, + "success": { + "updatedFaceScore": "Оцінку обличчя успішно оновлено.", + "deletedName_one": "{{count}} Обличчя успішно видалено.", + "deletedName_few": "{{count}} Обличчі успішно видалено.", + "deletedName_many": "{{count}} Облич. успішно видалено.", + "uploadedImage": "Зображення успішно завантажено.", + "addFaceLibrary": "{{name}} успішно додано до Бібліотеки облич!", + "renamedFace": "Обличчя успішно перейменовано на {{name}}", + "trainedFace": "Успішно натреноване обличчя.", + "deletedFace_one": "Успішно видалено {{count}} обличчя.", + "deletedFace_few": "Успішно видалено {{count}} обличчі.", + "deletedFace_many": "Успішно видалено {{count}} облич." + } + }, + "details": { + "scoreInfo": "Оцінка підмітки – це зважена оцінка для всіх розпізнаних ознак достовірності обличчя, тому вона може відрізнятися від оцінки, показаної на знімку.", + "subLabelScore": "Оцінка підмітки", + "person": "Людина", + "face": "Деталі обличчя", + "faceDesc": "Деталі відстежуваного об'єкта, який створив це обличчя", + "timestamp": "Позначка часу", + "unknown": "Невідомо" + }, + "steps": { + "uploadFace": "Завантажити зображення обличчя", + "nextSteps": "Наступні кроки", + "faceName": "Введіть ім'я обличчя", + "description": { + "uploadFace": "Завантажте зображення обличчя {{name}}, на якому його/її обличчя зображено спереду. Зображення не потрібно обрізати, щоб воно мало лише обличчя." + } + }, + "selectFace": "Виберіть обличчя", + "renameFace": { + "title": "Перейменувати обличчя", + "desc": "Введіть нову назву для {{name}}" + }, + "button": { + "deleteFaceAttempts": "Видалити обличчі", + "renameFace": "Перейменувати обличчя", + "uploadImage": "Завантажити зображення", + "deleteFace": "Видалити обличчя", + "reprocessFace": "Переобробка обличчя", + "addFace": "Додати обличчя" + }, + "imageEntry": { + "maxSize": "Максимальний розмір: {{size}} МБ", + "validation": { + "selectImage": "Будь ласка, виберіть файл зображення." + }, + "dropActive": "Скинь зображення сюди…", + "dropInstructions": "Перетягніть зображення сюди або клацніть, щоб вибрати" + }, + "trainFaceAs": "Тренуйте обличчя як:", + "trainFace": "Обличчя поїзда", + "description": { + "addFace": "Покрокові інструкції з додавання нової колекції до Бібліотеки облич.", + "placeholder": "Введіть назву для цієї колекції" + }, + "uploadFaceImage": { + "title": "Завантажити зображення обличчя", + "desc": "Завантажте зображення для сканування облич та додайте його для {{pageToggle}}" + }, + "createFaceLibrary": { + "title": "Створити колекцію", + "desc": "Створити нову колекцію", + "new": "Створити нове обличчя", + "nextSteps": "Щоб створити міцну основу:
  • Використовуйте вкладку «Навчання», щоб вибрати та навчити зображення для кожної виявленої особи.
  • Для найкращих результатів зосередьтеся на зображеннях, спрямованих прямо в обличчя; уникайте навчальних зображень, які фіксують обличчя під кутом.
  • " + }, + "train": { + "title": "Поїзд", + "aria": "Виберіть поїзд", + "empty": "Немає останніх спроб розпізнавання обличчя" + }, + "collections": "Колекції", + "deleteFaceAttempts": { + "title": "Видалити обличчі", + "desc_one": "Ви впевнені, що хочете видалити {{count}} обличчя? Цю дію неможливо скасувати.", + "desc_few": "Ви впевнені, що хочете видалити {{count}} обличчі? Цю дію неможливо скасувати.", + "desc_many": "Ви впевнені, що хочете видалити {{count}} облич? Цю дію неможливо скасувати." + }, + "nofaces": "Немає облич" } diff --git a/web/public/locales/uk/views/live.json b/web/public/locales/uk/views/live.json index e56c821ed..08aa7d3de 100644 --- a/web/public/locales/uk/views/live.json +++ b/web/public/locales/uk/views/live.json @@ -16,7 +16,8 @@ "start": "Почати запис за запитом", "failedToStart": "Не вдалося запустити ручний запис на вимогу.", "end": "Завершення запису на вимогу", - "ended": "Запис на вимогу припинився." + "ended": "Запис на вимогу припинився.", + "recordDisabledTips": "Оскільки запис вимкнено або обмежено в конфігурації цієї камери, буде збережено лише знімок." }, "snapshots": { "enable": "Увімкнути знімки", @@ -151,6 +152,7 @@ "all": "Всi", "motion": "Рух", "active_objects": "Активні об'єкти" - } + }, + "notAllTips": "Ваш {{source}} конфігурацію збереження записів встановлено на режим: {{effectiveRetainMode}}, тому цей запис на вимогу збереже лише сегменти з {{effectiveRetainModeName}}." } } diff --git a/web/public/locales/uk/views/settings.json b/web/public/locales/uk/views/settings.json index 1fa74923f..483062f9b 100644 --- a/web/public/locales/uk/views/settings.json +++ b/web/public/locales/uk/views/settings.json @@ -1,59 +1,606 @@ { "notification": { "notificationSettings": { - "documentation": "Прочитати документацію" + "documentation": "Прочитати документацію", + "desc": "Frigate може надсилати push-сповіщення на ваш пристрій, коли він працює у браузері або встановлений як PWA.", + "title": "Налаштування сповіщень" }, "notificationUnavailable": { "desc": "Веб-повідомлення вимагають безпечного контексту (https://…). Це обмеження браузера. Безпечний доступ до фрегатів для використання сповіщень.", - "documentation": "Прочитати документацію" - } + "documentation": "Прочитати документацію", + "title": "Сповіщення недоступні" + }, + "globalSettings": { + "desc": "Тимчасово призупинити сповіщення для певних камер на всіх зареєстрованих пристроях.", + "title": "Глобальні налаштування" + }, + "email": { + "title": "Електронна пошта", + "placeholder": "наприклад example@email.com", + "desc": "Потрібна дійсна електронна адреса, яка буде використана для сповіщення вас про будь-які проблеми з push-сервісом." + }, + "cameras": { + "title": "Камери", + "noCameras": "Немає доступних камер", + "desc": "Виберіть, для яких камер увімкнути сповіщення." + }, + "suspendTime": { + "5minutes": "Призупинити на 5 хвилин", + "30minutes": "Призупинити на 30 хвилин", + "1hour": "Призупинити на 1 годину", + "12hours": "Призупинити на 12 годин", + "24hours": "Призупинити на 24 години", + "untilRestart": "Призупинити до перезапуску", + "10minutes": "Призупинити на 10 хвилин", + "suspend": "Призупинити" + }, + "toast": { + "success": { + "registered": "Успішно зареєстровано для отримання сповіщень. Перед надсиланням будь-яких сповіщень (включно з тестовим сповіщенням) потрібен перезапуск Frigate.", + "settingSaved": "Налаштування сповіщень збережено." + }, + "error": { + "registerFailed": "Не вдалося зберегти реєстрацію сповіщення." + } + }, + "title": "Сповіщення", + "suspended": "Сповіщення призупинено {{time}}", + "deviceSpecific": "Налаштування, специфічні для пристрою", + "registerDevice": "Зареєструйте цей пристрій", + "unregisterDevice": "Скасувати реєстрацію цього пристрою", + "sendTestNotification": "Надіслати тестове сповіщення", + "active": "Активні сповіщення", + "cancelSuspension": "Скасувати призупинення", + "unsavedRegistrations": "Незбережені реєстрації сповіщень", + "unsavedChanges": "Незбережені зміни сповіщень" }, "camera": { "streams": { - "title": "Потоки" + "title": "Потоки", + "desc": "Вимкнення камери повністю зупиняє обробку потоків цієї камери програмою Frigate. Виявлення, запис і налагодження будуть недоступні.
    Примітка. Це не вимикає повторні потоки go2rtc." }, "reviewClassification": { - "readTheDocumentation": "Прочитати документацію" - } + "readTheDocumentation": "Прочитати документацію", + "objectDetectionsTips": "Усі об’єкти {{detectionsLabels}}, які не класифіковані на {{cameraName}}, будуть відображатися як виявлені, незалежно від того, в якій зоні вони знаходяться.", + "zoneObjectDetectionsTips": { + "regardlessOfZoneObjectDetectionsTips": "Усі об’єкти {{detectionsLabels}}, які не класифіковані на {{cameraName}}, будуть відображатися як виявлені, незалежно від того, в якій зоні вони знаходяться.", + "text": "Усі об’єкти {{detectionsLabels}}, що не належать до категорії {{zone}} на {{cameraName}}, будуть відображатися як Виявлення.", + "notSelectDetections": "Усі об’єкти {{detectionsLabels}}, виявлені в {{zone}} на {{cameraName}}, які не віднесені до категорії «Сповіщення», будуть відображатися як Виявлення незалежно від того, в якій зоні вони знаходяться." + }, + "objectAlertsTips": "Усі об’єкти {{alertsLabels}} на {{cameraName}} будуть відображатися як сповіщення.", + "toast": { + "success": "Конфігурацію класифікації перегляду збережено. Перезапустіть Frigate, щоб застосувати зміни." + }, + "title": "Класифікація оглядів", + "desc": "Frigate класифікує елементи огляду як сповіщення та виявлення. За замовчуванням усі об’єкти люди та автомобілі вважаються сповіщеннями. Ви можете уточнити категоризацію елементів огляду, налаштувавши для них обов'язкові зони.", + "noDefinedZones": "Для цієї камери не визначено жодної зони.", + "selectDetectionsZones": "Виберіть зони для виявлення", + "limitDetections": "Обмеження виявлення певними зонами", + "zoneObjectAlertsTips": "Усі об’єкти {{alertsLabels}}, виявлені в {{zone}} на {{cameraName}}, будуть відображатися як сповіщення.", + "selectAlertsZones": "Виберіть зони для сповіщень", + "unsavedChanges": "Незбережені налаштування класифікації відгуків для {{camera}}" + }, + "review": { + "alerts": "Сповіщення ", + "detections": "Виявлення ", + "title": "Огляд", + "desc": "Увімкнути/вимкнути сповіщення та виявлення для цієї камери. Якщо вимкнено, нові елементи огляду не створюватимуться." + }, + "title": "Налаштування камери" }, "masksAndZones": { "motionMasks": { "polygonAreaTooLarge": { - "documentation": "Прочитати документацію" + "documentation": "Прочитати документацію", + "tips": "Маски руху не запобігають виявленню об'єктів. Натомість слід використовувати обов'язкову зону.", + "title": "Маска руху покриває {{polygonArea}}% кадру камери. Великі маски руху не рекомендуються." }, "context": { "documentation": "Прочитати документацію", "title": "Маски руху використовуються для запобігання виявлення небажаних типів руху (наприклад: гілки дерева, часові мітки камери). Слід використовувати маски рухудуже економно, надмірне маскування ускладнить відстеження об'єктів." - } + }, + "clickDrawPolygon": "Клацніть, щоб намалювати багатокутник на зображенні.", + "add": "Нова маска руху", + "edit": "Редагувати маску руху", + "toast": { + "success": { + "title": "{{polygonName}} збережено. Перезапустіть Frigate, щоб застосувати зміни.", + "noName": "Маску руху збережено. Перезапустіть Frigate, щоб застосувати зміни." + } + }, + "label": "Маска руху", + "documentTitle": "Редагувати маску руху – Фрегат", + "desc": { + "title": "Маски руху використовуються для запобігання спрацьовуванню виявлення небажаних типів руху. Надмірне маскування ускладнить відстеження об'єктів.", + "documentation": "Документація" + }, + "point_one": "{{count}} бал", + "point_few": "{{count}} бали", + "point_many": "{{count}} балів" }, "zones": { "label": "Зони", "name": { - "inputPlaceHolder": "Введіть назву…" + "inputPlaceHolder": "Введіть назву…", + "title": "Ім'я", + "tips": "Назва має містити щонайменше 2 символи та не повинна бути назвою камери чи іншої зони." + }, + "desc": { + "title": "Зони дозволяють визначити певну область кадру, щоб ви могли визначити, чи знаходиться об'єкт у певній області.", + "documentation": "Документація" + }, + "allObjects": "Усі об'єкти", + "speedEstimation": { + "title": "Оцінка швидкості", + "desc": "Увімкнути оцінку швидкості для об'єктів у цій зоні. Зона повинна мати рівно 4 точки.", + "docs": "Прочитайте документацію" + }, + "speedThreshold": { + "title": "Поріг швидкості ({{unit}})", + "desc": "Визначає мінімальну швидкість для об'єктів, які слід враховувати в цій зоні.", + "toast": { + "error": { + "pointLengthError": "Оцінку швидкості для цієї зони вимкнено. Зони з оцінкою швидкості повинні мати рівно 4 бали.", + "loiteringTimeError": "Зони з часом байдикування більше 0 не слід використовувати з оцінкою швидкості." + } + } + }, + "documentTitle": "Зона редагування – Фрегат", + "add": "Додати зону", + "edit": "Редагувати зону", + "point_one": "{{count}} бал", + "point_few": "{{count}} бали", + "point_many": "{{count}} балів", + "clickDrawPolygon": "Клацніть, щоб намалювати багатокутник на зображенні.", + "inertia": { + "title": "Інерція", + "desc": "Визначає, скільки кадрів об'єкт має перебувати в зоні, перш ніж його буде враховано в ній. За замовчуванням: 3" + }, + "loiteringTime": { + "title": "Час тиняння", + "desc": "Встановлює мінімальний час у секундах, протягом якого об'єкт має перебувати в зоні для активації. За замовчуванням: 0" + }, + "objects": { + "title": "Об'єкти", + "desc": "Список об'єктів, що належать до цієї зони." + }, + "toast": { + "success": "Зону ({{zoneName}}) збережено. Перезапустіть Frigate, щоб застосувати зміни." } + }, + "objectMasks": { + "desc": { + "title": "Маски фільтрів об'єктів використовуються для фільтрації хибнопозитивних результатів для заданого типу об'єкта на основі його розташування.", + "documentation": "Документація" + }, + "documentTitle": "Редагувати маску об'єкта - Фрегат", + "add": "Додати маску об'єкта", + "edit": "Редагувати маску об'єкта", + "context": "Маски фільтрів об'єктів використовуються для фільтрації хибнопозитивних результатів для заданого типу об'єкта на основі його розташування.", + "point_one": "{{count}} бал", + "point_few": "{{count}} бали", + "point_many": "{{count}} балів", + "clickDrawPolygon": "Клацніть, щоб намалювати багатокутник на зображенні.", + "objects": { + "title": "Об'єкти", + "desc": "Тип об'єкта, що застосовується до цієї маски об'єкта.", + "allObjectTypes": "Усі типи об'єктів" + }, + "toast": { + "success": { + "title": "{{polygonName}} збережено. Перезапустіть Frigate, щоб застосувати зміни.", + "noName": "Маску об'єкта збережено. Перезапустіть Frigate, щоб застосувати зміни." + } + }, + "label": "Маски об'єктів" + }, + "restart_required": "Потрібно перезавантажити (маски/зони змінено)", + "toast": { + "success": { + "copyCoordinates": "Координати для {{polyName}} скопійовано в буфер обміну." + }, + "error": { + "copyCoordinatesFailed": "Не вдалося скопіювати координати в буфер обміну." + } + }, + "form": { + "zoneName": { + "error": { + "alreadyExists": "Для цієї камери вже існує зона з такою назвою.", + "mustNotContainPeriod": "Назва зони не повинна містити крапок.", + "mustNotBeSameWithCamera": "Назва зони не повинна збігатися з назвою камери.", + "mustBeAtLeastTwoCharacters": "Назва зони має містити щонайменше 2 символи.", + "hasIllegalCharacter": "Назва зони містить недопустимі символи." + } + }, + "polygonDrawing": { + "delete": { + "desc": "Ви впевнені, що хочете видалити {{type}} {{name}}?", + "title": "Підтвердити видалення", + "success": "{{name}} було видалено." + }, + "removeLastPoint": "Видалити останню точку", + "reset": { + "label": "Очистити всі бали" + }, + "snapPoints": { + "true": "Точки прив'язки", + "false": "Не зачіпайте точки" + }, + "error": { + "mustBeFinished": "Малювання полігону має бути завершене перед збереженням." + } + }, + "distance": { + "error": { + "text": "Відстань має бути більшою або рівною 0,1.", + "mustBeFilled": "Для використання оцінки швидкості необхідно заповнити всі поля відстані." + } + }, + "inertia": { + "error": { + "mustBeAboveZero": "Інерція повинна бути вище 0." + } + }, + "loiteringTime": { + "error": { + "mustBeGreaterOrEqualZero": "Час байдикування має бути більшим або рівним 0." + } + } + }, + "filter": { + "all": "Усі маски та зони" } }, "debug": { "zones": { - "title": "Зони" + "title": "Зони", + "desc": "Показати контур будь-яких визначених зон" }, "objectShapeFilterDrawing": { - "document": "Прочитати документацію " - } + "document": "Прочитати документацію ", + "tips": "Увімкніть цю опцію, щоб намалювати прямокутник на зображенні з камери, щоб показати його площу та співвідношення. Ці значення потім можна використовувати для встановлення параметрів фільтра форми об'єкта у вашій конфігурації.", + "title": "Фільтр форми об'єкта, малюнок", + "desc": "Намалюйте прямокутник на зображенні, щоб переглянути деталі площі та співвідношення", + "score": "Рахунок", + "area": "Площа", + "ratio": "Співвідношення" + }, + "regions": { + "tips": "

    Регіональні рамки


    Яскраво-зелені рамки будуть накладені на області інтересу в кадрі, які надсилаються на детектор об'єктів.

    ", + "desc": "Показати рамку області інтересу, що надсилається на детектор об'єктів", + "title": "Регіони" + }, + "boundingBoxes": { + "colors": { + "info": "
  • Під час запуску кожній мітці об’єкта будуть призначені різні кольори
  • Темно-синя тонка лінія вказує на те, що об’єкт не виявлено в цей момент часу
  • Тонка сіра лінія вказує на те, що об’єкт виявлено як нерухомий
  • Товста лінія вказує на те, що об’єкт є об’єктом автоматичного відстеження (якщо його ввімкнено)
  • ", + "label": "Кольори рамки обмежування об'єкта" + }, + "title": "Обмежувальні рамки", + "desc": "Показувати обмежувальні рамки навколо відстежуваних об'єктів" + }, + "title": "Налагодження", + "detectorDesc": "Фрегат використовує ваші детектори ({{detectors}}) для виявлення об'єктів у відеопотоці вашої камери.", + "desc": "У режимі налагодження відображається відстежувані об’єкти та їхня статистика в режимі реального часу. Список об’єктів показує зведену інформацію про виявлені об’єкти із затримкою в часі.", + "debugging": "Налагоджуємо", + "timestamp": { + "title": "Позначка часу", + "desc": "Накладання позначки часу на зображення" + }, + "mask": { + "title": "Маски руху", + "desc": "Показати полігони маски руху" + }, + "motion": { + "title": "Коробки руху", + "desc": "Показувати рамки навколо областей, де виявлено рух", + "tips": "

    Поля руху


    Червоні поля будуть накладені на області кадру, де наразі виявляється рух

    " + }, + "objectList": "Список об'єктів", + "noObjects": "Без об'єктів" }, "classification": { "licensePlateRecognition": { "readTheDocumentation": "Прочитати документацію", - "title": "Розпізнавання номерних знаків" + "title": "Розпізнавання номерних знаків", + "desc": "Фрегат може розпізнавати номерні знаки транспортних засобів та автоматично додавати виявлені символи до поля recognized_license_plate або відоме ім'я як sub_label до об'єктів типу автомобіль. Поширеним випадком використання може бути зчитування номерних знаків автомобілів, що заїжджають на під'їзну доріжку, або автомобілів, що проїжджають повз вулицю." }, "faceRecognition": { - "readTheDocumentation": "Прочитати документацію" - } + "readTheDocumentation": "Прочитати документацію", + "title": "Розпізнавання обличчя", + "desc": "Розпізнавання обличчя дозволяє присвоювати людям імена, і коли їхнє обличчя розпізнається, Frigate призначає ім'я людини як підмітку. Ця інформація міститься в інтерфейсі користувача, фільтрах, а також у сповіщеннях.", + "modelSize": { + "label": "Розмір моделі", + "desc": "Розмір моделі, що використовується для розпізнавання обличчя.", + "small": { + "title": "маленький", + "desc": "Використання small використовує модель вбудовування облич FaceNet, яка ефективно працює на більшості процесорів." + }, + "large": { + "title": "великий", + "desc": "Використання параметра large використовує модель вбудовування облич ArcFace та автоматично запускатиметься на графічному процесорі, якщо це можливо." + } + } + }, + "semanticSearch": { + "reindexNow": { + "alreadyInProgress": "Переіндексація вже триває.", + "error": "Не вдалося розпочати переіндексацію: {{errorMessage}}", + "confirmDesc": "Ви впевнені, що хочете переіндексувати всі вбудовані відстежувані об'єкти? Цей процес працюватиме у фоновому режимі, але може максимально навантажити ваш процесор і зайняти чимало часу. Ви можете спостерігати за прогресом на Ex.", + "confirmButton": "Переіндексувати", + "desc": "Переіндексація призведе до повторного створення вбудованих елементів для всіх відстежуваних об'єктів. Цей процес працює у фоновому режимі та може максимально навантажити ваш процесор і зайняти достатню кількість часу залежно від кількості відстежуваних об'єктів.", + "success": "Переіндексацію успішно розпочато.", + "label": "Переіндексувати зараз", + "confirmTitle": "Підтвердити переіндексацію" + }, + "title": "Семантичний пошук", + "desc": "Семантичний пошук у Frigate дозволяє знаходити відстежувані об'єкти у ваших оглядах, використовуючи або саме зображення, або текстовий опис, визначений користувачем, або автоматично згенерований.", + "readTheDocumentation": "Прочитайте документацію", + "modelSize": { + "label": "Розмір моделі", + "desc": "Розмір моделі, що використовується для вбудовування семантичного пошуку.", + "small": { + "title": "маленький", + "desc": "Використання малих працівників квантована версія моделі, яка використовує менше оперативної пам'яті та працює швидше на процесорі з дуже незначною різницею в якості вбудовування." + }, + "large": { + "title": "великий", + "desc": "Використання large використовує повну модель Jina та автоматично запускатиметься на графічному процесорі, якщо це можливо." + } + } + }, + "restart_required": "Потрібно перезавантажити (налаштування класифікації змінено)", + "toast": { + "success": "Налаштування класифікації збережено. Перезапустіть Frigate, щоб застосувати зміни.", + "error": "Не вдалося зберегти зміни конфігурації: {{errorMessage}}" + }, + "title": "Налаштування класифікації", + "birdClassification": { + "title": "Класифікація птахів", + "desc": "Класифікація птахів ідентифікує відомих птахів за допомогою квантованої моделі Tensorflow. Коли відомого птаха розпізнають, його загальна назва буде додана як sub_label. Ця інформація міститься в інтерфейсі користувача, фільтрах, а також у сповіщеннях." + }, + "unsavedChanges": "Незбережені зміни налаштувань класифікації" }, "frigatePlus": { "modelInfo": { "loading": "Завантаження інформації про модель…", - "loadingAvailableModels": "Завантаження доступних моделей…" + "loadingAvailableModels": "Завантаження доступних моделей…", + "plusModelType": { + "baseModel": "Базова модель", + "userModel": "Точно налаштований" + }, + "supportedDetectors": "Підтримувані детектори", + "error": "Не вдалося завантажити інформацію про модель", + "availableModels": "Доступні моделі", + "trainDate": "Дата поїзда", + "baseModel": "Базова модель", + "modelSelect": "Тут можна вибрати доступні моделі на Frigate+. Зверніть увагу, що можна вибрати лише моделі, сумісні з вашою поточною конфігурацією детектора.", + "title": "Інформація про модель", + "modelType": "Тип моделі", + "cameras": "Камери" + }, + "snapshotConfig": { + "title": "Конфігурація знімків", + "desc": "Для надсилання до Frigate+ потрібно ввімкнути як знімки, так і знімки clean_copy у вашій конфігурації.", + "documentation": "Прочитайте документацію", + "table": { + "camera": "Камера", + "snapshots": "Знімки", + "cleanCopySnapshots": "clean_copy Знімки" + }, + "cleanCopyWarning": "На деяких камерах увімкнено знімки екрана, але вимкнено чисте копіювання. Щоб мати змогу надсилати зображення з цих камер до Frigate+, потрібно ввімкнути параметр clean_copy у конфігурації знімків екрана." + }, + "apiKey": { + "desc": "Ключ API Frigate+ забезпечує інтеграцію з сервісом Frigate+.", + "notValidated": "Ключ API Frigate+ не виявлено або не перевірено", + "title": "Ключ API Фрегат+", + "validated": "Ключ API Frigate+ виявлено та перевірено", + "plusLink": "Дізнайтеся більше про Фрегат+" + }, + "restart_required": "Потрібно перезавантаження (модель Frigate+ змінена)", + "toast": { + "success": "Налаштування Frigate+ збережено. Перезапустіть Frigate, щоб застосувати зміни.", + "error": "Не вдалося зберегти зміни конфігурації: {{errorMessage}}" + }, + "title": "Налаштування Фрегат+", + "unsavedChanges": "Незбережені зміни налаштувань Frigate+" + }, + "general": { + "calendar": { + "title": "Календар", + "firstWeekday": { + "label": "Перший день тижня", + "desc": "День, з якого починаються тижні календаря оглядів.", + "sunday": "Неділя", + "monday": "Понеділок" + } + }, + "title": "Загальні налаштування", + "liveDashboard": { + "title": "Панель керування в прямому ефірі", + "automaticLiveView": { + "label": "Автоматичний перегляд у реальному часі", + "desc": "Автоматично перемикатися на режим реального часу з камери, коли виявляється активність. Якщо вимкнути цю опцію, статичні зображення з камери на панелі керування реальним часом оновлюватимуться лише раз на хвилину." + }, + "playAlertVideos": { + "label": "Відтворити відео зі сповіщеннями", + "desc": "За замовчуванням останні сповіщення на панелі керування Live відтворюються як невеликі відеозаписи, що циклічно відтворюються. Вимкніть цю опцію, щоб відображати лише статичне зображення останніх сповіщень на цьому пристрої/у браузері." + } + }, + "storedLayouts": { + "title": "Збережені макети", + "clearAll": "Очистити всі макети", + "desc": "Розташування камер у групі камер можна перетягувати/змінювати розмір. Позиції зберігаються в локальному сховищі вашого браузера." + }, + "cameraGroupStreaming": { + "title": "Налаштування потокової передачі групи камер", + "desc": "Налаштування потокової передачі для кожної групи камер зберігаються в локальному сховищі вашого браузера.", + "clearAll": "Очистити всі налаштування потокового передавання" + }, + "recordingsViewer": { + "title": "Переглядач записів", + "defaultPlaybackRate": { + "label": "Стандартна швидкість відтворення", + "desc": "Швидкість відтворення записів за замовчуванням." + } + }, + "toast": { + "success": { + "clearStoredLayout": "Очищено збережений макет для {{cameraName}}", + "clearStreamingSettings": "Очищено налаштування потокової передачі для всіх груп камер." + }, + "error": { + "clearStoredLayoutFailed": "Не вдалося очистити збережений макет: {{errorMessage}}", + "clearStreamingSettingsFailed": "Не вдалося очистити налаштування потокового передавання: {{errorMessage}}" + } } + }, + "motionDetectionTuner": { + "improveContrast": { + "title": "Покращення контрастності", + "desc": "Покращення контрастності для темніших сцен. За замовчуванням: УВІМК." + }, + "desc": { + "documentation": "Прочитайте посібник з налаштування руху", + "title": "Фрегат використовує виявлення руху як першочергову перевірку, щоб побачити, чи відбувається щось у кадрі, що варто перевірити за допомогою виявлення об'єктів." + }, + "title": "Тюнер виявлення руху", + "Threshold": { + "title": "Поріг", + "desc": "Порогове значення визначає, наскільки велика зміна яскравості пікселя має вважатися рухом. За замовчуванням: 30" + }, + "toast": { + "success": "Налаштування руху збережено." + }, + "contourArea": { + "title": "Площа контуру", + "desc": "Значення площі контуру використовується для визначення того, які групи змінених пікселів кваліфікуються як рух. За замовчуванням: 10" + }, + "unsavedChanges": "Незбережені зміни в налаштуванні руху ({{camera}})" + }, + "documentTitle": { + "object": "Налагодження – Фрегат", + "notifications": "Налаштування сповіщень – Фрегат", + "default": "Налаштування - Фрегат", + "authentication": "Налаштування автентифікації – Фрегат", + "camera": "Налаштування камери – Фрегат", + "classification": "Налаштування класифікації – Фрегат", + "masksAndZones": "Редактор масок та зон – Фрегат", + "motionTuner": "Тюнер руху - Фрегат", + "general": "Загальні налаштування – Frigate", + "frigatePlus": "Налаштування Frigate+ – Frigate" + }, + "menu": { + "ui": "Інтерфейс користувача", + "classification": "Класифікація", + "cameras": "Налаштування камери", + "users": "Користувачі", + "masksAndZones": "Маски / Зони", + "motionTuner": "Тюнер руху", + "debug": "Налагодження", + "notifications": "Сповіщення", + "frigateplus": "Frigate+" + }, + "dialog": { + "unsavedChanges": { + "desc": "Ви хочете зберегти зміни, перш ніж продовжити?", + "title": "У вас є незбережені зміни." + } + }, + "cameraSetting": { + "camera": "Камера", + "noCamera": "Без камери" + }, + "users": { + "management": { + "title": "Керування користувачами", + "desc": "Керувати обліковими записами користувачів цього екземпляра Frigate." + }, + "addUser": "Додати користувача", + "updatePassword": "Оновити пароль", + "toast": { + "success": { + "deleteUser": "Користувач {{user}} успішно видалений", + "roleUpdated": "Роль оновлено для {{user}}", + "updatePassword": "Пароль успішно оновлено.", + "createUser": "Користувач {{user}} успішно створено" + }, + "error": { + "setPasswordFailed": "Не вдалося зберегти пароль: {{errorMessage}}", + "createUserFailed": "Не вдалося створити користувача: {{errorMessage}}", + "deleteUserFailed": "Не вдалося видалити користувача: {{errorMessage}}", + "roleUpdateFailed": "Не вдалося оновити роль: {{errorMessage}}" + } + }, + "table": { + "password": "Пароль", + "deleteUser": "Видалити користувача", + "username": "Ім'я користувача", + "actions": "Дії", + "noUsers": "Користувачів не знайдено.", + "role": "Роль", + "changeRole": "Змінити роль користувача" + }, + "dialog": { + "form": { + "user": { + "title": "Ім'я користувача", + "desc": "Дозволено використовувати лише літери, цифри, крапки та символи підкреслення.", + "placeholder": "Введіть ім'я користувача" + }, + "password": { + "strength": { + "medium": "Середній", + "strong": "Сильний", + "veryStrong": "Дуже сильний", + "title": "Надійність пароля: ", + "weak": "Слабкий" + }, + "match": "Паролі збігаються", + "title": "Пароль", + "notMatch": "Паролі не збігаються", + "placeholder": "Введіть пароль", + "confirm": { + "title": "Підтвердьте пароль", + "placeholder": "Підтвердьте пароль" + } + }, + "newPassword": { + "confirm": { + "placeholder": "Введіть новий пароль ще раз" + }, + "title": "Новий пароль", + "placeholder": "Введіть новий пароль" + }, + "usernameIsRequired": "Потрібне ім'я користувача" + }, + "changeRole": { + "roleInfo": { + "admin": "Адміністратор", + "intro": "Виберіть відповідну роль для цього користувача:", + "adminDesc": "Повний доступ до всіх функцій.", + "viewer": "Глядач", + "viewerDesc": "Обмежено лише активними інформаційними панелями, функціями «Огляд», «Дослідження» та «Експорт»." + }, + "title": "Змінити роль користувача", + "desc": "Оновити дозволи для {{username}}" + }, + "createUser": { + "title": "Створити нового користувача", + "desc": "Додайте новий обліковий запис користувача та вкажіть роль для доступу до областей інтерфейсу Frigate.", + "usernameOnlyInclude": "Ім'я користувача може містити лише літери, цифри, . або _" + }, + "deleteUser": { + "title": "Видалити користувача", + "desc": "Цю дію не можна скасувати. Це призведе до остаточного видалення облікового запису користувача та всіх пов’язаних з ним даних.", + "warn": "Ви впевнені, що хочете видалити {{username}}?" + }, + "passwordSetting": { + "updatePassword": "Оновити пароль для {{username}}", + "setPassword": "Встановити пароль", + "desc": "Створіть надійний пароль для захисту цього облікового запису." + } + }, + "title": "Користувачі" } } diff --git a/web/public/locales/uk/views/system.json b/web/public/locales/uk/views/system.json index bd1e4d366..94a5d1700 100644 --- a/web/public/locales/uk/views/system.json +++ b/web/public/locales/uk/views/system.json @@ -11,20 +11,169 @@ "overallSkippedDetectionsPerSecond": "загальна кiлкiсть пропущених виявлень за секунду", "cameraCapture": "{{camName}} захоплення", "cameraFramesPerSecond": "{{camName}} кадрiв на секунду", - "skipped": "пропущено" + "skipped": "пропущено", + "capture": "захоплення", + "camera": "камера", + "detect": "виявити" }, "toast": { "success": { "copyToClipboard": "Тестові дані копіюються в буфер обміну." + }, + "error": { + "unableToProbeCamera": "Не вдалося дослідити камеру: {{errorMessage}}" } - } + }, + "title": "Камери", + "info": { + "fetching": "Отримання даних з камери", + "cameraProbeInfo": "{{camera}} Інформація про зонд камери", + "streamDataFromFFPROBE": "Дані потоку отримуються за допомогою ffprobe.", + "stream": "Потік {{idx}}", + "video": "Відео:", + "codec": "Кодек:", + "resolution": "Роздільна здатність:", + "fps": "FPS:", + "unknown": "Невідомо", + "audio": "Аудіо:", + "error": "Помилка: {{error}}", + "tips": { + "title": "Інформація про зонд камери" + } + }, + "overview": "Огляд", + "framesAndDetections": "Кадри / Виявлення" }, "enrichments": { "embeddings": { - "plate_recognition": "Розпiзнавання номерiв" - } + "plate_recognition": "Розпiзнавання номерiв", + "image_embedding_speed": "Швидкість вбудовування зображень", + "face_embedding_speed": "Швидкість вбудовування облич", + "face_recognition_speed": "Швидкість розпізнавання обличчя", + "plate_recognition_speed": "Швидкість розпізнавання номерних знаків", + "text_embedding_speed": "Швидкість вбудовування тексту", + "image_embedding": "Вбудовування зображень", + "text_embedding": "Вбудовування тексту", + "face_recognition": "Розпізнавання обличчя", + "yolov9_plate_detection_speed": "Швидкість виявлення номерних знаків YOLOv9", + "yolov9_plate_detection": "Виявлення пластин YOLOv9" + }, + "title": "Збагачення", + "infPerSecond": "Висновки за секунду" }, "general": { - "title": "Загальний" + "title": "Загальний", + "hardwareInfo": { + "npuUsage": "Використання нейронного процесора", + "npuMemory": "Пам'ять NPU", + "title": "Інформація про обладнання", + "gpuUsage": "Використання графічного процесора", + "gpuMemory": "Пам'ять графічного процесора", + "gpuEncoder": "GPU-кодер", + "gpuDecoder": "Декодер графічного процесора", + "gpuInfo": { + "vainfoOutput": { + "title": "Вихід Vainfo", + "returnCode": "Код повернення: {{code}}", + "processOutput": "Вихід процесу:", + "processError": "Помилка процесу:" + }, + "nvidiaSMIOutput": { + "title": "Вихід Nvidia SMI", + "name": "Ім'я: {{name}}", + "driver": "Водій: {{driver}}", + "cudaComputerCapability": "Можливості обчислень CUDA: {{cuda_compute}}", + "vbios": "Інформація про VBios: {{vbios}}" + }, + "closeInfo": { + "label": "Закрити інформацію про графічний процесор" + }, + "copyInfo": { + "label": "Копіювати інформацію про графічний процесор" + }, + "toast": { + "success": "Інформацію про графічний процесор скопійовано в буфер обміну" + } + } + }, + "otherProcesses": { + "processMemoryUsage": "Використання пам'яті процесу", + "processCpuUsage": "Використання процесора процесу", + "title": "Інші процеси" + }, + "detector": { + "temperature": "Температура детектора", + "title": "Детектори", + "inferenceSpeed": "Швидкість виведення детектора", + "cpuUsage": "Використання процесора детектора", + "memoryUsage": "Використання пам'яті детектора" + } + }, + "storage": { + "cameraStorage": { + "unused": { + "tips": "Це значення може неточно відображати обсяг вільного простору, доступного для Frigate, якщо на вашому диску зберігаються інші файли, окрім записів Frigate. Frigate не відстежує використання пам’яті поза ним.", + "title": "Невикористаний" + }, + "title": "Зберігання камери", + "storageUsed": "Зберігання", + "camera": "Камера", + "unusedStorageInformation": "Інформація про невикористане сховище", + "percentageOfTotalUsed": "Відсоток від загальної кількості", + "bandwidth": "Пропускна здатність" + }, + "overview": "Огляд", + "recordings": { + "title": "Записи", + "tips": "Це значення відображає загальний обсяг пам’яті, що використовується записами в базі даних Frigate. Frigate не відстежує використання пам’яті для всіх файлів на вашому диску.", + "earliestRecording": "Найдавніший доступний запис:" + }, + "title": "Зберігання" + }, + "lastRefreshed": "Останнє оновлення: ", + "stats": { + "ffmpegHighCpuUsage": "{{camera}} має високе використання процесора FFmpeg ({{ffmpegAvg}}%)", + "detectHighCpuUsage": "{{camera}} має високе використання процесора для виявлення ({{detectAvg}}%)", + "healthy": "Система справна", + "reindexingEmbeddings": "Переіндексація вбудовування (виконано {{processed}}%)", + "cameraIsOffline": "{{camera}} не в мережі", + "detectIsSlow": "{{detect}} повільний ({{speed}} мс)", + "detectIsVerySlow": "{{detect}} дуже повільний ({{speed}} мс)" + }, + "documentTitle": { + "cameras": "Статистика камер - Фрегат", + "storage": "Статистика сховища - Фрегат", + "general": "Загальна статистика - Frigate", + "enrichments": "Статистика збагачень - Фрегат", + "logs": { + "frigate": "Фрегатні журнали - Фрегат", + "go2rtc": "Журнали Go2RTC - Фрегат", + "nginx": "Журнали Nginx - Фрегат" + } + }, + "title": "Система", + "metrics": "Системні показники", + "logs": { + "download": { + "label": "Завантажити журнали" + }, + "copy": { + "label": "Копіювати в буфер обміну", + "success": "Скопійовано журнали в буфер обміну", + "error": "Не вдалося скопіювати журнали в буфер обміну" + }, + "type": { + "label": "Тип", + "timestamp": "Позначка часу", + "tag": "Тег", + "message": "Повідомлення" + }, + "tips": "Журнали передаються потоком із сервера", + "toast": { + "error": { + "fetchingLogsFailed": "Помилка отримання журналів: {{errorMessage}}", + "whileStreamingLogs": "Помилка під час потокової передачі журналів: {{errorMessage}}" + } + } } }