From d3cccffa79c9e9a169e654e18845a3d0b0f21906 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:11 +0100 Subject: [PATCH 01/15] Translated using Weblate (Turkish) Currently translated at 35.8% (38 of 106 strings) Co-authored-by: Emircanos Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/tr/ Translation: Frigate NVR/views-classificationmodel --- web/public/locales/tr/views/classificationModel.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/web/public/locales/tr/views/classificationModel.json b/web/public/locales/tr/views/classificationModel.json index 82790b549..b7e7eac65 100644 --- a/web/public/locales/tr/views/classificationModel.json +++ b/web/public/locales/tr/views/classificationModel.json @@ -36,15 +36,18 @@ "deleteModel": { "title": "Sınıflandırma Modelini Sil", "single": "{{name}} öğesini silmek istediğinizden emin misiniz? Bu işlem, görseller ve eğitim verileri dâhil olmak üzere tüm ilişkili verileri kalıcı olarak silecektir. Bu işlem geri alınamaz.", - "desc": "{{count}} modeli silmek istediğinizden emin misiniz? Bu işlem, görseller ve eğitim verileri dâhil olmak üzere tüm ilişkili verileri kalıcı olarak silecektir. Bu işlem geri alınamaz." + "desc_one": "{{count}} modeli silmek istediğinizden emin misiniz? Bu işlem, görseller ve eğitim verileri dâhil olmak üzere tüm ilişkili verileri kalıcı olarak silecektir. Bu işlem geri alınamaz.", + "desc_other": "" }, "deleteDatasetImages": { "title": "Eğitim verisi görsellerini sil", - "desc": "{{dataset}} veri kümesinden {{count}} görseli silmek istediğinizden emin misiniz? Bu işlem geri alınamaz ve modelin yeniden eğitilmesini gerektirecektir." + "desc_one": "{{dataset}} veri kümesinden {{count}} görseli silmek istediğinizden emin misiniz? Bu işlem geri alınamaz ve modelin yeniden eğitilmesini gerektirecektir.", + "desc_other": "" }, "deleteTrainImages": { "title": "Eğitim Görsellerini Sil", - "desc": "{{count}} görseli silmek istediğinizden emin misiniz? Bu işlem geri alınamaz." + "desc_one": "{{count}} görseli silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "desc_other": "" }, "renameCategory": { "title": "Sınıfı Yeniden Adlandır", From 1ee2c148917690a0c1dbf261d0ccc40c7b20ae07 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:12 +0100 Subject: [PATCH 02/15] Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Added translation using Weblate (Latvian) Update translation files Updated by "Squash Git commits" add-on in Weblate. Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ Translation: Frigate NVR/common --- web/public/locales/lv/audio.json | 1 + web/public/locales/lv/common.json | 1 + web/public/locales/lv/components/auth.json | 1 + web/public/locales/lv/components/camera.json | 1 + web/public/locales/lv/components/dialog.json | 1 + web/public/locales/lv/components/filter.json | 1 + web/public/locales/lv/components/icons.json | 1 + web/public/locales/lv/components/input.json | 1 + web/public/locales/lv/components/player.json | 1 + web/public/locales/lv/objects.json | 1 + web/public/locales/lv/views/classificationModel.json | 1 + web/public/locales/lv/views/configEditor.json | 1 + web/public/locales/lv/views/events.json | 1 + web/public/locales/lv/views/explore.json | 1 + web/public/locales/lv/views/exports.json | 1 + web/public/locales/lv/views/faceLibrary.json | 1 + web/public/locales/lv/views/live.json | 1 + web/public/locales/lv/views/recording.json | 1 + web/public/locales/lv/views/search.json | 1 + web/public/locales/lv/views/settings.json | 1 + web/public/locales/lv/views/system.json | 1 + 21 files changed, 21 insertions(+) create mode 100644 web/public/locales/lv/audio.json create mode 100644 web/public/locales/lv/common.json create mode 100644 web/public/locales/lv/components/auth.json create mode 100644 web/public/locales/lv/components/camera.json create mode 100644 web/public/locales/lv/components/dialog.json create mode 100644 web/public/locales/lv/components/filter.json create mode 100644 web/public/locales/lv/components/icons.json create mode 100644 web/public/locales/lv/components/input.json create mode 100644 web/public/locales/lv/components/player.json create mode 100644 web/public/locales/lv/objects.json create mode 100644 web/public/locales/lv/views/classificationModel.json create mode 100644 web/public/locales/lv/views/configEditor.json create mode 100644 web/public/locales/lv/views/events.json create mode 100644 web/public/locales/lv/views/explore.json create mode 100644 web/public/locales/lv/views/exports.json create mode 100644 web/public/locales/lv/views/faceLibrary.json create mode 100644 web/public/locales/lv/views/live.json create mode 100644 web/public/locales/lv/views/recording.json create mode 100644 web/public/locales/lv/views/search.json create mode 100644 web/public/locales/lv/views/settings.json create mode 100644 web/public/locales/lv/views/system.json diff --git a/web/public/locales/lv/audio.json b/web/public/locales/lv/audio.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/audio.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/common.json b/web/public/locales/lv/common.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/common.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/components/auth.json b/web/public/locales/lv/components/auth.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/components/auth.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/components/camera.json b/web/public/locales/lv/components/camera.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/components/camera.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/components/dialog.json b/web/public/locales/lv/components/dialog.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/components/dialog.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/components/filter.json b/web/public/locales/lv/components/filter.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/components/filter.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/components/icons.json b/web/public/locales/lv/components/icons.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/components/icons.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/components/input.json b/web/public/locales/lv/components/input.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/components/input.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/components/player.json b/web/public/locales/lv/components/player.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/components/player.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/objects.json b/web/public/locales/lv/objects.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/objects.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/classificationModel.json b/web/public/locales/lv/views/classificationModel.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/classificationModel.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/configEditor.json b/web/public/locales/lv/views/configEditor.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/configEditor.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/events.json b/web/public/locales/lv/views/events.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/events.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/explore.json b/web/public/locales/lv/views/explore.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/explore.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/exports.json b/web/public/locales/lv/views/exports.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/exports.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/faceLibrary.json b/web/public/locales/lv/views/faceLibrary.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/faceLibrary.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/live.json b/web/public/locales/lv/views/live.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/live.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/recording.json b/web/public/locales/lv/views/recording.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/recording.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/search.json b/web/public/locales/lv/views/search.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/search.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/settings.json b/web/public/locales/lv/views/settings.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/settings.json @@ -0,0 +1 @@ +{} diff --git a/web/public/locales/lv/views/system.json b/web/public/locales/lv/views/system.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/web/public/locales/lv/views/system.json @@ -0,0 +1 @@ +{} From 98d63851b7732b1dcc3a4d599fdd7c8bea1a32fb Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:14 +0100 Subject: [PATCH 03/15] Translated using Weblate (Lithuanian) Currently translated at 30.1% (32 of 106 strings) Co-authored-by: Hosted Weblate Co-authored-by: MaBeniu Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/lt/ Translation: Frigate NVR/views-classificationmodel --- web/public/locales/lt/views/classificationModel.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/web/public/locales/lt/views/classificationModel.json b/web/public/locales/lt/views/classificationModel.json index f797f69d0..9deea3608 100644 --- a/web/public/locales/lt/views/classificationModel.json +++ b/web/public/locales/lt/views/classificationModel.json @@ -28,11 +28,15 @@ }, "deleteDatasetImages": { "title": "Ištrinti Imties Nuotraukas", - "desc": "Esate įsitikinę norite ištrinti {{count}} nautraukas iš {{dataset}}? Šis veiksmas negrįžtamas ir reikės iš naujo apmokinti modelį." + "desc_one": "Esate įsitikinę norite ištrinti {{count}} nautraukas iš {{dataset}}? Šis veiksmas negrįžtamas ir reikės iš naujo apmokinti modelį.", + "desc_few": "", + "desc_other": "" }, "deleteTrainImages": { "title": "Ištrinti Apmokymo Nuotraukas", - "desc": "Ar esate įsitikinę, kad norite ištrinti {{count}} nuotraukas? Šis veiksmas negrįžtamas." + "desc_one": "Ar esate įsitikinę, kad norite ištrinti {{count}} nuotraukas? Šis veiksmas negrįžtamas.", + "desc_few": "", + "desc_other": "" }, "renameCategory": { "title": "Pervadinti Klasę", From 58807a4948bb70920b56463cae5f0f7e718859b0 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:15 +0100 Subject: [PATCH 04/15] Translated using Weblate (Russian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 95.5% (108 of 113 strings) Translated using Weblate (Russian) Currently translated at 100.0% (52 of 52 strings) Translated using Weblate (Russian) Currently translated at 100.0% (209 of 209 strings) Translated using Weblate (Russian) Currently translated at 100.0% (501 of 501 strings) Translated using Weblate (Russian) Currently translated at 100.0% (108 of 108 strings) Translated using Weblate (Russian) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Russian) Currently translated at 100.0% (106 of 106 strings) Translated using Weblate (Russian) Currently translated at 78.0% (467 of 598 strings) Translated using Weblate (Russian) Currently translated at 100.0% (52 of 52 strings) Translated using Weblate (Russian) Currently translated at 100.0% (127 of 127 strings) Translated using Weblate (Russian) Currently translated at 100.0% (39 of 39 strings) Translated using Weblate (Russian) Currently translated at 73.9% (442 of 598 strings) Translated using Weblate (Russian) Currently translated at 95.5% (86 of 90 strings) Translated using Weblate (Russian) Currently translated at 98.0% (51 of 52 strings) Translated using Weblate (Russian) Currently translated at 71.6% (91 of 127 strings) Translated using Weblate (Russian) Currently translated at 86.4% (433 of 501 strings) Co-authored-by: Hosted Weblate Co-authored-by: Артём Владимиров Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ru/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ru/ Translation: Frigate NVR/audio Translation: Frigate NVR/common Translation: Frigate NVR/components-dialog Translation: Frigate NVR/views-classificationmodel 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 --- web/public/locales/ru/audio.json | 78 +++++++++- web/public/locales/ru/common.json | 16 +- web/public/locales/ru/components/dialog.json | 8 +- .../locales/ru/views/classificationModel.json | 145 +++++++++++++++++- web/public/locales/ru/views/events.json | 6 +- web/public/locales/ru/views/explore.json | 70 ++++++++- web/public/locales/ru/views/faceLibrary.json | 8 +- web/public/locales/ru/views/live.json | 11 +- web/public/locales/ru/views/settings.json | 65 ++++++++ 9 files changed, 384 insertions(+), 23 deletions(-) diff --git a/web/public/locales/ru/audio.json b/web/public/locales/ru/audio.json index 9f5e58530..e9e6bfc21 100644 --- a/web/public/locales/ru/audio.json +++ b/web/public/locales/ru/audio.json @@ -315,7 +315,7 @@ "slam": "Хлопок", "knock": "Стук", "tap": "Небольшой стук", - "squeak": "Скрип", + "squeak": "Писк", "cupboard_open_or_close": "Открытие или закрытие шкафа", "drawer_open_or_close": "Открытие или закрытие ящика", "dishes": "Тарелки", @@ -425,5 +425,79 @@ "pink_noise": "Розовый шум", "hammer": "Молоток", "firecracker": "Петарда", - "television": "Телевидение" + "television": "Телевидение", + "echo": "Эхо", + "noise": "Шум", + "mains_hum": "Гул сети", + "cacophony": "Какофония", + "throbbing": "Пульсирующий", + "vibration": "Вибрация", + "sodeling": "Соделинг", + "chird": "Чирд", + "change_ringing": "Перезвон", + "shofar": "Шофар", + "liquid": "Жидкость", + "splash": "Брызги", + "slosh": "Плеск", + "squish": "Хлюпанье", + "drip": "Капля", + "pour": "Литьё", + "trickle": "Струйка", + "gush": "Бурный поток", + "fill": "Наполнение", + "spray": "Распыление", + "pump": "Насос", + "stir": "Перемешивание", + "boiling": "Кипение", + "sonar": "Сонар", + "arrow": "Стрела", + "whoosh": "Вжух", + "thump": "Глухой удар", + "thunk": "Тупой удар", + "electronic_tuner": "Электронный тюнер", + "effects_unit": "Блок эффектов", + "chorus_effect": "Эффект хоруса", + "basketball_bounce": "Отскок баскетбольного мяча", + "bang": "Бах", + "slap": "Шлепок", + "whack": "Удар", + "smash": "Разбивание", + "breaking": "Разрушение", + "bouncing": "Отскок", + "whip": "Хлыст", + "flap": "Хлопание", + "scratch": "Царапанье", + "scrape": "Скребок", + "rub": "Трение", + "roll": "Качение", + "crushing": "Дробление", + "crumpling": "Сминание", + "tearing": "Разрывание", + "beep": "Бип", + "ping": "Пинг", + "ding": "Динь", + "clang": "Лязг", + "squeal": "Визг", + "creak": "Скрипение", + "rustle": "Шуршание", + "whir": "Жужжание", + "clatter": "Грохот", + "sizzle": "Шипение", + "clicking": "Щелканье", + "clickety_clack": "Щелчок-Клак", + "rumble": "Грохотать", + "plop": "Плюх", + "hum": "Гул", + "zing": "Зинг", + "boing": "Боинг", + "crunch": "Хруст", + "sine_wave": "Синусоида", + "harmonic": "Гармоника", + "chirp_tone": "Тон чириканья", + "pulse": "Импульс", + "inside": "Внутри", + "outside": "Снаружи", + "reverberation": "Реверберация", + "distortion": "Искажение", + "sidetone": "Боковой тон" } diff --git a/web/public/locales/ru/common.json b/web/public/locales/ru/common.json index 8b15aed2a..965702ed0 100644 --- a/web/public/locales/ru/common.json +++ b/web/public/locales/ru/common.json @@ -128,7 +128,12 @@ "next": "Следующий" }, "label": { - "back": "Вернуться" + "back": "Вернуться", + "hide": "Скрыть {{item}}", + "show": "Показать {{item}}", + "ID": "ID", + "all": "Все", + "none": "Ничего" }, "unit": { "speed": { @@ -291,5 +296,14 @@ "readTheDocumentation": "Читать документацию", "information": { "pixels": "{{area}}px" + }, + "list": { + "two": "{{0}} и {{1}}", + "many": "{{items}}, и {{last}}", + "separatorWithSpace": ", " + }, + "field": { + "optional": "Необязательный", + "internalID": "Внутренний идентификатор Frigate, используемый в конфигурации и базе данных" } } diff --git a/web/public/locales/ru/components/dialog.json b/web/public/locales/ru/components/dialog.json index 748d079db..a1dc88e86 100644 --- a/web/public/locales/ru/components/dialog.json +++ b/web/public/locales/ru/components/dialog.json @@ -65,7 +65,7 @@ "export": "Экспорт", "selectOrExport": "Выбрать или экспортировать", "toast": { - "success": "Экспорт успешно запущен. Файл доступен в папке /exports.", + "success": "Экспорт успешно запущен. Файл доступен на странице экспорта.", "error": { "failed": "Не удалось запустить экспорт: {{error}}", "noVaildTimeSelected": "Не выбран допустимый временной диапазон", @@ -120,7 +120,8 @@ "button": { "export": "Экспорт", "markAsReviewed": "Пометить как просмотренное", - "deleteNow": "Удалить сейчас" + "deleteNow": "Удалить сейчас", + "markAsUnreviewed": "Отметить как непросмотренное" } }, "imagePicker": { @@ -128,6 +129,7 @@ "placeholder": "Искать по метке..." }, "selectImage": "Выбор миниатюры отслеживаемого объекта", - "noImages": "Не обнаружено миниатюр для этой камеры" + "noImages": "Не обнаружено миниатюр для этой камеры", + "unknownLabel": "Сохраненное изображение триггера" } } diff --git a/web/public/locales/ru/views/classificationModel.json b/web/public/locales/ru/views/classificationModel.json index cabb7793e..1017128fe 100644 --- a/web/public/locales/ru/views/classificationModel.json +++ b/web/public/locales/ru/views/classificationModel.json @@ -15,26 +15,159 @@ }, "toast": { "success": { - "deletedCategory": "Удаленный класс", - "deletedImage": "Удалённые изображения", + "deletedCategory": "Класс удалён", + "deletedImage": "Изображения удалены", "deletedModel_one": "Успешно удалена {{count}} модель", "deletedModel_few": "Успешно удалены {{count}} модели", "deletedModel_many": "Успешно удалены {{count}} моделей", "categorizedImage": "Изображение успешно классифицировано", - "trainedModel": "Успешно обученная модель.", - "trainingModel": "Успешно начато обучение моделей.", - "updatedModel": "Успешно обновлена конфигурация модели" + "trainedModel": "Модель успешно обучена.", + "trainingModel": "Обучение модели успешно запущено.", + "updatedModel": "Конфигурация модели успешно обновлена", + "renamedCategory": "Класс успешно переименован в {{name}}" }, "error": { "deleteImageFailed": "Не удалось удалить: {{errorMessage}}", "deleteCategoryFailed": "Не удалось удалить класс: {{errorMessage}}", "deleteModelFailed": "Не удалось удалить модель: {{errorMessage}}", "categorizeFailed": "Не удалось классифицировать изображение: {{errorMessage}}", - "trainingFailed": "Не удалось начать обучение модели: {{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": "Примеры изображений успешно сгенерированы" + } } } diff --git a/web/public/locales/ru/views/events.json b/web/public/locales/ru/views/events.json index 85f8bed39..c54e54262 100644 --- a/web/public/locales/ru/views/events.json +++ b/web/public/locales/ru/views/events.json @@ -45,7 +45,11 @@ "trackedObject_other": "объекты", "noObjectDetailData": "Данные о деталях объекта недоступны.", "label": "Деталь", - "settings": "Настройки подробного просмотра" + "settings": "Настройки подробного просмотра", + "alwaysExpandActive": { + "title": "Всегда раскрывать активный", + "desc": "Всегда раскрывать сведения об объекте активного элемента обзора, если они доступны." + } }, "objectTrack": { "trackedPoint": "Отслеживаемая точка", diff --git a/web/public/locales/ru/views/explore.json b/web/public/locales/ru/views/explore.json index 778ffd7d1..18c211a95 100644 --- a/web/public/locales/ru/views/explore.json +++ b/web/public/locales/ru/views/explore.json @@ -102,7 +102,7 @@ "label": "Оценка снимка" }, "score": { - "label": "Балл" + "label": "Оценка" } }, "trackedObjectDetails": "Детали объекта", @@ -197,16 +197,26 @@ "audioTranscription": { "label": "Транскрибировать", "aria": "Запросить аудиотранскрипцию" + }, + "viewTrackingDetails": { + "label": "Просмотреть детали отслеживания", + "aria": "Показать детали отслеживания" + }, + "showObjectDetails": { + "label": "Показать путь объекта" + }, + "hideObjectDetails": { + "label": "Скрыть путь объекта" } }, "dialog": { "confirmDelete": { "title": "Подтвердить удаление", - "desc": "Удаление этого отслеживаемого объекта приведёт к удалению его снимка, всех сохранённых эмбеддингов и записей жизненного цикла. Сами записи в разделе История НЕ будут удалены.

Вы уверены, что хотите продолжить?" + "desc": "Удаление этого отслеживаемого объекта приведёт к удалению снимка, всех сохранённых эмбеддингов и всех связанных записей деталей отслеживания. Записанное видео этого отслеживаемого объекта в представлении Истории НЕ будет удалено.

Вы уверены, что хотите продолжить?" } }, - "noTrackedObjects": "Не найдено отслеживаемых объектов", - "fetchingTrackedObjectsFailed": "При получении списка отслеживаемых объектов произошла ошибка: {{errorMessage}}", + "noTrackedObjects": "Отслеживаемые объекты не найдены", + "fetchingTrackedObjectsFailed": "Ошибка при получении отслеживаемых объектов: {{errorMessage}}", "trackedObjectsCount_one": "{{count}} отслеживаемый объект ", "trackedObjectsCount_few": "{{count}} отслеживаемых объекта ", "trackedObjectsCount_many": "{{count}} отслеживаемых объектов ", @@ -217,7 +227,9 @@ "error": "Не удалось удалить отслеживаемый объект: {{errorMessage}}" } }, - "tooltip": "Соответствие с {{type}} на {{confidence}}%" + "tooltip": "Соответствие с {{type}} на {{confidence}}%", + "previousTrackedObject": "Предыдущий отслеживаемый объект", + "nextTrackedObject": "Следующий отслеживаемый объект" }, "exploreMore": "Просмотреть больше объектов {{label}}", "aiAnalysis": { @@ -225,5 +237,53 @@ }, "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": "Смещение аннотаций детекции в миллисекундах. По умолчанию: 0", + "tips": "Уменьшите значение, если воспроизведение видео опережает рамки и точки пути, и увеличьте значение, если воспроизведение видео отстаёт от них. Это значение может быть отрицательным.", + "toast": { + "success": "Смещение аннотаций для {{camera}} сохранено в конфигурационном файле. Перезапустите Frigate, чтобы применить изменения." + } + } + }, + "carousel": { + "previous": "Предыдущий слайд", + "next": "Следующий слайд" + } } } diff --git a/web/public/locales/ru/views/faceLibrary.json b/web/public/locales/ru/views/faceLibrary.json index 3dcfd7cd5..ee8d702fb 100644 --- a/web/public/locales/ru/views/faceLibrary.json +++ b/web/public/locales/ru/views/faceLibrary.json @@ -13,11 +13,11 @@ "description": { "placeholder": "Введите название коллекции", "addFace": "Добавьте новую коллекцию в библиотеку лиц, загрузив свое первое изображение.", - "invalidName": "Недопустимое имя. Имена могут содержать только буквы, цифры, пробелы, апострофы, подчеркивания и дефисы." + "invalidName": "Недопустимое имя. Имена могут содержать только буквы, цифры, пробелы, апострофы, подчёркивания и дефисы." }, "createFaceLibrary": { "desc": "Создание новой коллекции", - "nextSteps": "Для создания надежной базы:
  • Используйте вкладку Обучение, чтобы выбрать изображения и обучить систему для каждого обнаруженного человека.
  • Используйте фронтальные изображения для лучшего результата; избегайте изображений с лицами, снятыми под углом.
  • ", + "nextSteps": "Для создания надежной базы:
  • Используйте вкладку \"Недавние распознавания\", чтобы выбрать изображения каждого обнаруженного человека и обучить систему
  • Используйте фронтальные изображения для лучшего результата; избегайте изображений с лицами, снятыми под углом.
  • ", "title": "Создать коллекцию", "new": "Создать новое лицо" }, @@ -43,7 +43,7 @@ "uploadedImage": "Изображение успешно загружено.", "trainedFace": "Лицо успешно запомнено.", "addFaceLibrary": "{{name}} успешно добавлен(а) в Библиотеку лиц!", - "updatedFaceScore": "Оценка лица успешно обновлена.", + "updatedFaceScore": "Оценка лица успешно обновлена для {{name}} {{score}}.", "renamedFace": "Лицо успешно переименовано в {{name}}" }, "error": { @@ -62,7 +62,7 @@ }, "imageEntry": { "dropActive": "Перетащите изображение сюда…", - "dropInstructions": "Перетащите изображение сюда или нажмите для выбора", + "dropInstructions": "Перетащите или вставьте изображение сюда или щелкните, чтобы выбрать", "maxSize": "Макс. размер: {{size}}Мб", "validation": { "selectImage": "Пожалуйста, выберите файл изображения." diff --git a/web/public/locales/ru/views/live.json b/web/public/locales/ru/views/live.json index 950a9b946..8a189bf76 100644 --- a/web/public/locales/ru/views/live.json +++ b/web/public/locales/ru/views/live.json @@ -86,7 +86,7 @@ "disable": "Скрыть статистику потока" }, "manualRecording": { - "title": "Запись по требованию", + "title": "По требованию", "tips": "Создать ручное событие на основе настроек хранения записей этой камеры.", "playInBackground": { "label": "Воспроизведение в фоне", @@ -170,5 +170,14 @@ "transcription": { "enable": "Включить транскрипцию звука в реальном времени", "disable": "Выключить транскрипцию звука" + }, + "snapshot": { + "noVideoSource": "Нет видеоисточника для снимка", + "captureFailed": "Не удалось сделать снимок." + }, + "noCameras": { + "title": "Камеры не настроены", + "description": "Начните с подключения камеры к Frigate.", + "buttonText": "Добавить камеру" } } diff --git a/web/public/locales/ru/views/settings.json b/web/public/locales/ru/views/settings.json index 73a302ccd..3587f4464 100644 --- a/web/public/locales/ru/views/settings.json +++ b/web/public/locales/ru/views/settings.json @@ -51,6 +51,9 @@ "playAlertVideos": { "label": "Воспроизводить видео с тревогами", "desc": "По умолчанию последние тревоги на панели мониторинга воспроизводятся как короткие зацикленные видео. Отключите эту опцию, чтобы показывать только статичное изображение последних оповещений на этом устройстве/браузере." + }, + "displayCameraNames": { + "label": "Всегда показывать названия камер" } }, "calendar": { @@ -903,6 +906,10 @@ }, "docs": { "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" + }, + "testing": { + "probingMetadata": "Проверка метаданных камеры…", + "fetchingSnapshot": "Получение снимка с камеры…" } }, "step2": { @@ -928,5 +935,63 @@ "testSuccess": "Тест потока выполнен успешно!", "testFailed": "Тест потока не пройден" } + }, + "roles": { + "addRole": "Добавить роль", + "table": { + "role": "Роль", + "cameras": "Камеры", + "actions": "Действия", + "editCameras": "Редактировать камеры", + "deleteRole": "Удалить роль", + "noRoles": "Пользовательских ролей не найдено." + }, + "toast": { + "success": { + "createRole": "Роль {{role}} успешно создана", + "updateCameras": "Камеры обновлены для роли {{role}}", + "deleteRole": "Роль {{role}} успешно удалена", + "userRolesUpdated_one": "{{count}} пользователь, назначенный на эту роль, был обновлён до роли 'наблюдатель', которая имеет доступ ко всем камерам.", + "userRolesUpdated_few": "{{count}} пользователя, назначенных на эту роль, были обновлены до роли 'наблюдатель', которая имеет доступ ко всем камерам.", + "userRolesUpdated_many": "{{count}} пользователей, назначенных на эту роль, были обновлены до роли 'наблюдатель', которая имеет доступ ко всем камерам." + }, + "error": { + "createRoleFailed": "Не удалось создать роль: {{errorMessage}}", + "updateCamerasFailed": "Не удалось обновить камеры: {{errorMessage}}", + "deleteRoleFailed": "Не удалось удалить роль: {{errorMessage}}", + "userUpdateFailed": "Не удалось обновить роли пользователей: {{errorMessage}}" + } + }, + "dialog": { + "createRole": { + "title": "Создать новую роль", + "desc": "Добавьте новую роль и укажите права доступа к камерам." + }, + "editCameras": { + "title": "Редактировать камеры роли", + "desc": "Обновите доступ к камерам для роли {{role}}." + }, + "deleteRole": { + "title": "Удалить роль", + "desc": "Это действие нельзя отменить. Это действие навсегда удалит роль и назначит всех пользователей с этой ролью на роль 'наблюдатель', что даст наблюдателю доступ ко всем камерам.", + "warn": "Вы уверены, что хотите удалить {{role}}?", + "deleting": "Удаление…" + }, + "form": { + "role": { + "title": "Название роли", + "placeholder": "Введите название роли", + "desc": "Разрешены только буквы, цифры, точки и подчёркивания.", + "roleIsRequired": "Требуется название роли", + "roleOnlyInclude": "Название роли может содержать только буквы, цифры, . или _", + "roleExists": "Роль с таким названием уже существует." + }, + "cameras": { + "title": "Камеры", + "desc": "Выберите камеры, к которым эта роль имеет доступ. Необходимо выбрать хотя бы одну камеру.", + "required": "Необходимо выбрать хотя бы одну камеру." + } + } + } } } From 7bb6d9cb5085911f9feef057030ab1ed5920a179 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:16 +0100 Subject: [PATCH 05/15] Translated using Weblate (Romanian) Currently translated at 100.0% (116 of 116 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (108 of 108 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (52 of 52 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (106 of 106 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (598 of 598 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (127 of 127 strings) Translated using Weblate (Romanian) Currently translated at 100.0% (209 of 209 strings) Translated using Weblate (Romanian) Currently translated at 97.1% (103 of 106 strings) Co-authored-by: Hosted Weblate Co-authored-by: lukasig Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ro/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/ Translation: Frigate NVR/common Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/ro/common.json | 4 ++- .../locales/ro/views/classificationModel.json | 36 ++++++++++++++----- web/public/locales/ro/views/explore.json | 6 ++-- web/public/locales/ro/views/faceLibrary.json | 2 +- web/public/locales/ro/views/settings.json | 4 +-- 5 files changed, 38 insertions(+), 14 deletions(-) diff --git a/web/public/locales/ro/common.json b/web/public/locales/ro/common.json index d232a8047..11299f2bf 100644 --- a/web/public/locales/ro/common.json +++ b/web/public/locales/ro/common.json @@ -240,7 +240,9 @@ "back": "Mergi înapoi", "hide": "Ascunde {{item}}", "show": "Afișează {{item}}", - "ID": "ID" + "ID": "ID", + "none": "Niciuna", + "all": "Toate" }, "selectItem": "Selectează {{item}}", "pagination": { diff --git a/web/public/locales/ro/views/classificationModel.json b/web/public/locales/ro/views/classificationModel.json index 1e48893ba..72b063107 100644 --- a/web/public/locales/ro/views/classificationModel.json +++ b/web/public/locales/ro/views/classificationModel.json @@ -20,28 +20,37 @@ "deletedModel_one": "{{count}} model șters cu succes", "deletedModel_few": "{{count}} modele șterse cu succes", "deletedModel_other": "{{count}} modele șterse cu succes", - "updatedModel": "Configurația modelului a fost actualizată cu succes" + "updatedModel": "Configurația modelului a fost actualizată cu succes", + "renamedCategory": "Clasa a fost redenumită cu succes în {{name}}" }, "error": { "deleteImageFailed": "Ștergerea a eșuat: {{errorMessage}}", "deleteCategoryFailed": "Ștergerea clasei a eșuat: {{errorMessage}}", "categorizeFailed": "Categorisirea imaginii a eșuat: {{errorMessage}}", - "trainingFailed": "Pornirea antrenamentului modelului a eșuat: {{errorMessage}}", + "trainingFailed": "Antrenarea modelului a eșuat. Verifică jurnalele Frigate pentru detalii.", "deleteModelFailed": "Ștergerea modelului a eșuat: {{errorMessage}}", - "updateModelFailed": "Actualizarea modelului a eșuat: {{errorMessage}}" + "updateModelFailed": "Actualizarea modelului a eșuat: {{errorMessage}}", + "renameCategoryFailed": "Redenumirea clasei a eșuat: {{errorMessage}}", + "trainingFailedToStart": "Nu s-a putut porni antrenarea modelului: {{errorMessage}}" } }, "deleteCategory": { "title": "Șterge clasa", - "desc": "Sigur doriți să ștergeți clasa {{name}}? Aceasta va șterge permanent toate imaginile asociate și va necesita reantrenarea modelului." + "desc": "Sigur doriți să ștergeți clasa {{name}}? Aceasta va șterge permanent toate imaginile asociate și va necesita reantrenarea modelului.", + "minClassesTitle": "Nu se poate șterge clasa", + "minClassesDesc": "Un model de clasificare trebuie să aibă cel puțin 2 clase. Adaugă o altă clasă înainte de a o șterge pe aceasta." }, "deleteDatasetImages": { "title": "Șterge imaginile setului de date", - "desc": "Sigur doriți să ștergeți {{count}} imagini din {{dataset}}? Această acțiune nu poate fi anulată și va necesita reantrenarea modelului." + "desc_one": "Sigur doriți să ștergeți {{count}} imagine din {{dataset}}? Această acțiune nu poate fi anulată și va necesita reantrenarea modelului.", + "desc_few": "Sigur doriți să ștergeți {{count}} imagini din {{dataset}}? Această acțiune nu poate fi anulată și va necesita reantrenarea modelului.", + "desc_other": "Sigur doriți să ștergeți {{count}} de imagini din {{dataset}}? Această acțiune nu poate fi anulată și va necesita reantrenarea modelului." }, "deleteTrainImages": { "title": "Șterge imaginile de antrenament", - "desc": "Sigur doriți să ștergeți {{count}} imagini? Această acțiune nu poate fi anulată." + "desc_one": "Sigur doriți să ștergeți {{count}} imagine? Această acțiune nu poate fi anulată.", + "desc_few": "Sigur doriți să ștergeți {{count}} imagini? Această acțiune nu poate fi anulată.", + "desc_other": "Sigur doriți să ștergeți {{count}} de imagini? Această acțiune nu poate fi anulată." }, "renameCategory": { "title": "Redenumește clasa", @@ -140,13 +149,18 @@ "generationFailed": "Generarea a eșuat. Vă rugăm să încercați din nou.", "classifyFailed": "Clasificarea imaginilor a eșuat: {{error}}" }, - "generateSuccess": "Imaginile de exemplu au fost generate cu succes" + "generateSuccess": "Imaginile de exemplu au fost generate cu succes", + "allImagesRequired_one": "Te rog să clasifici toate imaginile. {{count}} imagine rămasă.", + "allImagesRequired_few": "Te rog să clasifici toate imaginile. {{count}} imagini rămase.", + "allImagesRequired_other": "Te rog să clasifici toate imaginile. {{count}} de imagini rămase." } }, "deleteModel": { "title": "Șterge modelul de clasificare", "single": "Sigur doriți să ștergeți {{name}}? Aceasta va șterge permanent toate datele asociate, inclusiv imaginile și datele de antrenament. Această acțiune nu poate fi anulată.", - "desc": "Sigur doriți să ștergeți {{count}} model(e)? Aceasta va șterge permanent toate datele asociate, inclusiv imaginile și datele de antrenament. Această acțiune nu poate fi anulată." + "desc_one": "Sigur doriți să ștergeți {{count}} model? Aceasta va șterge permanent toate datele asociate, inclusiv imaginile și datele de antrenament. Această acțiune nu poate fi anulată.", + "desc_few": "Sigur doriți să ștergeți {{count}} modele? Aceasta va șterge permanent toate datele asociate, inclusiv imaginile și datele de antrenament. Această acțiune nu poate fi anulată.", + "desc_other": "Sigur doriți să ștergeți {{count}} de modele? Aceasta va șterge permanent toate datele asociate, inclusiv imaginile și datele de antrenament. Această acțiune nu poate fi anulată." }, "menu": { "objects": "Obiecte", @@ -160,5 +174,11 @@ "descriptionState": "Editează clasele pentru acest model de clasificare a stării. Modificările vor necesita reantrenarea modelului.", "descriptionObject": "Editează tipul de obiect și tipul de clasificare pentru acest model de clasificare a obiectelor.", "stateClassesInfo": "Notă: Modificarea claselor de stare necesită reantrenarea modelului cu clasele actualizate." + }, + "tooltip": { + "trainingInProgress": "Modelul este în curs de antrenare", + "noNewImages": "Nu există imagini noi pentru antrenare. Clasifică mai întâi mai multe imagini în setul de date.", + "modelNotReady": "Modelul nu este pregătit pentru antrenare", + "noChanges": "Nicio modificare a setului de date de la ultima antrenare." } } diff --git a/web/public/locales/ro/views/explore.json b/web/public/locales/ro/views/explore.json index 2c9e1c072..6203abb86 100644 --- a/web/public/locales/ro/views/explore.json +++ b/web/public/locales/ro/views/explore.json @@ -228,7 +228,9 @@ "error": "Ștergerea obiectului urmărit a eșuat: {{errorMessage}}" } }, - "tooltip": "Potrivire {{type}} cu {{confidence}}%" + "tooltip": "Potrivire {{type}} cu {{confidence}}%", + "previousTrackedObject": "Obiectul urmărit anterior", + "nextTrackedObject": "Următorul obiect urmărit" }, "aiAnalysis": { "title": "Analiză AI" @@ -273,7 +275,7 @@ "label": "Compensare adnotare", "desc": "Aceste date provin din fluxul de detectare al camerei tale, dar sunt suprapuse pe imaginile din fluxul de înregistrare. Este puțin probabil ca cele două fluxuri să fie perfect sincronizate. Drept urmare, caseta delimitatoare și materialul video nu se vor alinia perfect. Poți folosi această setare pentru a decală adnotările înainte sau înapoi în timp, pentru a le alinia mai bine cu materialul înregistrat.", "millisecondsToOffset": "Millisecunde pentru a decalca adnotările de detectare. Implicit: 0", - "tips": "SFAT: Imaginează-ți că există un clip al unui eveniment cu o persoană care merge de la stânga la dreapta. Dacă caseta delimitatoare a cronologiei evenimentului este constant în stânga persoanei, atunci valoarea ar trebui să fie scăzută. În mod similar, dacă o persoană merge de la stânga la dreapta și caseta delimitatoare este constant în fața persoanei, atunci valoarea ar trebui să fie crescută.", + "tips": "Reduceți valoarea dacă redarea video este înaintea casetelor și punctelor de traseu și creșteți valoarea dacă redarea video este în urma acestora. Această valoare poate fi negativă.", "toast": { "success": "Decalajul de adnotare pentru {{camera}} a fost salvat în fișierul de configurare. Repornește Frigate pentru a aplica modificările." } diff --git a/web/public/locales/ro/views/faceLibrary.json b/web/public/locales/ro/views/faceLibrary.json index a1e03f734..16b75b264 100644 --- a/web/public/locales/ro/views/faceLibrary.json +++ b/web/public/locales/ro/views/faceLibrary.json @@ -69,7 +69,7 @@ "deletedName_other": "{{count}} de fețe au fost șterse cu succes.", "trainedFace": "Față antrenată cu succes.", "renamedFace": "Fața a fost redenumită cu succes ca {{name}}", - "updatedFaceScore": "Scorul feței a fost actualizat cu succes.", + "updatedFaceScore": "Scorul feței a fost actualizat cu succes la {{name}} ({{score}}).", "deletedFace_one": "{{count}} față a fost ștersă cu succes.", "deletedFace_few": "{{count}} fețe au fost șterse cu succes.", "deletedFace_other": "{{count}} de fețe au fost șterse cu succes.", diff --git a/web/public/locales/ro/views/settings.json b/web/public/locales/ro/views/settings.json index 262d50547..fdaeb6a3a 100644 --- a/web/public/locales/ro/views/settings.json +++ b/web/public/locales/ro/views/settings.json @@ -830,8 +830,8 @@ "updateCameras": "Camerele au fost actualizate pentru rolul {{role}}", "deleteRole": "Rolul {{role}} a fost șters cu succes", "userRolesUpdated_one": "{{count}} utilizator(i) atribuiți acestui rol au fost actualizați la „vizualizator”, care are acces la toate camerele.", - "userRolesUpdated_few": "", - "userRolesUpdated_other": "" + "userRolesUpdated_few": "{{count}} utilizator atribuit acestui rol a fost actualizat la „vizualizator”, care are acces la toate camerele.", + "userRolesUpdated_other": "{{count}} utilizatori atribuiți acestui rol au fost actualizați la „vizualizator”, care are acces la toate camerele." }, "error": { "createRoleFailed": "Crearea rolului a eșuat: {{errorMessage}}", From 865581451f25a6935131e4b3a48156bbce4a92fc Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:17 +0100 Subject: [PATCH 06/15] Translated using Weblate (Ukrainian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (108 of 108 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (52 of 52 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (209 of 209 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (106 of 106 strings) Translated using Weblate (Ukrainian) Currently translated at 97.1% (103 of 106 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (598 of 598 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (127 of 127 strings) Co-authored-by: Hosted Weblate Co-authored-by: Максим Горпиніч Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/uk/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/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-settings/uk/ Translation: Frigate NVR/common Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/uk/common.json | 4 ++- .../locales/uk/views/classificationModel.json | 31 ++++++++++++++----- web/public/locales/uk/views/explore.json | 6 ++-- web/public/locales/uk/views/faceLibrary.json | 2 +- web/public/locales/uk/views/settings.json | 6 ++-- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/web/public/locales/uk/common.json b/web/public/locales/uk/common.json index a3338a223..8146378c8 100644 --- a/web/public/locales/uk/common.json +++ b/web/public/locales/uk/common.json @@ -241,7 +241,9 @@ "back": "Повернутись", "hide": "Приховати {{item}}", "show": "Показати {{item}}", - "ID": "ID" + "ID": "ID", + "none": "Жоден", + "all": "Усі" }, "toast": { "save": { diff --git a/web/public/locales/uk/views/classificationModel.json b/web/public/locales/uk/views/classificationModel.json index 943aebba3..015d3bb44 100644 --- a/web/public/locales/uk/views/classificationModel.json +++ b/web/public/locales/uk/views/classificationModel.json @@ -20,15 +20,18 @@ "deletedModel_one": "Успішно видалено модель {{count}}", "deletedModel_few": "Успішно видалено моделей {{count}}", "deletedModel_many": "Успішно видалено моделі {{count}}", - "updatedModel": "Конфігурацію моделі успішно оновлено" + "updatedModel": "Конфігурацію моделі успішно оновлено", + "renamedCategory": "Клас успішно перейменовано на {{name}}" }, "error": { "deleteImageFailed": "Не вдалося видалити: {{errorMessage}}", "deleteCategoryFailed": "Не вдалося видалити клас: {{errorMessage}}", "categorizeFailed": "Не вдалося класифікувати зображення: {{errorMessage}}", - "trainingFailed": "Не вдалося розпочати навчання моделі: {{errorMessage}}", + "trainingFailed": "Навчання моделі не вдалося. Перегляньте журнали Frigate для отримання детальної інформації.", "deleteModelFailed": "Не вдалося видалити модель: {{errorMessage}}", - "updateModelFailed": "Не вдалося оновити модель: {{errorMessage}}" + "updateModelFailed": "Не вдалося оновити модель: {{errorMessage}}", + "renameCategoryFailed": "Не вдалося перейменувати клас: {{errorMessage}}", + "trainingFailedToStart": "Не вдалося розпочати навчання моделі: {{errorMessage}}" } }, "deleteCategory": { @@ -37,11 +40,15 @@ }, "deleteDatasetImages": { "title": "Видалити зображення набору даних", - "desc": "Ви впевнені, що хочете видалити {{count}} зображень з {{dataset}}? Цю дію неможливо скасувати, вона вимагатиме повторного навчання моделі." + "desc_one": "Ви впевнені, що хочете видалити {{count}} зображень з {{dataset}}? Цю дію неможливо скасувати, вона вимагатиме повторного навчання моделі.", + "desc_few": "Ви впевнені, що хочете видалити {{count}} зображенні з {{dataset}}? Цю дію неможливо скасувати, вона вимагатиме повторного навчання моделі.", + "desc_many": "Ви впевнені, що хочете видалити {{count}} зображенні з {{dataset}}? Цю дію неможливо скасувати, вона вимагатиме повторного навчання моделі." }, "deleteTrainImages": { "title": "Видалити зображення поїздів", - "desc": "Ви впевнені, що хочете видалити {{count}} зображень? Цю дію не можна скасувати." + "desc_one": "Ви впевнені, що хочете видалити {{count}} зображень? Цю дію не можна скасувати.", + "desc_few": "Ви впевнені, що хочете видалити {{count}} зображенні? Цю дію не можна скасувати.", + "desc_many": "Ви впевнені, що хочете видалити {{count}} зображенні? Цю дію не можна скасувати." }, "renameCategory": { "title": "Перейменувати клас", @@ -140,13 +147,18 @@ "generationFailed": "Помилка генерації. Будь ласка, спробуйте ще раз.", "classifyFailed": "Не вдалося класифікувати зображення: {{error}}" }, - "generateSuccess": "Зразки зображень успішно створено" + "generateSuccess": "Зразки зображень успішно створено", + "allImagesRequired_one": "Будь ласка, класифікуйте всі зображення. Залишилося {{count}} зображення.", + "allImagesRequired_few": "Будь ласка, класифікуйте всі зображення. Залишилося зображень: {{count}}.", + "allImagesRequired_many": "Будь ласка, класифікуйте всі зображення. Залишилося зображень: {{count}}." } }, "deleteModel": { "title": "Видалити модель класифікації", "single": "Ви впевнені, що хочете видалити {{name}}? Це назавжди видалить усі пов’язані дані, включаючи зображення та дані навчання. Цю дію не можна скасувати.", - "desc": "Ви впевнені, що хочете видалити {{count}} модель(і)? Це назавжди видалить усі пов’язані дані, включаючи зображення та навчальні дані. Цю дію не можна скасувати." + "desc_one": "Ви впевнені, що хочете видалити {{count}} модель? Це назавжди видалить усі пов’язані дані, включаючи зображення та навчальні дані. Цю дію не можна скасувати.", + "desc_few": "Ви впевнені, що хочете видалити {{count}} моделей? Це назавжди видалить усі пов’язані дані, включаючи зображення та навчальні дані. Цю дію не можна скасувати.", + "desc_many": "Ви впевнені, що хочете видалити {{count}} моделі? Це назавжди видалить усі пов’язані дані, включаючи зображення та навчальні дані. Цю дію не можна скасувати." }, "menu": { "objects": "Об'єкти", @@ -160,5 +172,10 @@ "descriptionState": "Відредагуйте класи для цієї моделі класифікації штатів. Зміни вимагатимуть перенавчання моделі.", "descriptionObject": "Відредагуйте тип об'єкта та тип класифікації для цієї моделі класифікації об'єктів.", "stateClassesInfo": "Примітка: Зміна класів станів вимагає перенавчання моделі з використанням оновлених класів." + }, + "tooltip": { + "trainingInProgress": "Модель зараз тренується", + "noNewImages": "Немає нових зображень для навчання. Спочатку класифікуйте більше зображень у наборі даних.", + "modelNotReady": "Модель не готова до навчання" } } diff --git a/web/public/locales/uk/views/explore.json b/web/public/locales/uk/views/explore.json index 5d90544a6..652e86a3e 100644 --- a/web/public/locales/uk/views/explore.json +++ b/web/public/locales/uk/views/explore.json @@ -35,7 +35,9 @@ "error": "Не вдалося видалити відстежуваний об'єкт: {{errorMessage}}", "success": "Відстежуваний об'єкт успішно видалено." } - } + }, + "previousTrackedObject": "Попередній відстежуваний об'єкт", + "nextTrackedObject": "Наступний відстежуваний об'єкт" }, "trackedObjectsCount_one": "{{count}} відстежуваний об'єкт ", "trackedObjectsCount_few": "{{count}} відстежувані об'єкти ", @@ -273,7 +275,7 @@ "label": "Зсув анотації", "desc": "Ці дані надходять із каналу виявлення вашої камери, але накладаються на зображення з каналу запису. Малоймовірно, що ці два потоки будуть ідеально синхронізовані. Як результат, обмежувальна рамка та відеоматеріал не будуть ідеально збігатися. Ви можете використовувати це налаштування, щоб змістити анотації вперед або назад у часі, щоб краще узгодити їх із записаним відеоматеріалом.", "millisecondsToOffset": "Мілісекунди для зміщення виявлених анотацій. За замовчуванням: 0", - "tips": "ПІДКАЗКА: Уявіть, що є кліп події, на якому людина йде зліва направо. Якщо обмежувальний прямокутник часової шкали події постійно знаходиться ліворуч від людини, то значення слід зменшити. Аналогічно, якщо людина йде зліва направо, а обмежувальний прямокутник постійно знаходиться попереду людини, то значення слід збільшити.", + "tips": "Зменште значення, якщо відтворення відео відбувається попереду блоків та точок шляху, і збільште значення, якщо відтворення відео відбувається позаду них. Це значення може бути від’ємним.", "toast": { "success": "Зміщення анотації для {{camera}} збережено у файлі конфігурації. Перезапустіть Frigate, щоб застосувати зміни." } diff --git a/web/public/locales/uk/views/faceLibrary.json b/web/public/locales/uk/views/faceLibrary.json index 621dc0e8b..6c233d47a 100644 --- a/web/public/locales/uk/views/faceLibrary.json +++ b/web/public/locales/uk/views/faceLibrary.json @@ -17,7 +17,7 @@ "trainFailed": "Не вдалося тренуватися: {{errorMessage}}" }, "success": { - "updatedFaceScore": "Оцінку обличчя успішно оновлено.", + "updatedFaceScore": "Оцінку обличчя успішно оновлено до {{name}} ({{score}}).", "deletedName_one": "{{count}} Обличчя успішно видалено.", "deletedName_few": "{{count}} Обличчі успішно видалено.", "deletedName_many": "{{count}} Облич. успішно видалено.", diff --git a/web/public/locales/uk/views/settings.json b/web/public/locales/uk/views/settings.json index 965cc8440..3548a9493 100644 --- a/web/public/locales/uk/views/settings.json +++ b/web/public/locales/uk/views/settings.json @@ -888,9 +888,9 @@ "createRole": "Роль {{role}} успішно створена", "updateCameras": "Камери оновлено для ролі {{role}}", "deleteRole": "Роль {{role}} успішно видалено", - "userRolesUpdated_one": "Користувачів ({{count}}), яким призначено цю роль, оновлено до ролі «глядача», що має доступ до всіх камер.", - "userRolesUpdated_few": "", - "userRolesUpdated_many": "" + "userRolesUpdated_one": "{{count}} користувача, призначену цій ролі, оновлено до «глядача», який має доступ до всіх камер.", + "userRolesUpdated_few": "{{count}} Користувачі, яким призначено цю роль, оновлено до ролі «глядача», що має доступ до всіх камер.", + "userRolesUpdated_many": "{{count}} Користувачів, яким призначено цю роль, оновлено до ролі «глядача», що має доступ до всіх камер." }, "error": { "createRoleFailed": "Не вдалося створити роль: {{errorMessage}}", From 6dba9efd888167fac1eba792f66b143230479f22 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:19 +0100 Subject: [PATCH 07/15] Translated using Weblate (Catalan) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (116 of 116 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (108 of 108 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (52 of 52 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (209 of 209 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (106 of 106 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (598 of 598 strings) Translated using Weblate (Catalan) Currently translated at 97.1% (103 of 106 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (106 of 106 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (598 of 598 strings) Translated using Weblate (Catalan) Currently translated at 100.0% (127 of 127 strings) Co-authored-by: Eduardo Pastor Fernández <123eduardoneko123@gmail.com> Co-authored-by: Gerard Ricart Castells Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ca/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/ Translation: Frigate NVR/common Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/ca/common.json | 4 +- .../locales/ca/views/classificationModel.json | 42 ++++++++++++++----- web/public/locales/ca/views/explore.json | 6 ++- web/public/locales/ca/views/faceLibrary.json | 2 +- web/public/locales/ca/views/settings.json | 6 +-- 5 files changed, 42 insertions(+), 18 deletions(-) diff --git a/web/public/locales/ca/common.json b/web/public/locales/ca/common.json index fa5ce3b62..c8e188d20 100644 --- a/web/public/locales/ca/common.json +++ b/web/public/locales/ca/common.json @@ -221,7 +221,9 @@ "back": "Torna enrere", "hide": "Oculta {{item}}", "show": "Mostra {{item}}", - "ID": "ID" + "ID": "ID", + "none": "Cap", + "all": "Tots" }, "button": { "apply": "Aplicar", diff --git a/web/public/locales/ca/views/classificationModel.json b/web/public/locales/ca/views/classificationModel.json index b64214a89..09702648f 100644 --- a/web/public/locales/ca/views/classificationModel.json +++ b/web/public/locales/ca/views/classificationModel.json @@ -17,31 +17,40 @@ "categorizedImage": "Imatge classificada amb èxit", "trainedModel": "Model entrenat amb èxit.", "trainingModel": "S'ha iniciat amb èxit la formació de models.", - "deletedModel_one": "S'ha suprimit correctament el model {{count}}", - "deletedModel_many": "S'han suprimit correctament {{count}} models", - "deletedModel_other": "", - "updatedModel": "S'ha actualitzat correctament la configuració del model" + "deletedModel_one": "S'ha suprimit correctament {{count}} model", + "deletedModel_many": "S'han suprimit correctament els {{count}} models", + "deletedModel_other": "S'han suprimit correctament els {{count}} models", + "updatedModel": "S'ha actualitzat correctament la configuració del model", + "renamedCategory": "S'ha canviat el nom de la classe a {{name}}" }, "error": { "deleteImageFailed": "No s'ha pogut suprimir: {{errorMessage}}", "deleteCategoryFailed": "No s'ha pogut suprimir la classe: {{errorMessage}}", "categorizeFailed": "No s'ha pogut categoritzar la imatge: {{errorMessage}}", - "trainingFailed": "No s'ha pogut iniciar l'entrenament del model: {{errorMessage}}", + "trainingFailed": "Ha fallat l'entrenament del model. Comproveu els registres de fragata per a més detalls.", "deleteModelFailed": "No s'ha pogut suprimir el model: {{errorMessage}}", - "updateModelFailed": "No s'ha pogut actualitzar el model: {{errorMessage}}" + "updateModelFailed": "No s'ha pogut actualitzar el model: {{errorMessage}}", + "renameCategoryFailed": "No s'ha pogut canviar el nom de la classe: {{errorMessage}}", + "trainingFailedToStart": "Errar en arrencar l'entrenament del model: {{errorMessage}}" } }, "deleteCategory": { "title": "Suprimeix la classe", - "desc": "Esteu segur que voleu suprimir la classe {{name}}? Això suprimirà permanentment totes les imatges associades i requerirà tornar a entrenar el model." + "desc": "Esteu segur que voleu suprimir la classe {{name}}? Això suprimirà permanentment totes les imatges associades i requerirà tornar a entrenar el model.", + "minClassesTitle": "No es pot suprimir la classe", + "minClassesDesc": "Un model de classificació ha de tenir almenys 2 classes. Afegeix una altra classe abans d'eliminar aquesta." }, "deleteDatasetImages": { "title": "Suprimeix les imatges del conjunt de dades", - "desc": "Esteu segur que voleu suprimir {{count}} imatges de {{dataset}}? Aquesta acció no es pot desfer i requerirà tornar a entrenar el model." + "desc_one": "Esteu segur que voleu suprimir {{count}} imatge de {{dataset}}? Aquesta acció no es pot desfer i requerirà tornar a entrenar el model.", + "desc_many": "Esteu segur que voleu suprimir {{count}} imatges de {{dataset}}? Aquesta acció no es pot desfer i requerirà tornar a entrenar el model.", + "desc_other": "Esteu segur que voleu suprimir {{count}} imatges de {{dataset}}? Aquesta acció no es pot desfer i requerirà tornar a entrenar el model." }, "deleteTrainImages": { "title": "Suprimeix les imatges del tren", - "desc": "Esteu segur que voleu suprimir {{count}} imatges? Aquesta acció no es pot desfer." + "desc_one": "Esteu segur que voleu suprimir {{count}} imatge? Aquesta acció no es pot desfer.", + "desc_many": "Esteu segur que voleu suprimir {{count}} imatges? Aquesta acció no es pot desfer.", + "desc_other": "Esteu segur que voleu suprimir {{count}} imatges? Aquesta acció no es pot desfer." }, "renameCategory": { "title": "Reanomena la classe", @@ -140,13 +149,18 @@ "generationFailed": "Ha fallat la generació. Torneu-ho a provar.", "classifyFailed": "No s'han pogut classificar les imatges: {{error}}" }, - "generateSuccess": "Imatges de mostra generades amb èxit" + "generateSuccess": "Imatges de mostra generades amb èxit", + "allImagesRequired_one": "Classifiqueu totes les imatges. Queda {{count}} imatge.", + "allImagesRequired_many": "Classifiqueu totes les imatges. Queden {{count}} imatges.", + "allImagesRequired_other": "Classifiqueu totes les imatges. Queden {{count}} imatges." } }, "deleteModel": { "title": "Suprimeix el model de classificació", "single": "Esteu segur que voleu suprimir {{name}}? Això suprimirà permanentment totes les dades associades, incloses les imatges i les dades d'entrenament. Aquesta acció no es pot desfer.", - "desc": "Esteu segur que voleu suprimir {{count}} model(s)? Això suprimirà permanentment totes les dades associades, incloses les imatges i les dades d'entrenament. Aquesta acció no es pot desfer." + "desc_one": "Esteu segur que voleu suprimir el model {{count}}? Això suprimirà permanentment totes les dades associades, incloses les imatges i les dades d'entrenament. Aquesta acció no es pot desfer.", + "desc_many": "Esteu segur que voleu suprimir {{count}} models? Això suprimirà permanentment totes les dades associades, incloses les imatges i les dades d'entrenament. Aquesta acció no es pot desfer.", + "desc_other": "Esteu segur que voleu suprimir {{count}} models? Això suprimirà permanentment totes les dades associades, incloses les imatges i les dades d'entrenament. Aquesta acció no es pot desfer." }, "menu": { "objects": "Objectes", @@ -160,5 +174,11 @@ "descriptionState": "Edita les classes per a aquest model de classificació d'estats. Els canvis requeriran tornar a entrenar el model.", "descriptionObject": "Edita el tipus d'objecte i el tipus de classificació per a aquest model de classificació d'objectes.", "stateClassesInfo": "Nota: Canviar les classes d'estat requereix tornar a entrenar el model amb les classes actualitzades." + }, + "tooltip": { + "trainingInProgress": "El model s'està entrenant actualment", + "noNewImages": "Sense noves imatges per entrenar. Classifica més imatges primer.", + "modelNotReady": "El model no está preparat per entrenar", + "noChanges": "No hi ha canvis al conjunt de dades des de l'última formació." } } diff --git a/web/public/locales/ca/views/explore.json b/web/public/locales/ca/views/explore.json index d45f92665..ea9dfcfdb 100644 --- a/web/public/locales/ca/views/explore.json +++ b/web/public/locales/ca/views/explore.json @@ -170,7 +170,9 @@ "success": "L'objectes amb seguiment s'ha suprimit correctament.", "error": "No s'ha pogut suprimir l'objecte rastrejat: {{errorMessage}}" } - } + }, + "nextTrackedObject": "Següent objecte rastrejat", + "previousTrackedObject": "Objecte rastrejat anterior" }, "itemMenu": { "downloadVideo": { @@ -273,7 +275,7 @@ "label": "Òfset d'Anotació", "desc": "Aquestes dades provenen del flux de detecció de la càmera, però se superposen a les imatges del flux de gravació. És poc probable que els dos fluxos estiguin perfectament sincronitzats. Com a resultat, el quadre delimitador i les imatges no s'alinearan perfectament. Tanmateix, es pot utilitzar el camp annotation_offset per ajustar-ho.", "millisecondsToOffset": "Millisegons per l'òfset de detecció d'anotacions per. Per defecte: 0", - "tips": "CONSELL: Imagineu-vos que hi ha un clip d'esdeveniment amb una persona caminant d'esquerra a dreta. Si el quadre delimitador de la cronologia de l'esdeveniment està constantment a l'esquerra de la persona, aleshores s'hauria de disminuir el valor. De la mateixa manera, si una persona camina d'esquerra a dreta i el quadre delimitador està constantment per davant de la persona, aleshores s'hauria d'augmentar el valor.", + "tips": "Reduïu el valor si la reproducció del vídeo es troba per davant dels quadres i els punts de ruta, i augmenteu-lo si es troba per darrere. Aquest valor pot ser negatiu.", "toast": { "success": "L'Òfset d'anotació per a {{camera}} s'ha desat al fitxer de configuració. Reinicieu Frigate per aplicar els canvis." } diff --git a/web/public/locales/ca/views/faceLibrary.json b/web/public/locales/ca/views/faceLibrary.json index f99629bdb..c00be3516 100644 --- a/web/public/locales/ca/views/faceLibrary.json +++ b/web/public/locales/ca/views/faceLibrary.json @@ -67,7 +67,7 @@ "toast": { "success": { "trainedFace": "Rostre entrenat amb èxit.", - "updatedFaceScore": "Puntació de rostre actualitzada amb èxit.", + "updatedFaceScore": "S'ha actualitzat correctament la puntuació de la cara a {{name}} ({{score}}).", "uploadedImage": "Imatge pujada amb èxit.", "addFaceLibrary": "{{name}} s'ha afegit amb èxit a la biblioteca de rostres!", "deletedName_one": "{{count}} rostre s'ha suprimit amb èxit.", diff --git a/web/public/locales/ca/views/settings.json b/web/public/locales/ca/views/settings.json index 36a041510..58dca8472 100644 --- a/web/public/locales/ca/views/settings.json +++ b/web/public/locales/ca/views/settings.json @@ -858,9 +858,9 @@ "createRole": "Rol {{role}} creat exitosament", "updateCameras": "Càmeres actualitzades per al rol {{role}}", "deleteRole": "Rol {{role}} eliminat exitosament", - "userRolesUpdated_one": "{{count}} usuari(s) asignats a aquest rol s'han actualitzat a 'visor', i tenen accés a totes les càmeres.", - "userRolesUpdated_many": "", - "userRolesUpdated_other": "" + "userRolesUpdated_one": "{{count}} l'usuari assignat a aquest rol s'ha actualitzat a 'visor', que té accés a totes les càmeres.", + "userRolesUpdated_many": "{{count}} usuaris assignats a aquest rol s'han actualitzat a 'visor', que té accés a totes les càmeres.", + "userRolesUpdated_other": "{{count}} usuaris assignats a aquest rol s'han actualitzat a 'visor', que té accés a totes les càmeres." }, "error": { "createRoleFailed": "Error al crear el rol: {{errorMessage}}", From 938c6fc6c9617d19fe1c34d67a60221d7ac7ded8 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:20 +0100 Subject: [PATCH 08/15] Translated using Weblate (Czech) Currently translated at 4.7% (5 of 106 strings) Co-authored-by: Hosted Weblate Co-authored-by: Martin Janda Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/cs/ Translation: Frigate NVR/views-classificationmodel --- web/public/locales/cs/views/classificationModel.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web/public/locales/cs/views/classificationModel.json b/web/public/locales/cs/views/classificationModel.json index a8d060290..7afba97b7 100644 --- a/web/public/locales/cs/views/classificationModel.json +++ b/web/public/locales/cs/views/classificationModel.json @@ -2,6 +2,8 @@ "documentTitle": "Klasifikační modely", "button": { "deleteClassificationAttempts": "Odstranit Klasifikační obrazy", - "renameCategory": "Přejmenovat třídu" + "renameCategory": "Přejmenovat třídu", + "deleteCategory": "Smazat třídu", + "deleteImages": "Smazat obraz" } } From 57f38cc85693dfb402ac83daa946445409d24519 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:21 +0100 Subject: [PATCH 09/15] Translated using Weblate (Croatian) Currently translated at 33.3% (2 of 6 strings) Translated using Weblate (Croatian) Currently translated at 21.1% (11 of 52 strings) Translated using Weblate (Croatian) Currently translated at 2.7% (2 of 72 strings) Co-authored-by: Hosted Weblate Co-authored-by: Josip Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/hr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/hr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/hr/ Translation: Frigate NVR/components-filter Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-recording --- web/public/locales/hr/components/filter.json | 2 +- web/public/locales/hr/views/faceLibrary.json | 23 ++++++++++++++++++++ web/public/locales/hr/views/recording.json | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/web/public/locales/hr/components/filter.json b/web/public/locales/hr/components/filter.json index e81df54d8..37845aa99 100644 --- a/web/public/locales/hr/components/filter.json +++ b/web/public/locales/hr/components/filter.json @@ -1,5 +1,5 @@ { - "filter": "Filtar", + "filter": "Filter", "classes": { "label": "Klase" } diff --git a/web/public/locales/hr/views/faceLibrary.json b/web/public/locales/hr/views/faceLibrary.json index 242c150b1..7f5754c9a 100644 --- a/web/public/locales/hr/views/faceLibrary.json +++ b/web/public/locales/hr/views/faceLibrary.json @@ -1,5 +1,28 @@ { "description": { "addFace": "Vodič za dodavanje nove kolekcije u Biblioteku lica." + }, + "steps": { + "faceName": "Unesi Ime Lica", + "uploadFace": "Prenesi Sliku Lica", + "nextSteps": "Sljedeći Koraci", + "description": { + "uploadFace": "Prenesite sliku {{name}} koja prikazuje njezino lice iz prednjeg kuta. Slika ne mora biti obrezana samo na njezino lice." + } + }, + "train": { + "title": "Nedavna Prepoznavanja", + "aria": "Odaberite nedavna prepoznavanja", + "empty": "Nema nedavnih pokušaja prepoznavanja lica" + }, + "deleteFaceLibrary": { + "title": "Izbriši Ime", + "desc": "Jeste li sigurni da želite izbrisati kolekciju {{name}}? Ovim će se trajno izbrisati sva povezana lica." + }, + "deleteFaceAttempts": { + "title": "Izbriši Lica", + "desc_one": "Jeste li sigurni da želite izbrisati {{count}} lice? Ova se radnja ne može poništiti.", + "desc_few": "Jeste li sigurni da želite izbrisati {{count}} lica? Ova se radnja ne može poništiti.", + "desc_other": "Jeste li sigurni da želite izbrisati {{count}} lica? Ova se radnja ne može poništiti." } } diff --git a/web/public/locales/hr/views/recording.json b/web/public/locales/hr/views/recording.json index a408537b3..110cf71eb 100644 --- a/web/public/locales/hr/views/recording.json +++ b/web/public/locales/hr/views/recording.json @@ -1,4 +1,4 @@ { - "filter": "Filtar", + "filter": "Filter", "export": "Izvoz" } From 7dd817bcf4395e344794bbf338433b157077b91f Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:22 +0100 Subject: [PATCH 10/15] Translated using Weblate (Polish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 30.0% (34 of 113 strings) Translated using Weblate (Polish) Currently translated at 75.5% (96 of 127 strings) Translated using Weblate (Polish) Currently translated at 27.3% (29 of 106 strings) Translated using Weblate (Polish) Currently translated at 68.3% (409 of 598 strings) Translated using Weblate (Polish) Currently translated at 100.0% (52 of 52 strings) Translated using Weblate (Polish) Currently translated at 98.1% (53 of 54 strings) Translated using Weblate (Polish) Currently translated at 100.0% (13 of 13 strings) Translated using Weblate (Polish) Currently translated at 100.0% (39 of 39 strings) Translated using Weblate (Polish) Currently translated at 74.8% (95 of 127 strings) Translated using Weblate (Polish) Currently translated at 100.0% (10 of 10 strings) Co-authored-by: Hosted Weblate Co-authored-by: Mateusz Paś Co-authored-by: Wojciech Niziński Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/pl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/pl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/pl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/pl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/pl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pl/ Translation: Frigate NVR/components-auth Translation: Frigate NVR/components-dialog Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-exports Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/pl/components/auth.json | 3 +- web/public/locales/pl/components/dialog.json | 2 +- .../locales/pl/views/classificationModel.json | 53 ++++++++++++++++++- web/public/locales/pl/views/events.json | 21 +++++++- web/public/locales/pl/views/explore.json | 11 +++- web/public/locales/pl/views/exports.json | 6 +++ web/public/locales/pl/views/faceLibrary.json | 6 +-- web/public/locales/pl/views/settings.json | 7 ++- 8 files changed, 99 insertions(+), 10 deletions(-) diff --git a/web/public/locales/pl/components/auth.json b/web/public/locales/pl/components/auth.json index 094e0ca97..12aba0fb6 100644 --- a/web/public/locales/pl/components/auth.json +++ b/web/public/locales/pl/components/auth.json @@ -10,6 +10,7 @@ "unknownError": "Nieznany błąd. Sprawdź logi.", "webUnknownError": "Nieznany błąd. Sprawdź konsolę.", "rateLimit": "Przekroczono limit częstotliwości. Spróbuj ponownie później." - } + }, + "firstTimeLogin": "Próbujesz się zalogować po raz pierwszy? Dane logowania są dostępne w logach Frigate." } } diff --git a/web/public/locales/pl/components/dialog.json b/web/public/locales/pl/components/dialog.json index 73a29704b..fb4341d7f 100644 --- a/web/public/locales/pl/components/dialog.json +++ b/web/public/locales/pl/components/dialog.json @@ -65,7 +65,7 @@ "export": "Eksportuj", "selectOrExport": "Wybierz lub Eksportuj", "toast": { - "success": "Pomyślnie rozpoczęto eksport. Zobacz plik w folderze /exports.", + "success": "Pomyślnie rozpoczęto eksport. Zobacz plik na stronie eksportów.", "error": { "failed": "Nie udało się rozpocząć eksportu: {{error}}", "endTimeMustAfterStartTime": "Czas zakończenia musi być późniejszy niż czas rozpoczęcia", diff --git a/web/public/locales/pl/views/classificationModel.json b/web/public/locales/pl/views/classificationModel.json index faf2aa416..c9befbdc2 100644 --- a/web/public/locales/pl/views/classificationModel.json +++ b/web/public/locales/pl/views/classificationModel.json @@ -2,6 +2,57 @@ "documentTitle": "Modele klasyfikacji", "button": { "deleteClassificationAttempts": "Usuń obrazy klasyfikacyjne", - "renameCategory": "Zmień nazwę klasy" + "renameCategory": "Zmień nazwę klasy", + "deleteCategory": "Usuń klasę", + "deleteImages": "Usuń obrazy", + "trainModel": "Przeszkol model", + "addClassification": "Dodaj klasyfikację", + "deleteModels": "Usuń modele", + "editModel": "Edytuj model" + }, + "details": { + "scoreInfo": "Wynik przedstawia średnią pewność klasyfikacji wszystkich wykryć danego obiektu." + }, + "toast": { + "success": { + "deletedCategory": "Usunięte klasy", + "deletedImage": "Usunięte obrazy", + "deletedModel_one": "Pomyślenie usunięto {{count}} model", + "deletedModel_few": "Pomyślenie usunięto {{count}} modele", + "deletedModel_many": "Pomyślenie usunięto {{count}} modeli", + "categorizedImage": "Obraz pomyślnie sklasyfikowany", + "trainedModel": "Model pomyślnie wytrenowany", + "trainingModel": "Pomyślnie uruchomiono trenowanie modelu.", + "updatedModel": "Pomyślnie zaktualizowane ustawienia modelu", + "renamedCategory": "Pomyślnie zmieniono nazwę klasy na {{name}}" + }, + "error": { + "deleteImageFailed": "Nie udało się usunąć: {{errorMessage}}", + "deleteCategoryFailed": "Nie udało się usunąć klasy: {{errorMessage}}", + "deleteModelFailed": "Nie udało się usunąć modelu: {{errorMessage}}", + "categorizeFailed": "Nie udało się skategoryzować obrazka: {{errorMessage}}", + "trainingFailed": "Trening modelu zakończył się niepowodzeniem. Sprawdź logi Frigate aby uzyskać więcej informacji.", + "updateModelFailed": "Nie udało się zaktualizować modelu: {{errorMessage}}", + "trainingFailedToStart": "Nie udało się rozpocząć trenowania modelu: {{errorMessage}}", + "renameCategoryFailed": "Nie udało się zmienić nazwy klasy: {{errorMessage}}" + } + }, + "deleteCategory": { + "title": "Usuń klasę", + "desc": "Czy na pewno chcesz usunąć klasę {{name}}? Spowoduje to trawałe usunięcie wszystkich powiązanych obrazków i konieczność ponownego trenowania modelu." + }, + "deleteModel": { + "title": "Usuń model klasyfikacji", + "single": "Czy na pewno chcesz usunąć {{name}}? Spowoduje to trwałe usunięcie wszystkich powiązanych data włącznie z obrazkami i danymi treningowymi. Nie można cofnąć tej operacji.", + "desc_one": "Czy na pewno chcesz usunąć {{count}} model? Spowoduje to trwałe usunięcie wszystkich powiązanych danych, włącznie z obrazami i danymi treningowymi. Nie można cofnąć tej operacji.", + "desc_few": "Czy na pewno chcesz usunąć {{count}} modele? Spowoduje to trwałe usunięcie wszystkich powiązanych danych, włącznie z obrazami i danymi treningowymi. Nie można cofnąć tej operacji.", + "desc_many": "Czy na pewno chcesz usunąć {{count}} modeli? Spowoduje to trwałe usunięcie wszystkich powiązanych danych, włącznie z obrazami i danymi treningowymi. Nie można cofnąć tej operacji." + }, + "edit": { + "title": "Edytuj model klasyfikacji" + }, + "tooltip": { + "trainingInProgress": "Trwa trenowanie modelu", + "modelNotReady": "Mode nie jest gotowy do trenowania" } } diff --git a/web/public/locales/pl/views/events.json b/web/public/locales/pl/views/events.json index 173ff277e..92adee328 100644 --- a/web/public/locales/pl/views/events.json +++ b/web/public/locales/pl/views/events.json @@ -36,5 +36,24 @@ "selected_other": "{{count}} wybrane", "detected": "wykryto", "suspiciousActivity": "Podejrzana aktywność", - "threateningActivity": "Niebezpieczne działania" + "threateningActivity": "Niebezpieczne działania", + "zoomIn": "Przybliż", + "zoomOut": "Oddal", + "detail": { + "label": "Szczegóły", + "noDataFound": "Brak szczegółów do przejrzenia", + "aria": "Przełącz widok szczegółów", + "trackedObject_one": "obiekt", + "trackedObject_other": "obiekty", + "noObjectDetailData": "Brak danych szczegółowych dla obiektu.", + "settings": "Ustawienia widoku szczegółów", + "alwaysExpandActive": { + "title": "Zawsze rozwiń aktywne", + "desc": "Zawsze rozwijaj szczegóły aktywnego obiektu, jeżeli są dostępne." + } + }, + "objectTrack": { + "trackedPoint": "Śledzony punkt", + "clickToSeek": "Kliknij aby przewinąć do tego miejsca" + } } diff --git a/web/public/locales/pl/views/explore.json b/web/public/locales/pl/views/explore.json index f96fba057..e5fcae355 100644 --- a/web/public/locales/pl/views/explore.json +++ b/web/public/locales/pl/views/explore.json @@ -159,7 +159,8 @@ "details": "szczegóły", "snapshot": "zrzut ekranu", "video": "wideo", - "object_lifecycle": "cykl życia obiektu" + "object_lifecycle": "cykl życia obiektu", + "thumbnail": "miniaturka" }, "itemMenu": { "downloadSnapshot": { @@ -224,5 +225,13 @@ }, "concerns": { "label": "Obawy" + }, + "trackingDetails": { + "title": "Szczegóły śledzenia", + "noImageFound": "Nie znaleziono obrazka dla podanego czasu.", + "createObjectMask": "Utwórz maskę obiektu", + "adjustAnnotationSettings": "Dostosuj ustawienia adnotacji", + "scrollViewTips": "Kliknij, aby zobaczyć najważniejsze momenty cyklu życia tego obiektu.", + "count": "{{first}} z {{second}}" } } diff --git a/web/public/locales/pl/views/exports.json b/web/public/locales/pl/views/exports.json index 954849a1a..b0d41bbc3 100644 --- a/web/public/locales/pl/views/exports.json +++ b/web/public/locales/pl/views/exports.json @@ -13,5 +13,11 @@ "error": { "renameExportFailed": "Nie udało się zmienić nazwy eksportu: {{errorMessage}}" } + }, + "tooltip": { + "shareExport": "Udostępnij eksport", + "downloadVideo": "Pobierz wideo", + "editName": "Edytuj nazwę", + "deleteExport": "Usuń eksport" } } diff --git a/web/public/locales/pl/views/faceLibrary.json b/web/public/locales/pl/views/faceLibrary.json index be17253a0..ec13f5f11 100644 --- a/web/public/locales/pl/views/faceLibrary.json +++ b/web/public/locales/pl/views/faceLibrary.json @@ -24,11 +24,11 @@ "title": "Utwórz kolekcję", "desc": "Utwórz nową kolekcję", "new": "Utwórz nową twarz", - "nextSteps": "Aby zbudować solidną podstawę:
  • Użyj zakładki Trenuj, aby wybrać i trenować na obrazach dla każdej wykrytej osoby.
  • Skup się na zdjęciach twarzy na wprost dla najlepszych wyników; unikaj trenowania na zdjęciach, które pokazują twarze pod kątem.
  • " + "nextSteps": "Aby zbudować solidną podstawę:
  • Użyj zakładki Ostatnie rozpoznania, aby wybrać i trenować na obrazach dla każdej wykrytej osoby.
  • Skup się na zdjęciach twarzy na wprost dla najlepszych wyników; unikaj trenowania na zdjęciach, które pokazują twarze pod kątem.
  • " }, "train": { - "aria": "Wybierz trenowanie", - "title": "Trenuj", + "aria": "Wybierz ostatnio rozpoznane", + "title": "Ostatnie rozpoznania", "empty": "Nie podjęto ostatnio żadnych prób rozpoznawania twarzy" }, "selectFace": "Wybierz twarz", diff --git a/web/public/locales/pl/views/settings.json b/web/public/locales/pl/views/settings.json index 0291f39c5..f9b130532 100644 --- a/web/public/locales/pl/views/settings.json +++ b/web/public/locales/pl/views/settings.json @@ -11,7 +11,9 @@ "debug": "Debugowanie", "enrichments": "Wzbogacenia", "triggers": "Wyzwalacze", - "roles": "Role" + "roles": "Role", + "cameraManagement": "Zarządzanie", + "cameraReview": "Przejrzyj" }, "dialog": { "unsavedChanges": { @@ -85,7 +87,8 @@ "object": "Debug - Frigate", "notifications": "Ustawienia powiadomień - Frigate", "enrichments": "Ustawienia wzbogacania - Frigate", - "cameraManagement": "Zarządzanie kamerami – Frigate" + "cameraManagement": "Zarządzanie kamerami – Frigate", + "cameraReview": "Ustawienia przeglądu kamer - Frigate" }, "classification": { "title": "Ustawienia Klasyfikacji", From 8e60c23cbdee58a4b1aa4790bea0aa0d7cc99b6d Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:24 +0100 Subject: [PATCH 11/15] Translated using Weblate (Dutch) Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (108 of 108 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (52 of 52 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (209 of 209 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (106 of 106 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (106 of 106 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (598 of 598 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (207 of 207 strings) Translated using Weblate (Dutch) Currently translated at 97.1% (103 of 106 strings) Translated using Weblate (Dutch) Currently translated at 97.1% (103 of 106 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (598 of 598 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (127 of 127 strings) Co-authored-by: Anonymous Co-authored-by: Hosted Weblate Co-authored-by: Marijn <168113859+Marijn0@users.noreply.github.com> Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/nl/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nl/ Translation: Frigate NVR/common Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/nl/common.json | 6 ++- .../locales/nl/views/classificationModel.json | 39 ++++++++++++------- web/public/locales/nl/views/explore.json | 6 ++- web/public/locales/nl/views/faceLibrary.json | 2 +- web/public/locales/nl/views/settings.json | 10 ++--- 5 files changed, 40 insertions(+), 23 deletions(-) diff --git a/web/public/locales/nl/common.json b/web/public/locales/nl/common.json index 5ff9ca549..4c08ac2fa 100644 --- a/web/public/locales/nl/common.json +++ b/web/public/locales/nl/common.json @@ -142,7 +142,9 @@ "back": "Ga terug", "hide": "Verberg {{item}}", "show": "Toon {{item}}", - "ID": "ID" + "ID": "ID", + "none": "Geen", + "all": "Alle" }, "menu": { "system": "Systeem", @@ -258,7 +260,7 @@ "role": { "title": "Rol", "admin": "Beheerder", - "viewer": "Gebruiker", + "viewer": "Kijker", "desc": "Beheerders hebben volledige toegang tot alle functies in de Frigate-interface. Kijkers kunnen alleen camera’s bekijken, items beoordelen en historische beelden terugkijken." }, "pagination": { diff --git a/web/public/locales/nl/views/classificationModel.json b/web/public/locales/nl/views/classificationModel.json index 79956bf3d..7428cf742 100644 --- a/web/public/locales/nl/views/classificationModel.json +++ b/web/public/locales/nl/views/classificationModel.json @@ -19,15 +19,18 @@ "trainingModel": "Modeltraining succesvol gestart.", "deletedModel_one": "{{count}} model succesvol verwijderd", "deletedModel_other": "{{count}} modellen succesvol verwijderd", - "updatedModel": "Modelconfiguratie succesvol bijgewerkt" + "updatedModel": "Modelconfiguratie succesvol bijgewerkt", + "renamedCategory": "Klasse succesvol hernoemd naar {{name}}" }, "error": { "deleteImageFailed": "Verwijderen mislukt: {{errorMessage}}", "deleteCategoryFailed": "Het verwijderen van de klasse is mislukt: {{errorMessage}}", "categorizeFailed": "Afbeelding categoriseren mislukt: {{errorMessage}}", - "trainingFailed": "Het starten van de modeltraining is mislukt: {{errorMessage}}", + "trainingFailed": "Modeltraining mislukt. Raadpleeg de Frigate-logs voor details.", "deleteModelFailed": "Model verwijderen mislukt: {{errorMessage}}", - "updateModelFailed": "Bijwerken van model mislukt: {{errorMessage}}" + "updateModelFailed": "Bijwerken van model mislukt: {{errorMessage}}", + "renameCategoryFailed": "Hernoemen van klasse mislukt: {{errorMessage}}", + "trainingFailedToStart": "Het is niet gelukt om het model te trainen: {{errorMessage}}" } }, "deleteCategory": { @@ -36,11 +39,13 @@ }, "deleteDatasetImages": { "title": "Datasetafbeeldingen verwijderen", - "desc": "Weet u zeker dat u {{count}} afbeeldingen uit {{dataset}} wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt en vereist een hertraining van het model." + "desc_one": "Weet u zeker dat u {{count}} afbeelding uit {{dataset}} wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt en vereist een hertraining van het model.", + "desc_other": "Weet u zeker dat u {{count}} afbeeldingen uit {{dataset}} wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt en vereist een hertraining van het model." }, "deleteTrainImages": { "title": "Trainingsafbeeldingen verwijderen", - "desc": "Weet je zeker dat je {{count}} afbeeldingen wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt." + "desc_one": "Weet je zeker dat je {{count}} afbeelding wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", + "desc_other": "Weet je zeker dat je {{count}} afbeeldingen wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt." }, "renameCategory": { "title": "Klasse hernoemen", @@ -67,9 +72,9 @@ "buttonText": "Objectmodel maken" }, "state": { - "title": "Geen State-classificatiemodellen beschikbaar", + "title": "Geen status-classificatiemodellen", "description": "Maak een aangepast model om statuswijzigingen in specifieke cameragebieden te monitoren en te classificeren.", - "buttonText": "Maak een toestandsmodel" + "buttonText": "Maak een statusmodel" } }, "wizard": { @@ -80,7 +85,7 @@ "chooseExamples": "Voorbeelden kiezen" }, "step1": { - "description": "Toestandsmodellen houden vaste cameragebieden in de gaten op veranderingen (bijv. deur open/dicht). Objectmodellen voegen classificaties toe aan gedetecteerde objecten (bijv. bekende dieren, bezorgers, enz.).", + "description": "Statusmodellen houden vaste cameragebieden in de gaten op veranderingen (bijv. deur open/dicht). Objectmodellen voegen classificaties toe aan gedetecteerde objecten (bijv. bekende dieren, bezorgers, enz.).", "name": "Naam", "namePlaceholder": "Voer modelnaam in...", "type": "Type", @@ -95,7 +100,7 @@ "classificationAttribute": "Attribuut", "classes": "Klassen", "classesTip": "Meer over klassen leren", - "classesStateDesc": "Definieer de verschillende toestanden waarin het cameragebied zich kan bevinden. Bijvoorbeeld: ‘open’ en ‘dicht’ voor een garagedeur.", + "classesStateDesc": "Definieer de verschillende staten waarin uw cameragebied zich kan bevinden. Bijvoorbeeld: ‘open’ en ‘gesloten’ voor een garagedeur.", "classesObjectDesc": "Definieer de verschillende categorieën om gedetecteerde objecten in te classificeren. Bijvoorbeeld: ‘bezorger’, ‘bewoner’, ‘vreemdeling’ voor persoonsclassificatie.", "classPlaceholder": "Voer klassenaam in...", "errors": { @@ -104,7 +109,7 @@ "nameOnlyNumbers": "Modelnaam mag niet alleen uit cijfers bestaan", "classRequired": "Minimaal 1 klasse is vereist", "classesUnique": "Klassennamen moeten uniek zijn", - "stateRequiresTwoClasses": "Toestandsmodellen vereisen minimaal 2 klassen", + "stateRequiresTwoClasses": "Statusmodellen vereisen minimaal 2 klassen", "objectLabelRequired": "Selecteer een objectlabel", "objectTypeRequired": "Selecteer een classificatietype" }, @@ -119,7 +124,7 @@ }, "step3": { "selectImagesPrompt": "Selecteer alle afbeeldingen met: {{className}}", - "selectImagesDescription": "Klik op afbeeldingen om ze te selecteren. Klik op Doorgaan wanneer je klaar bent met deze klasse.", + "selectImagesDescription": "Klik op afbeeldingen om ze te selecteren. Klik op doorgaan wanneer je klaar bent met deze klasse.", "generating": { "title": "Voorbeeldafbeeldingen genereren", "description": "Frigate haalt representatieve afbeeldingen uit je opnames. Dit kan even duren..." @@ -139,13 +144,16 @@ "generationFailed": "Generatie mislukt. Probeer het opnieuw.", "classifyFailed": "Afbeeldingen classificeren mislukt: {{error}}" }, - "generateSuccess": "Met succes gegenereerde voorbeeldafbeeldingen" + "generateSuccess": "Met succes gegenereerde voorbeeldafbeeldingen", + "allImagesRequired_one": "Classificeer alle afbeeldingen. {{count}} afbeelding resterend.", + "allImagesRequired_other": "Classificeer alle afbeeldingen. {{count}} afbeeldingen resterend." } }, "deleteModel": { "title": "Classificatiemodel verwijderen", "single": "Weet u zeker dat u {{name}} wilt verwijderen? Hiermee worden alle bijbehorende gegevens, inclusief afbeeldingen en trainingsgegevens, definitief verwijderd. Deze actie kan niet ongedaan worden gemaakt.", - "desc": "Weet u zeker dat u {{count}} model(len) wilt verwijderen? Hiermee worden alle bijbehorende gegevens, inclusief afbeeldingen en trainingsgegevens, permanent verwijderd. Deze actie kan niet ongedaan worden gemaakt." + "desc_one": "Weet u zeker dat u {{count}} model wilt verwijderen? Hiermee worden alle bijbehorende gegevens, inclusief afbeeldingen en trainingsgegevens, permanent verwijderd. Deze actie kan niet ongedaan worden gemaakt.", + "desc_other": "Weet u zeker dat u {{count}} modellen wilt verwijderen? Hiermee worden alle bijbehorende gegevens, inclusief afbeeldingen en trainingsgegevens, permanent verwijderd. Deze actie kan niet ongedaan worden gemaakt." }, "menu": { "objects": "Objecten", @@ -159,5 +167,10 @@ "descriptionState": "Bewerk de klassen voor dit statusclassificatiemodel. Wijzigingen vereisen dat het model opnieuw wordt getraind.", "descriptionObject": "Bewerk het objecttype en het classificatietype voor dit objectclassificatiemodel.", "stateClassesInfo": "Let op: het wijzigen van statusklassen vereist dat het model opnieuw wordt getraind met de bijgewerkte klassen." + }, + "tooltip": { + "trainingInProgress": "Model is momenteel aan het trainen", + "noNewImages": "Geen nieuwe afbeeldingen om te trainen. Classificeer eerst meer afbeeldingen in de dataset.", + "modelNotReady": "Model is niet klaar voor training" } } diff --git a/web/public/locales/nl/views/explore.json b/web/public/locales/nl/views/explore.json index 10fa78697..531cfb8b4 100644 --- a/web/public/locales/nl/views/explore.json +++ b/web/public/locales/nl/views/explore.json @@ -218,7 +218,9 @@ "error": "Verwijderen van gevolgd object mislukt: {{errorMessage}}" } }, - "tooltip": "{{type}} komt voor {{confidence}}% overeen met de zoekopdracht" + "tooltip": "{{type}} komt voor {{confidence}}% overeen met de zoekopdracht", + "previousTrackedObject": "Vorig gevolgd object", + "nextTrackedObject": "Volgende gevolgde object" }, "dialog": { "confirmDelete": { @@ -271,7 +273,7 @@ "label": "Annotatie-afwijking", "desc": "Deze gegevens zijn afkomstig van de detectiestream van je camera, maar worden weergegeven op beelden uit de opnamestream. Het is onwaarschijnlijk dat deze twee streams perfect gesynchroniseerd zijn. Hierdoor zullen het objectkader en het beeld niet exact op elkaar aansluiten. Met deze instelling kun je de annotaties vooruit of achteruit in de tijd verschuiven om ze beter uit te lijnen met het opgenomen beeldmateriaal.", "millisecondsToOffset": "Aantal milliseconden om objectkader mee te verschuiven. Standaard: 0", - "tips": "TIP: Stel je voor dat er een clip is waarin een persoon van links naar rechts loopt. Als het objectkader in de tijdlijn van de activiteit steeds links van de persoon ligt, dan moet de waarde verlaagd worden. Op dezelfde manier als het objectkader consequent vóór de persoon ligt dus vooruitloopt, moet de waarde verhoogd worden.", + "tips": "Verlaag de waarde als de videoweergave sneller is dan de objectkaders en hun trajectpunten, en verhoog de waarde als de videoweergave achterloopt. Deze waarde kan negatief zijn.", "toast": { "success": "Annotatieverschuiving voor {{camera}} is opgeslagen in het configuratiebestand. Herstart Frigate om je wijzigingen toe te passen." } diff --git a/web/public/locales/nl/views/faceLibrary.json b/web/public/locales/nl/views/faceLibrary.json index 11b8fbd27..23c4f2d70 100644 --- a/web/public/locales/nl/views/faceLibrary.json +++ b/web/public/locales/nl/views/faceLibrary.json @@ -36,7 +36,7 @@ "deletedFace_one": "{{count}} gezicht is succesvol verwijderd.", "deletedFace_other": "{{count}} gezichten zijn succesvol verwijderd.", "trainedFace": "Met succes getraind gezicht.", - "updatedFaceScore": "De gezichtsscore is succesvol bijgewerkt.", + "updatedFaceScore": "De gezichtsscore is succesvol bijgewerkt naar {{name}} ({{score}}).", "deletedName_one": "{{count}} gezicht is succesvol verwijderd.", "deletedName_other": "{{count}} gezichten zijn succesvol verwijderd.", "uploadedImage": "Afbeelding succesvol geüpload.", diff --git a/web/public/locales/nl/views/settings.json b/web/public/locales/nl/views/settings.json index d62df1215..e454a1c0c 100644 --- a/web/public/locales/nl/views/settings.json +++ b/web/public/locales/nl/views/settings.json @@ -26,7 +26,7 @@ "frigateplus": "Frigate+", "enrichments": "Verrijkingen", "triggers": "Triggers", - "roles": "Functie", + "roles": "Rollen", "cameraManagement": "Beheer", "cameraReview": "Beoordeel" }, @@ -68,7 +68,7 @@ "clearAll": "Alle streaminginstellingen wissen" }, "recordingsViewer": { - "title": "Opnamebekijker", + "title": "Opnameweergave", "defaultPlaybackRate": { "label": "Standaard afspeelsnelheid", "desc": "Standaard afspeelsnelheid voor het afspelen van opnames." @@ -567,7 +567,7 @@ "intro": "Selecteer een gepaste rol voor deze gebruiker:", "admin": "Beheerder", "adminDesc": "Volledige toegang tot alle functies.", - "viewer": "Gebruiker", + "viewer": "Kijker", "viewerDesc": "Alleen toegang tot Live-dashboards, Beoordelen, Verkennen en Exports.", "customDesc": "Aangepaste rol met specifieke cameratoegang." }, @@ -890,8 +890,8 @@ "createRole": "Rol {{role}} succesvol aangemaakt", "updateCameras": "Camera's bijgewerkt voor rol {{role}}", "deleteRole": "Rol {{role}} succesvol verwijderd", - "userRolesUpdated_one": "{{count}} gebruiker(s) die aan deze rol waren toegewezen, zijn bijgewerkt naar ‘kijker’, die toegang heeft tot alle camera’s.", - "userRolesUpdated_other": "" + "userRolesUpdated_one": "{{count}} gebruiker die aan deze rol was toegewezen, is bijgewerkt naar de rol ‘kijker’, die toegang heeft tot alle camera’s.", + "userRolesUpdated_other": "{{count}} gebruikers die aan deze rol waren toegewezen, zijn bijgewerkt naar de rol ‘kijker’, die toegang heeft tot alle camera’s." }, "error": { "createRoleFailed": "Kan rol niet aanmaken: {{errorMessage}}", From 4bc7233fb064ed40ad407870c6cb18717724eeac Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:25 +0100 Subject: [PATCH 12/15] Translated using Weblate (Spanish) Currently translated at 25.4% (27 of 106 strings) Translated using Weblate (Spanish) Currently translated at 26.4% (28 of 106 strings) Translated using Weblate (Spanish) Currently translated at 76.3% (97 of 127 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (39 of 39 strings) Co-authored-by: Adrian C Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/es/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/es/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/es/ Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore --- web/public/locales/es/views/classificationModel.json | 12 ++++++++++-- web/public/locales/es/views/events.json | 11 +++++++++-- web/public/locales/es/views/explore.json | 11 ++++++++--- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/web/public/locales/es/views/classificationModel.json b/web/public/locales/es/views/classificationModel.json index b2446ea01..f6f1a6de6 100644 --- a/web/public/locales/es/views/classificationModel.json +++ b/web/public/locales/es/views/classificationModel.json @@ -18,7 +18,9 @@ "deletedModel_many": "Borrados con éxito {{count}} modelos", "deletedModel_other": "Borrados con éxito {{count}} modelos", "categorizedImage": "Imagen Clasificada Correctamente", - "trainedModel": "Modelo entrenado correctamente." + "trainedModel": "Modelo entrenado correctamente.", + "trainingModel": "Entrenamiento del modelo iniciado correctamente.", + "updatedModel": "Configuración del modelo actualizada correctamente" }, "error": { "deleteImageFailed": "Fallo al borrar: {{errorMessage}}", @@ -35,6 +37,12 @@ }, "deleteModel": { "title": "Borrar Modelo de Clasificación", - "single": "¿Está seguro de que quiere eliminar {{name}}? Esto borrar permanentemente todos los datos asociados incluidas las imágenes y los datos de entrenamiento. Esta acción no se puede deshacer." + "single": "¿Está seguro de que quiere eliminar {{name}}? Esto borrar permanentemente todos los datos asociados incluidas las imágenes y los datos de entrenamiento. Esta acción no se puede deshacer.", + "desc_one": "¿Estas seguro de que quiere borrar {{count}} modelo/s? Esto borrara permanentemente todos los datos asociados, incluyendo imágenes y datos de entrenamiento. Esta acción no puede ser desehecha.", + "desc_many": "", + "desc_other": "" + }, + "edit": { + "title": "Editar modelo de clasificación" } } diff --git a/web/public/locales/es/views/events.json b/web/public/locales/es/views/events.json index 097b08b64..e462d9f12 100644 --- a/web/public/locales/es/views/events.json +++ b/web/public/locales/es/views/events.json @@ -45,9 +45,16 @@ "trackedObject_one": "objeto", "trackedObject_other": "objetos", "noObjectDetailData": "No hay datos detallados del objeto.", - "settings": "Configuración de la Vista Detalle" + "settings": "Configuración de la Vista Detalle", + "noDataFound": "No hay datos detallados para revisar", + "aria": "Alternar vista de detalles", + "alwaysExpandActive": { + "title": "Expandir siempre los activos", + "desc": "Expandir siempre los detalles del objeto activo cuando esten disponibles." + } }, "objectTrack": { - "clickToSeek": "Clic para ir a este momento" + "clickToSeek": "Clic para ir a este momento", + "trackedPoint": "Puntro trazado" } } diff --git a/web/public/locales/es/views/explore.json b/web/public/locales/es/views/explore.json index 064bdf0d8..52e11f661 100644 --- a/web/public/locales/es/views/explore.json +++ b/web/public/locales/es/views/explore.json @@ -227,9 +227,14 @@ "label": "Preocupaciones" }, "trackingDetails": { - "title": "Detalles del Seguimiento", + "title": "Detalles del seguimiento", "noImageFound": "No se ha encontrado imagen en este momento.", - "createObjectMask": "Crear Máscara de Objeto", - "adjustAnnotationSettings": "Ajustar configuración de anotaciones" + "createObjectMask": "Crear máscara de objeto", + "adjustAnnotationSettings": "Ajustar configuración de anotaciones", + "scrollViewTips": "Haz clic para ver los momentos relevantes del ciclo de vida de este objeto.", + "count": "{{first}} de {{second}}", + "lifecycleItemDesc": { + "visible": "{{label}} detectado" + } } } From 6b0a13ca6d12aeda6aa1091be6eba1f7a03ebf7e Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:26 +0100 Subject: [PATCH 13/15] Translated using Weblate (French) Currently translated at 100.0% (113 of 113 strings) Translated using Weblate (French) Currently translated at 100.0% (108 of 108 strings) Translated using Weblate (French) Currently translated at 100.0% (52 of 52 strings) Translated using Weblate (French) Currently translated at 100.0% (209 of 209 strings) Translated using Weblate (French) Currently translated at 100.0% (106 of 106 strings) Translated using Weblate (French) Currently translated at 97.1% (103 of 106 strings) Translated using Weblate (French) Currently translated at 97.1% (103 of 106 strings) Translated using Weblate (French) Currently translated at 100.0% (598 of 598 strings) Translated using Weblate (French) Currently translated at 100.0% (127 of 127 strings) Co-authored-by: Anonymous Co-authored-by: Apocoloquintose Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/fr/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/fr/ Translation: Frigate NVR/common Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/fr/common.json | 4 ++- .../locales/fr/views/classificationModel.json | 31 ++++++++++++++----- web/public/locales/fr/views/explore.json | 6 ++-- web/public/locales/fr/views/faceLibrary.json | 2 +- web/public/locales/fr/views/settings.json | 6 ++-- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/web/public/locales/fr/common.json b/web/public/locales/fr/common.json index 3cf25e977..dc14652d4 100644 --- a/web/public/locales/fr/common.json +++ b/web/public/locales/fr/common.json @@ -272,7 +272,9 @@ "back": "Retour", "hide": "Masquer {{item}}", "show": "Afficher {{item}}", - "ID": "ID" + "ID": "ID", + "none": "Aucun", + "all": "Tous" }, "unit": { "speed": { diff --git a/web/public/locales/fr/views/classificationModel.json b/web/public/locales/fr/views/classificationModel.json index 7d7d93ba3..9b7e8ef28 100644 --- a/web/public/locales/fr/views/classificationModel.json +++ b/web/public/locales/fr/views/classificationModel.json @@ -20,15 +20,18 @@ "deletedModel_one": "{{count}} modèle supprimé avec succès", "deletedModel_many": "{{count}} modèles supprimés avec succès", "deletedModel_other": "{{count}} modèles supprimés avec succès", - "updatedModel": "Configuration du modèle mise à jour avec succès" + "updatedModel": "Configuration du modèle mise à jour avec succès", + "renamedCategory": "Classe renommée en {{name}} avec succès" }, "error": { "deleteImageFailed": "Échec de la suppression : {{errorMessage}}", "deleteCategoryFailed": "Échec de la suppression de la classe : {{errorMessage}}", "categorizeFailed": "Échec de la catégorisation de l'image : {{errorMessage}}", - "trainingFailed": "Échec du démarrage de l'entraînement du modèle : {{errorMessage}}", + "trainingFailed": "L'entraînement du modèle a échoué. Consultez les journaux de Frigate pour plus de détails.", "deleteModelFailed": "Impossible de supprimer le modèle : {{errorMessage}}", - "updateModelFailed": "Impossible de mettre à jour le modèle : {{errorMessage}}" + "updateModelFailed": "Impossible de mettre à jour le modèle : {{errorMessage}}", + "renameCategoryFailed": "Impossible de renommer la classe : {{errorMessage}}", + "trainingFailedToStart": "Impossible de démarrer l'entraînement du modèle : {{errorMessage}}" } }, "deleteCategory": { @@ -37,11 +40,15 @@ }, "deleteDatasetImages": { "title": "Supprimer les images du jeu de données", - "desc": "Êtes-vous sûr de vouloir supprimer {{count}} images du jeu de données {{dataset}} ? Cette action est irréversible et nécessitera un réentraînement du modèle." + "desc_one": "Êtes-vous sûr de vouloir supprimer {{count}} image du jeu de données {{dataset}} ? Cette action est irréversible et nécessitera un réentraînement du modèle.", + "desc_many": "Êtes-vous sûr de vouloir supprimer {{count}} images du jeu de données {{dataset}} ? Cette action est irréversible et nécessitera un réentraînement du modèle.", + "desc_other": "Êtes-vous sûr de vouloir supprimer {{count}} images du jeu de données {{dataset}} ? Cette action est irréversible et nécessitera un réentraînement du modèle." }, "deleteTrainImages": { "title": "Supprimer les images d'entraînement", - "desc": "Êtes-vous sûr de vouloir supprimer {{count}} images ? Cette action est irréversible." + "desc_one": "Êtes-vous sûr de vouloir supprimer {{count}} image ? Cette action est irréversible.", + "desc_many": "Êtes-vous sûr de vouloir supprimer {{count}} images ? Cette action est irréversible.", + "desc_other": "Êtes-vous sûr de vouloir supprimer {{count}} images ? Cette action est irréversible." }, "renameCategory": { "title": "Renommer la classe", @@ -140,13 +147,18 @@ "generationFailed": "Échec de la génération. Veuillez réessayer.", "classifyFailed": "Échec de la classification des images : {{error}}" }, - "generateSuccess": "Génération des images d'exemple réussie" + "generateSuccess": "Génération des images d'exemple réussie", + "allImagesRequired_one": "Veuillez classifier toutes les images. {{count}} image restante.", + "allImagesRequired_many": "Veuillez classifier toutes les images. {{count}} images restantes.", + "allImagesRequired_other": "Veuillez classifier toutes les images. {{count}} images restantes." } }, "deleteModel": { "title": "Supprimer le modèle de classification", "single": "Voulez-vous vraiment supprimer {{name}} ? Cela supprimera définitivement toutes les données associées, y compris les images et les données d'entraînement. Cette action est irréversible.", - "desc": "Voulez-vous vraiment supprimer {{count}} modèle(s) ? Cela supprimera définitivement toutes les données associées, y compris les images et les données d'entraînement. Cette action est irréversible." + "desc_one": "Voulez-vous vraiment supprimer {{count}} modèle ? Cela supprimera définitivement toutes les données associées, y compris les images et les données d'entraînement. Cette action est irréversible.", + "desc_many": "Voulez-vous vraiment supprimer {{count}} modèles ? Cela supprimera définitivement toutes les données associées, y compris les images et les données d'entraînement. Cette action est irréversible.", + "desc_other": "Voulez-vous vraiment supprimer {{count}} modèles ? Cela supprimera définitivement toutes les données associées, y compris les images et les données d'entraînement. Cette action est irréversible." }, "menu": { "objects": "Objets", @@ -160,5 +172,10 @@ "descriptionState": "Modifier les classes pour ce modèle de classification d'état. Les modifications nécessiteront un réentraînement du modèle.", "descriptionObject": "Modifier le type d'objet et le type de classification pour ce modèle de classification d'objet", "stateClassesInfo": "Note : La modification des classes d'état nécessite un réentraînement du modèle avec les classes mises à jour." + }, + "tooltip": { + "trainingInProgress": "Modèle en cours d'entraînement", + "noNewImages": "Aucune nouvelle image pour l'entraînement. Veuillez d'abord classifier plus d'images dans le jeu de données.", + "modelNotReady": "Le modèle n'est pas prêt pour l'entraînement." } } diff --git a/web/public/locales/fr/views/explore.json b/web/public/locales/fr/views/explore.json index 015d7560b..ad9167b06 100644 --- a/web/public/locales/fr/views/explore.json +++ b/web/public/locales/fr/views/explore.json @@ -227,7 +227,9 @@ "error": "Échec de la suppression de l'objet suivi : {{errorMessage}}" } }, - "tooltip": "Correspondance : {{type}} à {{confidence}}%" + "tooltip": "Correspondance : {{type}} à {{confidence}}%", + "previousTrackedObject": "Objet suivi précédent", + "nextTrackedObject": "Objet suivi suivant" }, "exploreMore": "Explorer plus d'objets {{label}}", "aiAnalysis": { @@ -267,7 +269,7 @@ "offset": { "desc": "Ces données proviennent du flux de détection de votre caméra, mais elles sont superposées aux images du flux d'enregistrement. Il est peu probable que les deux flux soient parfaitement synchronisés. Par conséquent, le cadre de délimitation et la vidéo ne s'aligneront pas parfaitement. Vous pouvez utiliser ce paramètre pour décaler les annotations vers l'avant ou vers l'arrière dans le temps afin de mieux les aligner avec la vidéo enregistrée.", "millisecondsToOffset": "Millisecondes de décalage pour les annotations de détection. Par défaut : 0", - "tips": "ASTUCE : Imaginez une séquence d'événement avec une personne marchant de gauche à droite. Si le cadre de détection sur la chronologie de l'événement est constamment à gauche de la personne, la valeur doit être diminuée. De même, si une personne marche de gauche à droite et que le cadre de détection est constamment devant la personne, la valeur doit être augmentée.", + "tips": "Diminuez la valeur si la lecture vidéo est en avance sur les cadres de détection et les points de tracé, et augmentez-la si la lecture vidéo est en retard sur ceux-ci. Cette valeur peut être négative.", "toast": { "success": "Le décalage des annotations pour {{camera}} a été sauvegardé dans le fichier de configuration. Redémarrez Frigate pour appliquer vos modifications." }, diff --git a/web/public/locales/fr/views/faceLibrary.json b/web/public/locales/fr/views/faceLibrary.json index 7cdfb6c88..1fcf4d000 100644 --- a/web/public/locales/fr/views/faceLibrary.json +++ b/web/public/locales/fr/views/faceLibrary.json @@ -60,7 +60,7 @@ "deletedName_other": "{{count}} visages ont été supprimés avec succès.", "uploadedImage": "Image téléversée avec succès", "addFaceLibrary": "{{name}} a été ajouté avec succès à la bibliothèque de visages !", - "updatedFaceScore": "Score du visage mis à jour avec succès", + "updatedFaceScore": "Score du visage ({{score}}) de {{name}} mis à jour avec succès", "deletedFace_one": "{{count}} visage supprimé avec succès", "deletedFace_many": "{{count}} visages supprimés avec succès", "deletedFace_other": "{{count}} visages supprimés avec succès", diff --git a/web/public/locales/fr/views/settings.json b/web/public/locales/fr/views/settings.json index 61202dc6f..02bf1aa14 100644 --- a/web/public/locales/fr/views/settings.json +++ b/web/public/locales/fr/views/settings.json @@ -893,9 +893,9 @@ "createRole": "Rôle {{role}} créé avec succès", "updateCameras": "Caméras mis à jour pour le rôle {{role}}", "deleteRole": "Rôle {{role}} supprimé avec succès", - "userRolesUpdated_one": "{{count}} utilisateurs affectés à ce rôle ont été mis à jour avec des droits \"Observateur\", et ont accès à toutes les caméras.", - "userRolesUpdated_many": "", - "userRolesUpdated_other": "" + "userRolesUpdated_one": "{{count}} utilisateur affecté à ce rôle a été mis à jour avec des droits \"Observateur\", et a accès à toutes les caméras.", + "userRolesUpdated_many": "{{count}} utilisateurs affectés à ce rôle ont été mis à jour avec des droits \"Observateur\", et ont accès à toutes les caméras.", + "userRolesUpdated_other": "{{count}} utilisateurs affectés à ce rôle ont été mis à jour avec des droits \"Observateur\", et ont accès à toutes les caméras." }, "error": { "createRoleFailed": "Échec dans la création du rôle : {{errorMessage}}", From 80d3949c45eb9d259f997b0777e9506e5caaa67f Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:27 +0100 Subject: [PATCH 14/15] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (118 of 118 strings) Co-authored-by: Hosted Weblate Co-authored-by: OverTheHillsAndFarAway Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/nb_NO/ Translation: Frigate NVR/objects --- web/public/locales/sv/common.json | 4 +++- web/public/locales/sv/views/settings.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/web/public/locales/sv/common.json b/web/public/locales/sv/common.json index 2e9e1a627..691c7b68e 100644 --- a/web/public/locales/sv/common.json +++ b/web/public/locales/sv/common.json @@ -253,7 +253,9 @@ "back": "Gå tillbaka", "hide": "Dölj {{item}}", "show": "Visa {{item}}", - "ID": "ID" + "ID": "ID", + "none": "Ingen", + "all": "Alla" }, "unit": { "speed": { diff --git a/web/public/locales/sv/views/settings.json b/web/public/locales/sv/views/settings.json index 0045d30bb..dd1453902 100644 --- a/web/public/locales/sv/views/settings.json +++ b/web/public/locales/sv/views/settings.json @@ -645,7 +645,7 @@ "updateCameras": "Kameror uppdaterade för roll {{role}}", "deleteRole": "Roll {{role}} raderad", "userRolesUpdated_one": "{{count}} användare som tilldelats den här rollen har uppdaterats till 'tittare', vilket har åtkomst till alla kameror.", - "userRolesUpdated_other": "" + "userRolesUpdated_other": "{{count}} användare som tilldelats den här rollen har uppdaterats till 'tittare', vilket har åtkomst till alla kameror." }, "error": { "createRoleFailed": "Misslyckades att skapa roll: {{errorMessage}}", From 61aa418e7bce0aec4e88cd55692e7d86ddff3fca Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 10 Nov 2025 23:08:28 +0100 Subject: [PATCH 15/15] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (118 of 118 strings) Co-authored-by: Hosted Weblate Co-authored-by: OverTheHillsAndFarAway Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/nb_NO/ Translation: Frigate NVR/objects --- web/public/locales/nb-NO/objects.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/public/locales/nb-NO/objects.json b/web/public/locales/nb-NO/objects.json index d292b63b8..5c7c5edd2 100644 --- a/web/public/locales/nb-NO/objects.json +++ b/web/public/locales/nb-NO/objects.json @@ -101,7 +101,7 @@ "raccoon": "Vaskebjørn", "robot_lawnmower": "Robotgressklipper", "waste_bin": "Avfallsbeholder", - "on_demand": "På forespørsel", + "on_demand": "Manuelt opptak", "face": "Ansikt", "license_plate": "Kjennemerke", "package": "Pakke",