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": "Щоб створити міцну основу:
режим: {{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. Виявлення, запис і налагодження будуть недоступні.Регіональні рамки
Яскраво-зелені рамки будуть накладені на області інтересу в кадрі, які надсилаються на детектор об'єктів.
", + "desc": "Показати рамку області інтересу, що надсилається на детектор об'єктів", + "title": "Регіони" + }, + "boundingBoxes": { + "colors": { + "info": "Поля руху
Червоні поля будуть накладені на області кадру, де наразі виявляється рух
" + }, + "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}}"
+ }
+ }
}
}