add sam2 yolo auto annotation

This commit is contained in:
2026-02-04 15:29:36 +07:00
parent 7e56948ece
commit 5a951d8812
2061 changed files with 316473 additions and 0 deletions
@@ -0,0 +1,173 @@
{
"documentTitle": "Модели классификации",
"details": {
"scoreInfo": "Оценка представляет собой среднюю степень достоверности классификации по всем обнаружениям данного объекта."
},
"button": {
"deleteClassificationAttempts": "Удалить изображения классификации",
"renameCategory": "Переименовать класс",
"deleteCategory": "Удалить класс",
"deleteImages": "Удалить изображения",
"trainModel": "Тренировать модель",
"addClassification": "Добавить классификацию",
"deleteModels": "Удалить модели",
"editModel": "Редактировать модель"
},
"toast": {
"success": {
"deletedCategory": "Класс удалён",
"deletedImage": "Изображения удалены",
"deletedModel_one": "Успешно удалена {{count}} модель",
"deletedModel_few": "Успешно удалены {{count}} модели",
"deletedModel_many": "Успешно удалены {{count}} моделей",
"categorizedImage": "Изображение успешно классифицировано",
"trainedModel": "Модель успешно обучена.",
"trainingModel": "Обучение модели успешно запущено.",
"updatedModel": "Конфигурация модели успешно обновлена",
"renamedCategory": "Класс успешно переименован в {{name}}"
},
"error": {
"deleteImageFailed": "Не удалось удалить: {{errorMessage}}",
"deleteCategoryFailed": "Не удалось удалить класс: {{errorMessage}}",
"deleteModelFailed": "Не удалось удалить модель: {{errorMessage}}",
"categorizeFailed": "Не удалось классифицировать изображение: {{errorMessage}}",
"trainingFailed": "Не удалось начать обучение модели: {{errorMessage}}",
"updateModelFailed": "Не удалось обновить модель: {{errorMessage}}",
"renameCategoryFailed": "Не удалось переименовать класс: {{errorMessage}}",
"trainingFailedToStart": "Не удалось начать обучение модели: {{errorMessage}}"
}
},
"deleteCategory": {
"title": "Удалить класс",
"desc": "Вы уверены, что хотите удалить класс {{name}}? Это приведёт к безвозвратному удалению всех связанных с ним изображений и потребует повторного обучения модели."
},
"deleteModel": {
"title": "Удалить модель классификации",
"single": "Вы уверены, что хотите удалить {{name}}? Это приведёт к безвозвратному удалению всех связанных данных, включая изображения и данные обучения. Это действие нельзя отменить.",
"desc_one": "Вы уверены, что хотите удалить {{count}} модель? Это приведёт к безвозвратному удалению всех связанных данных, включая изображения и данные обучения. Это действие нельзя отменить.",
"desc_few": "Вы уверены, что хотите удалить {{count}} модели? Это приведёт к безвозвратному удалению всех связанных данных, включая изображения и данные обучения. Это действие нельзя отменить.",
"desc_many": "Вы уверены, что хотите удалить {{count}} моделей? Это приведёт к безвозвратному удалению всех связанных данных, включая изображения и данные обучения. Это действие нельзя отменить."
},
"edit": {
"title": "Редактировать модель классификации",
"descriptionState": "Редактировать классы для этой модели классификации состояний. Изменения потребуют повторного обучения модели.",
"descriptionObject": "Редактировать тип объекта и тип классификации для этой модели классификации объектов.",
"stateClassesInfo": "Примечание: изменение классов состояний требует повторного обучения модели с обновлёнными классами."
},
"deleteDatasetImages": {
"title": "Удалить изображения набора данных",
"desc_one": "Вы уверены, что хотите удалить {{count}} изображение из {{dataset}}? Это действие нельзя отменить и потребует повторного обучения модели.",
"desc_few": "Вы уверены, что хотите удалить {{count}} изображения из {{dataset}}? Это действие нельзя отменить и потребует повторного обучения модели.",
"desc_many": "Вы уверены, что хотите удалить {{count}} изображений из {{dataset}}? Это действие нельзя отменить и потребует повторного обучения модели."
},
"deleteTrainImages": {
"title": "Удалить обучающие изображения",
"desc_one": "Вы уверены, что хотите удалить {{count}} изображение? Это действие нельзя отменить.",
"desc_few": "Вы уверены, что хотите удалить {{count}} изображения? Это действие нельзя отменить.",
"desc_many": "Вы уверены, что хотите удалить {{count}} изображений? Это действие нельзя отменить."
},
"renameCategory": {
"title": "Переименовать класс",
"desc": "Введите новое имя для {{name}}. Вам потребуется повторно обучить модель, чтобы изменение имени вступило в силу."
},
"description": {
"invalidName": "Недопустимое имя. Имена могут содержать только буквы, цифры, пробелы, апострофы, подчёркивания и дефисы."
},
"train": {
"title": "Недавние классификации",
"titleShort": "Недавние",
"aria": "Выбрать недавние классификации"
},
"categories": "Классы",
"createCategory": {
"new": "Создать новый класс"
},
"categorizeImageAs": "Классифицировать изображение как:",
"categorizeImage": "Классифицировать изображение",
"menu": {
"objects": "Объекты",
"states": "Состояния"
},
"noModels": {
"object": {
"title": "Нет моделей классификации объектов",
"description": "Создайте пользовательскую модель для классификации обнаруженных объектов.",
"buttonText": "Создать модель объекта"
},
"state": {
"title": "Нет моделей классификации состояний",
"description": "Создайте пользовательскую модель для мониторинга и классификации изменений состояний в определённых областях камеры.",
"buttonText": "Создать модель состояния"
}
},
"wizard": {
"title": "Создать новую классификацию",
"steps": {
"nameAndDefine": "Имя и определение",
"stateArea": "Область состояния",
"chooseExamples": "Выбрать примеры"
},
"step1": {
"description": "Модели состояний отслеживают фиксированные области камеры на предмет изменений (например, дверь открыта/закрыта). Модели объектов добавляют классификации к обнаруженным объектам (например, известные животные, курьеры и т.д.).",
"name": "Имя",
"namePlaceholder": "Введите имя модели…",
"type": "Тип",
"typeState": "Состояние",
"typeObject": "Объект",
"objectLabel": "Метка объекта",
"objectLabelPlaceholder": "Выберите тип объекта…",
"classificationType": "Тип классификации",
"classificationTypeTip": "Узнать о типах классификации",
"classificationTypeDesc": "Подметки добавляют дополнительный текст к метке объекта (например, 'Человек: UPS'). Атрибуты — это доступные для поиска метаданные, хранящиеся отдельно в метаданных объекта.",
"classificationSubLabel": "Подметка",
"classificationAttribute": "Атрибут",
"classes": "Классы",
"states": "Состояния",
"classesTip": "Узнать о классах",
"classesStateDesc": "Определите различные состояния, в которых может находиться область вашей камеры. Например: 'открыто' и 'закрыто' для гаражных ворот.",
"classesObjectDesc": "Определите различные категории для классификации обнаруженных объектов. Например: 'курьер', 'житель', 'незнакомец' для классификации людей.",
"classPlaceholder": "Введите имя класса…",
"errors": {
"nameRequired": "Имя модели обязательно",
"nameLength": "Имя модели должно содержать не более 64 символов",
"nameOnlyNumbers": "Имя модели не может состоять только из цифр",
"classRequired": "Требуется хотя бы 1 класс",
"classesUnique": "Имена классов должны быть уникальными",
"stateRequiresTwoClasses": "Модели состояний требуют не менее 2 классов",
"objectLabelRequired": "Пожалуйста, выберите метку объекта",
"objectTypeRequired": "Пожалуйста, выберите тип классификации"
}
},
"step2": {
"description": "Выберите камеры и определите область для мониторинга для каждой камеры. Модель будет классифицировать состояние этих областей.",
"cameras": "Камеры",
"selectCamera": "Выбрать камеру",
"noCameras": "Нажмите +, чтобы добавить камеры",
"selectCameraPrompt": "Выберите камеру из списка, чтобы определить область её мониторинга"
},
"step3": {
"selectImagesPrompt": "Выберите все изображения с {{className}}",
"selectImagesDescription": "Нажмите на изображения, чтобы выбрать их. Нажмите Продолжить, когда закончите с этим классом.",
"generating": {
"title": "Генерация примеров изображений",
"description": "Frigate извлекает репрезентативные изображения из ваших записей. Это может занять некоторое время…"
},
"training": {
"title": "Обучение модели",
"description": "Ваша модель обучается в фоновом режиме. Закройте это диалоговое окно, и ваша модель начнёт работать, как только обучение будет завершено."
},
"retryGenerate": "Повторить генерацию",
"noImages": "Примеры изображений не сгенерированы",
"classifying": "Классификация и обучение…",
"trainingStarted": "Обучение успешно запущено",
"errors": {
"noCameras": "Камеры не настроены",
"noObjectLabel": "Метка объекта не выбрана",
"generateFailed": "Не удалось сгенерировать примеры: {{error}}",
"generationFailed": "Генерация не удалась. Пожалуйста, попробуйте снова.",
"classifyFailed": "Не удалось классифицировать изображения: {{error}}"
},
"generateSuccess": "Примеры изображений успешно сгенерированы"
}
}
}
@@ -0,0 +1,18 @@
{
"configEditor": "Редактор конфигурации",
"copyConfig": "Скопировать конфигурацию",
"saveAndRestart": "Сохранить и перезапустить",
"saveOnly": "Только сохранить",
"documentTitle": "Редактор конфигурации - Frigate",
"toast": {
"success": {
"copyToClipboard": "Конфигурация скопирована в буфер обмена."
},
"error": {
"savingError": "Ошибка сохранения конфигурации"
}
},
"confirm": "Выйти без сохранения?",
"safeConfigEditor": "Редактор конфигурации (безопасный режим)",
"safeModeDescription": "Frigate находится в безопасном режиме из-за ошибки проверки конфигурации."
}
@@ -0,0 +1,60 @@
{
"alerts": "Тревоги",
"detections": "Обнаружения",
"motion": {
"label": "Движение",
"only": "Только движение"
},
"allCameras": "Все камеры",
"camera": "Камера",
"empty": {
"alert": "Отсутствуют тревоги для просмотра",
"detection": "Отсутствуют обнаружения для просмотра",
"motion": "Не найдено данных о движении"
},
"timeline": "Таймлайн",
"timeline.aria": "Выбор таймлайна",
"events": {
"label": "События",
"aria": "Выбор событий",
"noFoundForTimePeriod": "Для этого периода времени не найдено ни одного события."
},
"documentTitle": "Обзор событий - Frigate",
"recordings": {
"documentTitle": "Записи - Frigate"
},
"calendarFilter": {
"last24Hours": "Последние 24 часа"
},
"markAsReviewed": "Пометить как просмотренное",
"newReviewItems": {
"label": "Посмотреть новые элементы для просмотра",
"button": "Новые элементы для просмотра"
},
"markTheseItemsAsReviewed": "Пометить эти элементы как просмотренные",
"selected": "{{count}} выбрано",
"selected_one": "{{count}} выбрано",
"selected_other": "{{count}} выбрано",
"detected": "обнаружен",
"suspiciousActivity": "Подозрительная активность",
"threateningActivity": "Угрожающая активность",
"detail": {
"noDataFound": "Нет данных для просмотра",
"aria": "Переключить подробный режим просмотра",
"trackedObject_one": "объект",
"trackedObject_other": "объекты",
"noObjectDetailData": "Данные о деталях объекта недоступны.",
"label": "Деталь",
"settings": "Настройки подробного просмотра",
"alwaysExpandActive": {
"title": "Всегда раскрывать активный",
"desc": "Всегда раскрывать сведения об объекте активного элемента обзора, если они доступны."
}
},
"objectTrack": {
"trackedPoint": "Отслеживаемая точка",
"clickToSeek": "Перейти к этому моменту"
},
"zoomIn": "Увеличить",
"zoomOut": "Отдалить"
}
@@ -0,0 +1,289 @@
{
"exploreIsUnavailable": {
"embeddingsReindexing": {
"context": "Поиск станет доступен после завершения переиндексации эмбеддингов отслеживаемых объектов.",
"startingUp": "Запуск…",
"estimatedTime": "Оставшееся время:",
"finishingShortly": "Скоро завершится",
"step": {
"descriptionsEmbedded": "Встроенные описания: ",
"trackedObjectsProcessed": "Обработанные отслеживаемые объекты: ",
"thumbnailsEmbedded": "Встроенные миниатюры: "
}
},
"title": "Поиск событий недоступен",
"downloadingModels": {
"setup": {
"visionModel": "Модель компьютерного зрения",
"visionModelFeatureExtractor": "Экстрактор признаков модели компьютерного зрения",
"textModel": "Текстовая модель",
"textTokenizer": "Текстовый токенизатор"
},
"tips": {
"context": "Возможно, вы захотите переиндексировать эмбеддинги отслеживаемых объектов после загрузки моделей.",
"documentation": "Читать документацию"
},
"context": "Frigate загружает необходимые модели эмбеддингов для поддержки функции семантического поиска. Это может занять несколько минут в зависимости от скорости вашего интернет-соединения.",
"error": "Произошла ошибка. Проверьте логи Frigate."
}
},
"generativeAI": "Генеративный ИИ",
"documentTitle": "Поиск событий - Frigate",
"details": {
"timestamp": "Метка времени",
"item": {
"title": "Детали элемента просмотра",
"desc": "Детали элемента просмотра",
"button": {
"share": "Поделиться этим элементом просмотра",
"viewInExplore": "Смотреть в Поиске событий"
},
"tips": {
"hasMissingObjects": "Настройте конфигурацию, если хотите, чтобы Frigate сохранял отслеживаемые объекты для следующих меток: <em>{{objects}}</em>",
"mismatch_one": "{{count}} недоступный объект обнаружен и включен в этот элемент просмотра. Эти объекты либо не соответствовали критериям тревоги/детекции, либо уже были удалены.",
"mismatch_few": "{{count}} недоступных объекта обнаружено и включено в этот элемент просмотра. Эти объекты либо не соответствовали критериям тревоги/детекции, либо уже были удалены.",
"mismatch_many": "{{count}} недоступных объектов обнаружено и включено в этот элемент просмотра. Эти объекты либо не соответствовали критериям тревоги/детекции, либо уже были удалены."
},
"toast": {
"success": {
"updatedSublabel": "Успешно обновлена дополнительная метка.",
"updatedLPR": "Номерной знак успешно обновлён.",
"regenerate": "Новое описание запрошено у {{provider}}. В зависимости от скорости работы вашего провайдера, генерация нового описания может занять некоторое время.",
"audioTranscription": "Запрос на транскрипцию звука успешно выполнен."
},
"error": {
"updatedSublabelFailed": "Не удалось обновить дополнительную метку: {{errorMessage}}",
"updatedLPRFailed": "Не удалось обновить номерной знак: {{errorMessage}}",
"regenerate": "Не удалось запросить новое описание у {{provider}}: {{errorMessage}}",
"audioTranscription": "Не удалось запросить транскрипцию аудио: {{errorMessage}}"
}
}
},
"editSubLabel": {
"descNoLabel": "Введите новую дополнительную метку для этого отслеживаемого объекта",
"title": "Редактирование дополнительной метки",
"desc": "Введите новую дополнительную метку для {{label}}"
},
"topScore": {
"label": "Лучшая оценка",
"info": "Лучшая оценка — это наивысшая медианная оценка для отслеживаемого объекта, поэтому она может отличаться от оценки, показанной на превью в результатах поиска."
},
"estimatedSpeed": "Расчётная скорость",
"tips": {
"saveDescriptionFailed": "Не удалось обновить описание: {{errorMessage}}",
"descriptionSaved": "Описание успешно сохранено"
},
"label": "Метка",
"editLPR": {
"title": "Редактирование номерного знака",
"descNoLabel": "Введите новое значение номерного знака для этого отслеживаемого объекта",
"desc": "Введите новое значение номерного знака для {{label}}"
},
"recognizedLicensePlate": "Распознанный номерной знак",
"objects": "Объекты",
"camera": "Камера",
"zones": "Зоны",
"button": {
"findSimilar": "Найти похожее",
"regenerate": {
"title": "Перегенерировать",
"label": "Перегенерировать описание отслеживаемого объекта"
}
},
"description": {
"label": "Описание",
"aiTips": "Frigate не будет запрашивать описание у вашего генеративного ИИ-провайдера, пока жизненный цикл отслеживаемого объекта не завершится.",
"placeholder": "Описание отслеживаемого объекта"
},
"expandRegenerationMenu": "Развернуть меню перегенерации",
"regenerateFromSnapshot": "Перегенерировать из снимка",
"regenerateFromThumbnails": "Перегенерировать из миниатюры",
"snapshotScore": {
"label": "Оценка снимка"
},
"score": {
"label": "Оценка"
}
},
"trackedObjectDetails": "Детали объекта",
"type": {
"details": "детали",
"snapshot": "снимок",
"video": "видео",
"object_lifecycle": "жизненный цикл объекта",
"thumbnail": "миниатюра"
},
"objectLifecycle": {
"title": "Жизненный цикл объекта",
"noImageFound": "Для этой метки времени изображение не найдено.",
"createObjectMask": "Создать маску объекта",
"adjustAnnotationSettings": "Изменить настройки аннотаций",
"scrollViewTips": "Прокрутите, чтобы просмотреть ключевые моменты жизненного цикла этого объекта.",
"autoTrackingTips": "Позиции ограничивающих рамок будут неточными для камер с автотрекингом.",
"lifecycleItemDesc": {
"visible": "Обнаружен(а) {{label}}",
"entered_zone": "{{label}} зафиксирован(а) в {{zones}}",
"active": "{{label}} активировался(ась)",
"stationary": "{{label}} перестал(а) двигаться",
"attribute": {
"faceOrLicense_plate": "{{attribute}} обнаружен для {{label}}",
"other": "{{label}} распознан(а) как {{attribute}}"
},
"gone": "{{label}} покинул(а) зону",
"heard": "Обнаружен звук {{label}}",
"external": "Обнаружен(а) {{label}}",
"header": {
"zones": "Зоны",
"ratio": "Соотношение",
"area": "Область"
}
},
"annotationSettings": {
"title": "Настройки аннотаций",
"showAllZones": {
"title": "Показать все зоны",
"desc": "Всегда показывать зоны на кадрах, где объекты вошли в зону."
},
"offset": {
"label": "Сдвиг аннотаций",
"desc": "Эти данные поступают из потока детекции вашей камеры, но накладываются на изображения из потока записи. Потоки вряд ли идеально синхронизированы, поэтому ограничивающая рамка и видео могут не совпадать. Для корректировки используйте поле <code>Сдвиг аннотаций</code>.",
"millisecondsToOffset": "Смещение аннотаций детекции в миллисекундах. <em>По умолчанию: 0</em>",
"documentation": "Читать документацию ",
"tips": "СОВЕТ: Представьте, у вас клип события, где человек идёт слева направо. Если рамка на таймлайне постоянно смещена влево от человека — уменьшите значение. Если рамка опережает движение — увеличьте значение.",
"toast": {
"success": "В конфигурационном файле сохранено значение смещения для {{camera}}. Перезапустите Frigate, чтобы применить изменения."
}
}
},
"carousel": {
"previous": "Предыдущий слайд",
"next": "Следующий слайд"
},
"count": "{{first}} из {{second}}",
"trackedPoint": "Отслеживаемая точка"
},
"itemMenu": {
"downloadVideo": {
"label": "Скачать видео",
"aria": "Скачать видео"
},
"downloadSnapshot": {
"label": "Скачать снимок",
"aria": "Скачать снимок"
},
"viewObjectLifecycle": {
"label": "Просмотр жизненного цикла объекта",
"aria": "Показать жизненный цикл объекта"
},
"findSimilar": {
"label": "Найти похожее",
"aria": "Найти похожие отслеживаемые объекты"
},
"submitToPlus": {
"label": "Отправить в Frigate+",
"aria": "Отправить в Frigate Plus"
},
"viewInHistory": {
"label": "Посмотреть в Истории",
"aria": "Посмотреть в Истории"
},
"deleteTrackedObject": {
"label": "Удалить этот отслеживаемый объект"
},
"addTrigger": {
"label": "Добавить триггер",
"aria": "Добавить триггер для этого отслеживаемого объекта"
},
"audioTranscription": {
"label": "Транскрибировать",
"aria": "Запросить аудиотранскрипцию"
},
"viewTrackingDetails": {
"label": "Просмотреть детали отслеживания",
"aria": "Показать детали отслеживания"
},
"showObjectDetails": {
"label": "Показать путь объекта"
},
"hideObjectDetails": {
"label": "Скрыть путь объекта"
}
},
"dialog": {
"confirmDelete": {
"title": "Подтвердить удаление",
"desc": "Удаление этого отслеживаемого объекта приведёт к удалению снимка, всех сохранённых эмбеддингов и всех связанных записей деталей отслеживания. Записанное видео этого отслеживаемого объекта в представлении Истории <em>НЕ</em> будет удалено.<br /><br />Вы уверены, что хотите продолжить?"
}
},
"noTrackedObjects": "Отслеживаемые объекты не найдены",
"fetchingTrackedObjectsFailed": "Ошибка при получении отслеживаемых объектов: {{errorMessage}}",
"trackedObjectsCount_one": "{{count}} отслеживаемый объект ",
"trackedObjectsCount_few": "{{count}} отслеживаемых объекта ",
"trackedObjectsCount_many": "{{count}} отслеживаемых объектов ",
"searchResult": {
"deleteTrackedObject": {
"toast": {
"success": "Отслеживаемый объект успешно удалён.",
"error": "Не удалось удалить отслеживаемый объект: {{errorMessage}}"
}
},
"tooltip": "Соответствие с {{type}} на {{confidence}}%",
"previousTrackedObject": "Предыдущий отслеживаемый объект",
"nextTrackedObject": "Следующий отслеживаемый объект"
},
"exploreMore": "Просмотреть больше объектов {{label}}",
"aiAnalysis": {
"title": "Анализ при помощи ИИ"
},
"concerns": {
"label": "Требуют внимания"
},
"trackingDetails": {
"count": "{{first}} из {{second}}",
"title": "Детали отслеживания",
"noImageFound": "Для этой метки времени изображение не найдено.",
"createObjectMask": "Создать маску объекта",
"adjustAnnotationSettings": "Изменить настройки аннотаций",
"scrollViewTips": "Нажмите, чтобы просмотреть ключевые моменты жизненного цикла этого объекта.",
"autoTrackingTips": "Позиции ограничивающих рамок будут неточными для камер с автотрекингом.",
"trackedPoint": "Отслеживаемая точка",
"lifecycleItemDesc": {
"visible": "Обнаружен(а) {{label}}",
"entered_zone": "{{label}} зафиксирован(а) в {{zones}}",
"active": "{{label}} активировался(ась)",
"stationary": "{{label}} перестал(а) двигаться",
"attribute": {
"faceOrLicense_plate": "{{attribute}} обнаружен для {{label}}",
"other": "{{label}} распознан(а) как {{attribute}}"
},
"gone": "{{label}} покинул(а) зону",
"heard": "Обнаружен звук {{label}}",
"external": "Обнаружен(а) {{label}}",
"header": {
"zones": "Зоны",
"ratio": "Соотношение",
"area": "Область"
}
},
"annotationSettings": {
"title": "Настройки аннотаций",
"showAllZones": {
"title": "Показать все зоны",
"desc": "Всегда показывать зоны на кадрах, где объекты вошли в зону."
},
"offset": {
"label": "Сдвиг аннотаций",
"desc": "Эти данные поступают из потока детекции вашей камеры, но накладываются на изображения из потока записи. Потоки вряд ли идеально синхронизированы, поэтому ограничивающая рамка и видео могут не совпадать. Вы можете использовать эту настройку для смещения аннотаций вперед или назад во времени, чтобы лучше выровнять их с записанным видео.",
"millisecondsToOffset": "Смещение аннотаций детекции в миллисекундах. <em>По умолчанию: 0</em>",
"tips": "Уменьшите значение, если воспроизведение видео опережает рамки и точки пути, и увеличьте значение, если воспроизведение видео отстаёт от них. Это значение может быть отрицательным.",
"toast": {
"success": "Смещение аннотаций для {{camera}} сохранено в конфигурационном файле. Перезапустите Frigate, чтобы применить изменения."
}
}
},
"carousel": {
"previous": "Предыдущий слайд",
"next": "Следующий слайд"
}
}
}
@@ -0,0 +1,23 @@
{
"documentTitle": "Экспорт - Frigate",
"search": "Поиск",
"noExports": "Не найдено файлов экспорта",
"deleteExport": "Удалить экспорт",
"deleteExport.desc": "Вы уверены, что хотите удалить {{exportName}}?",
"editExport": {
"title": "Переименовать экспорт",
"desc": "Введите новое имя для этого экспорта.",
"saveExport": "Сохранить экспорт"
},
"toast": {
"error": {
"renameExportFailed": "Не удалось переименовать экспорт: {{errorMessage}}"
}
},
"tooltip": {
"shareExport": "Поделиться экспортом",
"downloadVideo": "Скачать видео",
"editName": "Изменить название",
"deleteExport": "Удалить экспорт"
}
}
@@ -0,0 +1,103 @@
{
"details": {
"person": "Человек",
"timestamp": "Метка времени",
"face": "Подробности о лице",
"faceDesc": "Информация об отслеживаемом объекте, который сгенерировал это лицо",
"confidence": "Достоверность",
"scoreInfo": "Оценка доп. метки — это взвешенная оценка всех распознанных лиц, поэтому она может отличаться от оценки на снимке.",
"subLabelScore": "Оценка доп. метки",
"unknown": "Неизвестно"
},
"documentTitle": "Библиотека лиц - Frigate",
"description": {
"placeholder": "Введите название коллекции",
"addFace": "Добавьте новую коллекцию в библиотеку лиц, загрузив свое первое изображение.",
"invalidName": "Недопустимое имя. Имена могут содержать только буквы, цифры, пробелы, апострофы, подчёркивания и дефисы."
},
"createFaceLibrary": {
"desc": "Создание новой коллекции",
"nextSteps": "Для создания надежной базы: <li>Используйте вкладку \"Недавние распознавания\", чтобы выбрать изображения каждого обнаруженного человека и обучить систему</li> <li>Используйте фронтальные изображения для лучшего результата; избегайте изображений с лицами, снятыми под углом.</li> </ul>",
"title": "Создать коллекцию",
"new": "Создать новое лицо"
},
"selectFace": "Выбор лица",
"uploadFaceImage": {
"desc": "Загрузите изображение для поиска лиц и связывания с {{pageToggle}}",
"title": "Загрузка изображения с лицом"
},
"selectItem": "Выбор {{item}}",
"train": {
"aria": "Выберите последние распознавания",
"title": "Последние распознавания",
"empty": "Нет недавних попыток распознавания лиц"
},
"toast": {
"success": {
"deletedFace_one": "Успешно удалено {{count}} лицо.",
"deletedFace_few": "Успешно удалено {{count}} лица.",
"deletedFace_many": "Успешно удалено {{count}} лиц.",
"deletedName_one": "{{count}} лицо успешно удалено.",
"deletedName_few": "{{count}} лица успешно удалено.",
"deletedName_many": "{{count}} лиц успешно удалено.",
"uploadedImage": "Изображение успешно загружено.",
"trainedFace": "Лицо успешно запомнено.",
"addFaceLibrary": "{{name}} успешно добавлен(а) в Библиотеку лиц!",
"updatedFaceScore": "Оценка лица успешно обновлена для {{name}} {{score}}.",
"renamedFace": "Лицо успешно переименовано в {{name}}"
},
"error": {
"deleteFaceFailed": "Не удалось удалить: {{errorMessage}}",
"uploadingImageFailed": "Не удалось загрузить изображение: {{errorMessage}}",
"trainFailed": "Не удалось запомнить: {{errorMessage}}",
"updateFaceScoreFailed": "Не удалось обновить оценку лица: {{errorMessage}}",
"addFaceLibraryFailed": "Не удалось установить имя для лица: {{errorMessage}}",
"deleteNameFailed": "Не удалось удалить имя: {{errorMessage}}",
"renameFaceFailed": "Не удалось переименовать лицо: {{errorMessage}}"
}
},
"deleteFaceLibrary": {
"title": "Удалить имя",
"desc": "Вы уверены, что хотите удалить коллекцию «{{name}}»? Это действие безвозвратно удалит все лица в коллекции."
},
"imageEntry": {
"dropActive": "Перетащите изображение сюда…",
"dropInstructions": "Перетащите или вставьте изображение сюда или щелкните, чтобы выбрать",
"maxSize": "Макс. размер: {{size}}Мб",
"validation": {
"selectImage": "Пожалуйста, выберите файл изображения."
}
},
"readTheDocs": "Читать документацию",
"trainFaceAs": "Запомнить лицо как:",
"button": {
"uploadImage": "Загрузить изображение",
"deleteFaceAttempts": "Удалить лица",
"addFace": "Добавить лицо",
"reprocessFace": "Обработать лицо повторно",
"renameFace": "Переименовать лицо",
"deleteFace": "Удалить лицо"
},
"trainFace": "Запомнить лицо",
"steps": {
"faceName": "Введите имя лица",
"nextSteps": "Следующие шаги",
"uploadFace": "Загрузить изображение лица",
"description": {
"uploadFace": "Загрузите изображение {{name}}, на котором лицо показано спереди. Не нужно обрезать фотографию только до лица."
}
},
"renameFace": {
"desc": "Введите новое имя для {{name}}",
"title": "Переименовать лицо"
},
"collections": "Коллекции",
"deleteFaceAttempts": {
"title": "Удалить лица",
"desc_one": "Вы уверены, что хотите удалить {{count}} лицо? Это действие нельзя отменить.",
"desc_few": "Вы уверены, что хотите удалить {{count}} лица? Это действие нельзя отменить.",
"desc_many": "Вы уверены, что хотите удалить {{count}} лиц? Это действие нельзя отменить."
},
"nofaces": "Лица отсутствуют",
"pixels": "{{area}} пикс"
}
@@ -0,0 +1,183 @@
{
"documentTitle": "Прямой эфир - Frigate",
"documentTitle.withCamera": "{{camera}} - Прямой эфир - Frigate",
"lowBandwidthMode": "Экономичный режим",
"twoWayTalk": {
"enable": "Включить двустороннюю связь",
"disable": "Отключить двустороннюю связь"
},
"cameraAudio": {
"enable": "Включить звук с камеры",
"disable": "Отключить звук с камеры"
},
"ptz": {
"move": {
"clickMove": {
"label": "Кликните в кадре для центрирования камеры",
"enable": "Включить перемещение по клику",
"disable": "Отключить перемещение по клику"
},
"left": {
"label": "Переместить PTZ-камеру влево"
},
"down": {
"label": "Переместить PTZ-камеру вниз"
},
"up": {
"label": "Переместить PTZ-камеру вверх"
},
"right": {
"label": "Переместить PTZ-камеру вправо"
}
},
"zoom": {
"in": {
"label": "Приблизить PTZ-камеру"
},
"out": {
"label": "Отдалить PTZ-камеру"
}
},
"frame": {
"center": {
"label": "Кликните в кадре для центрирования PTZ-камеры"
}
},
"presets": "Предустановки PTZ-камеры",
"focus": {
"in": {
"label": "Сфокусировать PTZ камеру на"
},
"out": {
"label": "Отдалить фокус PTZ камеры"
}
}
},
"camera": {
"enable": "Включить камеру",
"disable": "Отключить камеру"
},
"muteCameras": {
"enable": "Отключить звук на всех камерах",
"disable": "Включить звук на всех камерах"
},
"detect": {
"enable": "Включить детекцию",
"disable": "Отключить детекцию"
},
"recording": {
"enable": "Включить запись",
"disable": "Отключить запись"
},
"snapshots": {
"enable": "Включить снимки",
"disable": "Отключить снимки"
},
"audioDetect": {
"enable": "Включить детекцию аудио",
"disable": "Отключить детекцию аудио"
},
"autotracking": {
"enable": "Включить автотрекинг",
"disable": "Отключить автотрекинг"
},
"streamStats": {
"enable": "Показать статистику потока",
"disable": "Скрыть статистику потока"
},
"manualRecording": {
"title": "По требованию",
"tips": "Создать ручное событие на основе настроек хранения записей этой камеры.",
"playInBackground": {
"label": "Воспроизведение в фоне",
"desc": "Включите эту опцию, чтобы продолжать трансляцию при скрытом плеере."
},
"showStats": {
"label": "Показать статистику",
"desc": "Включите эту опцию, чтобы отображать статистику потока в виде наложения на изображение с камеры."
},
"debugView": "Режим отладки",
"start": "Запустить запись по запросу",
"started": "Запущена запись по запросу.",
"failedToStart": "Не удалось запустить запись по требованию.",
"recordDisabledTips": "Поскольку запись отключена или ограничена в конфигурации для этой камеры, будет сохранён только снимок.",
"end": "Завершить запись по требованию",
"ended": "Запись по требованию остановлена.",
"failedToEnd": "Не удалось остановить запись по требованию."
},
"streamingSettings": "Настройки потока",
"suspend": {
"forTime": "Приостановить на: "
},
"stream": {
"audio": {
"tips": {
"documentation": "Читать документацию ",
"title": "Аудио должно выводиться с вашей камеры и быть настроено в go2rtc для этого потока."
},
"available": "Для этого потока доступен звук",
"unavailable": "Аудио недоступно для этого потока"
},
"title": "Поток",
"twoWayTalk": {
"tips": "Ваше устройство должно поддерживать эту функцию, а WebRTC должен быть настроен для двусторонней связи.",
"tips.documentation": "Читать документацию ",
"available": "Двусторонняя связь доступна для этого потока",
"unavailable": "Двусторонняя связь недоступна для этого потока"
},
"lowBandwidth": {
"tips": "Режим просмотра в реальном времени переведён в экономичный режим из-за буферизации или ошибок потока.",
"resetStream": "Сброс потока"
},
"playInBackground": {
"label": "Воспроизвести в фоне",
"tips": "Включите эту опцию, чтобы продолжать трансляцию при скрытом плеере."
},
"debug": {
"picker": "В режиме отладки выбор потока камеры недоступен. Вид отладчика всегда использует поток настроенный для режима обнаружения."
}
},
"cameraSettings": {
"title": "Настройки {{camera}}",
"objectDetection": "Обнаружение объектов",
"recording": "Запись",
"audioDetection": "Детекция аудио",
"snapshots": "Снимки",
"autotracking": "Автотрекинг",
"cameraEnabled": "Камера активирована",
"transcription": "Транскрипция аудио"
},
"history": {
"label": "Отобразить архивные записи"
},
"effectiveRetainMode": {
"modes": {
"all": "Все",
"motion": "Движение",
"active_objects": "Активные объекты"
},
"notAllTips": "Ваша конфигурация хранения записей {{source}} установлена в <code>mode: {{effectiveRetainMode}}</code>, поэтому эта запись по запросу будет сохранять только сегменты с {{effectiveRetainModeName}}."
},
"editLayout": {
"label": "Редактировать макет",
"group": {
"label": "Редактирование группы камер"
},
"exitEdit": "Выход из редактирования"
},
"audio": "Аудио",
"notifications": "Уведомления",
"transcription": {
"enable": "Включить транскрипцию звука в реальном времени",
"disable": "Выключить транскрипцию звука"
},
"snapshot": {
"noVideoSource": "Нет видеоисточника для снимка",
"captureFailed": "Не удалось сделать снимок."
},
"noCameras": {
"title": "Камеры не настроены",
"description": "Начните с подключения камеры к Frigate.",
"buttonText": "Добавить камеру"
}
}
@@ -0,0 +1,12 @@
{
"filter": "Фильтр",
"export": "Экспорт",
"calendar": "Календарь",
"filters": "Фильтры",
"toast": {
"error": {
"endTimeMustAfterStartTime": "Конечное время должно быть позже начального",
"noValidTimeSelected": "Выбран недопустимый временной диапазон"
}
}
}
@@ -0,0 +1,74 @@
{
"savedSearches": "Сохраненные поиски",
"button": {
"clear": "Очистить поиск",
"save": "Сохранить поиск",
"delete": "Удалить сохранённый поиск",
"filterActive": "Активные фильтры",
"filterInformation": "Информация о фильтре"
},
"search": "Поиск",
"searchFor": "Поиск {{inputValue}}",
"trackedObjectId": "ID отслеживаемого объекта",
"filter": {
"label": {
"cameras": "Камеры",
"zones": "Зоны",
"sub_labels": "Дополнительные метки",
"search_type": "Тип поиска",
"time_range": "Временной диапазон",
"before": "До",
"after": "После",
"min_score": "Мин. оценка",
"max_score": "Макс. оценка",
"min_speed": "Мин. скорость",
"recognized_license_plate": "Распознанный номерной знак",
"max_speed": "Макс. скорость",
"has_clip": "Есть клип",
"has_snapshot": "Есть снимок",
"labels": "Метки"
},
"searchType": {
"thumbnail": "Миниатюра",
"description": "Описание"
},
"toast": {
"error": {
"beforeDateBeLaterAfter": "Дата 'до' должна быть позже, чем дата 'после'.",
"afterDatebeEarlierBefore": "Дата 'после' должна быть раньше, чем дата 'до'.",
"minScoreMustBeLessOrEqualMaxScore": "Значение 'min_score' должно быть меньше или равно значению 'max_score'.",
"maxScoreMustBeGreaterOrEqualMinScore": "Значение 'max_score' должно быть больше или равно значению 'min_score'.",
"minSpeedMustBeLessOrEqualMaxSpeed": "Значение 'min_speed' должно быть меньше или равно значению 'max_speed'.",
"maxSpeedMustBeGreaterOrEqualMinSpeed": "Значение 'max_speed' должно быть больше или равно значению 'min_speed'."
}
},
"tips": {
"title": "Как использовать текстовые фильтры",
"desc": {
"text": "Фильтры помогают уточнить результаты поиска. Вот как их использовать в поле ввода:",
"step": "<ul className=\"list-disc pl-5 text-sm text-primary-variant\"><li>Введите название фильтра, затем двоеточие (например, \"камеры:\").</li><li>Выберите значение из подсказок или введите своё.</li><li>Используйте несколько фильтров, добавляя их через пробел.</li><li>Фильтры даты (before:/after:) используют формат <em>{{DateFormat}}</em>.</li><li>Временной диапазон — в формате <em>{{exampleTime}}</em>.</li><li>Удаляйте фильтры нажатием на «×» рядом с ними.</li></ul>",
"example": "Пример: <code className=\"text-primary\">cameras:front_door label:person before:01012024 time_range:3:00PM-4:00PM </code>",
"step1": "Введите имя ключа фильтра с двоеточием (например, \"камеры:\").",
"step5": "Фильтр временного диапазона использует формат {{exampleTime}}.",
"exampleLabel": "Пример:",
"step2": "Выберите значение из предложенных или введите свое собственное.",
"step3": "Вы можете применять несколько фильтров, указывая их подряд через пробел.",
"step6": "Удаляйте фильтры, нажав на значок \"x\" рядом с ними.",
"step4": "Фильтры по дате (до: и после:) используют формат {{DateFormat}}."
}
},
"header": {
"currentFilterType": "Значения фильтров",
"noFilters": "Фильтры",
"activeFilters": "Активные фильтры"
}
},
"similaritySearch": {
"title": "Поиск похожего",
"active": "Активен поиск похожего",
"clear": "Очистить поиск похожего"
},
"placeholder": {
"search": "Поиск…"
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,186 @@
{
"documentTitle": {
"cameras": "Статистика камер - Frigate",
"storage": "Статистика хранилища - Frigate",
"general": "Общая статистика - Frigate",
"enrichments": "Статистика обогащений - Frigate",
"logs": {
"frigate": "Логи Frigate - Frigate",
"go2rtc": "Логи Go2RTC - Frigate",
"nginx": "Логи Nginx - Frigate"
}
},
"title": "Система",
"metrics": "Показатели системы",
"logs": {
"download": {
"label": "Загрузить логи"
},
"copy": {
"label": "Копировать в буфер",
"success": "Логи скопированы в буфер",
"error": "Не удалось скопировать логи в буфер обмена"
},
"type": {
"label": "Тип",
"timestamp": "Метка времени",
"tag": "Тег",
"message": "Сообщение"
},
"tips": "Логи передаются с сервера в потоковом режиме",
"toast": {
"error": {
"fetchingLogsFailed": "Ошибка получения логов: {{errorMessage}}",
"whileStreamingLogs": "Ошибка при потоковой передаче логов: {{errorMessage}}"
}
}
},
"general": {
"title": "Общие",
"detector": {
"title": "Детекторы",
"inferenceSpeed": "Скорость вывода детектора",
"cpuUsage": "Использование CPU детектором",
"memoryUsage": "Использование памяти детектором",
"temperature": "Температура детектора",
"cpuUsageInformation": "CPU используется при подготовке входных и выходных данных к/от моделей обнаружения. Это значение не измеряет использование вывода, даже если использовать GPU или ускоритель."
},
"hardwareInfo": {
"title": "Информация об оборудовании",
"gpuUsage": "Использование GPU",
"gpuMemory": "Память GPU",
"gpuEncoder": "GPU-кодировщик",
"gpuDecoder": "GPU-декодер",
"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": "Закрыть информацию GPU"
},
"copyInfo": {
"label": "Скопировать информацию о GPU"
},
"toast": {
"success": "Информация о GPU скопирована в буфер обмена"
}
},
"npuMemory": "Память NPU",
"npuUsage": "Использование NPU"
},
"otherProcesses": {
"title": "Другие процессы",
"processCpuUsage": "Использование CPU процессом",
"processMemoryUsage": "Использование памяти процессом"
}
},
"storage": {
"title": "Хранилище",
"overview": "Обзор",
"recordings": {
"title": "Записи",
"tips": "Это значение показывает, сколько места в хранилище занимают записи из базы данных Frigate. Frigate не учитывает другие файлы на диске.",
"earliestRecording": "Первая запись:"
},
"cameraStorage": {
"title": "Хранилище камеры",
"camera": "Камера",
"unusedStorageInformation": "Информация о неиспользованном хранилище",
"storageUsed": "Хранилище",
"percentageOfTotalUsed": "Доля (%)",
"bandwidth": "Пропускная способность",
"unused": {
"title": "Не используется",
"tips": "Это значение может неточно отражать свободное место, доступное Frigate, если на вашем диске есть другие файлы помимо записей Frigate. Frigate не отслеживает использование хранилища за пределами своих записей."
}
},
"shm": {
"title": "Выделение разделяемой памяти",
"warning": "Текущеее значение разделяемой памяти в {{total}}MB слишком мало. Увеличьте его хотя бы до {{min_shm}}MB."
}
},
"cameras": {
"title": "Камеры",
"overview": "Обзор",
"info": {
"cameraProbeInfo": "Информация о проверке камеры {{camera}}",
"streamDataFromFFPROBE": "Данные о потоке получены от <code>ffprobe</code>.",
"fetching": "Получение данных камеры",
"stream": "Поток {{idx}}",
"video": "Видео:",
"codec": "Кодек:",
"resolution": "Разрешение:",
"fps": "FPS:",
"unknown": "Неизвестно",
"audio": "Аудио:",
"error": "Ошибка: {{error}}",
"tips": {
"title": "Информация о тестировании камеры"
},
"aspectRatio": "соотношение сторон"
},
"framesAndDetections": "Кадры/детекции",
"label": {
"ffmpeg": "FFmpeg",
"camera": "камера",
"capture": "захват",
"skipped": "пропущено",
"detect": "детекция",
"cameraDetectionsPerSecond": "{{camName}} обнаружений в секунду",
"cameraSkippedDetectionsPerSecond": "{{camName}} пропущенных обнаружений в секунду",
"cameraFramesPerSecond": "{{camName}} кадров в секунду",
"overallFramesPerSecond": "общее количество кадров в секунду",
"overallDetectionsPerSecond": "общее количество обнаружений в секунду",
"overallSkippedDetectionsPerSecond": "общее количество пропущенных обнаружений в секунду",
"cameraFfmpeg": "{{camName}} FFmpeg",
"cameraCapture": "{{camName}} захват",
"cameraDetect": "{{camName}} обнаружения"
},
"toast": {
"success": {
"copyToClipboard": "Данные тестирования скопированы в буфер обмена."
},
"error": {
"unableToProbeCamera": "Не удалось протестировать камеру: {{errorMessage}}"
}
}
},
"lastRefreshed": "Обновлено: ",
"stats": {
"ffmpegHighCpuUsage": "Камера {{camera}} использует чрезмерно много ресурсов CPU в FFmpeg ({{ffmpegAvg}}%)",
"detectHighCpuUsage": "Камера {{camera}} использует слишком много ресурсов CPU для детекции ({{detectAvg}}%)",
"healthy": "Система в порядке",
"reindexingEmbeddings": "Переиндексация эмбеддингов (выполнено {{processed}} %)",
"cameraIsOffline": "{{camera}} отключена",
"detectIsVerySlow": "{{detect}} идёт очень медленно ({{speed}} мс)",
"detectIsSlow": "{{detect}} идёт медленно ({{speed}} мс)",
"shmTooLow": "Объем выделенной памяти /dev/shm ({{total}} МБ) должен быть увеличен как минимум до {{min}} МБ."
},
"enrichments": {
"title": "Обогащение данных",
"infPerSecond": "Выводов в секунду",
"embeddings": {
"image_embedding_speed": "Скорость векторизации изображений",
"plate_recognition_speed": "Скорость распознавания номеров",
"text_embedding_speed": "Скорость векторизации текста",
"face_embedding_speed": "Скорость векторизации лиц",
"face_recognition_speed": "Скорость распознавания лиц",
"text_embedding": "Векторизация текста",
"yolov9_plate_detection_speed": "Скорость обнаружения номеров YOLOv9",
"yolov9_plate_detection": "Обнаружение номеров YOLOv9",
"face_recognition": "Распознавание лиц",
"plate_recognition": "Распознавание номеров",
"image_embedding": "Векторизация изображений"
}
}
}