Compare commits

..
32 Commits
Author SHA1 Message Date
dependabot[bot]andGitHub 3744b5113b Merge 300fbc9dfe into 4e65cc1019 2026-07-06 14:41:48 +02:00
4e65cc1019 Translated using Weblate (Norwegian Bokmål)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (23 of 23 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (474 of 474 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (100 of 100 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (239 of 239 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: OverTheHillsAndFarAway <prosjektx@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/nb_NO/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/Config - Validation
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
c4b007686f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (474 of 474 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 99.7% (1282 of 1285 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (1277 of 1277 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (49 of 49 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (1276 of 1276 strings)

Co-authored-by: GuoQing Liu <842607283@qq.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Yechi Yang <yechiyang93@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/zh_Hans/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
75ca66679a Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (23 of 23 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (807 of 807 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (129 of 129 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (100 of 100 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (239 of 239 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jamie HUANG <114514020@live.asia.edu.tw>
Co-authored-by: 莊凱鈞 <kcchuang88@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/zh_Hant/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/Config - Validation
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
9f52372cfd Translated using Weblate (Slovak)
Currently translated at 67.3% (68 of 101 strings)

Translated using Weblate (Slovak)

Currently translated at 0.9% (8 of 809 strings)

Translated using Weblate (Slovak)

Currently translated at 97.9% (234 of 239 strings)

Translated using Weblate (Slovak)

Currently translated at 98.0% (49 of 50 strings)

Translated using Weblate (Slovak)

Currently translated at 49.4% (631 of 1277 strings)

Translated using Weblate (Slovak)

Currently translated at 91.4% (118 of 129 strings)

Translated using Weblate (Slovak)

Currently translated at 1.6% (8 of 475 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Pavol Krnáč <palokrnac@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sk/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
1c610a7271 Translated using Weblate (Serbian)
Currently translated at 51.1% (65 of 127 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Serbian)

Currently translated at 46.7% (51 of 109 strings)

Co-authored-by: Dalibor Radovanović <darkobg@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sr/
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/objects
2026-07-05 21:08:46 -05:00
075e5196a7 Translated using Weblate (Swedish)
Currently translated at 96.3% (105 of 109 strings)

Translated using Weblate (Swedish)

Currently translated at 2.7% (13 of 475 strings)

Translated using Weblate (Swedish)

Currently translated at 0.6% (5 of 809 strings)

Translated using Weblate (Swedish)

Currently translated at 50.7% (648 of 1277 strings)

Translated using Weblate (Swedish)

Currently translated at 0.1% (1 of 809 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Swedish)

Currently translated at 0.6% (3 of 475 strings)

Translated using Weblate (Swedish)

Currently translated at 94.4% (137 of 145 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (101 of 101 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (239 of 239 strings)

Co-authored-by: Christian Bengtsson <bnccnb@gmail.com>
Co-authored-by: Coffe <effocs@gmail.com>
Co-authored-by: Fredrik Tuomas <fredrik.tuomas@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kristian Johansson <knmjohansson@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sv/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
3c3acbe8f8 Translated using Weblate (French)
Currently translated at 89.9% (98 of 109 strings)

Translated using Weblate (French)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (French)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (French)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (French)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (French)

Currently translated at 56.4% (35 of 62 strings)

Co-authored-by: Antoine de Champlain <mon.nom.tony@gmail.com>
Co-authored-by: Fräntz Miccoli <frantz.miccoli@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: LeBuzzy <bwinster2@outlook.com>
Co-authored-by: NicoA08 <nicolasantunes08@gmail.com>
Co-authored-by: shdw <weblate@assez.biz>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/fr/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
da20b134d2 Translated using Weblate (Spanish)
Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1285 of 1285 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (Spanish)

Currently translated at 99.4% (187 of 188 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1277 of 1277 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (475 of 475 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Libre <6n0n1m0s@proton.me>
Co-authored-by: jjavin <javiernovoa@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/es/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
87f9c6240a Translated using Weblate (Dutch)
Currently translated at 91.0% (92 of 101 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (239 of 239 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: laurensthedeveloper <laurensg100@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/nl/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
2026-07-05 21:08:46 -05:00
2819e76491 Translated using Weblate (Indonesian)
Currently translated at 64.8% (70 of 108 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Indonesian)

Currently translated at 57.4% (58 of 101 strings)

Translated using Weblate (Indonesian)

Currently translated at 43.5% (44 of 101 strings)

Translated using Weblate (Indonesian)

Currently translated at 94.0% (47 of 50 strings)

Translated using Weblate (Indonesian)

Currently translated at 42.5% (43 of 101 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.0% (45 of 50 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.0% (45 of 50 strings)

Co-authored-by: Alberto-Audrix <alberto.suiwidjaya6@gmail.com>
Co-authored-by: Diazt Muhammad Firmansyah <diaztmuhammadfirmansyah@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Naufal F <fadhlurrahmannf0812@gmail.com>
Co-authored-by: Yeni Setiawan <yenisetiawan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/id/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
2026-07-05 21:08:46 -05:00
c5f77b3e20 Translated using Weblate (Arabic)
Currently translated at 19.6% (25 of 127 strings)

Translated using Weblate (Arabic)

Currently translated at 30.7% (154 of 501 strings)

Co-authored-by: Ahmed Marzouq <ahmed.marzouq.co@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ar/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/ar/
Translation: Frigate NVR/audio
Translation: Frigate NVR/objects
2026-07-05 21:08:46 -05:00
723bfa9308 Translated using Weblate (Italian)
Currently translated at 74.2% (601 of 809 strings)

Translated using Weblate (Italian)

Currently translated at 99.9% (1276 of 1277 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Italian)

Currently translated at 99.5% (473 of 475 strings)

Translated using Weblate (Italian)

Currently translated at 73.0% (591 of 809 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (1276 of 1276 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (100 of 100 strings)

Translated using Weblate (Italian)

Currently translated at 67.7% (548 of 809 strings)

Translated using Weblate (Italian)

Currently translated at 55.7% (451 of 809 strings)

Translated using Weblate (Italian)

Currently translated at 76.0% (361 of 475 strings)

Co-authored-by: Edoardo Sorrenti <ed.sorrenti@gmail.com>
Co-authored-by: Filippo-riccardo Franzin (filippo franzin) <filric01@gmail.com>
Co-authored-by: Gringo <ita.translations@tiscali.it>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/it/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
645601d83e Translated using Weblate (Polish)
Currently translated at 10.4% (84 of 807 strings)

Translated using Weblate (Polish)

Currently translated at 33.8% (160 of 473 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Polish)

Currently translated at 31.3% (149 of 475 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (101 of 101 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Polish)

Currently translated at 98.4% (127 of 129 strings)

Translated using Weblate (Polish)

Currently translated at 9.1% (74 of 809 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kamil Cybułka <kamil.cybulka@gmail.com>
Co-authored-by: Paweł Kapeluszny <cyberitsec@proton.me>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/pl/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
2026-07-05 21:08:46 -05:00
ca1637ba5a Translated using Weblate (Hebrew)
Currently translated at 90.7% (217 of 239 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Raziel Zaarur <razielzaarur1@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/he/
Translation: Frigate NVR/common
2026-07-05 21:08:46 -05:00
79fcf40d96 Translated using Weblate (Hungarian)
Currently translated at 31.4% (17 of 54 strings)

Translated using Weblate (Hungarian)

Currently translated at 86.8% (435 of 501 strings)

Translated using Weblate (Hungarian)

Currently translated at 72.8% (137 of 188 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.6% (429 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Laszlo Bana <banalac@yahoo.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/hu/
Translation: Frigate NVR/audio
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
5e17aa685b Translated using Weblate (Portuguese)
Currently translated at 50.4% (55 of 109 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Portuguese)

Currently translated at 33.1% (427 of 1287 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.5% (238 of 239 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.4% (498 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: João Nuno <joaomnuno@gmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
f5d6ca2772 Translated using Weblate (Catalan)
Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1285 of 1285 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1277 of 1277 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1277 of 1277 strings)

Co-authored-by: Eduardo Pastor Fernández <123eduardoneko123@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ca/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
39856aaa2d Translated using Weblate (Ukrainian)
Currently translated at 81.3% (153 of 188 strings)

Translated using Weblate (Ukrainian)

Currently translated at 6.7% (32 of 473 strings)

Translated using Weblate (Ukrainian)

Currently translated at 2.7% (22 of 807 strings)

Translated using Weblate (Ukrainian)

Currently translated at 80.8% (152 of 188 strings)

Translated using Weblate (Ukrainian)

Currently translated at 6.3% (30 of 473 strings)

Translated using Weblate (Ukrainian)

Currently translated at 2.6% (21 of 807 strings)

Translated using Weblate (Ukrainian)

Currently translated at 6.1% (29 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 2.4% (20 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Ukrainian)

Currently translated at 1.2% (10 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 4.0% (19 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 0.7% (6 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 3.1% (15 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 0.4% (4 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 2.5% (12 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 1.6% (8 of 475 strings)

Translated using Weblate (Ukrainian)

Currently translated at 96.1% (25 of 26 strings)

Translated using Weblate (Ukrainian)

Currently translated at 0.1% (1 of 809 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (50 of 50 strings)

Co-authored-by: A T <andrey.timchenko@gmail.com>
Co-authored-by: Den <denis.ua22@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Vitaliy Kreminskiy <vkrmk13@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/uk/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
3ae70f1808 Translated using Weblate (Bulgarian)
Currently translated at 11.6% (7 of 60 strings)

Translated using Weblate (Bulgarian)

Currently translated at 50.0% (43 of 86 strings)

Translated using Weblate (Bulgarian)

Currently translated at 20.0% (29 of 145 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Bulgarian)

Currently translated at 5.6% (27 of 475 strings)

Translated using Weblate (Bulgarian)

Currently translated at 7.0% (57 of 809 strings)

Translated using Weblate (Bulgarian)

Currently translated at 34.0% (34 of 100 strings)

Translated using Weblate (Bulgarian)

Currently translated at 3.1% (4 of 129 strings)

Translated using Weblate (Bulgarian)

Currently translated at 78.4% (393 of 501 strings)

Translated using Weblate (Bulgarian)

Currently translated at 15.6% (10 of 64 strings)

Translated using Weblate (Bulgarian)

Currently translated at 74.8% (375 of 501 strings)

Translated using Weblate (Bulgarian)

Currently translated at 20.2% (15 of 74 strings)

Translated using Weblate (Bulgarian)

Currently translated at 36.8% (88 of 239 strings)

Translated using Weblate (Bulgarian)

Currently translated at 36.8% (88 of 239 strings)

Translated using Weblate (Bulgarian)

Currently translated at 33.0% (33 of 100 strings)

Translated using Weblate (Bulgarian)

Currently translated at 0.2% (1 of 475 strings)

Translated using Weblate (Bulgarian)

Currently translated at 21.2% (27 of 127 strings)

Translated using Weblate (Bulgarian)

Currently translated at 2.3% (3 of 129 strings)

Translated using Weblate (Bulgarian)

Currently translated at 1.1% (9 of 809 strings)

Co-authored-by: Dobromir Kirov <kirov0407@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Plamen Stoyanov <fireto@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/bg/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/bg/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
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-live
2026-07-05 21:08:46 -05:00
a9e4cd061c Translated using Weblate (Romanian)
Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (1285 of 1285 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (1277 of 1277 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: lukasig <lukasig@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ro/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
f59025681d Translated using Weblate (Russian)
Currently translated at 77.0% (84 of 109 strings)

Translated using Weblate (Russian)

Currently translated at 73.1% (79 of 108 strings)

Translated using Weblate (Russian)

Currently translated at 54.9% (706 of 1285 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Russian)

Currently translated at 92.4% (221 of 239 strings)

Co-authored-by: Artem Vladimirov <artyomka71@mail.ru>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Vladimir Bely <vlwwwwww@gmail.com>
Co-authored-by: Артем <artem_ibatullin@mail.ru>
Co-authored-by: Дмитрий Власкин <vdvlaskin@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ru/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
126cbd9e5e Translated using Weblate (Greek)
Currently translated at 14.3% (72 of 501 strings)

Translated using Weblate (Greek)

Currently translated at 49.7% (119 of 239 strings)

Co-authored-by: George Rovolis <georgios@rovolis.co.uk>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/el/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
2026-07-05 21:08:46 -05:00
f85387570b Translated using Weblate (Danish)
Currently translated at 1.0% (13 of 1287 strings)

Translated using Weblate (Danish)

Currently translated at 28.4% (31 of 109 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Danish)

Currently translated at 41.3% (207 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: nicoleise <niceggert@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/da/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
b0cecd534b Translated using Weblate (German)
Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (German)

Currently translated at 100.0% (108 of 108 strings)

Translated using Weblate (German)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (German)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (German)

Currently translated at 100.0% (473 of 473 strings)

Translated using Weblate (German)

Currently translated at 100.0% (127 of 127 strings)

Translated using Weblate (German)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (German)

Currently translated at 100.0% (1285 of 1285 strings)

Translated using Weblate (German)

Currently translated at 100.0% (188 of 188 strings)

Translated using Weblate (German)

Currently translated at 100.0% (807 of 807 strings)

Translated using Weblate (German)

Currently translated at 100.0% (475 of 475 strings)

Translated using Weblate (German)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (German)

Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (German)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (German)

Currently translated at 100.0% (1276 of 1276 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Nuendo-DE <tim.huehner@gmx.de>
Co-authored-by: Sebastian Sie <sebastian.neuplanitz@googlemail.com>
Co-authored-by: laurensthedeveloper <laurensg100@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/de/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
7726d2ec97 Translated using Weblate (Portuguese (Brazil))
Currently translated at 28.8% (13 of 45 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 32.7% (265 of 808 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 56.3% (267 of 474 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 39.5% (509 of 1287 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.1% (107 of 109 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 90.7% (49 of 54 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (23 of 23 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 11.4% (92 of 807 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 17.7% (84 of 473 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 52.7% (68 of 129 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (100 of 100 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 95.4% (104 of 109 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (500 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ricardo RFPP <ricardo.inteli@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-groups/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-replay/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/Config - Groups
Translation: Frigate NVR/Config - Validation
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-replay
Translation: Frigate NVR/views-settings
2026-07-05 21:08:46 -05:00
9662bf094f Translated using Weblate (Turkish)
Currently translated at 3.2% (26 of 807 strings)

Translated using Weblate (Turkish)

Currently translated at 6.1% (29 of 473 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Turkish)

Currently translated at 98.1% (106 of 108 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Turkish)

Currently translated at 73.4% (138 of 188 strings)

Translated using Weblate (Turkish)

Currently translated at 6.4% (4 of 62 strings)

Translated using Weblate (Turkish)

Currently translated at 98.0% (49 of 50 strings)

Translated using Weblate (Turkish)

Currently translated at 90.0% (91 of 101 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Nazım Sarp Tekbaş <sarptekbas07@gmail.com>
Co-authored-by: Selim Kundakçıoğlu <selimkundakcioglu@gmail.com>
Co-authored-by: Turhan Munis <turhan.munis@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/tr/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-system
2026-07-05 21:08:46 -05:00
Josh HawkinsandGitHub a26487c4f0 Register per-camera notifications MQTT callbacks (#23637)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / AMD64 Extra Build (push) Blocked by required conditions
* fix per-camera notification MQTT topics never being registered

register notifications/set and notifications/suspend callbacks for each camera, and gate the global notifications topics on per-camera config as well as global (matching WebPushClient creation in app.py). Unregistered topics were silently dropped by paho since only registered callbacks receive messages.

* add tests
2026-07-05 17:24:39 -05:00
Josh HawkinsandGitHub 1c745e0847 fix config corruption when deleting the last commented mask or zone (#23627)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / AMD64 Extra Build (push) Blocked by required conditions
Deleting the last entry of a mapping or sequence via config/set orphaned ruamel's comment tokens, which were then emitted above a flow-style {} / [] at column 0, which is unparseable yaml that failed validation and silently rolled the change back. The fix is to clear the emptied collection's stale comment metadata (and the parent's entry for it) so the dump stays valid. Non-empty collections are left untouched so sibling comments are preserved. This covers both emptied maps and emptied lists.
2026-07-04 17:10:32 -06:00
Josh HawkinsandGitHub 729ee86043 Miscellaneous fixes (#23619)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / Jetson Jetpack 6 (push) Waiting to run
* fix stale active object indicators on the live dashboard

The camera_activity/<camera> snapshot cache is only written when a client sends onConnect, and object "end" events only update the local state of mounted useCameraActivity hooks, never the cache. As a result, a hook that seeded from a stale cache or missed an "end" event while disconnected showed objects that had already left, with no path to correct itself short of a full page reload.

This change will re-request the snapshot on hook mount (collapsed to one onConnect per task across camera cards), and always re-notify camera_activity topics so hooks reconcile against their own local state instead of relying on snapshot-vs-snapshot comparison, and clear the payload dedup cache on reconnect and resync so byte-identical snapshots still apply.

* docs tweaks

* fix mqtt log message

* use consistent values for lpr debug frame filenames

with millisecond resolution

* apply object events through a functional updater to prevent lost updates

The events effect derived a new objects list from the value captured at render time and wrote the whole list back. When events arrived close
together, a run derived from a stale list erased a concurrent run's removal; the resurrected object then had no remaining "end" event to clear it, and the add branch could mint a duplicate entry that no splice could ever remove, leaving the live dashboard showing active objects the backend had already cleared, until a page reload.

The fix is to apply each event inside setObjects so it operates on the true current list exactly once. Unchanged results return the same reference so React bails out of re-rendering, and the label rewrite is hoisted so added objects get the sub_label/verified label directly instead of relying on the effect re-running against its own state update.
2026-07-04 00:25:22 -06:00
Blake BlackshearandGitHub c007661a71 Enhancements (#23611)
CI / AMD64 Build (push) Has been cancelled
CI / ARM Build (push) Has been cancelled
CI / Jetson Jetpack 6 (push) Has been cancelled
CI / AMD64 Extra Build (push) Has been cancelled
CI / ARM Extra Build (push) Has been cancelled
CI / Synaptics Build (push) Has been cancelled
CI / Assemble and push default build (push) Has been cancelled
* better default handling if no proxy chain is present

* add note about SameSite for jwt cookie
2026-07-02 07:05:00 -05:00
9b02c7318d Miscellaneous fixes (#23610)
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
* Handle back seeking going to previous clip

* scope /recordings/unavailable query to the caller's allowed cameras

* listen for config updates in activity manager

* don't set search after awaited request

Intentionally do NOT setSearch() to mark the open event submitted. This runs after the awaited request, by which point the user may have closed the dialog; re-setting the parent's selected event would resurrect it and the force-open effect would reopen it (see #23599). The local "submitted" state covers the open card, and mutate() updates the events cache so the grid and any future open reflect the result.

* fix ruff

#23201 removed pathlib import but for some reason it's just now causing ruff to fail

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2026-07-01 15:03:34 -05:00
182 changed files with 5714 additions and 686 deletions
@@ -3,6 +3,7 @@
import json
import os
import sys
from pathlib import Path
from typing import Any
from ruamel.yaml import YAML
+2 -2
View File
@@ -126,12 +126,12 @@ birdseye:
### Sorting cameras in the Birdseye view
It is possible to override the order of cameras that are being shown in the Birdseye view. The order is set at the camera level.
It is possible to override the order of cameras that are being shown in the Birdseye view. The order is set at the camera level (when using YAML).
<ConfigTabs>
<TabItem value="ui">
Navigate to <NavPath path="Settings > Camera configuration > Birdseye" /> for each camera and set the **Position** field to control the display order.
Navigate to <NavPath path="Settings > System > Birdseye" /> and in the **Camera order** field, use the drag handle next to each camera name to control the display order.
</TabItem>
<TabItem value="yaml">
+1 -1
View File
@@ -194,7 +194,7 @@ Camera groups let you organize cameras together with a shared name and icon, mak
<ConfigTabs>
<TabItem value="ui">
On the Live dashboard, press the **+** icon in the main navigation to add a new camera group. Configure the group name, select which cameras to include, choose an icon, and set the display order.
On the Live dashboard, press the **pencil icon** in the main navigation to add a new camera group. Configure the group name, select which cameras to include, choose an icon, and set the display order.
</TabItem>
<TabItem value="yaml">
+39 -39
View File
@@ -7,27 +7,27 @@ import ConfigTabs from "@site/src/components/ConfigTabs";
import TabItem from "@theme/TabItem";
import NavPath from "@site/src/components/NavPath";
Some presets of FFmpeg args are provided by default to make the configuration easier. All presets can be seen in [this file](https://github.com/blakeblackshear/frigate/blob/master/frigate/ffmpeg_presets.py).
Frigate ships with a set of FFmpeg presets to keep your configuration short and readable. Each preset expands to a longer list of FFmpeg arguments at runtime. You can see exactly what every preset expands to in [this file](https://github.com/blakeblackshear/frigate/blob/master/frigate/ffmpeg_presets.py).
### Hwaccel Presets
In the config file you reference a preset by its name (for example, `preset-vaapi`). In the UI, the same preset is shown with a friendly label (for example, **VAAPI (Intel/AMD GPU)**). Both refer to the same thing — the tables below list the config name alongside the label you'll see in the UI.
It is highly recommended to use hwaccel presets in the config. These presets not only replace the longer args, but they also give Frigate hints of what hardware is available and allows Frigate to make other optimizations using the GPU such as when encoding the birdseye restream or when scaling a stream that has a size different than the native stream size.
### Hwaccel (Hardware Acceleration) Presets
See [the hwaccel docs](/configuration/hardware_acceleration_video.md) for more info on how to setup hwaccel for your GPU / iGPU.
Hardware acceleration arguments tell FFmpeg to decode your camera's video stream on a GPU or integrated graphics chip instead of the CPU, which dramatically lowers CPU usage. Using a preset is highly recommended. Beyond replacing a long list of arguments, each preset also tells Frigate what hardware is available so it can offload additional work to the GPU — for example, encoding the Birdseye restream or scaling a stream whose resolution differs from the camera's native size.
| Preset | Usage | Other Notes |
| --------------------- | ------------------------------ | ----------------------------------------------------- |
| preset-rpi-64-h264 | 64 bit Rpi with h264 stream | |
| preset-rpi-64-h265 | 64 bit Rpi with h265 stream | |
| preset-vaapi | Intel & AMD VAAPI | Check hwaccel docs to ensure correct driver is chosen |
| preset-intel-qsv-h264 | Intel QSV with h264 stream | If issues occur recommend using vaapi preset instead |
| preset-intel-qsv-h265 | Intel QSV with h265 stream | If issues occur recommend using vaapi preset instead |
| preset-nvidia | Nvidia GPU | |
| preset-jetson-h264 | Nvidia Jetson with h264 stream | |
| preset-jetson-h265 | Nvidia Jetson with h265 stream | |
| preset-rkmpp | Rockchip MPP | Use image with \*-rk suffix and privileged mode |
See [the hardware acceleration docs](/configuration/hardware_acceleration_video.md) for details on setting up hardware acceleration for your GPU / iGPU, then select the preset that matches your hardware.
Select the appropriate hwaccel preset for your hardware.
| Preset (YAML config) | UI Label | Usage | Notes |
| --------------------- | ----------------------- | --------------------------------- | --------------------------------------------------------------- |
| preset-rpi-64-h264 | Raspberry Pi (H.264) | 64-bit Raspberry Pi, H.264 stream | |
| preset-rpi-64-h265 | Raspberry Pi (H.265) | 64-bit Raspberry Pi, H.265 stream | |
| preset-vaapi | VAAPI (Intel/AMD GPU) | Intel or AMD GPU via VAAPI | Check the hwaccel docs to ensure the correct driver is selected |
| preset-intel-qsv-h264 | Intel QuickSync (H.264) | Intel QuickSync, H.264 stream | If you have issues, use the VAAPI preset instead |
| preset-intel-qsv-h265 | Intel QuickSync (H.265) | Intel QuickSync, H.265 stream | If you have issues, use the VAAPI preset instead |
| preset-nvidia | NVIDIA GPU | NVIDIA GPU | |
| preset-jetson-h264 | NVIDIA Jetson (H.264) | NVIDIA Jetson, H.264 stream | |
| preset-jetson-h265 | NVIDIA Jetson (H.265) | NVIDIA Jetson, H.265 stream | |
| preset-rkmpp | Rockchip RKMPP | Rockchip MPP | Use an image with the `-rk` suffix and run in privileged mode |
<ConfigTabs>
<TabItem value="ui">
@@ -53,25 +53,25 @@ cameras:
### Input Args Presets
Input args presets help make the config more readable and handle use cases for different types of streams to ensure maximum compatibility.
Input arguments are passed to FFmpeg before your camera source and control how Frigate connects to and reads the stream — the transport protocol, timeouts, reconnection behavior, and how the stream is probed. The right input args ensure a reliable connection and maximum compatibility for each type of stream.
See [the camera specific docs](/configuration/camera_specific.md) for more info on non-standard cameras and recommendations for using them in Frigate.
See [the camera-specific docs](/configuration/camera_specific.md) for more on non-standard cameras and recommendations for using them in Frigate.
| Preset | Usage | Other Notes |
| -------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------ |
| preset-http-jpeg-generic | HTTP Live Jpeg | Recommend restreaming live jpeg instead |
| preset-http-mjpeg-generic | HTTP Mjpeg Stream | Recommend restreaming mjpeg stream instead |
| preset-http-reolink | Reolink HTTP-FLV Stream | Only for reolink http, not when restreaming as rtsp |
| preset-rtmp-generic | RTMP Stream | |
| preset-rtsp-generic | RTSP Stream | This is the default when nothing is specified |
| preset-rtsp-restream | RTSP Stream from restream | Use for rtsp restream as source for frigate |
| preset-rtsp-restream-low-latency | RTSP Stream from restream | Use for rtsp restream as source for frigate to lower latency, may cause issues with some cameras |
| preset-rtsp-udp | RTSP Stream via UDP | Use when camera is UDP only |
| preset-rtsp-blue-iris | Blue Iris RTSP Stream | Use when consuming a stream from Blue Iris |
| Preset (config) | UI Label | Usage | Notes |
| -------------------------------- | ----------------------------------------- | --------------------------- | ------------------------------------------------------------------------------- |
| preset-http-jpeg-generic | HTTP JPEG (Generic) | HTTP live JPEG | Restreaming the live JPEG is recommended instead |
| preset-http-mjpeg-generic | HTTP MJPEG (Generic) | HTTP MJPEG stream | Restreaming the MJPEG stream is recommended instead |
| preset-http-reolink | HTTP - Reolink Cameras | Reolink HTTP-FLV stream | Only for Reolink HTTP, not when restreaming as RTSP |
| preset-rtmp-generic | RTMP (Generic) | RTMP stream | |
| preset-rtsp-generic | RTSP (Generic) | RTSP stream | The default when no input args are specified |
| preset-rtsp-restream | RTSP - Restream from go2rtc | RTSP stream from a restream | Use when a go2rtc restream is the source for Frigate |
| preset-rtsp-restream-low-latency | RTSP - Restream from go2rtc (Low Latency) | RTSP stream from a restream | Lowers latency for a go2rtc restream source; may cause issues with some cameras |
| preset-rtsp-udp | RTSP - UDP | RTSP stream over UDP | Use when the camera only supports UDP |
| preset-rtsp-blue-iris | RTSP - Blue Iris | Blue Iris RTSP stream | Use when consuming a stream from Blue Iris |
:::warning
It is important to be mindful of input args when using restream because you can have a mix of protocols. `http` and `rtmp` presets cannot be used with `rtsp` streams. For example, when using a reolink cam with the rtsp restream as a source for record the preset-http-reolink will cause a crash. In this case presets will need to be set at the stream level. See the example below.
Be mindful of input arguments when restreaming, because you can end up with a mix of protocols. The `http` and `rtmp` presets cannot be used with `rtsp` streams. For example, using a Reolink camera with an RTSP restream as the recording source while `preset-http-reolink` is applied will cause a crash. In cases like this, set the preset at the stream level instead. See the example below.
:::
@@ -96,13 +96,13 @@ cameras:
### Output Args Presets
Output args presets help make the config more readable and handle use cases for different types of streams to ensure consistent recordings.
Output arguments are passed to FFmpeg after your camera source and control how recordings are written — which codecs are used and whether audio and video are copied as-is or re-encoded. The right output args ensure consistent, playable recordings for each type of stream.
| Preset | Usage | Other Notes |
| -------------------------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| preset-record-generic | Record WITHOUT audio | If your camera doesn't have audio, or if you don't want to record audio, use this option |
| preset-record-generic-audio-copy | Record WITH original audio | Use this to enable audio in recordings |
| preset-record-generic-audio-aac | Record WITH transcoded aac audio | This is the default when no option is specified. Use it to transcode audio to AAC. If the source is already in AAC format, use preset-record-generic-audio-copy instead to avoid unnecessary re-encoding |
| preset-record-mjpeg | Record an mjpeg stream | Recommend restreaming mjpeg stream instead |
| preset-record-jpeg | Record live jpeg | Recommend restreaming live jpeg instead |
| preset-record-ubiquiti | Record ubiquiti stream with audio | Recordings with ubiquiti non-standard audio |
| Preset (config) | UI Label | Usage | Notes |
| -------------------------------- | ------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| preset-record-generic | Record (Generic, no audio) | Record without audio | Use this if your camera has no audio, or if you don't want to record audio |
| preset-record-generic-audio-copy | Record (Generic + Copy Audio) | Record with the original audio | Use this to keep the camera's audio in recordings without re-encoding |
| preset-record-generic-audio-aac | Record (Generic + Audio to AAC) | Record with audio transcoded to AAC | The default when no output args are specified. Transcodes audio to AAC. If the source is already AAC, use `preset-record-generic-audio-copy` to avoid re-encoding |
| preset-record-mjpeg | Record - MJPEG Cameras | Record an MJPEG stream | Restreaming the MJPEG stream is recommended instead |
| preset-record-jpeg | Record - JPEG Cameras | Record a live JPEG | Restreaming the live JPEG is recommended instead |
| preset-record-ubiquiti | Record - Ubiquiti Cameras | Record a Ubiquiti stream with audio | Handles Ubiquiti's non-standard audio format |
+7 -8
View File
@@ -27,13 +27,12 @@ Running Generative AI models on CPU is not recommended, as high inference times
You must use a vision-capable model with Frigate. The following models are recommended for local deployment:
| Model | Notes |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `qwen3-vl` | Strong visual and situational understanding, enhanced ability to identify smaller objects and interactions with object. |
| `qwen3.5` | Strong situational understanding, but missing DeepStack from qwen3-vl leading to worse performance for identifying objects in people's hand and other small details. |
| `gemma4` | Strong situational understanding, sometimes resorts to more vague terms like 'interacts' instead of assigning a specific action. |
| `Intern3.5VL` | Relatively fast with good vision comprehension |
| `gemma3` | Slower model with good vision and temporal understanding |
| Model | Notes |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `qwen3-vl` | Strong visual and situational understanding, enhanced ability to identify smaller objects and interactions with object. |
| `qwen3.5` | Strong situational understanding, but missing DeepStack from qwen3-vl leading to worse performance for identifying objects in people's hand and other small details. |
| `qwen3.6` | Strong situational understanding, similar to qwen3-vl |
| `gemma4` | Strong situational understanding, sometimes resorts to more vague terms like 'interacts' instead of assigning a specific action. |
:::info
@@ -294,7 +293,7 @@ Other HTTP options are available, see the [python-genai documentation](https://g
### OpenAI
OpenAI does not have a free tier for their API. With the release of gpt-4o, pricing has been reduced and each generation should cost fractions of a cent if you choose to go this route.
OpenAI does not have a free tier for their API.
#### Supported Models
+2 -2
View File
@@ -49,9 +49,9 @@ This almost always means that the width/height defined for your camera are not c
These messages in the logs are expected in certain situations. Frigate checks the integrity of the recordings before storing. Occasionally these cached files will be invalid and cleaned up automatically.
### "On connect called"
### "MQTT connected" repeats in the logs
If you see repeated "On connect called" messages in your logs, check for another instance of Frigate. This happens when multiple Frigate containers are trying to connect to MQTT with the same `client_id`.
If you see repeated "MQTT connected" messages in your logs, check for another instance of Frigate. This happens when multiple Frigate containers are trying to connect to MQTT with the same `client_id`.
### Error: Database Is Locked
+44 -1
View File
@@ -10,4 +10,47 @@ title: GPU Errors
Some users have reported issues using some Intel iGPUs with OpenVINO, where the GPU would not be detected. This error can be caused by various problems, so it is important to ensure the configuration is setup correctly. Some solutions users have noted:
- In some cases users have noted that an HDMI dummy plug was necessary to be plugged into the motherboard's HDMI port.
- When mixing an Intel iGPU with Nvidia GPU, the devices can be mixed up between `/dev/dri/renderD128` and `/dev/dri/renderD129` so it is important to confirm the correct device, or map the entire `/dev/dri` directory into the Frigate container.
- When mixing an Intel iGPU with Nvidia GPU, the devices can be mixed up between `/dev/dri/renderD128` and `/dev/dri/renderD129` so it is important to confirm the correct device, or map the entire `/dev/dri` directory into the Frigate container.
## Intel/AMD GPU
### Hardware acceleration is not being used
For VAAPI or QSV to work, the GPU's render device must be passed through to the Frigate container. Intel and AMD GPUs expose this as a render node under `/dev/dri`, usually `/dev/dri/renderD128`. If it is not passed through, hardware acceleration is unavailable — ffmpeg fails to initialize it (for example `Failed to open the drm device` or `No VA display found for device`) and GPU usage stays at zero while CPU usage remains high.
Pass the render device through when starting the container. With `docker compose`:
```yaml
services:
frigate:
devices:
- /dev/dri/renderD128:/dev/dri/renderD128 # Intel / AMD GPU, update for your hardware
```
Or with `docker run`, add `--device /dev/dri/renderD128`. See the [installation docs](/frigate/installation) for a complete example.
If it still isn't working after passing the device through:
- **Confirm the render node exists and is the correct one.** Run `ls /dev/dri` on the host — you should see one or more `renderD12X` entries. Systems with more than one GPU (an Intel iGPU plus a discrete GPU) can expose both `/dev/dri/renderD128` and `/dev/dri/renderD129`, and the numbering is not guaranteed. Pass through the correct node, or map the entire directory (`/dev/dri:/dev/dri`, or `--device /dev/dri`) so all render nodes are available.
- **Check device permissions.** The Frigate process must be able to access the render node. This is usually automatic when the container runs as root (the default), but nested setups such as an unprivileged Proxmox/LXC container often require making the device accessible on the host (for example, a world-readable render node) or running the container privileged. Note that running Frigate inside an LXC is not officially supported — see the [installation docs](/frigate/installation#proxmox) for details.
### Failed to download frame: -5
When using VAAPI or QSV hardware acceleration, ffmpeg may crash and restart periodically with a signature like this in the `ffmpeg.<camera>.detect` log:
```
[AVHWFramesContext @ 0x...] Failed to sync surface ... (operation failed).
[hwdownload @ 0x...] Failed to download frame: -5.
[vf#0:0 @ 0x...] Error while filtering: Input/output error
[vf#0:0 @ 0x...] Task finished with error code: -5 (Input/output error)
[frigate.video] <camera>: Unable to read frames from ffmpeg process.
```
This is a hardware frame synchronization failure between ffmpeg and the GPU driver, not a Frigate bug. It comes from how a specific camera stream interacts with the GPU's decode and scaling path, so it is highly dependent on your hardware, driver, and stream. Frigate's automatic hardware acceleration detection is a best-guess effort, so the fix is usually to tune the configuration for your specific hardware and camera. The solutions below are ordered from most to least likely to help:
- **Switch between the VAAPI and QSV presets.** On Intel Gen 12 and newer iGPUs, `preset-intel-qsv-h264` / `preset-intel-qsv-h265` is often more stable than the auto-detected `preset-vaapi`. See the [hardware acceleration docs](/configuration/hardware_acceleration_video.md#intel-based-cpus) for the recommended preset for your Intel generation.
- **Try a different VAAPI driver.** The default driver is `iHD`. On older Intel CPUs, `LIBVA_DRIVER_NAME=i965` can be more stable; on AMD GPUs use `LIBVA_DRIVER_NAME=radeonsi`. See [the hardware acceleration docs](/configuration/hardware_acceleration_video.md#intel-based-cpus) for how to set the driver.
- **Use a codec that decodes more reliably.** H.265/HEVC streams may trigger this error far more often than H.264 depending on your CPU generation. If your camera exposes a separate sub-stream, assign an H.264 stream to the `detect` role. Cameras that output full-range YUV (for example some Hikvision models) are especially prone to it.
- **Match the detect resolution to the stream resolution.** When the `detect` resolution differs from the stream, Frigate inserts a GPU scaling filter (`scale_vaapi`), which is where these surface-sync failures can often originate. Set the `detect` `width` and `height` to match the exact resolution of the stream assigned the `detect` role.
- **Match the detect `fps` to the camera stream.** Aggressively dropping frames (for example `detect` `fps: 1` on a stream that runs at 15 fps) can cause timing mismatches in the GPU's frame buffer. Lower the sub-stream's frame rate on the camera itself instead of dropping most frames in Frigate.
- **Fall back to software decoding.** If none of the above resolve it, remove the preset for that camera (`hwaccel_args: []`). Hardware decoding is only an optimization — on a capable CPU, software-decoding a low-resolution sub-stream is inexpensive and gives a stable detect pipeline.
+16 -8
View File
@@ -254,7 +254,14 @@ rateLimiter = RateLimiter()
def get_remote_addr(request: Request):
route = list(reversed(request.headers.get("x-forwarded-for").split(",")))
# fall back to the direct TCP peer when no proxy chain is present
direct_addr = request.client.host if request.client else None
forwarded_for = request.headers.get("x-forwarded-for")
if not forwarded_for:
return direct_addr or "127.0.0.1"
route = list(reversed(forwarded_for.split(",")))
logger.debug(f"IP Route: {[r for r in route]}")
trusted_proxies = []
for proxy in request.app.frigate_config.auth.trusted_proxies:
@@ -291,13 +298,8 @@ def get_remote_addr(request: Request):
logger.debug(f"First untrusted IP: {str(ip)}")
return str(ip)
# if there wasn't anything in the route, just return the default
remote_addr = None
if hasattr(request, "remote_addr"):
remote_addr = request.remote_addr
return remote_addr or "127.0.0.1"
# every hop in the route was trusted, so fall back to the direct peer
return direct_addr or "127.0.0.1"
def _cleanup_first_load_seen() -> None:
@@ -416,6 +418,12 @@ def create_encoded_jwt(user, role, expiration, secret):
def set_jwt_cookie(response: Response, cookie_name, encoded_jwt, expiration, secure):
# TODO: ideally this would set secure as well, but that requires TLS
# SameSite is intentionally left unset (browsers default to Lax). Setting
# SameSite=Lax/Strict would stop the cookie from being sent in cross-origin
# iframes, breaking embedded views such as the Home Assistant Frigate card.
# CSRF is instead mitigated by requiring a custom X-CSRF-TOKEN header, which
# cross-origin pages cannot set without a CORS preflight that Frigate never
# grants (see check_csrf in api/fastapi_app.py).
response.set_cookie(
key=cookie_name,
value=encoded_jwt,
+9 -11
View File
@@ -269,12 +269,12 @@ async def no_recordings(
cameras = params.cameras
if cameras != "all":
requested = set(unquote(cameras).split(","))
filtered = requested.intersection(allowed_cameras)
if not filtered:
return JSONResponse(content=[])
cameras = ",".join(filtered)
camera_list = list(requested.intersection(allowed_cameras))
else:
cameras = allowed_cameras
camera_list = list(allowed_cameras)
if not camera_list:
return JSONResponse(content=[])
before = params.before or datetime.datetime.now().timestamp()
after = (
@@ -283,12 +283,10 @@ async def no_recordings(
)
scale = params.scale
clauses = [(Recordings.end_time >= after) & (Recordings.start_time <= before)]
if cameras != "all":
camera_list = cameras.split(",")
clauses.append((Recordings.camera << camera_list))
else:
camera_list = allowed_cameras
clauses = [
(Recordings.end_time >= after) & (Recordings.start_time <= before),
(Recordings.camera << camera_list),
]
# Get recording start times
data: list[Recordings] = (
+45
View File
@@ -13,6 +13,10 @@ from frigate.comms.event_metadata_updater import (
EventMetadataTypeEnum,
)
from frigate.config import CameraConfig, FrigateConfig
from frigate.config.camera.updater import (
CameraConfigUpdateEnum,
CameraConfigUpdateSubscriber,
)
logger = logging.getLogger(__name__)
@@ -29,6 +33,11 @@ class CameraActivityManager:
self.zone_all_object_counts: dict[str, Counter] = {}
self.zone_active_object_counts: dict[str, Counter] = {}
self.all_zone_labels: dict[str, set[str]] = {}
self.config_subscriber = CameraConfigUpdateSubscriber(
config,
config.cameras,
[CameraConfigUpdateEnum.zones, CameraConfigUpdateEnum.objects],
)
for camera_config in config.cameras.values():
if not camera_config.enabled_in_config:
@@ -56,7 +65,40 @@ class CameraActivityManager:
else camera_config.objects.track
)
def __rebuild_zone_labels(self) -> None:
"""Rebuild zone label tracking after a runtime zones/objects change."""
new_zone_labels: dict[str, set[str]] = {}
for camera_config in self.config.cameras.values():
if not camera_config.enabled_in_config or camera_config.name is None:
continue
for zone, zone_config in camera_config.zones.items():
new_zone_labels.setdefault(zone, set()).update(
zone_config.objects
if zone_config.objects
else camera_config.objects.track
)
# drop counters for zones that no longer exist
for zone in list(self.zone_all_object_counts.keys()):
if zone not in new_zone_labels:
self.zone_all_object_counts.pop(zone, None)
self.zone_active_object_counts.pop(zone, None)
# ensure counters exist for new zones so the first count is published
for zone in new_zone_labels:
self.zone_all_object_counts.setdefault(zone, Counter())
self.zone_active_object_counts.setdefault(zone, Counter())
self.all_zone_labels = new_zone_labels
def update_activity(self, new_activity: dict[str, dict[str, Any]]) -> None:
updated_topics = self.config_subscriber.check_for_updates()
if "zones" in updated_topics or "objects" in updated_topics:
self.__rebuild_zone_labels()
all_objects: list[dict[str, Any]] = []
for camera in new_activity.keys():
@@ -161,6 +203,9 @@ class CameraActivityManager:
self.publish(f"{camera}/all", sum(list(all_objects.values())))
self.publish(f"{camera}/all/active", sum(list(active_objects.values())))
def stop(self) -> None:
self.config_subscriber.stop()
class AudioActivityManager:
def __init__(
+2
View File
@@ -397,6 +397,8 @@ class Dispatcher:
comm.publish(topic, payload, retain)
def stop(self) -> None:
self.camera_activity.stop()
for comm in self.comms:
comm.stop()
+21 -2
View File
@@ -41,6 +41,18 @@ class MqttClient(Communicator):
self.publish("available", "stopped", retain=True)
self.client.disconnect()
def _notifications_enabled_in_config(self) -> bool:
"""Whether notifications are configured globally or on any camera.
Notifications can be enabled per camera with the global config left
disabled, so the global topics must consider both (matching how
app.py decides to create the WebPushClient).
"""
return self.config.notifications.enabled_in_config or any(
cam.enabled and cam.notifications.enabled_in_config
for cam in self.config.cameras.values()
)
def _set_initial_topics(self) -> None:
"""Set initial state topics."""
for camera_name, camera in self.config.cameras.items():
@@ -157,7 +169,7 @@ class MqttClient(Communicator):
retain=True,
)
if self.config.notifications.enabled_in_config:
if self._notifications_enabled_in_config():
self.publish(
"notifications/state",
"ON" if self.config.notifications.enabled else "OFF",
@@ -256,6 +268,7 @@ class MqttClient(Communicator):
"review_detections",
"object_descriptions",
"review_descriptions",
"notifications",
]
for name in self.config.cameras.keys():
@@ -265,6 +278,12 @@ class MqttClient(Communicator):
self.on_mqtt_command,
)
# notifications suspend doesn't follow the /set topic pattern
self.client.message_callback_add(
f"{self.mqtt_config.topic_prefix}/{name}/notifications/suspend",
self.on_mqtt_command,
)
if self.config.cameras[name].onvif.host:
self.client.message_callback_add(
f"{self.mqtt_config.topic_prefix}/{name}/ptz",
@@ -289,7 +308,7 @@ class MqttClient(Communicator):
self.on_mqtt_command,
)
if self.config.notifications.enabled_in_config:
if self._notifications_enabled_in_config():
self.client.message_callback_add(
f"{self.mqtt_config.topic_prefix}/notifications/set",
self.on_mqtt_command,
@@ -86,13 +86,15 @@ class LicensePlateProcessingMixin:
self.similarity_threshold = 0.8
self.cluster_threshold = 0.85
def _detect(self, image: np.ndarray) -> List[np.ndarray]:
def _detect(self, image: np.ndarray, debug_frame_id: int) -> List[np.ndarray]:
"""
Detect possible areas of text in the input image by first resizing and normalizing it,
running a detection model, and filtering out low-probability regions.
Args:
image (np.ndarray): The input image in which license plates will be detected.
debug_frame_id (int): Shared id used to name debug images so all artifacts
from a single LPR pass share the same filename suffix.
Returns:
List[np.ndarray]: A list of bounding box coordinates representing detected license plates.
@@ -106,9 +108,8 @@ class LicensePlateProcessingMixin:
normalized_image = self._normalize_image(resized_image)
if WRITE_DEBUG_IMAGES:
current_time = int(datetime.datetime.now().timestamp())
cv2.imwrite(
f"debug/frames/license_plate_resized_{current_time}.jpg",
f"debug/frames/license_plate_resized_{debug_frame_id}.jpg",
resized_image,
)
@@ -203,7 +204,7 @@ class LicensePlateProcessingMixin:
return self.ctc_decoder(outputs)
def _process_license_plate(
self, camera: str, id: str, image: np.ndarray
self, camera: str, id: str, image: np.ndarray, debug_frame_id: int
) -> Tuple[List[str], List[List[float]], List[int]]:
"""
Complete pipeline for detecting, classifying, and recognizing license plates in the input image.
@@ -214,6 +215,8 @@ class LicensePlateProcessingMixin:
camera (str): Camera identifier.
id (str): Event identifier.
image (np.ndarray): The input image in which to detect, classify, and recognize license plates.
debug_frame_id (int): Shared id used to name debug images so all artifacts
from a single LPR pass share the same filename suffix.
Returns:
Tuple[List[str], List[List[float]], List[int]]: Detected license plate texts, character-level confidence scores for each plate (flattened into a single list per plate), and areas of the plates.
@@ -227,7 +230,7 @@ class LicensePlateProcessingMixin:
logger.debug("Model runners not loaded")
return [], [], []
boxes = self._detect(image)
boxes = self._detect(image, debug_frame_id)
if len(boxes) == 0:
logger.debug(f"{camera}: No boxes found by OCR detector model")
return [], [], []
@@ -243,7 +246,6 @@ class LicensePlateProcessingMixin:
boxes, plate_width=plate_width, gap_fraction=0.1
)
current_time = int(datetime.datetime.now().timestamp())
if WRITE_DEBUG_IMAGES:
debug_image = image.copy()
for box in boxes:
@@ -259,7 +261,7 @@ class LicensePlateProcessingMixin:
)
cv2.imwrite(
f"debug/frames/license_plate_boxes_{current_time}.jpg", debug_image
f"debug/frames/license_plate_boxes_{debug_frame_id}.jpg", debug_image
)
boxes = self._sort_boxes(list(boxes))
@@ -322,7 +324,7 @@ class LicensePlateProcessingMixin:
if WRITE_DEBUG_IMAGES:
for i, img in enumerate(group_plate_images):
cv2.imwrite(
f"debug/frames/license_plate_cropped_{current_time}_{group_indices[i] + 1}.jpg",
f"debug/frames/license_plate_cropped_{debug_frame_id}_{group_indices[i] + 1}.jpg",
img,
)
@@ -335,7 +337,7 @@ class LicensePlateProcessingMixin:
cv2.imwrite(
os.path.join(
CLIPS_DIR,
f"lpr/{camera}/{id}/{current_time}_{group_indices[i] + 1}.jpg",
f"lpr/{camera}/{id}/{debug_frame_id}_{group_indices[i] + 1}.jpg",
),
img,
)
@@ -1199,6 +1201,7 @@ class LicensePlateProcessingMixin:
self.metrics.yolov9_lpr_pps.value = self.plates_det_second.eps()
camera = obj_data if dedicated_lpr else obj_data["camera"]
current_time = int(datetime.datetime.now().timestamp())
debug_frame_id = int(datetime.datetime.now().timestamp() * 1000)
if not self.config.cameras[camera].lpr.enabled:
return
@@ -1214,7 +1217,7 @@ class LicensePlateProcessingMixin:
if WRITE_DEBUG_IMAGES:
cv2.imwrite(
f"debug/frames/dedicated_lpr_masked_{current_time}.jpg",
f"debug/frames/dedicated_lpr_masked_{debug_frame_id}.jpg",
rgb,
)
@@ -1326,7 +1329,7 @@ class LicensePlateProcessingMixin:
if WRITE_DEBUG_IMAGES:
cv2.imwrite(
f"debug/frames/car_frame_{current_time}.jpg",
f"debug/frames/car_frame_{debug_frame_id}.jpg",
car,
)
@@ -1454,7 +1457,7 @@ class LicensePlateProcessingMixin:
if WRITE_DEBUG_IMAGES:
cv2.imwrite(
f"debug/frames/license_plate_frame_{current_time}.jpg",
f"debug/frames/license_plate_frame_{debug_frame_id}.jpg",
license_plate_frame,
)
@@ -1464,7 +1467,7 @@ class LicensePlateProcessingMixin:
# run detection, returns results sorted by confidence, best first
start = datetime.datetime.now().timestamp()
license_plates, confidences, areas = self._process_license_plate(
camera, id, license_plate_frame
camera, id, license_plate_frame, debug_frame_id
)
self.plates_rec_second.update()
self.plate_rec_speed.update(datetime.datetime.now().timestamp() - start)
+52
View File
@@ -475,3 +475,55 @@ class TestHttpMedia(BaseTestHttp):
assert response.status_code == 200
assert response.json() == []
def test_recordings_unavailable_cameras_all_scopes_to_allowed_cameras(self):
"""cameras=all must not error and must only consider allowed cameras.
allowed_cameras is mocked to ["front_door"]. A back_door recording that
would otherwise fill the gap must be ignored, and the request must not
500 the way it did when cameras was reassigned to a list.
"""
with AuthTestClient(self.app) as client:
# front_door has a 20s gap (1010-1030).
Recordings.insert(
id="front_a",
path="/media/recordings/front_a.mp4",
camera="front_door",
start_time=1000,
end_time=1010,
duration=10,
motion=0,
).execute()
Recordings.insert(
id="front_b",
path="/media/recordings/front_b.mp4",
camera="front_door",
start_time=1030,
end_time=1040,
duration=10,
motion=0,
).execute()
# back_door is not in allowed_cameras; its full-window coverage must
# not mask the front_door gap.
Recordings.insert(
id="back_a",
path="/media/recordings/back_a.mp4",
camera="back_door",
start_time=1000,
end_time=1040,
duration=40,
motion=0,
).execute()
response = client.get(
"/recordings/unavailable",
params={
"after": 1000,
"before": 1040,
"scale": 5,
"cameras": "all",
},
)
assert response.status_code == 200
assert response.json() == [{"start_time": 1010, "end_time": 1030}]
@@ -0,0 +1,100 @@
"""Tests for MQTT command topic callback registration."""
import unittest
from unittest.mock import MagicMock, patch
from frigate.comms.mqtt import MqttClient
def _make_camera_mock(
*,
enabled: bool = True,
notifications_enabled_in_config: bool = False,
) -> MagicMock:
"""Build a camera config mock with the fields _start() reads."""
camera = MagicMock()
camera.enabled = enabled
camera.notifications.enabled_in_config = notifications_enabled_in_config
camera.onvif.host = None
camera.motion.mask = {}
camera.objects.mask = {}
camera.zones = {}
return camera
def _registered_topics(
cameras: dict[str, MagicMock],
*,
global_notifications_enabled_in_config: bool = False,
) -> set[str]:
"""Start an MqttClient against a mocked paho client and collect the
topics registered via message_callback_add."""
config = MagicMock()
config.cameras = cameras
config.notifications.enabled_in_config = global_notifications_enabled_in_config
config.mqtt.topic_prefix = "frigate"
config.mqtt.client_id = "frigate"
config.mqtt.user = None
config.mqtt.tls_ca_certs = None
config.mqtt.tls_insecure = None
with patch("frigate.comms.mqtt.mqtt.Client") as client_cls:
mqtt_client = MqttClient(config)
mqtt_client.subscribe(MagicMock())
paho_client = client_cls.return_value
return {call.args[0] for call in paho_client.message_callback_add.call_args_list}
class TestMqttTopicRegistration(unittest.TestCase):
def test_camera_notification_topics_registered(self):
"""Per-camera notification set/suspend must be registered so paho
routes them to the dispatcher (unregistered topics drop silently)."""
topics = _registered_topics(
{"front_door": _make_camera_mock(notifications_enabled_in_config=True)}
)
self.assertIn("frigate/front_door/notifications/set", topics)
self.assertIn("frigate/front_door/notifications/suspend", topics)
def test_global_set_registered_with_camera_only_notifications(self):
"""The global topic must work when notifications are enabled only at
the camera level, matching the WebPushClient gating in app.py."""
topics = _registered_topics(
{"front_door": _make_camera_mock(notifications_enabled_in_config=True)},
global_notifications_enabled_in_config=False,
)
self.assertIn("frigate/notifications/set", topics)
def test_global_set_registered_with_global_notifications(self):
topics = _registered_topics(
{"front_door": _make_camera_mock()},
global_notifications_enabled_in_config=True,
)
self.assertIn("frigate/notifications/set", topics)
def test_global_set_not_registered_when_notifications_unconfigured(self):
topics = _registered_topics(
{"front_door": _make_camera_mock()},
global_notifications_enabled_in_config=False,
)
self.assertNotIn("frigate/notifications/set", topics)
def test_disabled_camera_does_not_enable_global_set(self):
topics = _registered_topics(
{
"front_door": _make_camera_mock(
enabled=False, notifications_enabled_in_config=True
)
},
global_notifications_enabled_in_config=False,
)
self.assertNotIn("frigate/notifications/set", topics)
if __name__ == "__main__":
unittest.main()
+183
View File
@@ -0,0 +1,183 @@
"""Test in-place yaml config updates."""
import os
import tempfile
import unittest
from ruamel.yaml import YAML
from frigate.util.builtin import update_yaml_file_bulk
class TestUpdateYaml(unittest.TestCase):
def setUp(self) -> None:
self.yaml = YAML()
fd, self.config_path = tempfile.mkstemp(suffix=".yml")
os.close(fd)
def tearDown(self) -> None:
os.unlink(self.config_path)
def _write(self, text: str) -> None:
with open(self.config_path, "w") as f:
f.write(text)
def _read(self) -> str:
with open(self.config_path) as f:
return f.read()
def _load(self):
with open(self.config_path) as f:
return self.yaml.load(f)
def test_delete_key(self):
"""Deleting a key removes it and leaves valid yaml."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" mask: 0,0.45,0.245,0.45\n"
)
update_yaml_file_bulk(
self.config_path, {"cameras.cam1.objects.filters.car.mask": ""}
)
data = self._load()
assert "mask" not in data["cameras"]["cam1"]["objects"]["filters"]["car"]
def test_delete_commented_key_emptying_map(self):
"""Deleting the only key of a map whose key carries comments must not
emit unparseable yaml (orphaned comment tokens above a flow-style {})."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" # cars parked across the street\n"
" # second comment line\n"
" mask: 0,0.45,0.245,0.45\n"
" motion:\n"
" mask: 0,0.449,0.686,0.395\n"
)
update_yaml_file_bulk(
self.config_path, {"cameras.cam1.objects.filters.car.mask": ""}
)
# must re-parse cleanly
data = self._load()
assert "mask" not in data["cameras"]["cam1"]["objects"]["filters"]["car"]
assert data["cameras"]["cam1"]["motion"]["mask"] == "0,0.449,0.686,0.395"
# the orphaned comments must be gone from the file, not just parseable
content = self._read()
assert "cars parked across the street" not in content
assert "second comment line" not in content
def test_delete_last_named_mask_emptying_map(self):
"""The path the current UI actually sends: a named object mask deleted
down to an empty `mask` map, with a comment inside that map."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" mask:\n"
" # ignore the neighbor's driveway\n"
" driveway:\n"
" coordinates: 0,0.1,0.2,0.3\n"
)
update_yaml_file_bulk(
self.config_path,
{"cameras.cam1.objects.filters.car.mask.driveway": ""},
)
data = self._load()
assert data["cameras"]["cam1"]["objects"]["filters"]["car"]["mask"] == {}
assert "ignore the neighbor's driveway" not in self._read()
def test_delete_last_commented_list_item(self):
"""Deleting the last element of a commented sequence must not emit
an orphaned comment above a flow-style [] at column 0."""
self._write(
"cameras:\n"
" cam1:\n"
" motion:\n"
" mask:\n"
" # driveway motion mask\n"
" - 0,0.4,0.6,0.4\n"
)
update_yaml_file_bulk(self.config_path, {"cameras.cam1.motion.mask.0": ""})
data = self._load()
assert data["cameras"]["cam1"]["motion"]["mask"] == []
assert "driveway motion mask" not in self._read()
def test_delete_list_item_preserves_remaining(self):
"""Deleting one element of a sequence keeps the others and stays valid."""
self._write(
"cameras:\n"
" cam1:\n"
" motion:\n"
" mask:\n"
" - 0,0.4,0.6,0.4\n"
" - 0,0.1,0.2,0.3\n"
)
update_yaml_file_bulk(self.config_path, {"cameras.cam1.motion.mask.0": ""})
data = self._load()
assert data["cameras"]["cam1"]["motion"]["mask"] == ["0,0.1,0.2,0.3"]
def test_delete_key_preserves_siblings(self):
"""Deleting one key among several keeps the sibling entries and any
comments on keys preceding the deleted one."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" # mask drawn around the parked suv\n"
" mask: 0,0.45,0.245,0.45\n"
" threshold: 0.8\n"
)
update_yaml_file_bulk(
self.config_path, {"cameras.cam1.objects.filters.car.threshold": ""}
)
data = self._load()
car = data["cameras"]["cam1"]["objects"]["filters"]["car"]
assert "threshold" not in car
assert car["mask"] == "0,0.45,0.245,0.45"
assert "# mask drawn around the parked suv" in self._read()
def test_delete_first_commented_key_keeps_map_valid(self):
"""Deleting a commented key from a map that still has other keys
leaves the remaining entries intact and the file parseable."""
self._write(
"cameras:\n"
" cam1:\n"
" objects:\n"
" filters:\n"
" car:\n"
" # comment on the deleted key\n"
" mask: 0,0.45,0.245,0.45\n"
" threshold: 0.8\n"
)
update_yaml_file_bulk(
self.config_path, {"cameras.cam1.objects.filters.car.mask": ""}
)
data = self._load()
car = data["cameras"]["cam1"]["objects"]["filters"]["car"]
assert "mask" not in car
assert car["threshold"] == 0.8
def test_update_value_preserves_comments(self):
"""Updating a value keeps surrounding comments intact."""
self._write(
"cameras:\n cam1:\n detect:\n # tuned for the pi\n fps: 4\n"
)
update_yaml_file_bulk(self.config_path, {"cameras.cam1.detect.fps": 5})
data = self._load()
assert data["cameras"]["cam1"]["detect"]["fps"] == 5
assert "# tuned for the pi" in self._read()
if __name__ == "__main__":
unittest.main(verbosity=2)
+25
View File
@@ -293,26 +293,51 @@ def update_yaml_file_bulk(file_path: str, updates: Dict[str, Any]):
logger.error(f"Unable to write to Frigate config file {file_path}: {e}")
def clear_orphaned_comments(collection, parent, parent_key) -> None:
"""Drop stale ruamel comment tokens after a deletion empties a collection.
When the last entry of a mapping or sequence is removed, any comments that
lived inside that collection's block are orphaned. ruamel then emits them
above a flow-style `{}`/`[]` dedented to column 0, which is unparseable and
corrupts the config. Clearing the emptied collection's own comment metadata
(and the parent's entry pointing at it) keeps the dump valid. Non-empty
collections are left untouched so comments on remaining siblings survive.
"""
if not hasattr(collection, "ca") or len(collection) != 0:
return
collection.ca.items.clear()
collection.ca.comment = None
if parent is not None and hasattr(parent, "ca"):
parent.ca.items.pop(parent_key, None)
def update_yaml(data, key_path, new_value):
temp = data
parent = None
parent_key = None
for key in key_path[:-1]:
if isinstance(key, tuple):
if key[0] not in temp:
temp[key[0]] = [{}] * max(1, key[1] + 1)
elif len(temp[key[0]]) <= key[1]:
temp[key[0]] += [{}] * (key[1] - len(temp[key[0]]) + 1)
parent, parent_key = temp[key[0]], key[1]
temp = temp[key[0]][key[1]]
else:
if key not in temp or temp[key] is None:
temp[key] = {}
parent, parent_key = temp, key
temp = temp[key]
last_key = key_path[-1]
if new_value == "":
if isinstance(last_key, tuple):
del temp[last_key[0]][last_key[1]]
clear_orphaned_comments(temp[last_key[0]], temp, last_key[0])
else:
del temp[last_key]
clear_orphaned_comments(temp, parent, parent_key)
else:
if isinstance(last_key, tuple):
if last_key[0] not in temp:
+13 -1
View File
@@ -149,5 +149,17 @@
"cluck": "قرقرة",
"cock_a_doodle_doo": "كوكو-كو-كوووووو",
"turkey": "ديك رومى",
"gobble": "كركرة"
"gobble": "كركرة",
"tearing": "يمزق",
"ping": "طنّة",
"clang": "صوت رنين",
"squeal": "يصرخ",
"creak": "صرير",
"sizzle": "صوت الأزيز",
"clicking": "النقر",
"clickety_clack": "طقطقة",
"rumble": "الحلبة",
"skateboard": "لوح تزلج",
"echo": "صدى الصوت",
"noise": "ازعاج"
}
+2 -1
View File
@@ -22,5 +22,6 @@
"mouse": "فأر",
"keyboard": "لوحة المفاتيح",
"goat": "معزة",
"sheep": "غنم"
"sheep": "غنم",
"skateboard": "لوح تزلج"
}
+37 -2
View File
@@ -355,8 +355,43 @@
"steam_whistle": "Парна свирка",
"mechanisms": "Механизми",
"clock": "Часовник",
"tick": "",
"tick": "Тик",
"tick-tock": "Тиктакане",
"gears": "Зъбни колела",
"sewing_machine": "Шиеща машина"
"sewing_machine": "Шиеща машина",
"sound_effect": "Звуков ефект",
"tubular_bells": "Тръбни камбани",
"mallet_percussion": "Ударни чукчета",
"marimba": "Маримба",
"glockenspiel": "Металлофон",
"steelpan": "Пан барабан",
"string_section": "Струнна група",
"jingle_bell": "Звънче",
"chime": "Звънече",
"wind_chime": "Вятърен звън",
"singing_bowl": "Пееща купа",
"ambient_music": "Амбиентна музика",
"new-age_music": "Музика от ново поколение",
"vocal_music": "Вокална музика",
"gurgling": "Бълбукане",
"light_engine": "Лек двигател",
"medium_engine": "Среден двигател",
"heavy_engine": "Тежък двигател",
"ratchet": "Тресчотка",
"hammer": "Ръчен чук",
"pulleys": "Макари",
"mechanical_fan": "Механичен вентилатор",
"air_conditioning": "Климатик",
"cash_register": "Каса",
"printer": "Принтер",
"camera": "Камера",
"tools": "Инструменти",
"artillery_fire": "Артилерийски огън",
"boom": "Гръм",
"glass": "Стъкло",
"crack": "Пукнатина",
"wood": "Дърво",
"silence": "Тишина",
"liquid": "Течност",
"splash": "Разливам"
}
+9 -5
View File
@@ -63,13 +63,17 @@
"untilRestart": "До рестарт",
"mo": "{{time}}мес",
"m": "{{time}}м",
"s": "{{time}}с"
"s": "{{time}}с",
"never": "Никога",
"formattedTimestampMonthDayYearHourMinute": {
"12hour": "d MMM yyyy, h:mm aaa"
}
},
"button": {
"apply": "Приложи",
"reset": "Нулиране",
"done": "Готово",
"disabled": "Деактивирано",
"disabled": "Изключено",
"save": "Запази",
"saving": "Запазване…",
"cancel": "Отказ",
@@ -80,7 +84,7 @@
"delete": "Изтриване",
"yes": "Да",
"download": "Изтегляне",
"enabled": "Активирано",
"enabled": "Включено",
"history": "История",
"back": "Назад",
"fullscreen": "Цял екран",
@@ -99,8 +103,8 @@
"export": "Експортиране",
"deleteNow": "Изтрии сега",
"next": "Следващ",
"disable": "Деактивирай",
"enable": "Активирай"
"disable": "Изключи",
"enable": "Включи"
},
"menu": {
"live": {
+6 -1
View File
@@ -30,5 +30,10 @@
"title": "Всички дати",
"short": "Дати"
}
}
},
"more": "Още филтри",
"reset": {
"label": "Рестартирай филтрите по подразбиране"
},
"timeRange": "Времеви диапазон"
}
+4 -2
View File
@@ -34,7 +34,8 @@
},
"submitFrigatePlus": {
"title": "Да се изпрати ли този кадър към Frigate+?",
"submit": "Изпрати"
"submit": "Изпрати",
"previewError": "Не можe да се зареди предварителен преглед на моментната снимка. Записът може да не е наличен в момента."
},
"noPreviewFound": "Не е намерен предварителен преглед",
"noRecordingsFoundForThisTime": "За това време не са намерени записи",
@@ -47,5 +48,6 @@
"error": {
"submitFrigatePlusFailed": "Неуспешно изпратен кадър към Frigate+"
}
}
},
"cameraOff": "Камерата е изключена"
}
+69 -1
View File
@@ -1 +1,69 @@
{}
{
"label": "Конфигурация на камерата",
"timestamp_style": {
"label": "Стил на времева щампа",
"format": {
"label": "Формат на времева щампа"
},
"color": {
"red": {
"label": "Червено",
"description": "Червен компонент (0-255) за времева щампа."
},
"green": {
"description": "Зелен компонент (0-255) за времева щампа.",
"label": "Зелено"
},
"blue": {
"description": "Син компонент (0-255) за времева щампа.",
"label": "Синьо"
},
"label": "Цвят на времева щампа",
"description": "RGB стойности за текста на времева щампа (всички стойности 0-255)."
},
"thickness": {
"description": "Дебелина на текстовата линия за времева щампа.",
"label": "Дебелина на времева щампа"
},
"effect": {
"label": "Ефект на времева щампа",
"description": "Визуален ефект на времева щампа (без, плътен, сянка)."
},
"position": {
"label": "Позиция на времева щампа",
"description": "Позиция за времева щампа на снимката (гл/гд/дл/дд)."
}
},
"audio_transcription": {
"label": "Аудио транскрипция",
"live_enabled": {
"label": "Транскрипция на живо"
}
},
"snapshots": {
"quality": {
"label": "Качество на моментната снимка"
},
"required_zones": {
"label": "Задължителни зони",
"description": "Зони в които обект трябва да влезе за да се запази моментна снимка."
},
"height": {
"label": "Височина на моментната снимка"
},
"retain": {
"default": {
"description": "Дни по подразбиране за задържане на моментните снимки."
}
}
},
"semantic_search": {
"label": "Семантично търсене",
"triggers": {
"label": "Спусък",
"friendly_name": {
"label": "Удобно име"
}
}
}
}
+143
View File
@@ -4,5 +4,148 @@
"session_length": {
"label": "Продължителност на сесията"
}
},
"version": {
"label": "Текуща версия на конфигурацията",
"description": "Версия на активната конфигурация. Помага за проследяване на промени от миграция или форматиране."
},
"safe_mode": {
"label": "Безопасен режим",
"description": "При избор, Frigate ще стартира в безопасен режим за отстраняване на неизправности."
},
"environment_vars": {
"label": "Променливи",
"description": "Параметри за стартиране на Frigate в Home Assistant OS. Non-HAOS потребителите трябва да използват Docker конфигурация."
},
"logger": {
"label": "Логове",
"default": {
"label": "Ниво на логовете"
}
},
"timestamp_style": {
"label": "Стил на времева щампа",
"format": {
"label": "Формат на времева щампа"
},
"color": {
"red": {
"label": "Червено",
"description": "Червен компонент (0-255) за времева щампа."
},
"green": {
"description": "Зелен компонент (0-255) за времева щампа.",
"label": "Зелено"
},
"blue": {
"description": "Син компонент (0-255) за времева щампа.",
"label": "Синьо"
},
"label": "Цвят на времева щампа",
"description": "RGB стойности за текста на времева щампа (всички стойности 0-255)."
},
"thickness": {
"description": "Дебелина на текстовата линия за времева щампа.",
"label": "Дебелина на времева щампа"
},
"effect": {
"label": "Ефект на времева щампа",
"description": "Визуален ефект на времева щампа (без, плътен, сянка)."
},
"position": {
"label": "Позиция на времева щампа",
"description": "Позиция за времева щампа на снимката (гл/гд/дл/дд)."
}
},
"audio_transcription": {
"label": "Аудио транскрипция",
"enabled": {
"label": "Включи аудио транскрипцията"
},
"language": {
"label": "Език на транскрипция"
},
"device": {
"label": "Устройство за транскрипция"
},
"model_size": {
"label": "Големина на модела"
},
"live_enabled": {
"label": "Транскрипция на живо"
}
},
"snapshots": {
"quality": {
"label": "Качество на моментната снимка"
},
"required_zones": {
"label": "Задължителни зони",
"description": "Зони в които обект трябва да влезе за да се запази моментна снимка."
},
"height": {
"label": "Височина на моментната снимка"
},
"retain": {
"default": {
"description": "Дни по подразбиране за задържане на моментните снимки."
}
}
},
"classification": {
"label": "Класификация на обекти",
"bird": {
"label": "Конфигурация за класификация на птици",
"enabled": {
"label": "Класификация на птици",
"description": "Клацификация на птици (Вкл./Изкл.)."
},
"threshold": {
"label": "Минимален резултат"
}
},
"custom": {
"label": "Потребителски класификационни модели",
"enabled": {
"label": "Включи модел",
"description": "Потребителски класификационнен модел (Вкл./Изкл.)."
},
"name": {
"label": "Име на модел"
},
"save_attempts": {
"label": "Опити за запазване"
},
"state_config": {
"motion": {
"label": "Изпълни при движение"
},
"interval": {
"label": "Интервал за класификация"
}
}
}
},
"semantic_search": {
"label": "Семантично търсене",
"enabled": {
"label": "Включи семантично търсене",
"description": "Семантично търсене (Вкл./Изкл.)."
},
"reindex": {
"label": "Реиндексирай при стартиране"
},
"model_size": {
"label": "Големина на модел"
},
"device": {
"label": "Устройство"
},
"triggers": {
"label": "Спусък",
"friendly_name": {
"label": "Удобно име"
}
}
}
}
+2 -1
View File
@@ -24,5 +24,6 @@
"hair_dryer": "Сешоар",
"toothbrush": "Четка за зъби",
"scissors": "Ножица",
"clock": "Часовник"
"clock": "Часовник",
"airplane": "Самолет"
}
@@ -2,5 +2,13 @@
"documentTitle": "Модели за класификация - Frigate",
"description": {
"invalidName": "Невалидно име. Имената могат да съдържат единствено: букви, числа, празни места, долни черти и тирета."
},
"details": {
"scoreInfo": "Резултатът представлява средната степен на увереност в класификацията при всички засечки на този обект."
},
"wizard": {
"step1": {
"classificationAttribute": "Атрибут"
}
}
}
+2 -1
View File
@@ -14,5 +14,6 @@
"detections": "Засичания",
"motion": {
"label": "Движение"
}
},
"camera": "Камера"
}
+60 -1
View File
@@ -5,10 +5,69 @@
"mismatch_one": "{{count}} недостъпен обект беше открит и включен в този елемент за преглед. Тези обекти или не са квалифицирани като предупреждение или откриване, или вече са били изчистени/изтрити.",
"mismatch_other": "{{count}} недостъпни обекта бяха открити и включени в този елемент за преглед. Тези обекти или не са квалифицирани като предупреждение или откриване, или вече са били изчистени/изтрити."
}
},
"editLPR": {
"title": "Редактиране на регистрационния номер"
},
"editAttributes": {
"title": "Редактиране на атрибутите"
},
"topScore": {
"label": "Най-силен резултат"
},
"estimatedSpeed": "Естимирана скорост",
"objects": "Обекти",
"camera": "Камера",
"zones": "Зони",
"timestamp": "Времева щампа",
"button": {
"findSimilar": "Намери подобни",
"regenerate": {
"title": "Регенерирай",
"label": "Регенерирай описанието на следените обекти"
}
},
"description": {
"label": "Описание",
"placeholder": "Описание на следените обекти"
}
},
"trackedObjectsCount_one": "{{count}} проследен обект ",
"trackedObjectsCount_other": "{{count}} проследени обекта ",
"documentTitle": "Разгледай - Фригейт",
"generativeAI": "Генеративен Изкъствен Интелект"
"generativeAI": "Генеративен Изкъствен Интелект",
"itemMenu": {
"downloadSnapshot": {
"aria": "Сваляне на моментна снимка/кадър"
},
"viewTrackingDetails": {
"label": "Виж детайли за следенето",
"aria": "Покажи детайли за следенето"
},
"findSimilar": {
"label": "Намери подобни"
},
"submitToPlus": {
"label": "Изпрати към Frigate+",
"aria": "Изпрати към Frigate Plus"
},
"viewInHistory": {
"label": "Виж в история",
"aria": "Виж в история"
},
"more": {
"aria": "Повече"
}
},
"dialog": {
"confirmDelete": {
"title": "Потвърди изтриване"
}
},
"aiAnalysis": {
"title": "AI Анализ"
},
"concerns": {
"label": "Притеснения"
}
}
+52 -1
View File
@@ -17,7 +17,58 @@
},
"toast": {
"error": {
"renameExportFailed": "Неуспешно преименуване на експорт: {{errorMessage}}"
"renameExportFailed": "Неуспешно преименуване на експорт: {{errorMessage}}",
"assignCaseFailed": "Неуспешно обновяване на възложен случай: {{errorMessage}}",
"caseSaveFailed": "Неуспешно запазен случай: {{errorMessage}}",
"caseDeleteFailed": "Неуспешно изтрит случай: {{errorMessage}}"
}
},
"deleteCase": {
"desc": "Сигурен ли сте, че искате да изтриете {{caseName}}?",
"label": "Изтрии случай"
},
"caseDialog": {
"nameLabel": "Име на случай",
"descriptionLabel": "Описание"
},
"toolbar": {
"editCase": "Редактирай случай",
"deleteCase": "Изтрии случай"
},
"caseCard": {
"emptyCase": "Все още няма експорти"
},
"jobCard": {
"defaultName": "{{camera}} експортиране",
"queued": "На опашката",
"running": "В ход",
"preparing": "Подготвяне",
"copying": "Копиране",
"encoding": "Енкодиране",
"encodingRetry": "Енкодиране (повторно)",
"finalizing": "Финализиране"
},
"caseView": {
"noDescription": "Без описание",
"createdAt": "Създаден {{value}}",
"exportCount_one": "1 експорт",
"exportCount_other": "{{count}} експорти",
"cameraCount_one": "1 камера",
"cameraCount_other": "{{count}} камери",
"showMore": "Покажи повече",
"showLess": "Покажи по-малко"
},
"bulkActions": {
"delete": "Изтрии",
"deleteNow": "Изтрии сега"
},
"bulkDelete": {
"title": "Изтрии експорти",
"desc_one": "Сигурни ли сте , че искате да изтриете {{count}} експорта?"
},
"bulkToast": {
"success": {
"delete": "Успешно изтрити експорти"
}
}
}
@@ -15,5 +15,8 @@
"addFace": "Добавете нова колекция във библиотеката за лица при качването на първата ви снимка.",
"placeholder": "Напишете име за тази колекция",
"invalidName": "Невалидно име. Имената могат да съдържат единствено: букви, числа, празни места, долни черти и тирета."
},
"details": {
"timestamp": "Времева щампа"
}
}
+19 -4
View File
@@ -16,7 +16,8 @@
"move": {
"clickMove": {
"enable": "Включи кликване за преместване",
"disable": "Изключи кликване за преместване"
"disable": "Изключи кликване за преместване",
"label": "Кликнете в центъра на кадъра за да центрирате камерата"
}
}
},
@@ -26,7 +27,8 @@
},
"recording": {
"enable": "Включи запис",
"disable": "Изключи запис"
"disable": "Изключи запис",
"disabledInConfig": "\"Записване\" трябва първо да се вкючи през настройките за тази камера."
},
"snapshots": {
"enable": "Включи моментни снимки",
@@ -38,7 +40,9 @@
},
"camera": {
"enable": "Включи камера",
"disable": "Изключи камера"
"disable": "Изключи камера",
"turnOn": "Включване на камера",
"turnOff": "Изключване на камера"
},
"detect": {
"enable": "Включи разпознаване",
@@ -65,5 +69,16 @@
"cameraEnabled": "Камерата е включена"
},
"documentTitle": "Наживо - Frigate",
"documentTitle.withCamera": "{{camera}} - На живо - Фригейт"
"documentTitle.withCamera": "{{camera}} - На живо - Фригейт",
"noCameras": {
"default": {
"buttonText": "Добави камера"
},
"group": {
"title": "Няма камери в групата",
"description": "Тази група няма добавени или включени камери.",
"buttonText": "Управление на групите"
}
},
"lowBandwidthMode": "Режим ограничена/бавна връзка"
}
+11 -1
View File
@@ -24,6 +24,9 @@
},
"state": {
"submitted": "Enviat"
},
"toast": {
"error": "No s'ha pogut enviar a Frigate+. Si us plau, comproveu la vostra connexió de xarxa i torneu-ho a provar."
}
}
},
@@ -107,7 +110,14 @@
"queueingButton": "S'estan posant a la cua les exportacions...",
"exportButton_one": "Exporta 1 càmera",
"exportButton_many": "Exporta {{count}} càmeres",
"exportButton_other": "Exporta {{count}} càmeres"
"exportButton_other": "Exporta {{count}} càmeres",
"searchOrSelectGroup": "Cerca, o selecciona un grup de càmeres...",
"selectAll": "Selecciona totes les càmeres",
"clearSelection": "Neteja la selecció",
"selectWithActivity": "Càmeres amb objectes rastrejats",
"selectGroup": "Selecciona un grup",
"noMatchingCameras": "No hi ha càmeres que coincideixin amb la cerca",
"selectedCount": "{{selected}} / {{total}} seleccionats"
},
"multi": {
"title_one": "Exporta {{count}} ressenyes",
+4 -4
View File
@@ -29,7 +29,7 @@
},
"listen": {
"label": "Tipus d'escoltes",
"description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, crit, parla, crida)."
"description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, parla, crida)."
},
"filters": {
"label": "Filtres d'àudio",
@@ -152,11 +152,11 @@
}
},
"ffmpeg": {
"label": "FFmpeg",
"description": "Paràmetres del FFmpeg que inclouen la ruta dels binaris, args, opcions de hwaccel i args de sortida per rol.",
"label": "Fluxos (FFmpeg)",
"description": "Les entrades de flux de càmera i les opcions del FFmpeg, incloent-hi el camí binari, els arguments, l'hwaccel i els arguments de sortida per rol.",
"path": {
"label": "Ruta FFmpeg",
"description": "Ruta al binari FFmpeg a usar o un àlies de versió («5.0» o «7.0»)."
"description": "Ruta al binari FFmpeg a usar o un àlies de versió («7.0» o «8.0»)."
},
"global_args": {
"label": "Arguments globals del FFmpeg",
+2 -2
View File
@@ -7,7 +7,7 @@
"description": "Paràmetres del FFmpeg que inclouen la ruta dels binaris, args, opcions de hwaccel i args de sortida per rol.",
"path": {
"label": "Ruta FFmpeg",
"description": "Ruta al binari FFmpeg a usar o un àlies de versió («5.0» o «7.0»)."
"description": "Ruta al binari FFmpeg a usar o un àlies de versió («7.0» o «8.0»)."
},
"global_args": {
"label": "Arguments globals del FFmpeg",
@@ -2018,7 +2018,7 @@
},
"listen": {
"label": "Tipus d'escoltes",
"description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, crit, parla, crida)."
"description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, parla, crida)."
},
"filters": {
"label": "Filtres d'àudio",
+19 -2
View File
@@ -68,7 +68,7 @@
"integrationObjectClassification": "Classificació de l'objecte",
"integrationAudioTranscription": "Transcripció d'àudio",
"cameraDetect": "Detecció d'objectes",
"cameraFfmpeg": "FFmpeg",
"cameraFfmpeg": "Fluxos (FFmpeg)",
"cameraRecording": "Enregistrament",
"cameraSnapshots": "Instantànies",
"cameraMotion": "Detecció de moviment",
@@ -1689,7 +1689,17 @@
}
},
"cameraInputs": {
"itemTitle": "Flux {{index}}"
"itemTitle": "Flux {{index}}",
"sourceMode": {
"restream": "Restream (go2rtc)",
"manual": "Camí d'entrada manual",
"go2rtcStreamLabel": "flux go2rtc",
"go2rtcStreamPlaceholder": "Selecciona un flux go2rtc",
"noGo2rtcStreams": "No s'ha configurat cap flux go2rtc",
"go2rtcStreamSearch": "Cerca fluxos...",
"availableStreams": "Fluxos disponibles",
"noMatchingStreams": "No hi ha fluxos coincidents"
}
},
"restartRequiredField": "Reinicia requerit",
"restartRequiredFooter": "S'ha canviat la configuració - es requereix reiniciar",
@@ -2084,6 +2094,13 @@
},
"onvif": {
"autotrackingNoZones": "Autotraquejar requereix al menys una zona. Defineix una zona per aquesta cámera a Mascares/Zones, després usa'l com a requerit a la part inferior."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "No es recomanen arguments manuals d'acceleració de maquinari. Tret que existeixi un requisit específic, seleccioneu el predefinit que coincideixi amb el vostre maquinari."
},
"model": {
"optimizedFor320": "Frigate està optimitzada per a un model 320x320, que és la millor opció per a la majoria de configuracions. Un model 640x640 és més lent i només ajuda en escenaris específics.",
"inputDimensionsNotDetectResolution": "L'amplada i l'alçada del model d'entrada són les dimensions d'entrada del model de detecció d'objectes, no la resolució de detecció de la càmera. Haurien de coincidir amb les dimensions del model que esteu utilitzant - típicament una mida quadrada com 320x320 o 640x640."
}
},
"modelSize": {
+16 -1
View File
@@ -191,7 +191,22 @@
},
"audio": "Àudio:",
"cameraProbeInfo": "Informació del sondeig de la càmera {{camera}}",
"streamDataFromFFPROBE": "Les dades de la transmissió són obtingudes mitjançant <code>ffprobe</code>."
"streamDataFromFFPROBE": "Les dades de la transmissió són obtingudes mitjançant <code>ffprobe</code>.",
"keyframes": {
"title": "Anàlisi de fotogrames clau",
"analyzing": "S'estan analitzant els fotogrames clau... queden {{seconds}} segons",
"stillAnalyzing": "Encara s'estan analitzant els fotogrames clau...",
"recordStream": "Registre de flux:",
"keyframeCount": "Fotogrames clau observats:",
"observedDuration": "Durada observada:",
"gap": "Espai de fotogrames clau (mín / avg / max):",
"segmentLength": "Longitud del segment d'enregistrament:",
"ok": "Fotogrames clau cada ,{{seconds}}s, bons per enregistrar i reproduir.",
"warning": "Els fotogrames clau dispersos o variables (espai més llarg .{{seconds}}s), probablement un còdec intel·ligent (H.264+/H.265+), això no és recomanable.",
"error": "El buit dels fotogrames clau ( the{{seconds}}s) excedeix la longitud del segment d'enregistrament ({{segmentTime}}s). Alguns segments poden no tenir un fotograma clau, el qual trenca la reproducció. Desactiva el còdec intel·ligent/+ a la càmera o escurça el seu interval de fotogrames clau.",
"unknown": "No s'ha pogut determinar l'espaiat dels fotogrames clau.",
"recordDisabled": "L'enregistrament està desactivat per a aquesta càmera."
}
},
"title": "Càmeres",
"overview": "Visió general",
+13 -2
View File
@@ -180,7 +180,7 @@
"rats": "Rotter",
"patter": "Dråbelyd",
"insect": "Insekt",
"cricket": "Cricket",
"cricket": "Fårekylling",
"guitar": "Guitar",
"electric_guitar": "Elektrisk Guitar",
"bass_guitar": "Basguitar",
@@ -195,5 +195,16 @@
"rimshot": "Kantslag",
"drum_roll": "Trommehvirvel",
"bass_drum": "Stortromme",
"techno": "Techno"
"techno": "Techno",
"mosquito": "Myg",
"fly": "Flue",
"buzz": "Summen",
"frog": "Frø",
"croak": "Kvæk",
"snake": "Slange",
"rattle": "Klapren",
"whale_vocalization": "Hvallyde",
"music": "Musik",
"musical_instrument": "Musikinstrument",
"plucked_string_instrument": "Strengeinstrument"
}
+37 -13
View File
@@ -24,7 +24,7 @@
"am": "am",
"year_one": "{{time}} år",
"year_other": "{{time}} år",
"mo": "{{time}}må",
"mo": "{{time}}md.",
"month_one": "{{time}} måned",
"month_other": "{{time}} måneder",
"d": "{{time}}d",
@@ -121,18 +121,18 @@
"back": "Tilbage",
"history": "Historik",
"fullscreen": "Fuldskærm",
"exitFullscreen": "Afslut Fludskærm",
"pictureInPicture": "Billede i Billede",
"twoWayTalk": "2 vejs samtale",
"cameraAudio": "Kamera Lyd",
"on": "ON",
"off": "OFF",
"exitFullscreen": "Afslut Fuldskærm",
"pictureInPicture": "Billede i billede",
"twoWayTalk": "Samtale",
"cameraAudio": "Kameralyd",
"on": "Til",
"off": "Fra",
"edit": "Rediger",
"copyCoordinates": "Kopier koordinater",
"delete": "Slet",
"yes": "Ja",
"no": "Nej",
"download": "Download",
"download": "Hent",
"info": "Info",
"suspended": "Sat på pause",
"unsuspended": "Genoptag",
@@ -141,7 +141,19 @@
"export": "Eksporter",
"deleteNow": "Slet nu",
"next": "Næste",
"continue": "Fortsæt"
"continue": "Fortsæt",
"add": "Tilføj",
"applying": "Anvender…",
"undo": "Annuler",
"copiedToClipboard": "Kopieret til udklipsholder",
"modified": "Ændret",
"overridden": "Overskrevet",
"resetToGlobal": "Gendan til global",
"resetToDefault": "Gendan standard",
"saveAll": "Gem alle",
"savingAll": "Gemmer alle…",
"undoAll": "Fortryd alle",
"retry": "Prøv igen"
},
"menu": {
"system": "System",
@@ -194,7 +206,9 @@
"gl": "Galego (Galisisk)",
"id": "Bahasa Indonesia (Indonesisk)",
"ur": "اردو (Urdu)",
"hr": "Hrvatski (Kroatisk)"
"hr": "Hrvatski (Kroatisk)",
"zhHant": "繁體中文 (Traditionel Kinesisk)",
"bs": "Bosanski (Bosnisk)"
},
"appearance": "Udseende",
"darkMode": {
@@ -243,7 +257,11 @@
"logout": "Log ud",
"setPassword": "Vælg kodeord"
},
"classification": "Kategorisering"
"classification": "Kategorisering",
"profiles": "Profiler",
"actions": "Handlinger",
"features": "Funktioner",
"chat": "Chat"
},
"toast": {
"copyUrlToClipboard": "Kopieret URL til udklipsholder.",
@@ -252,13 +270,14 @@
"error": {
"title": "Ændringer kunne ikke gemmes: {{errorMessage}}",
"noMessage": "Kunne ikke gemme konfigurationsændringer"
}
},
"success": "Gemte ændringerne i konfigurationen."
}
},
"role": {
"title": "Rolle",
"admin": "Admin",
"viewer": "Viewer",
"viewer": "Seer",
"desc": "Admins har fuld adgang til Frigate UI. Viewers er begrænset til at se kameraer, gennemse items, og historik i UI."
},
"pagination": {
@@ -296,5 +315,10 @@
},
"information": {
"pixels": "{{area}}px"
},
"no_items": "Intet fundet",
"validation_errors": "Valideringsfejl",
"credentialField": {
"savedPlaceholder": "Gemt - efterlad blank for at bevare nuværende"
}
}
+7 -3
View File
@@ -31,7 +31,7 @@
"setting": {
"label": "Kamera Streaming Indstillinger",
"title": "{{cameraName}} Streaming Indstillinger",
"desc": "Skift de live streaming muligheder for denne kameragruppes dashboard. <em> Disse indstillinger er enheds- og browserspecifikke.</em>",
"desc": "Skift indstillingerne for direkte visning af denne kameragruppes dashboard. <em> Disse indstillinger er enheds- og browserspecifikke.</em>",
"audioIsAvailable": "Lyd er tilgængelig for denne stream",
"audioIsUnavailable": "Lyd er ikke tilgængelig for denne strøm",
"audio": {
@@ -67,7 +67,10 @@
"desc": "Aktivér kun denne mulighed, hvis kameraets live stream viser farve artefakter og har en diagonal linje på højre side af billedet."
}
}
}
},
"showAll": "Vis alle kameragrupper",
"showLess": "Vis mindre",
"editGroups": "Rediger kameragrupper"
},
"debug": {
"options": {
@@ -81,6 +84,7 @@
"zones": "Zoner",
"mask": "Maske",
"motion": "Bevægelse",
"regions": "Regioner"
"regions": "Regioner",
"paths": "Stier"
}
}
+39 -1
View File
@@ -1,6 +1,6 @@
{
"restart": {
"title": "Er du sikker på at du vil genstarte Frigate?",
"title": "Er du sikker på, at du vil genstarte Frigate?",
"button": "Genstart",
"restarting": {
"title": "Frigate genstarter",
@@ -21,8 +21,46 @@
"ask_a": "Er dette objekt et <code>{{label}}</code>?",
"ask_an": "Er dette objekt en <code>{{label}}</code>?",
"ask_full": "Er dette objekt en <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"state": {
"submitted": "Indsendt"
},
"toast": {
"error": "Fejl under indsendelse til Frigate+. Kontroller venligst din netværksforbindelse og prøv igen."
}
}
},
"video": {
"viewInHistory": "Se i historik"
}
},
"export": {
"time": {
"fromTimeline": "Vælg fra tidslinje",
"lastHour_one": "Sidste time",
"lastHour_other": "Sidste {{count}} timer",
"custom": "Tidsinterval",
"start": {
"title": "Starttidspunkt",
"label": "Vælg starttidspunkt"
},
"end": {
"title": "Sluttidspunkt",
"label": "Vælg sluttidspunkt"
}
},
"name": {
"placeholder": "Navngiv eksport"
},
"case": {
"newCaseOption": "Opret ny sag",
"newCaseNamePlaceholder": "Nyt sagsnavn",
"newCaseDescriptionPlaceholder": "Sagsbeskrivelse",
"label": "Sag",
"nonAdminHelp": "En ny sag oprettes til disse eksporter.",
"placeholder": "Vælg en sag"
},
"select": "Vælg",
"export": "Eksporter"
}
}
+2 -1
View File
@@ -14,6 +14,7 @@
"notifications": "Notifikations indstillinger - Frigate"
},
"menu": {
"ui": "Brugergrænseflade"
"ui": "Brugergrænseflade",
"profiles": "Profiler"
}
}
+2 -2
View File
@@ -23,7 +23,7 @@
"toothbrush": "Zahnbürste",
"bicycle": "Fahrrad",
"door": "Tür",
"keyboard": "Klaviatur",
"keyboard": "Klavier",
"bus": "Bus",
"horse": "Pferd",
"cat": "Katze",
@@ -123,7 +123,7 @@
"chicken": "Huhn",
"sitar": "Sitar",
"ukulele": "Ukulele",
"tapping": "Klopfen",
"tapping": "Tippen",
"flapping_wings": "Flügelschlagen",
"strum": "Herumklimpern",
"electronic_organ": "Elektrische Orgel",
+2 -2
View File
@@ -42,7 +42,7 @@
"untilRestart": "Bis zum Neustart",
"justNow": "Gerade",
"pm": "nachmittags",
"mo": "{{time}} Mon",
"mo": "{{time}} Mon.",
"formattedTimestamp": {
"12hour": "d. MMM, hh:mm:ss aaa",
"24hour": "dd. MMM, hh:mm:ss aaa"
@@ -193,7 +193,7 @@
"gl": "Galego (Galicisch)",
"id": "Bahasa Indonesia (Indonesisch)",
"hr": "Hrvatski (Kroatisch)",
"bs": "Bosnisch",
"bs": "Bosanski (Bosnisch)",
"zhHant": "Traditional Chinese"
},
"appearance": "Erscheinung",
+4 -1
View File
@@ -68,7 +68,10 @@
},
"label": "Kamera Gruppen",
"edit": "Kameragruppe bearbeiten",
"success": "Kameragruppe {{name}} wurde gespeichert."
"success": "Kameragruppe {{name}} wurde gespeichert.",
"showAll": "Alle Kameragruppen anzeigen",
"showLess": "Weniger anzeigen",
"editGroups": "Kameragruppen bearbeiten"
},
"debug": {
"options": {
+11 -4
View File
@@ -105,14 +105,21 @@
"cameraSelection": "Kameras",
"cameraSelectionHelp": "Kameras, die in diesem Zeitbereich Objekte verfolgen, sind vorausgewählt",
"checkingActivity": "Kameraaktivität wird überprüft...",
"noCameras": "keine kamaeras verfügbar",
"noCameras": "Keine Kameras verfügbar",
"detectionCount_one": "1 verfolgtes Objekt",
"detectionCount_other": "{{count}} verfolgtesObjekte",
"nameLabel": "Export Name",
"detectionCount_other": "{{count}} verfolgte Objekte",
"nameLabel": "Exportname",
"namePlaceholder": "Optionaler Basisname für diese Exporte",
"queueingButton": "Exporte werden in die Warteschlange gestellt...",
"exportButton_one": "Export 1 Kamera",
"exportButton_other": "xport {{count}} Kameras"
"exportButton_other": "xport {{count}} Kameras",
"searchOrSelectGroup": "Suchen, oder Kameragruppe auswählen...",
"selectAll": "Alle Kameras auswählen",
"clearSelection": "Auswahl löschen",
"selectWithActivity": "Kameras mit verfolgten Objekten",
"selectGroup": "Gruppe auswählen",
"noMatchingCameras": "Der Suche entsprechen keine Kameras",
"selectedCount": "{{selected}} / {{total}} ausgewählt"
},
"multi": {
"title_one": "1 Bewertung exportieren",
+8 -4
View File
@@ -20,7 +20,7 @@
"description": "Mindest-RMS-Lautstärkeschwelle, die für die Audioerkennung erforderlich ist; niedrigere Werte erhöhen die Empfindlichkeit (z. B. 200 hoch, 500 mittel, 1000 niedrig)."
},
"listen": {
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, schreien, sprechen, rufen).",
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, Gespräche, Rufen).",
"label": "Hörtypen"
},
"filters": {
@@ -204,11 +204,11 @@
"description": "Einstellungen zum Aktivieren und Verwalten von Benachrichtigungen für diese Kamera."
},
"ffmpeg": {
"label": "FFmpeg",
"description": "FFmpeg-Einstellungen, einschließlich Binärpfad, Argumente, hwaccel-Optionen und rollenspezifische Ausgabeargumente.",
"label": "Streams (FFmpeg)",
"description": "Kamera-Stream-Eingaben und FFmpeg-Optionen, einschließlich Binärpfad, Argumente, hwaccel und rollenspezifische Ausgabeargumente.",
"path": {
"label": "FFmpeg-Pfad",
"description": "Pfad zur zu verwendenden FFmpeg-Binärdatei oder ein Versionsalias („5.0” oder „7.0”)."
"description": "Pfad zur zu verwendenden FFmpeg-Binärdatei oder ein Versionsalias („7.0” oder „8.0”)."
},
"global_args": {
"label": "Globale Argumente von FFmpeg",
@@ -770,6 +770,10 @@
"dashboard": {
"label": "In der Benutzeroberfläche anzeigen",
"description": "Schalte ein, ob diese Kamera überall in der Benutzeroberfläche von „Frigate“ sichtbar ist. Wenn du diese Option deaktivierst, musst du die Konfiguration manuell bearbeiten, um diese Kamera wieder in der Benutzeroberfläche anzuzeigen."
},
"review": {
"label": "In der Überprüfung anzeigen",
"description": "Legen Sie fest, ob diese Kamera in der Übersicht angezeigt wird (auf der Übersichtsseite sowie im Kamerafilter, in der Bewegungsübersicht und in der Verlaufsansicht)."
}
},
"snapshots": {
+6 -2
View File
@@ -18,7 +18,7 @@
"description": "Mindest-RMS-Lautstärkeschwelle, die für die Audioerkennung erforderlich ist; niedrigere Werte erhöhen die Empfindlichkeit (z. B. 200 hoch, 500 mittel, 1000 niedrig)."
},
"listen": {
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, schreien, sprechen, rufen).",
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, Gespräche, Rufen).",
"label": "Hörtypen"
},
"filters": {
@@ -380,7 +380,7 @@
"description": "FFmpeg-Einstellungen, einschließlich Binärpfad, Argumente, hwaccel-Optionen und rollenspezifische Ausgabeargumente.",
"path": {
"label": "FFmpeg-Pfad",
"description": "Pfad zur zu verwendenden FFmpeg-Binärdatei oder ein Versionsalias („5.0” oder „7.0”)."
"description": "Pfad zur zu verwendenden FFmpeg-Binärdatei oder ein Versionsalias („7.0” oder „8.0”)."
},
"global_args": {
"label": "Globale Argumente von FFmpeg",
@@ -1934,6 +1934,10 @@
"dashboard": {
"label": "In der Benutzeroberfläche anzeigen",
"description": "Schalte ein, ob diese Kamera überall in der Benutzeroberfläche von „Frigate“ sichtbar ist. Wenn du diese Option deaktivierst, musst du die Konfiguration manuell bearbeiten, um diese Kamera wieder in der Benutzeroberfläche anzuzeigen."
},
"review": {
"label": "In der Überprüfung anzeigen",
"description": "Legen Sie fest, ob diese Kamera in der Übersicht angezeigt wird (auf der Übersichtsseite sowie im Kamerafilter, in der Bewegungsübersicht und in der Verlaufsansicht)."
}
}
}
+1 -1
View File
@@ -90,7 +90,7 @@
"laptop": "Laptop",
"mouse": "Maus",
"goat": "Ziege",
"keyboard": "Klaviatur",
"keyboard": "Klavier",
"cell_phone": "Handy",
"remote": "Fernbedienung",
"airplane": "Flugzeug",
@@ -46,7 +46,7 @@
"threshold": "Empfindlichkeitsschwelle",
"thresholdDesc": "Niedrigere Werte erkennen geringere Veränderungen (1–255)",
"minArea": "Mindestwechselbereich",
"minAreaDesc": "Mindestanteil der untersuchten Region, der sich ändern muss, damit die Veränderung als signifikant gilt",
"minAreaDesc": "Mindestgröße eines einzelnen sich bewegenden Bereichs, ausgedrückt als Prozentsatz des untersuchten Bereichs",
"frameSkip": "Bild überspringen",
"frameSkipDesc": "Verarbeite jeden N-ten Frame. Stelle diesen Wert auf die Bildrate deiner Kamera ein, um einen Frame pro Sekunde zu verarbeiten (z. B. 5 für eine Kamera mit 5 FPS, 30 für eine Kamera mit 30 FPS). Höhere Werte sorgen für eine schnellere Verarbeitung, können jedoch kurze Bewegungsabläufe übersehen.",
"maxResults": "Maximale Ergebnisse",
@@ -72,6 +72,9 @@
"framesDecoded": "Rahmen decodiert",
"wallTime": "Suchzeit",
"segmentErrors": "Segmentfehler",
"seconds": "{{seconds}}s"
}
"seconds": "{{seconds}}s",
"minutesSeconds": "{{minutes}}m {{seconds}}s",
"scanSummary": "{{segments}} Segmente · {{time}}"
},
"scanning": "Wird gescannt {{time}}"
}
+30 -5
View File
@@ -70,7 +70,7 @@
"integrationObjectClassification": "Objekt Klassifizierung",
"integrationAudioTranscription": "Audio-Transkription",
"cameraDetect": "Objekterkennung",
"cameraFfmpeg": "FFmpeg",
"cameraFfmpeg": "Streams (FFmpeg)",
"cameraRecording": "Aufnahme",
"cameraSnapshots": "Momentaufnahme",
"cameraMotion": "Bewegungserkennung",
@@ -1376,12 +1376,16 @@
"details": {
"edit": "Kameradaten bearbeiten",
"title": "Kameradaten bearbeiten",
"description": "Aktualisieren Sie den Anzeigenamen und die externe URL, die für diese Kamera in der gesamten Frigate-Benutzeroberfläche verwendet werden.",
"description": "Aktualisieren Sie den Anzeigenamen, die externe URL und die Sichtbarkeit, die für diese Kamera in der gesamten Frigate-Benutzeroberfläche verwendet werden.",
"friendlyNameLabel": "Display Name",
"friendlyNameHelp": "Der in der Benutzeroberfläche von „Frigate“ für diese Kamera angezeigte Spitzname. Lassen Sie das Feld leer, um die Kamera-ID zu verwenden.",
"webuiUrlLabel": "URL der Web-Benutzeroberfläche",
"webuiUrlHelp": "URL, um die Web-Benutzeroberfläche der Kamera direkt aus der Debug-Ansicht aufzurufen. Lassen Sie das Feld leer, um den Link zu deaktivieren.",
"webuiUrlInvalid": "Es muss sich um eine gültige URL handeln (z. B. https://example.com)."
"webuiUrlInvalid": "Es muss sich um eine gültige URL handeln (z. B. https://example.com).",
"dashboardLabel": "Im Live-Dashboard anzeigen",
"dashboardHelp": "Diese Kamera im Live-Dashboard anzeigen.",
"reviewLabel": "In der Überprüfung anzeigen",
"reviewHelp": "Zeige diese Kamera in der Übersicht an, einschließlich des Kamerafilters, der Bewegungsübersicht und der Verlaufsansicht."
},
"label": "Kamerazustand",
"description": "Legen Sie den Betriebszustand für jede Kamera fest.<br /><br /><strong>Ein</strong>: Streams werden normal verarbeitet.<br /><strong>Aus</strong>: Die Verarbeitung wird vorübergehend angehalten. Diese Einstellung bleibt bei einem Neustart von Frigate nicht erhalten.<br /><strong>Deaktiviert</strong>: Die Verarbeitung wird beendet und die Änderung in Ihrer Konfiguration gespeichert. Um eine deaktivierte Kamera wieder zu aktivieren, ist ein Neustart erforderlich.<br /><br /><em>Hinweis: Die Deaktivierung hat keine Auswirkungen auf go2rtc-Restreams.</em><br /><br />Ziehen Sie den Griff, um die Reihenfolge der aktiven Kameras in der Benutzeroberfläche anzupassen, einschließlich des Live-Dashboards und der Dropdown-Menüs zur Kameraauswahl.",
@@ -1764,7 +1768,17 @@
}
},
"cameraInputs": {
"itemTitle": "Stream {{index}}"
"itemTitle": "Stream {{index}}",
"sourceMode": {
"restream": "Restream (go2rtc)",
"manual": "Pfad für die manuelle Eingabe",
"go2rtcStreamLabel": "go2rtc stream",
"go2rtcStreamPlaceholder": "Wählen Sie einen go2rtc-Stream aus",
"noGo2rtcStreams": "Es sind keine go2rtc-Streams konfiguriert",
"go2rtcStreamSearch": "Suche Streams...",
"availableStreams": "Verfügbare Streams",
"noMatchingStreams": "Keine passenden Streams"
}
},
"restartRequiredField": "Neustart erforderlich",
"restartRequiredFooter": "Konfiguration geändert – Neustart erforderlich",
@@ -2082,7 +2096,11 @@
"fpsGreaterThanFive": "Es wird nicht empfohlen, den Wert für die FPS-Erkennung auf mehr als 5 zu setzen. Höhere Werte können zu Leistungseinbußen führen und bieten keinerlei Vorteile.",
"disabled": "Die Objekterkennung ist deaktiviert. Momentaufnahmen, Überprüfungselemente und Erweiterungsfunktionen wie Gesichtserkennung, Kennzeichenerkennung und generative KI funktionieren nicht.",
"resolutionShouldBeMultipleOfFour": "Um optimale Ergebnisse zu erzielen, sollten Breite und Höhe ein Vielfaches von 4 sein. Andere gerade Werte können zu visuellen Artefakten oder leichten Verzerrungen im Erkennungsstrom führen.",
"aspectRatioMismatch": "Die von Ihnen eingegebene Breite und Höhe stimmen nicht mit dem Seitenverhältnis Ihrer aktuell erkannten Auflösung überein. Dies kann zu einem gestreckten oder verzerrten Bild führen."
"aspectRatioMismatch": "Die von Ihnen eingegebene Breite und Höhe stimmen nicht mit dem Seitenverhältnis Ihrer aktuell erkannten Auflösung überein. Dies kann zu einem gestreckten oder verzerrten Bild führen.",
"maxFramesSet": "Die Festlegung einer maximalen Bildrate überschreibt das Standardverhalten und deaktiviert die Verfolgung stationärer Objekte. Dies ist nur in sehr wenigen Fällen erforderlich; verwenden Sie diese Option daher mit Bedacht.",
"squareResolution": "Eine quadratische Erkennungsauflösung ist ungewöhnlich. Die Erkennungsbreite und -höhe sollten dem Seitenverhältnis Ihrer Kamera entsprechen (zum Beispiel 16:9) und nicht den Abmessungen des Objekterkennungsmodells. Ein nicht übereinstimmendes Seitenverhältnis kann das Bild verzerren und die Erkennungsgenauigkeit beeinträchtigen.",
"resolutionHigh": "Diese Erkennungsauflösung liegt über der empfohlenen Wert und kann zu einem erhöhten Ressourcenverbrauch führen, ohne die Erkennungsgenauigkeit zu verbessern. Für die meisten Kameras wird eine Erkennungsauflösung von maximal 1080p empfohlen.",
"globalResolutionMultipleCameras": "Bei der Konfiguration mehrerer Kameras wird eine globale Erkennungsauflösung festgelegt. Sofern nicht alle Kameras dieselbe Auflösung und dasselbe Seitenverhältnis aufweisen, sollten die Erkennungsbreite und -höhe für jede Kamera separat festgelegt werden, um dem nativen Seitenverhältnis der jeweiligen Kamera zu entsprechen."
},
"faceRecognition": {
"globalDisabled": "Die Gesichtserkennungserweiterung muss aktiviert sein, damit die Gesichtserkennungsfunktionen bei dieser Kamera funktionieren.",
@@ -2115,6 +2133,13 @@
},
"onvif": {
"autotrackingNoZones": "Für die automatische Verfolgung ist mindestens eine Zone erforderlich. Definieren Sie unter „Masken / Zonen“ eine Zone für diese Kamera und legen Sie diese anschließend unten als erforderliche Zone fest."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "Explizite Definitionen der Hardware-beschleunigungs Variablen sind nicht empfohlen. Wähle die Voreinstellung die zu deiner Hardware passt, außer wenn spezifische Anforderungen eine andere Konfiguration erfordern."
},
"model": {
"optimizedFor320": "Frigate ist für ein 320x320-Modell optimiert, was für die meisten Konfigurationen die beste Wahl ist. Ein 640x640-Modell ist langsamer und bietet nur in bestimmten Szenarien Vorteile.",
"inputDimensionsNotDetectResolution": "Die Eingangsbreite und -höhe des Modells beziehen sich auf die Abmessungen des Objekterkennungsmodells und nicht auf die Erkennungsauflösung Ihrer Kamera. Sie sollten mit den Abmessungen des von Ihnen verwendeten Modells übereinstimmen – in der Regel quadratische Abmessungen wie 320×320 oder 640×640."
}
},
"birdseye": {
+16 -1
View File
@@ -173,7 +173,22 @@
"tips": {
"title": "Kamera-Untersuchsungsinfo"
},
"aspectRatio": "Seitenverhältnis"
"aspectRatio": "Seitenverhältnis",
"keyframes": {
"title": "Keyframe-Analyse",
"analyzing": "Keyframes werden analysiert... Noch {{seconds}} Sekunden",
"stillAnalyzing": "Keyframes werden noch analysiert...",
"recordStream": "Stream aufzeichnen:",
"keyframeCount": "Beobachtete Keyframes:",
"observedDuration": "Beobachtete Dauer:",
"gap": "Keyframe-Abstand (min. / durchschnittlich / max.):",
"segmentLength": "Länge des Aufzeichnungssegments:",
"ok": "Keyframes alle ~{{seconds}}s, gut geeignet für Aufzeichnung und Wiedergabe.",
"warning": "Seltene oder unregelmäßige Keyframes (längste Lücke ~{{seconds}}s), wahrscheinlich ein „Smart“-Codec (H.264+/H.265+); dies wird nicht empfohlen.",
"error": "Die Lücke zwischen den Keyframes (~{{seconds}}s) überschreitet die Länge des Aufzeichnungssegments ({{segmentTime}}s). Einige Segmente enthalten möglicherweise keinen Keyframe, was zu einer Unterbrechung der Wiedergabe führt. Deaktivieren Sie den Smart/+-Codec an der Kamera oder verkürzen Sie dessen Keyframe-Intervall.",
"unknown": "Der Abstand zwischen den Keyframes konnte nicht ermittelt werden.",
"recordDisabled": "Die Aufzeichnung ist für diese Kamera deaktiviert."
}
},
"overview": "Übersicht",
"label": {
+10 -1
View File
@@ -61,5 +61,14 @@
"yodeling": "Λαρυγγισμός",
"chant": "Ύμνος",
"mantra": "Μάντρα",
"synthetic_singing": "Συνθετικό Τραγούδι"
"synthetic_singing": "Συνθετικό Τραγούδι",
"rapping": "Χτύπημα",
"humming": "Μουρμουρητό",
"groan": "Aναστεναγμός",
"grunt": "Μούγκρισμα",
"gasp": "Ανάσα",
"pant": "Λαχάνιασμα",
"snort": "Ρουθούνισμα",
"cough": "Βήχας",
"throat_clearing": "Ξεροβήξιμο"
}
+7 -3
View File
@@ -109,7 +109,9 @@
"no": "Όχι",
"download": "Κατέβασμα",
"info": "Πληροφορίες",
"history": "Ιστορία"
"history": "Ιστορία",
"on": "Ενεργοποίηση",
"off": "Απενεργοποίηση"
},
"unit": {
"speed": {
@@ -117,7 +119,8 @@
"kph": "χλμ/ώρα"
},
"length": {
"meters": "μέτρα"
"meters": "μέτρα",
"feet": "πόδια"
},
"data": {
"kbps": "kB/s",
@@ -134,7 +137,8 @@
"show": "Εμφάνιση {{item}}",
"ID": "ID",
"none": "Κανένα",
"all": "Όλα"
"all": "Όλα",
"other": "άλλο"
},
"toast": {
"save": {
+8 -1
View File
@@ -119,7 +119,14 @@
"queueingButton": "Poniendo exportaciones en cola...",
"exportButton_one": "Exportar 1 cámara",
"exportButton_many": "Exportar {{count}} cámaras",
"exportButton_other": "Exportar {{count}} cámaras"
"exportButton_other": "Exportar {{count}} cámaras",
"searchOrSelectGroup": "Busca o selecciona un grupo de cámaras…",
"selectAll": "Seleccionar todas las cámaras",
"clearSelection": "Borrar selección",
"selectWithActivity": "Cámaras con objetos rastreados",
"selectGroup": "Seleccionar grupo",
"noMatchingCameras": "Ninguna cámara coincide con tu búsqueda",
"selectedCount": "{{selected}} / {{total}} seleccionadas"
},
"multi": {
"title_one": "Exportar 1 revisión",
+4 -4
View File
@@ -24,7 +24,7 @@
},
"listen": {
"label": "Tipos de escucha",
"description": "Lista de tipos de eventos de audio a detectar (por ejemplo: ladrido, alarma de incendios, grito, voz, alarido)."
"description": "Lista de tipos de eventos de audio a detectar (por ejemplo: ladrar, alarma de incendio, habla, gritar)."
},
"filters": {
"label": "Filtros de audio",
@@ -744,7 +744,7 @@
"label": "Tiempo de reintento de FFmpeg"
},
"path": {
"description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"5.0\" o \"7.0\").",
"description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"7.0\" o \"8.0\").",
"label": "Ruta de FFmpeg"
},
"output_args": {
@@ -759,8 +759,8 @@
"description": "Argumentos de salida predeterminados para los flujos con rol de grabación."
}
},
"description": "Configuración de FFmpeg, incluyendo la ruta del binario, argumentos, opciones de aceleración por hardware y argumentos de salida por rol.",
"label": "FFmpeg",
"description": "Entradas de flujo de la cámara y opciones de FFmpeg, incluida la ruta del binario, argumentos, aceleración por hardware y argumentos de salida por rol.",
"label": "Flujos (FFmpeg)",
"global_args": {
"label": "Argumentos globales de FFmpeg",
"description": "Argumentos globales pasados a los procesos de FFmpeg."
+2 -2
View File
@@ -39,7 +39,7 @@
},
"listen": {
"label": "Tipos de escucha",
"description": "Lista de tipos de eventos de audio a detectar (por ejemplo: ladrido, alarma de incendios, grito, voz, alarido)."
"description": "Lista de tipos de eventos de audio a detectar (por ejemplo: ladrar, alarma de incendio, habla, gritar)."
},
"filters": {
"label": "Filtros de audio",
@@ -1234,7 +1234,7 @@
"label": "Tiempo de reintento de FFmpeg"
},
"path": {
"description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"5.0\" o \"7.0\").",
"description": "Ruta al binario de FFmpeg que se va a utilizar o un alias de versión (\"7.0\" o \"8.0\").",
"label": "Ruta de FFmpeg"
},
"output_args": {
+15 -2
View File
@@ -72,7 +72,7 @@
"integrationObjectClassification": "Clasificación de objetos",
"integrationAudioTranscription": "Transcripción de audio",
"cameraDetect": "Detección de objetos",
"cameraFfmpeg": "FFmpeg",
"cameraFfmpeg": "Flujos (FFmpeg)",
"cameraRecording": "Grabación",
"cameraSnapshots": "Instantáneas",
"cameraMotion": "Detección de movimiento",
@@ -1720,7 +1720,17 @@
}
},
"cameraInputs": {
"itemTitle": "Flujo {{index}}"
"itemTitle": "Flujo {{index}}",
"sourceMode": {
"restream": "Retransmisión (go2rtc)",
"manual": "Ruta de entrada manual",
"go2rtcStreamLabel": "Flujo go2rtc",
"go2rtcStreamPlaceholder": "Selecciona un flujo go2rtc",
"noGo2rtcStreams": "No hay flujos go2rtc configurados",
"go2rtcStreamSearch": "Buscar flujos…",
"availableStreams": "Flujos disponibles",
"noMatchingStreams": "No hay flujos coincidentes"
}
},
"restartRequiredField": "Reinicio necesario",
"restartRequiredFooter": "Configuración modificada - reinicio necesario",
@@ -2020,6 +2030,9 @@
},
"onvif": {
"autotrackingNoZones": "El seguimiento automático requiere al menos una zona. Define una zona para esta cámara en Máscaras / Zonas y, a continuación, establécela como zona obligatoria a continuación."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "No son remontados los argumentos de aceleración por hardware manual. A no ser que un requisito específico exista, seleccione la preselección que coincida con su hardware."
}
},
"resetToDefaultDescription": "Esto restablecerá todos los ajustes de esta sección a sus valores predeterminados. Esta acción no se puede deshacer.",
+40 -25
View File
@@ -81,16 +81,16 @@
"gpuInfo": {
"vainfoOutput": {
"title": "Salida de Vainfo",
"returnCode": "Código de Retorno: {{code}}",
"processOutput": "Salida del Proceso:",
"processError": "Error del Proceso:"
"returnCode": "Código de retorno: {{code}}",
"processOutput": "Salida del proceso:",
"processError": "Error del proceso:"
},
"nvidiaSMIOutput": {
"cudaComputerCapability": "Capacidad de Cómputo CUDA: {{cuda_compute}}",
"cudaComputerCapability": "Capacidad de cómputo CUDA: {{cuda_compute}}",
"title": "Salida de Nvidia SMI",
"driver": "Controlador: {{driver}}",
"name": "Nombre: {{name}}",
"vbios": "Información de VBios: {{vbios}}"
"vbios": "Informe de VBios: {{vbios}}"
},
"toast": {
"success": "Información de GPU copiada al portapapeles"
@@ -104,7 +104,7 @@
},
"gpuMemory": "Memoria de GPU",
"npuMemory": "Memoria de NPU",
"npuUsage": "Uso de NPU",
"npuUsage": "Modo de empleo de NPU",
"intelGpuWarning": {
"title": "Aviso de estadísticas Intel GPU",
"message": "Estadísticas de GPU no disponibles",
@@ -122,7 +122,7 @@
"go2rtc": "go2rtc",
"recording": "grabación",
"review_segment": "revisar segmento",
"embeddings": "embeddings",
"embeddings": "empotrados",
"audio_detector": "detector de audio"
}
}
@@ -165,8 +165,8 @@
"codec": "Codec:",
"fetching": "Obteniendo Datos de la Cámara",
"stream": "Flujo {{idx}}",
"video": "Video:",
"fps": "FPS:",
"video": "Vídeo:",
"fps": "CPS:",
"resolution": "Resolución:",
"error": "Error: {{error}}",
"unknown": "Desconocido",
@@ -174,7 +174,22 @@
"tips": {
"title": "Información de Sondeo de la Cámara"
},
"aspectRatio": "Relación de aspecto"
"aspectRatio": "Relación de aspecto",
"keyframes": {
"title": "Análisis de clave fotograma",
"recordStream": "Flujo de grabación:",
"segmentLength": "Longitud de segmento en grabación:",
"unknown": "No pudo determinar el espaciado del fotograma.",
"analyzing": "Analizando fotogramas clave… {{seconds}} segundos restantes",
"stillAnalyzing": "Todavía analizando fotogramas clave…",
"keyframeCount": "Fotogramas clave observados:",
"observedDuration": "Duración observada:",
"gap": "Brecha de fotogramas clave (mín / med / máx):",
"recordDisabled": "La grabación está desactivada para esta cámara.",
"ok": "Cuadros cada ~{{seconds}}s, bueno para grabación y reproducción.",
"warning": "Fotograma clave escaso o variable (hueco más largo ~{{seconds}}s), probablemente un códec inteligente (H.264+/H.265+), esto no es recomendado.",
"error": "El intervalo entre fotogramas clave (~{{seconds}} s) supera la duración del segmento de grabación ({{segmentTime}} s). Es posible que algunos segmentos no contengan ningún fotograma clave, lo que impedirá su reproducción. Desactiva el códec inteligente (+) de la cámara o reduce el intervalo entre fotogramas clave."
}
},
"framesAndDetections": "Fotogramas / Detecciones",
"label": {
@@ -204,9 +219,9 @@
},
"connectionQuality": {
"excellent": "Excelente",
"poor": "Debil",
"title": "Calidad de la conexión",
"fps": "Cuadros por segundo",
"poor": "Pobre",
"title": "Calidad de Conexión",
"fps": "CPS",
"expectedFps": "Cuadros por segundo esperados",
"reconnectsLastHour": "Reconexiones (última hora)",
"unusable": "No usable",
@@ -222,25 +237,25 @@
"infPerSecond": "Inferencias Por Segundo",
"embeddings": {
"plate_recognition_speed": "Velocidad de Reconocimiento de Matrículas",
"face_embedding_speed": "Velocidad de Incrustación de Rostros",
"image_embedding_speed": "Velocidad de Incrustación de Imágenes",
"text_embedding_speed": "Velocidad de Incrustación de Texto",
"face_embedding_speed": "Velocidad de Empotrado Facial",
"image_embedding_speed": "Velocidad de Empotrado de Imagen",
"text_embedding_speed": "Velocidad de Empotrado de Texto",
"face_recognition_speed": "Velocidad de Reconocimiento Facial",
"text_embedding": "Incrustación de Texto",
"text_embedding": "Empotrado de Texto",
"face_recognition": "Reconocimiento Facial",
"plate_recognition": "Reconocimiento de Matrículas",
"yolov9_plate_detection": "Detección de Matrículas YOLOv9",
"image_embedding": "Incrustación de Imágenes",
"image_embedding": "Empotrado de Imagen",
"yolov9_plate_detection_speed": "Velocidad de Detección de Matrículas YOLOv9",
"review_description": "Revisión de descripción",
"review_description_speed": "Velocidad de revisión de la descripción",
"review_description_events_per_second": "Revisión de la descripción",
"review_description_speed": "Revisión de velocidad de descripción",
"review_description_events_per_second": "Revisión de Descripción",
"object_description": "Descripción de Objeto",
"object_description_speed": "Velocidad de descripción de objeto",
"object_description_events_per_second": "Descripción de objeto",
"object_description_speed": "Velocidad de Descripción de Objeto",
"object_description_events_per_second": "Descripción de Objeto",
"classification": "Clasificación de {{name}}",
"classification_speed": "Velocidad de clasificación de {{name}}",
"classification_events_per_second": "Clasificacion de eventos por segundo de {{name}}"
"classification_speed": "Velocidad de Clasificación de {{name}}",
"classification_events_per_second": "Clasificación de Eventos por Segundo de {{name}}"
},
"title": "Enriquecimientos",
"averageInf": "Tiempo promedio de inferencia"
@@ -249,7 +264,7 @@
"ffmpegHighCpuUsage": "{{camera}} tiene un uso elevado de CPU por FFmpeg ({{ffmpegAvg}}%)",
"detectHighCpuUsage": "{{camera}} tiene un uso elevado de CPU por detección ({{detectAvg}}%)",
"healthy": "El sistema está saludable",
"reindexingEmbeddings": "Reindexando incrustaciones ({{processed}}% completado)",
"reindexingEmbeddings": "Reindexando empotrados ({{processed}}% completado)",
"detectIsSlow": "{{detect}} es lento ({{speed}} ms)",
"cameraIsOffline": "{{camera}} está desconectada",
"detectIsVerySlow": "{{detect}} es muy lento ({{speed}} ms)",
+2 -1
View File
@@ -189,7 +189,8 @@
"id": "Bahasa Indonesia (Indonésien)",
"ur": "اردو (Ourdou)",
"hr": "Hrvatski (Croate)",
"bs": "Bosanski (Bosnien)"
"bs": "Bosanski (Bosnien)",
"zhHant": "繁體中文 (chinois traditionnel)"
},
"appearance": "Apparence",
"darkMode": {
+20 -2
View File
@@ -36,6 +36,9 @@
"ask_an": "Cet objet est-il un(e) <code>{{label}}</code> ?",
"ask_a": "Cet objet est-il un(e) <code>{{label}}</code> ?",
"ask_full": "Cet objet est-il un(e) <code>{{translatedLabel}}</code>  ?"
},
"toast": {
"error": "Impossible d'envoyer à Frigate+. Merci de vérifier votre réseau puis de réessayer."
}
}
},
@@ -68,7 +71,15 @@
},
"success": "Exportation démarrée avec succès. Consultez le fichier sur la page des exportations.",
"view": "Vue",
"queued": "Exportation en attente. Consultez la progression sur la page des exportations."
"queued": "Exportation en attente. Consultez la progression sur la page des exportations.",
"batchSuccess_one": "Un export démarré. Ouverture du dossier en cours.",
"batchSuccess_many": "{{count}} exports démarrés. Ouverture du dossier en cours.",
"batchSuccess_other": "{{count}} exports démarrés. Ouverture du dossier en cours.",
"batchPartial": "{{successful}} exports ont démarré sur un total de : {{total}}. Échecs : {{failedCameras}}",
"batchFailed": "Échec du démarrage de {{total}} exports. Échecs : {{failedCameras}}",
"batchQueuedSuccess_one": "Un export rajouté au traitement. Ouverture du dossier en cours.",
"batchQueuedSuccess_many": "{{count}} exports rajoutés au traitement. Ouverture du dossier en cours.",
"batchQueuedSuccess_other": "{{count}} exports rajoutés au traitement. Ouverture du dossier en cours."
},
"select": "Sélectionner",
"name": {
@@ -107,7 +118,14 @@
"queueingButton": "Mise en file d'attente des exports...",
"exportButton_one": "Exporter {{count}} caméra",
"exportButton_many": "Exporter {{count}} caméras",
"exportButton_other": "Exporter {{count}} caméras"
"exportButton_other": "Exporter {{count}} caméras",
"searchOrSelectGroup": "Chercher ou sélectionner un groupe de caméras...",
"selectAll": "Sélectionner toutes les cameras",
"clearSelection": "Effacer la sélection",
"selectWithActivity": "Caméras avec des objets suivis",
"selectGroup": "Sélectionner un groupe",
"noMatchingCameras": "Aucune caméra ne correspond à votre recherche",
"selectedCount": "{{selected}} / {{total}} sélectionnées"
},
"multi": {
"title_one": "Export {{count}} revue",
+12 -2
View File
@@ -26,7 +26,9 @@
"points_many": "{{count}} points",
"points_other": "{{count}} points",
"undo": "Annuler le dernier point",
"reset": "Réinitialiser le polygone"
"reset": "Réinitialiser le polygone",
"drawMode": "Dessiner",
"moveMode": "Déplacer"
},
"motionHeatmapLabel": "Carte thermique des mouvements",
"dialog": {
@@ -36,6 +38,14 @@
},
"timeRange": {
"title": "Plage de recherche",
"start": "Plage de recherche"
"start": "Début de la plage de recherche",
"end": "Fin de la plage de recherche"
},
"settings": {
"title": "Paramètres de recherche",
"parallelMode": "Mode parallèle",
"parallelModeDesc": "Scanner plusieurs plages d'enregistrement simultanément (plus rapide ; nécessite plus de ressources de décodage)",
"threshold": "Seuil de sensitivité",
"thresholdDesc": "Des valeurs basses détectent de plus petits changements (1-255)"
}
}
+22 -4
View File
@@ -112,7 +112,7 @@
},
"gpuTemperature": "Température du GPU",
"npuTemperature": "Température du NPU",
"gpuCompute": "Calcul / Encodage GPU"
"gpuCompute": "Calcul GPU / Encodage"
},
"otherProcesses": {
"title": "Autres processus",
@@ -122,7 +122,7 @@
"go2rtc": "go2rtc",
"recording": "enregistrement",
"review_segment": "Segment d'activité",
"embeddings": "embeddings",
"embeddings": "intégrations",
"audio_detector": "détecteur audio"
}
}
@@ -173,7 +173,22 @@
"error": "Erreur : {{error}}",
"codec": "Codec :",
"video": "Vidéo :",
"aspectRatio": "rapport d'aspect"
"aspectRatio": "rapport d'aspect",
"keyframes": {
"title": "Analyse par image clef",
"analyzing": "Analyse des images clefs... {{seconds}} secondes restantes",
"stillAnalyzing": "Analyse des images clefs toujours en cours ...",
"recordStream": "Flux d'enregistrement :",
"keyframeCount": "Images clefs observées :",
"observedDuration": "Durée observée :",
"gap": "Écart en images clefs (min / moy / max) :",
"segmentLength": "Durée du segment d'enregistrement :",
"ok": "Images clefs chaque ~{{seconds}}s, convient à l'enregistrement et au visionnement.",
"warning": "Images clefs fragmentées ou variables (plus grand écart d'environ {{seconds}}s), vraisemblablement un codec intelligent (H.264+/H.265+), non-recommendé.",
"error": "L'écart en images clefs (~{{seconds}}) dépasse la longueur du segment d'enregistrement ({{segmentTime}}). Certains segments n'ont peut-être pas de clef, ce qui corrompt la lecture. Désactiver le codec intelligent/+ sur la caméra ou raccourcir son intervalle en images clefs.",
"unknown": "Impossible de déterminer l'espacement en images clefs.",
"recordDisabled": "L'enregistrement est désactivé pour cette caméra."
}
},
"framesAndDetections": "Images / Détections",
"label": {
@@ -196,7 +211,7 @@
"overview": "Vue d'ensemble",
"toast": {
"success": {
"copyToClipboard": "Données de la sonde copiées dans le presse-papiers"
"copyToClipboard": "Données de la sonde copiées dans le presse-papiers."
},
"error": {
"unableToProbeCamera": "Impossible d'interroger la caméra : {{errorMessage}}"
@@ -212,6 +227,9 @@
"expectedFps": "IPS attendues",
"reconnectsLastHour": "Reconnexions (dernière heure)",
"stallsLastHour": "Baisses de qualité (dernière heure)"
},
"noCameras": {
"title": "Aucune caméra trouvée"
}
},
"lastRefreshed": "Dernier rafraichissement : ",
+4 -2
View File
@@ -81,7 +81,8 @@
"thisMonth": "החודש",
"inProgress": "בתהליך",
"invalidStartTime": "זמן התחלה לא תקין",
"invalidEndTime": "זמן סיום לא תקין"
"invalidEndTime": "זמן סיום לא תקין",
"never": "אף פעם"
},
"unit": {
"speed": {
@@ -146,7 +147,8 @@
"download": "הורדה",
"info": "מידע",
"next": "הבא",
"continue": "המשך"
"continue": "המשך",
"add": "להוסיף"
},
"menu": {
"system": "מערכת",
+8 -1
View File
@@ -426,5 +426,12 @@
"chink": "Csörömpölés",
"shatter": "Összetörés",
"field_recording": "Helyszíni felvétel",
"noise": "Zaj"
"noise": "Zaj",
"liquid": "Folyadék",
"splash": "Csobbanás",
"slosh": "Löttyenés",
"trickle": "Csörgedezés",
"gush": "Folyás",
"stir": "Kavarás",
"thump": "Puffanás"
}
+2 -1
View File
@@ -14,5 +14,6 @@
"attachment_chip_remove": "Melléklet eltávolítása",
"open_in_explore": "Megnyitás Böngészőben",
"attachment_picker_paste_label": "Vagy illeszd be az esemény ID-t",
"attachment_picker_attach": "Melléklet"
"attachment_picker_attach": "Melléklet",
"arguments": "Argumentumok:"
}
+5 -1
View File
@@ -189,7 +189,11 @@
"face_recognition": "Arcfelismerés",
"plate_recognition": "Rendszám Felismerés",
"yolov9_plate_detection_speed": "YOLOv9 Rendszám Felismerés Sebesség",
"yolov9_plate_detection": "YOLOv9 Rendszám Észlelés"
"yolov9_plate_detection": "YOLOv9 Rendszám Észlelés",
"classification_events_per_second": "{{name}} Osztályozási események másodpercenként",
"classification_speed": "{{name}} Osztályozási sebesség",
"classification": "{{name}} Osztályozás",
"object_description_events_per_second": "Objektum leírás"
},
"infPerSecond": "Inferencia Per Másodperc",
"title": "Kiegészítések"
+2 -1
View File
@@ -126,7 +126,8 @@
"ur": "اردو (Urdu)",
"withSystem": {
"label": "Gunakan pengaturan sistem untuk bahasa"
}
},
"zhHant": "繁體中文 (Tionghoa Tradisional)"
},
"appearance": "Tampilan",
"darkMode": {
+40 -3
View File
@@ -42,12 +42,49 @@
"stream": "Siaran",
"placeholder": "Pilih stream",
"streamMethod": {
"label": "Metode Streaming"
"label": "Metode Streaming",
"placeholder": "Pilih satu metode streaming",
"method": {
"noStreaming": {
"label": "Tidak Streaming",
"desc": "Gambar kamera hanya diperbarui sekali per menit dan tidak akan ada live streaming."
},
"smartStreaming": {
"label": "Streaming cerdas (disarankan)",
"desc": "Streaming cerdas akan memperbarui gambar kamera sekali per menit saat tidak ada aktivitas yang terdeteksi untuk menghemat bandwidth dan sumber daya. Ketika aktivitas terdeteksi, gambar akan otomatis beralih ke live stream."
},
"continuousStreaming": {
"desc": {
"title": "Kamera akan selalu live stream selama muncul di dashboard, meskipun tidak ada aktivitas yang terdeteksi.",
"warning": "Streaming Terus Menerus dapat menyebabkan penggunaan bandwidth yang tinggi dan masalah performa. Gunakan dengan hati-hati."
},
"label": "Streaming Terus Menerus"
}
}
},
"compatibilityMode": {
"label": "Mode Kompatibilitas",
"desc": "Aktifkan opsi ini hanya jika live stream kamera Anda menampilkan artefak warna dan memiliki garis diagonal di sisi kanan gambar."
}
}
}
},
"showAll": "Tampilkan semua grup kamera",
"showLess": "Lebih sedikit",
"editGroups": "Sunting Grup Kamera"
},
"debug": {
"boundingBox": "Batas Kotak"
"boundingBox": "Batas Kotak",
"options": {
"label": "Pengaturan",
"title": "Opsi",
"showOptions": "Lihat Opsi",
"hideOptions": "Sembunyikan Opsi"
},
"zones": "Zona",
"motion": "Gerakan",
"regions": "Wilayah",
"timestamp": "Timestamp",
"mask": "Masker",
"paths": "Path"
}
}
+63 -2
View File
@@ -52,12 +52,73 @@
"export": "Ekspor",
"selectOrExport": "Pilih atau Ekspor",
"toast": {
"success": "Berhasil memulai ekspor. Lihat file pada halaman ekspor."
}
"success": "Berhasil memulai ekspor. Lihat file pada halaman ekspor.",
"queued": "Ekspor diantrekan. Lihat progres di halaman ekspor.",
"view": "Melihat",
"batchSuccess_other": "{{count}} Ekspor dimulai. Membuka kasusnya sekarang.",
"batchPartial": "Ekspor berhasil dimulai sebanyak {{successful}} dari total {{total}} ekspor. Kamera yang gagal: {{failedCameras}}",
"batchFailed": "Gagal memulai ekspor sebanyak {{total}}. Kamera yang gagal: {{failedCameras}}"
},
"case": {
"newCaseOption": "Membuat Kasus Baru",
"newCaseNamePlaceholder": "Nama Kasus Baru",
"newCaseDescriptionPlaceholder": "Deskripsi Kasus",
"label": "Kasus",
"nonAdminHelp": "Kasus Baru akan Dibuat untuk Ekspor ini.",
"placeholder": "Pilih Kasus"
},
"tabs": {
"export": "Kamera Tunggal",
"multiCamera": "Multi Kamera"
},
"multiCamera": {
"timeRange": "Rentang Waktu",
"selectFromTimeline": "Pilih dari Timeline",
"cameraSelection": "Kamera",
"checkingActivity": "Memeriksa Aktivitas Kamera...",
"noCameras": "Tidak ada Kamera Tersedia",
"detectionCount_other": "{{count}} Objek terlacak",
"nameLabel": "Nama Ekspor",
"exportButton_other": "Ekspor {{count}} kamera",
"cameraSelectionHelp": "Kamera dengan objek yang dilacak dalam rentang waktu ini telah dipilih sebelumnya",
"queueingButton": "Mengantrekan ekspor...",
"clearSelection": "Hapus pilihan",
"selectWithActivity": "Kamera dengan objek yang dilacak",
"selectGroup": "Pilih grup",
"noMatchingCameras": "Tidak ada kamera yang sesuai dengan pencarian Anda",
"selectedCount": "{{terpilih}} / {{total}} terpilih",
"namePlaceholder": "Nama dasar opsional untuk ekspor ini"
},
"multi": {
"title_other": "Ekspor {{count}} Ulasan",
"toast": {
"startedNoCase_other": "{{count}} Ekspor Dimulai.",
"started_other": "{{count}} ekspor dimulai. Membuka kasusnya sekarang.",
"partial": "Memulai {{successful}} dari {{total}} ekspor. Gagal: {{failedItems}}",
"failed": "Gagal memulai {{total}} ekspor. Gagal: {{failedItems}}"
},
"description": "Ekspor setiap ulasan yang dipilih. Semua Ekspor akan dikelompokkan dalam satu kasus.",
"descriptionNoCase": "Ekspor setiap ulasan yang dipilih.",
"exportButton_other": "Ekspor {{count}} ulasan",
"exportingButton": "Mengekspor...",
"caseNamePlaceholder": "Ekspor tinjauan - {{tanggal}}"
},
"queueing": "Mengantrekan Ekspor..."
},
"search": {
"saveSearch": {
"overwrite": "{{searchName}} sudah ada. Menyimpan akan menimpa file yang sudah ada."
}
},
"streaming": {
"restreaming": {
"disabled": "Fitur restreaming tidak diaktifkan untuk kamera ini.",
"desc": {
"title": "Instal go2rtc untuk opsi tampilan langsung dan audio tambahan untuk kamera ini."
}
},
"showStats": {
"label": "Tampilkan statistik streaming"
}
}
}
+257 -50
View File
@@ -132,53 +132,111 @@
}
},
"mqtt": {
"label": "MQTT"
"label": "MQTT",
"description": "Impostazioni di pubblicazione delle immagini via MQTT.",
"enabled": {
"label": "Invia immagine",
"description": "Abilita la pubblicazione delle istantanee dell'immagine per gli oggetti sui topic MQTT per questa telecamera."
},
"timestamp": {
"label": "Aggiungi timestamp",
"description": "Sovraimprime un timestamp sulle immagini pubblicate su MQTT."
},
"bounding_box": {
"label": "Aggiungi riquadro di delimitazione",
"description": "Disegna i riquadri di delimitazione sulle immagini pubblicate tramite MQTT."
},
"crop": {
"label": "Ritaglia immagine",
"description": "Ritaglia le immagini pubblicate su MQTT in base al riquadro di delimitazione dell'oggetto rilevato."
},
"height": {
"label": "Altezza immagine",
"description": "Altezza (in pixel) a cui ridimensionare le immagini pubblicate tramite MQTT."
},
"required_zones": {
"label": "Zone richieste",
"description": "Zone in cui un oggetto deve entrare affinché venga pubblicata un'immagine MQTT."
},
"quality": {
"label": "Qualità JPEG",
"description": "Qualità JPEG per le immagini pubblicate su MQTT (0-100)."
}
},
"onvif": {
"tls_insecure": {
"label": "Disabilita verifica TLS"
"label": "Disabilita verifica TLS",
"description": "Salta la verifica TLS e disabilita l'autenticazione digest per ONVIF (non sicuro; utilizzare solo in reti sicure)."
},
"profile": {
"label": "Profilo ONVIF"
"label": "Profilo ONVIF",
"description": "Profilo multimediale ONVIF specifico da utilizzare per il controllo PTZ, identificato tramite token o nome. Se non impostato, viene selezionato automaticamente il primo profilo con una configurazione PTZ valida."
},
"autotracking": {
"label": "Tracciamento automatico",
"enabled": {
"label": "Abilita il tracciamento automatico"
"label": "Abilita il tracciamento automatico",
"description": "Abilita o disabilita il tracciamento automatico della telecamera PTZ per gli oggetti rilevati."
},
"calibrate_on_startup": {
"label": "Calibra all'avvio"
"label": "Calibra all'avvio",
"description": "Misura la velocità dei motori PTZ all'avvio per migliorare la precisione del tracciamento. Frigate aggiornerà la configurazione con i valori di movement_weights dopo la calibrazione."
},
"zooming": {
"label": "Modalità ingrandimento"
"label": "Modalità ingrandimento",
"description": "Controlla il comportamento dello zoom: disabled (solo pan/tilt), absolute (più compatibile) o relative (pan/tilt/zoom simultanei)."
},
"zoom_factor": {
"label": "Fattore di ingrandimento"
"label": "Fattore di ingrandimento",
"description": "Controlla il livello di zoom sugli oggetti tracciati. Valori più bassi mantengono una porzione maggiore della scena visibile; valori più alti aumentano lo zoom ma potrebbero far perdere il tracciamento. Valori compresi tra 0.1 e 0.75."
},
"track": {
"label": "Oggetti tracciati",
"description": "Elenco dei tipi di oggetto che dovrebbero attivare il tracciamento automatico."
},
"required_zones": {
"label": "Zone richieste"
"label": "Zone richieste",
"description": "Gli oggetti devono entrare in una di queste zone prima che inizi il tracciamento automatico."
},
"timeout": {
"label": "Scadenza di ritorno",
"description": "Attendi questo numero di secondi dopo aver perso il tracciamento prima di riportare la telecamera nella posizione preimpostata."
},
"movement_weights": {
"description": "Valori di calibrazione generati automaticamente dalla calibrazione della telecamera. Non modificare manualmente."
"description": "Valori di calibrazione generati automaticamente dalla calibrazione della telecamera. Non modificare manualmente.",
"label": "Pesi del movimento"
},
"enabled_in_config": {
"label": "Stato originale del tracciamento automatico"
"label": "Stato originale del tracciamento automatico",
"description": "Campo interno per tracciare se il tracciamento automatico era abilitato nella configurazione."
},
"description": "Traccia automaticamente gli oggetti in movimento e li mantiene centrati nell'inquadratura utilizzando i movimenti della telecamera PTZ.",
"return_preset": {
"label": "Preset di ritorno",
"description": "Nome del preset ONVIF configurato nel firmware della telecamera a cui ritornare al termine del tracciamento."
}
},
"ignore_time_mismatch": {
"label": "Ignora la discrepanza oraria"
"label": "Ignora la discrepanza oraria",
"description": "Ignora le differenze di sincronizzazione oraria tra la telecamera e il server Frigate per la comunicazione ONVIF."
},
"label": "ONVIF",
"port": {
"label": "Porta ONVIF"
"label": "Porta ONVIF",
"description": "Numero di porta per il servizio ONVIF."
},
"description": "Impostazioni della connessione ONVIF e del tracciamento automatico PTZ per questa telecamera.",
"host": {
"label": "Host ONVIF",
"description": "Host (e schema opzionale) per il servizio ONVIF di questa telecamera."
},
"user": {
"label": "Nome utente ONVIF",
"description": "Nome utente per l'autenticazione ONVIF; alcuni dispositivi richiedono un utente amministratore per l'ONVIF."
},
"password": {
"label": "Password ONVIF",
"description": "Password per l'autenticazione ONVIF."
}
},
"detect": {
@@ -363,20 +421,20 @@
"description": "Numero massimo di processi di esportazione da elaborare contemporaneamente."
}
},
"description": "Impostazioni di registrazione e conservazione per questa videocamera.",
"description": "Impostazioni di registrazione e conservazione per questa telecamera.",
"enabled": {
"label": "Abilita Registrazione",
"label": "Abilita registrazione",
"description": "Attiva o disattiva la registrazione per questa telecamera."
},
"expire_interval": {
"label": "Intervallo pulizia registrazioni",
"label": "Intervallo di pulizia registrazioni",
"description": "Minuti tra i cicli di pulizia che rimuovono i segmenti di registrazione scaduti."
},
"continuous": {
"label": "Conservazione continua",
"description": "Numero di giorni per cui conservare le registrazioni, indipendentemente dagli oggetti tracciati o dal movimento. Impostare su 0 se si desidera conservare solo le registrazioni relative agli avvisi e ai rilevamenti.",
"days": {
"label": "Giorni di Conservazione",
"label": "Giorni di conservazione",
"description": "Numero di giorni di conservazione delle registrazioni."
}
},
@@ -384,7 +442,7 @@
"label": "Conservazione movimento",
"description": "Numero di giorni per cui conservare le registrazioni attivate dal movimento, indipendentemente dagli oggetti tracciati. Impostare su 0 se si desidera conservare solo le registrazioni relative ad allarmi e rilevamenti.",
"days": {
"label": "Giorni di Conservazione",
"label": "Giorni di conservazione",
"description": "Numero di giorni di conservazione delle registrazioni."
}
},
@@ -392,12 +450,12 @@
"label": "Conservazione rilevamento",
"description": "Impostazioni relative alla conservazione delle registrazioni per gli eventi di rilevamento, comprese le durate prima e dopo l'acquisizione.",
"pre_capture": {
"label": "Secondi di pre-acquisizione",
"description": "Numero di secondi precedenti l'evento di rilevamento da includere nella registrazione."
"label": "Secondi prima della cattura",
"description": "Numero di secondi precedenti all'evento di rilevamento da includere nella registrazione."
},
"post_capture": {
"label": "Secondi di post-acquisizione",
"description": "Numero di secondi successivi l'evento di rilevamento da includere nella registrazione."
"label": "Secondi dopo la cattura",
"description": "Numero di secondi successivi all'evento di rilevamento da includere nella registrazione."
},
"retain": {
"label": "Conservazione eventi",
@@ -414,13 +472,13 @@
},
"alerts": {
"label": "Conservazione avvisi",
"description": "Impostazioni di conservazione delle registrazioni per gli eventi di avviso, incluse le durate di pre e post-acquisizione.",
"description": "Impostazioni di conservazione delle registrazioni per gli eventi di avviso, incluse le durate prima e dopo la cattura.",
"pre_capture": {
"label": "Secondi di pre-acquisizione",
"description": "Numero di secondi antecedenti all'evento di rilevamento da includere nella registrazione."
"label": "Secondi prima della cattura",
"description": "Numero di secondi precedenti all'evento di rilevamento da includere nella registrazione."
},
"post_capture": {
"label": "Secondi di post-acquisizione",
"label": "Secondi dopo la cattura",
"description": "Numero di secondi successivi all'evento di rilevamento da includere nella registrazione."
},
"retain": {
@@ -461,7 +519,40 @@
"description": "Sovraimprime un timestamp sulle istantanee provenienti dalle API."
},
"bounding_box": {
"label": "Sovrimpressione riquadro di delimitazione"
"label": "Sovrimpressione riquadro di delimitazione",
"description": "Disegna i riquadri di delimitazione per gli oggetti tracciati sulle istantanee provenienti dalle API."
},
"crop": {
"label": "Ritaglia istantanea",
"description": "Ritaglia le istantanee provenienti dalle API in base al riquadro di delimitazione dell'oggetto rilevato."
},
"required_zones": {
"label": "Zone richieste",
"description": "Zone in cui un oggetto deve entrare affinché venga salvata un'istantanea."
},
"height": {
"label": "Altezza istantanea",
"description": "Altezza (in pixel) a cui ridimensionare le istantanee provenienti dalle API; lascia vuoto per mantenere la dimensione originale."
},
"retain": {
"label": "Conservazione istantanee",
"description": "Impostazioni di conservazione per le istantanee, inclusi i giorni predefiniti e le eccezioni per singolo oggetto.",
"default": {
"label": "Conservazione predefinita",
"description": "Numero predefinito di giorni per cui conservare le istantanee."
},
"mode": {
"label": "Modalità di conservazione",
"description": "Modalità di conservazione: tutti (salva tutti i segmenti), movimento (salva i segmenti con movimento) o oggetti_attivi (salva i segmenti con oggetti attivi)."
},
"objects": {
"label": "Conservazione oggetti",
"description": "Eccezioni per singolo oggetto relativi ai giorni di conservazione delle istantanee."
}
},
"quality": {
"label": "Qualità istantanee",
"description": "Qualità di codifica per le istantanee salvate (0-100)."
}
},
"motion": {
@@ -492,10 +583,12 @@
"description": "Se impostato su un valore compreso tra 0.0 e 110, e se in un singolo fotogramma cambia una porzione dell'immagine superiore a tale frazione, il rilevatore non restituirà alcun riquadro di movimento e si ricalibrerà immediatamente. Ciò consente di risparmiare risorse della CPU e ridurre i falsi positivi in caso di fulmini, temporali, ecc., ma potrebbe comportare la mancata rilevazione di eventi reali, come ad esempio il tracciamento automatico di un oggetto da parte di una telecamera PTZ. Il compromesso consiste nel scegliere se sacrificare alcuni megabyte di registrazioni o rivedere un paio di brevi video. Lasciare non impostato (Nessuno) per disabilitare questa funzione."
},
"delta_alpha": {
"description": "Fattore di fusione alfa utilizzato nel calcolo della differenza tra fotogrammi per il calcolo del movimento."
"description": "Fattore di fusione alfa utilizzato nel calcolo della differenza tra fotogrammi per il calcolo del movimento.",
"label": "Delta alfa"
},
"frame_alpha": {
"description": "Valore alfa utilizzato durante la fusione dei fotogrammi per la preelaborazione del movimento."
"description": "Valore alfa utilizzato durante la fusione dei fotogrammi per la preelaborazione del movimento.",
"label": "Frame alfa"
},
"frame_height": {
"label": "Altezza del frame",
@@ -510,7 +603,8 @@
"description": "Secondi di attesa dopo l'ultimo movimento prima di pubblicare uno stato 'off' MQTT."
},
"enabled_in_config": {
"description": "Indica se il rilevamento del movimento era abilitato nella configurazione statica originale."
"description": "Indica se il rilevamento del movimento era abilitato nella configurazione statica originale.",
"label": "Stato movimento originale"
},
"raw_mask": {
"label": "Maschera grezza"
@@ -548,11 +642,11 @@
},
"min_score": {
"label": "Confidenza minima",
"description": "Livello minimo di confidenza del rilevamento per singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
"description": "Livello minimo di confidenza nel rilevamento in un singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
},
"mask": {
"label": "Maschera filtro",
"description": "Coordinate del poligono che definisce l'area all'interno dell'inquadratura in cui si applica questo filtro."
"description": "Coordinate del poligono che definiscono la posizione di applicazione di questo filtro all'interno dell'inquadratura."
},
"raw_mask": {
"label": "Maschera grezza"
@@ -560,40 +654,42 @@
},
"mask": {
"label": "Maschera oggetto",
"description": "Poligono di maschera utilizzato per impedire il rilevamento di oggetti in aree specificate."
"description": "Poligono di mascheramento utilizzato per impedire il rilevamento di oggetti in aree specifiche."
},
"genai": {
"label": "Configurazione degli oggetti GenAI",
"description": "Opzioni GenAI per la descrizione degli oggetti tracciati e l'invio dei fotogrammi per la generazione.",
"enabled": {
"label": "Abilita GenAI",
"description": "Abilita di default la generazione tramite GenAI delle descrizioni degli oggetti monitorati."
"description": "Abilita in modo predefinito la generazione di descrizioni da parte di GenAI per gli oggetti tracciati."
},
"use_snapshot": {
"label": "Usa istantanee",
"label": "Utilizza istantanee",
"description": "Utilizza le istantanee degli oggetti anziché le miniature per la generazione di descrizioni con GenAI."
},
"prompt": {
"description": "Modello di prompt predefinito utilizzato per la generazione di descrizioni con GenAI."
"description": "Modello di richiesta predefinito utilizzato per la generazione di descrizioni con GenAI.",
"label": "Richiesta di didascalia"
},
"object_prompts": {
"description": "Prompt specifici per ogni oggetto per personalizzare i risultati di GenAI in base a etichette specifiche."
"description": "Richieste specifiche per ogni oggetto per personalizzare i risultati di GenAI in base a etichette specifiche.",
"label": "Richiesta di oggetto"
},
"objects": {
"label": "Oggetti GenAI",
"description": "Elenco delle etichette degli oggetti da inviare a GenAI per impostazione predefinita."
"description": "Elenco di etichette degli oggetti da inviare a GenAI per impostazione predefinita."
},
"required_zones": {
"label": "Zone obbligatorie",
"description": "Zone che devono essere inserite affinché gli oggetti possano essere utilizzati per la generazione di descrizioni tramite GenAI."
"label": "Zone richieste",
"description": "Zone che devono essere inserite affinché gli oggetti siano idonei alla generazione della descrizione GenAI."
},
"debug_save_thumbnails": {
"label": "Salva miniature",
"description": "Salva le miniature inviate a GenAI per il debug e la revisione."
"description": "Salva le miniature inviate a GenAI per la correzione e la revisione."
},
"send_triggers": {
"label": "Attivatori GenAI",
"description": "Definisce quando i frame devono essere inviati a GenAI (al termine, dopo gli aggiornamenti, ecc.).",
"label": "Attivazioni GenAI",
"description": "Definisce quando i fotogrammi devono essere inviati a GenAI (alla fine, dopo gli aggiornamenti, ecc.).",
"tracked_object_end": {
"label": "Invia alla fine",
"description": "Invia una richiesta a GenAI quando l'oggetto tracciato termina."
@@ -629,25 +725,60 @@
}
},
"timestamp_style": {
"label": "Stile orario"
"label": "Stile orario",
"description": "Opzioni di stile per i timestamp applicati alle istantanee e alla vista di Debug.",
"position": {
"label": "Posizione timestamp",
"description": "Posizione del timestamp sull'immagine (tl/tr/bl/br)."
},
"format": {
"label": "Formato timestamp",
"description": "Stringa di formato data/ora utilizzata per i timestamp (codici di formato datetime di Python)."
},
"color": {
"label": "Colore timestamp",
"description": "Valori di colore RGB per il testo del timestamp (tutti i valori da 0 a 255).",
"red": {
"label": "Rosso",
"description": "Componente rosso (0-255) per il colore del timestamp."
},
"green": {
"label": "Verde",
"description": "Componente verde (0-255) per il colore del timestamp."
},
"blue": {
"label": "Blu",
"description": "Componente blu (0-255) per il colore del timestamp."
}
},
"thickness": {
"label": "Spessore timestamp",
"description": "Spessore della linea del testo del timestamp."
},
"effect": {
"label": "Effetto timestamp",
"description": "Effetto visivo per il testo del timestamp (none, solid, shadow)."
}
},
"notifications": {
"label": "Notifiche",
"enabled": {
"label": "Abilita le notifiche"
"label": "Abilita le notifiche",
"description": "Abilita o disabilita le notifiche per questa telecamera."
},
"email": {
"label": "Email di notifica",
"description": "Indirizzo email utilizzato per le notifiche push o richiesto da alcuni fornitori di servizi di notifica."
},
"cooldown": {
"label": "Periodo di raffreddamento",
"label": "Tempo di attesa tra notifiche",
"description": "Tempo di attesa (in secondi) tra le notifiche per evitare di inviare spam ai destinatari."
},
"enabled_in_config": {
"label": "Stato delle notifiche originali",
"description": "Indica se le notifiche erano abilitate nella configurazione statica originale."
}
},
"description": "Impostazioni per abilitare e controllare le notifiche per questa telecamera."
},
"birdseye": {
"label": "Birdseye",
@@ -671,7 +802,7 @@
"label": "Attivatori",
"friendly_name": {
"label": "Nome descrittivo",
"description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo innesco."
"description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo attivatore."
},
"description": "Azioni e criteri di corrispondenza per gli attivatori della ricerca semantica specifici della telecamera.",
"enabled": {
@@ -720,17 +851,23 @@
"ui": {
"description": "Visualizza l'ordine e la visibilità di questa telecamera nell'interfaccia utente. L'ordine influisce sul cruscotto predefinito. Per un controllo più granulare, utilizza i gruppi di telecamere.",
"order": {
"description": "L'ordine numerico viene utilizzato per ordinare le telecamere nell'interfaccia utente (cruscotto ed elenchi predefiniti); i numeri più grandi compaiono successivamente."
"description": "L'ordine numerico viene utilizzato per ordinare le telecamere nell'interfaccia utente (cruscotto ed elenchi predefiniti); i numeri più grandi compaiono successivamente.",
"label": "Ordine interfaccia utente"
},
"dashboard": {
"label": "Mostra nell'interfaccia utente",
"description": "Abilita o disabilita la visualizzazione di questa telecamera in ogni punto dell'interfaccia utente di Frigate. Disabilitando questa opzione, sarà necessario modificare manualmente la configurazione per visualizzare nuovamente la telecamera nell'interfaccia utente."
},
"label": "Interfaccia utente telecamera"
"label": "Interfaccia utente telecamera",
"review": {
"label": "Mostra in revisione",
"description": "Abilita o disabilita la visibilità di questa telecamera nella sezione di revisione (la pagina di revisione e il relativo filtro telecamera, la revisione del movimento e la vista della cronologia)."
}
},
"zones": {
"enabled": {
"label": "Abilitata"
"label": "Abilitata",
"description": "Abilita o disabilita questa zona. Le zone disabilitate vengono ignorate durante l'esecuzione."
},
"label": "Zone",
"friendly_name": {
@@ -740,11 +877,81 @@
"filters": {
"raw_mask": {
"label": "Maschera grezza"
},
"label": "Filtri Zona",
"description": "Filtri da applicare agli oggetti all'interno di questa zona. Utilizzati per ridurre i falsi positivi o limitare quali oggetti sono considerati presenti nella zona.",
"min_area": {
"label": "Area minima oggetto",
"description": "Area minima del riquadro di delimitazione (in pixel o percentuale) richiesta per questo tipo di oggetto. Può essere in pixel (int) o in percentuale (float compreso tra 0.000001 e 0.99)."
},
"max_area": {
"label": "Area massima oggetto",
"description": "Area massima del riquadro di delimitazione (in pixel o percentuale) richiesta per questo tipo di oggetto. Può essere espressa in pixel (numero intero) o in percentuale (valore decimale compreso tra 0.000001 e 0.99)."
},
"min_ratio": {
"label": "Rapporto di aspetto minimo",
"description": "Rapporto minimo tra larghezza e altezza richiesto affinché il riquadro di delimitazione sia valido."
},
"max_ratio": {
"label": "Rapporto di aspetto massimo",
"description": "Rapporto massimo tra larghezza e altezza richiesto affinché il riquadro di delimitazione sia valido."
},
"threshold": {
"label": "Soglia di confidenza",
"description": "Soglia di confidenza media di rilevamento necessaria affinché l'oggetto sia considerato un vero positivo."
},
"min_score": {
"label": "Confidenza minima",
"description": "Livello minimo di confidenza nel rilevamento in un singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
},
"mask": {
"label": "Maschera filtro",
"description": "Coordinate del poligono che definiscono la posizione di applicazione di questo filtro all'interno dell'inquadratura."
}
},
"description": "Le zone consentono di definire un'area specifica dell'inquadratura per determinare se un oggetto si trova o meno all'interno di una particolare area.",
"enabled_in_config": {
"label": "Mantieni traccia dello stato originale della zona."
},
"coordinates": {
"label": "Coordinate",
"description": "Coordinate del poligono che definiscono l'area della zona. Può essere una stringa separata da virgole o un elenco di stringhe di coordinate. Le coordinate devono essere relative (0-1) o assolute (legacy)."
},
"distances": {
"label": "Distanze reali",
"description": "Distanze reali opzionali per ciascun lato del quadrilatero della zona, utilizzate per i calcoli di velocità o distanza. Deve avere esattamente 4 valori se impostato."
},
"inertia": {
"label": "Fotogrammi di inerzia",
"description": "Numero di fotogrammi consecutivi in cui un oggetto deve essere rilevato nella zona prima di essere considerato presente. Aiuta a filtrare i rilevamenti transitori."
},
"loitering_time": {
"label": "Secondi di stazionamento",
"description": "Numero di secondi per cui un oggetto deve rimanere nella zona per essere considerato in stazionamento nella stessa. Imposta a 0 per disabilitare il rilevamento dello stazionamento."
},
"speed_threshold": {
"label": "Velocità minima",
"description": "Velocità minima (in unità reali se le distanze sono impostate) richiesta affinché un oggetto sia considerato presente nella zona. Utilizzata per gli attivatori di zona basati sulla velocità."
},
"objects": {
"label": "Oggetti attivatori",
"description": "Elenco dei tipi di oggetto (dalla labelmap) che possono attivare questa zona. Può essere una stringa o un elenco di stringhe. Se vuoto, vengono considerati tutti gli oggetti."
}
},
"type": {
"description": "Tipo di telecamera",
"label": "Tipo di telecamera"
},
"best_image_timeout": {
"label": "Timeout immagine migliore",
"description": "Quanto tempo attendere per l'immagine con il punteggio di accuratezza più alto."
},
"webui_url": {
"label": "URL telecamera",
"description": "URL per visitare direttamente la telecamera dalla pagina di sistema"
},
"enabled_in_config": {
"label": "Stato telecamera originale",
"description": "Mantiene traccia dello stato originale della telecamera."
}
}
+334 -50
View File
@@ -99,6 +99,10 @@
"hash_iterations": {
"description": "Numero di iterazioni PBKDF2-SHA256 da utilizzare per criptare le password utente.",
"label": "Iterazioni di crittografia"
},
"admin_first_time_login": {
"label": "Flag primo accesso amministratore",
"description": "Quando impostato su true, l'interfaccia utente può mostrare un link di aiuto nella pagina di login per informare gli utenti su come accedere dopo un ripristino della password di amministratore. "
}
},
"ffmpeg": {
@@ -175,11 +179,17 @@
"label": "Numero di processi di rilevamento",
"description": "Il numero di processi utilizzati per l'inferenza basata sulla CPU."
},
"description": "Rilevatore CPU TFLite che esegue modelli TensorFlow Lite sulla CPU di sistema senza accelerazione hardware. Sconsigliato."
"description": "Rilevatore CPU TFLite che esegue modelli TensorFlow Lite sulla CPU di sistema senza accelerazione hardware. Sconsigliato.",
"label": "CPU"
},
"label": "Dispositivo di rilevamento",
"hailo8l": {
"description": "Rilevatore Hailo-8/Hailo-8L che utilizza modelli HEF e l'SDK HailoRT per l'inferenza sul dispositivo Hailo."
"description": "Rilevatore Hailo-8/Hailo-8L che utilizza modelli HEF e l'SDK HailoRT per l'inferenza sul dispositivo Hailo.",
"label": "Hailo-8/Hailo-8L",
"device": {
"label": "Tipo di dispositivo",
"description": "Il dispositivo da utilizzare per l'inferenza Hailo (ad es. 'PCIe', 'M.2')."
}
},
"openvino": {
"description": "Rilevatore OpenVINO per CPU AMD e Intel, GPU Intel e dispositivo Intel VPU."
@@ -192,6 +202,111 @@
},
"type": {
"label": "Tipo"
},
"description": "Configurazione per i rilevatori di oggetti (backend CPU, GPU, ONNX) e impostazioni del modello specifiche per il rilevatore.",
"model": {
"label": "Configurazione del modello specifica del rilevatore",
"description": "Opzioni di configurazione del modello specifiche del rilevatore (percorso, dimensioni di input, ecc.).",
"path": {
"label": "Percorso del modello di rilevamento oggetti personalizzato",
"description": "Percorso di un file del modello di rilevamento personalizzato (o plus://<model_id> per i modelli Frigate+)."
},
"labelmap_path": {
"label": "Mappa delle etichette (label map) per il rilevatore di oggetti personalizzato",
"description": "Percorso di un file labelmap che mappa le classi numeriche in etichette testuali per il rilevatore."
},
"width": {
"label": "Larghezza di input del modello di rilevamento oggetti",
"description": "Larghezza del tensore di input del modello in pixel."
},
"height": {
"label": "Altezza di input del modello di rilevamento oggetti",
"description": "Altezza del tensore di input del modello in pixel."
},
"labelmap": {
"label": "Personalizzazione labelmap",
"description": "Sostituzioni o voci di rimappatura da unire alla labelmap standard."
},
"attributes_map": {
"label": "Mappa delle etichette oggetto con le relative etichette di attributo",
"description": "Mappatura dalle etichette oggetto alle etichette di attributo utilizzata per allegare metadati (ad esempio 'car' -> ['license_plate'])."
},
"input_tensor": {
"label": "Forma del tensore di input del modello",
"description": "Formato del tensore richiesto dal modello: 'nhwc' o 'nchw'."
},
"input_pixel_format": {
"label": "Formato colore dei pixel di input del modello",
"description": "Spazio colore dei pixel richiesto dal modello: 'rgb', 'bgr' o 'yuv'."
},
"input_dtype": {
"label": "Tipo di dati di input del modello (Dtype)",
"description": "Tipo di dati del tensore di input del modello (ad esempio 'float32')."
},
"model_type": {
"label": "Tipo di modello di rilevamento oggetti",
"description": "Tipo di architettura del modello del rilevatore (ssd, yolox, yolonas) utilizzato da alcuni rilevatori per l'ottimizzazione."
}
},
"model_path": {
"label": "Percorso del modello specifico del rilevatore",
"description": "Percorso del file binario del modello del rilevatore, se richiesto dal rilevatore scelto."
},
"axengine": {
"label": "NPU AXEngine",
"description": "Rilevatore NPU AXERA AX650N/AX8850N che esegue file .axmodel compilati tramite il runtime AXEngine."
},
"deepstack": {
"label": "DeepStack",
"description": "Rilevatore DeepStack/CodeProject.AI che invia immagini a una API HTTP DeepStack remota per l'inferenza. Non consigliato.",
"api_url": {
"label": "URL API DeepStack",
"description": "L'URL delle API DeepStack."
},
"api_timeout": {
"label": "Timeout API DeepStack (in secondi)",
"description": "Tempo massimo consentito per una richiesta alle API DeepStack."
},
"api_key": {
"label": "Chiave API DeepStack (se richiesta)",
"description": "Chiave API opzionale per i servizi DeepStack autenticati."
}
},
"degirum": {
"label": "DeGirum",
"description": "Rilevatore DeGirum per l'esecuzione di modelli tramite il cloud DeGirum o servizi di inferenza locali.",
"zoo": {
"label": "Model Zoo",
"description": "Percorso o URL del model zoo di DeGirum."
},
"token": {
"label": "Token Cloud DeGirum",
"description": "Token per l'accesso al Cloud DeGirum."
}
},
"edgetpu": {
"label": "EdgeTPU",
"description": "Rilevatore EdgeTPU che esegue modelli TensorFlow Lite compilati per Coral EdgeTPU utilizzando il delegate EdgeTPU.",
"device": {
"label": "Tipo di dispositivo",
"description": "Il dispositivo da utilizzare per l'inferenza EdgeTPU (ad es. 'usb', 'pci')."
}
},
"memryx": {
"label": "MemryX",
"description": "Rilevatore MemryX MX3 che esegue modelli DFP compilati su acceleratori MemryX.",
"device": {
"label": "Percorso del dispositivo",
"description": "Il dispositivo da utilizzare per l'inferenza MemryX (ad es. 'PCIe')."
}
},
"onnx": {
"label": "ONNX",
"description": "Rilevatore ONNX per l'esecuzione di modelli ONNX; utilizzerà i backend di accelerazione disponibili (CUDA/ROCm/OpenVINO) quando presenti.",
"device": {
"label": "Tipo di dispositivo",
"description": "Il dispositivo da utilizzare per l'inferenza ONNX (ad es. 'AUTO', 'CPU', 'GPU')."
}
}
},
"audio_transcription": {
@@ -266,49 +381,78 @@
},
"onvif": {
"tls_insecure": {
"label": "Disabilita verifica TLS"
"label": "Disabilita verifica TLS",
"description": "Salta la verifica TLS e disabilita l'autenticazione digest per ONVIF (non sicuro; utilizzare solo in reti sicure)."
},
"profile": {
"label": "Profilo ONVIF"
"label": "Profilo ONVIF",
"description": "Profilo multimediale ONVIF specifico da utilizzare per il controllo PTZ, identificato tramite token o nome. Se non impostato, viene selezionato automaticamente il primo profilo con una configurazione PTZ valida."
},
"autotracking": {
"label": "Tracciamento automatico",
"enabled": {
"label": "Abilita il tracciamento automatico"
"label": "Abilita il tracciamento automatico",
"description": "Abilita o disabilita il tracciamento automatico della telecamera PTZ per gli oggetti rilevati."
},
"calibrate_on_startup": {
"label": "Calibra all'avvio"
"label": "Calibra all'avvio",
"description": "Misura la velocità dei motori PTZ all'avvio per migliorare la precisione del tracciamento. Frigate aggiornerà la configurazione con i valori di movement_weights dopo la calibrazione."
},
"zooming": {
"label": "Modalità ingrandimento"
"label": "Modalità ingrandimento",
"description": "Controlla il comportamento dello zoom: disabled (solo pan/tilt), absolute (più compatibile) o relative (pan/tilt/zoom simultanei)."
},
"zoom_factor": {
"label": "Fattore di ingrandimento"
"label": "Fattore di ingrandimento",
"description": "Controlla il livello di zoom sugli oggetti tracciati. Valori più bassi mantengono una porzione maggiore della scena visibile; valori più alti aumentano lo zoom ma potrebbero far perdere il tracciamento. Valori compresi tra 0.1 e 0.75."
},
"track": {
"label": "Oggetti tracciati",
"description": "Elenco dei tipi di oggetto che dovrebbero attivare il tracciamento automatico."
},
"required_zones": {
"label": "Zone richieste"
"label": "Zone richieste",
"description": "Gli oggetti devono entrare in una di queste zone prima che inizi il tracciamento automatico."
},
"timeout": {
"label": "Scadenza di ritorno",
"description": "Attendi questo numero di secondi dopo aver perso il tracciamento prima di riportare la telecamera nella posizione preimpostata."
},
"movement_weights": {
"description": "Valori di calibrazione generati automaticamente dalla calibrazione della telecamera. Non modificare manualmente."
"description": "Valori di calibrazione generati automaticamente dalla calibrazione della telecamera. Non modificare manualmente.",
"label": "Pesi del movimento"
},
"enabled_in_config": {
"label": "Stato originale del tracciamento automatico"
"label": "Stato originale del tracciamento automatico",
"description": "Campo interno per tracciare se il tracciamento automatico era abilitato nella configurazione."
},
"description": "Traccia automaticamente gli oggetti in movimento e li mantiene centrati nell'inquadratura utilizzando i movimenti della telecamera PTZ.",
"return_preset": {
"label": "Preset di ritorno",
"description": "Nome del preset ONVIF configurato nel firmware della telecamera a cui ritornare al termine del tracciamento."
}
},
"ignore_time_mismatch": {
"label": "Ignora la discrepanza oraria"
"label": "Ignora la discrepanza oraria",
"description": "Ignora le differenze di sincronizzazione oraria tra la telecamera e il server Frigate per la comunicazione ONVIF."
},
"label": "ONVIF",
"port": {
"label": "Porta ONVIF"
"label": "Porta ONVIF",
"description": "Numero di porta per il servizio ONVIF."
},
"description": "Impostazioni della connessione ONVIF e del tracciamento automatico PTZ per questa telecamera.",
"host": {
"label": "Host ONVIF",
"description": "Host (e schema opzionale) per il servizio ONVIF di questa telecamera."
},
"user": {
"label": "Nome utente ONVIF",
"description": "Nome utente per l'autenticazione ONVIF; alcuni dispositivi richiedono un utente amministratore per l'ONVIF."
},
"password": {
"label": "Password ONVIF",
"description": "Password per l'autenticazione ONVIF."
}
},
"detect": {
@@ -413,7 +557,11 @@
},
"default_role": {
"label": "Ruolo predefinito",
"description": "Ruolo predefinito assegnato agli utenti autenticati tramite proxy quando non si applica alcuna mappatura dei ruoli (amministratore o visualizzatore)."
"description": "Ruolo predefinito assegnato agli utenti autenticati tramite proxy quando non si applica nessuna mappatura dei ruoli."
},
"separator": {
"label": "Carattere separatore",
"description": "Carattere utilizzato per separare valori multipli forniti negli header del proxy."
}
},
"review": {
@@ -507,7 +655,19 @@
},
"ui": {
"label": "Interfaccia utente",
"description": "Preferenze dell'interfaccia utente come fuso orario, formato di data/ora e unità di misura."
"description": "Preferenze dell'interfaccia utente come fuso orario, formato di data/ora e unità di misura.",
"timezone": {
"label": "Fuso orario",
"description": "Fuso orario opzionale da visualizzare nell'interfaccia utente (se non impostato, viene usata l'ora locale del browser)."
},
"time_format": {
"label": "Formato Ora",
"description": "Formato dell'ora da utilizzare nell'interfaccia utente (browser, 12 ore o 24 ore)."
},
"unit_system": {
"label": "Sistema di unità di misura",
"description": "Sistema di unità di misura per la visualizzazione (metrico o imperiale) utilizzato nell'interfaccia utente e nei messaggi MQTT."
}
},
"profiles": {
"label": "Profili",
@@ -532,17 +692,18 @@
}
},
"enabled": {
"label": "Abilita Registrazione"
"label": "Abilita registrazione",
"description": "Attiva o disattiva la registrazione per tutte le telecamere; l'impostazione può essere modificata per ogni singola telecamera."
},
"expire_interval": {
"label": "Intervallo pulizia registrazioni",
"label": "Intervallo di pulizia registrazioni",
"description": "Minuti tra i cicli di pulizia che rimuovono i segmenti di registrazione scaduti."
},
"continuous": {
"label": "Conservazione continua",
"description": "Numero di giorni per cui conservare le registrazioni, indipendentemente dagli oggetti tracciati o dal movimento. Impostare su 0 se si desidera conservare solo le registrazioni relative agli avvisi e ai rilevamenti.",
"days": {
"label": "Giorni di Conservazione",
"label": "Giorni di conservazione",
"description": "Numero di giorni di conservazione delle registrazioni."
}
},
@@ -550,7 +711,7 @@
"label": "Conservazione movimento",
"description": "Numero di giorni per cui conservare le registrazioni attivate dal movimento, indipendentemente dagli oggetti tracciati. Impostare su 0 se si desidera conservare solo le registrazioni relative ad allarmi e rilevamenti.",
"days": {
"label": "Giorni di Conservazione",
"label": "Giorni di conservazione",
"description": "Numero di giorni di conservazione delle registrazioni."
}
},
@@ -558,12 +719,12 @@
"label": "Conservazione rilevamento",
"description": "Impostazioni relative alla conservazione delle registrazioni per gli eventi di rilevamento, comprese le durate prima e dopo l'acquisizione.",
"pre_capture": {
"label": "Secondi di pre-acquisizione",
"description": "Numero di secondi precedenti l'evento di rilevamento da includere nella registrazione."
"label": "Secondi prima della cattura",
"description": "Numero di secondi precedenti all'evento di rilevamento da includere nella registrazione."
},
"post_capture": {
"label": "Secondi di post-acquisizione",
"description": "Numero di secondi successivi l'evento di rilevamento da includere nella registrazione."
"label": "Secondi dopo la cattura",
"description": "Numero di secondi successivi all'evento di rilevamento da includere nella registrazione."
},
"retain": {
"label": "Conservazione eventi",
@@ -580,13 +741,13 @@
},
"alerts": {
"label": "Conservazione avvisi",
"description": "Impostazioni di conservazione delle registrazioni per gli eventi di avviso, incluse le durate di pre e post-acquisizione.",
"description": "Impostazioni di conservazione delle registrazioni per gli eventi di avviso, incluse le durate prima e dopo la cattura.",
"pre_capture": {
"label": "Secondi di pre-acquisizione",
"description": "Numero di secondi antecedenti all'evento di rilevamento da includere nella registrazione."
"label": "Secondi prima della cattura",
"description": "Numero di secondi precedenti all'evento di rilevamento da includere nella registrazione."
},
"post_capture": {
"label": "Secondi di post-acquisizione",
"label": "Secondi dopo la cattura",
"description": "Numero di secondi successivi all'evento di rilevamento da includere nella registrazione."
},
"retain": {
@@ -613,7 +774,8 @@
"enabled_in_config": {
"label": "Stato registrazione originale",
"description": "Indica se la registrazione era abilitata nella configurazione statica originale."
}
},
"description": "Impostazioni di registrazione e conservazione vengono applicate alle telecamere a meno che non vengano modificate singolarmente per ciascuna telecamera."
},
"snapshots": {
"label": "Istantanee",
@@ -625,7 +787,40 @@
"description": "Sovraimprime un timestamp sulle istantanee provenienti dalle API."
},
"bounding_box": {
"label": "Sovrimpressione riquadro di delimitazione"
"label": "Sovrimpressione riquadro di delimitazione",
"description": "Disegna i riquadri di delimitazione per gli oggetti tracciati sulle istantanee provenienti dalle API."
},
"crop": {
"label": "Ritaglia istantanea",
"description": "Ritaglia le istantanee provenienti dalle API in base al riquadro di delimitazione dell'oggetto rilevato."
},
"required_zones": {
"label": "Zone richieste",
"description": "Zone in cui un oggetto deve entrare affinché venga salvata un'istantanea."
},
"height": {
"label": "Altezza istantanea",
"description": "Altezza (in pixel) a cui ridimensionare le istantanee provenienti dalle API; lascia vuoto per mantenere la dimensione originale."
},
"retain": {
"label": "Conservazione istantanee",
"description": "Impostazioni di conservazione per le istantanee, inclusi i giorni predefiniti e le eccezioni per singolo oggetto.",
"default": {
"label": "Conservazione predefinita",
"description": "Numero predefinito di giorni per cui conservare le istantanee."
},
"mode": {
"label": "Modalità di conservazione",
"description": "Modalità di conservazione: tutti (salva tutti i segmenti), movimento (salva i segmenti con movimento) o oggetti_attivi (salva i segmenti con oggetti attivi)."
},
"objects": {
"label": "Conservazione oggetti",
"description": "Eccezioni per singolo oggetto relativi ai giorni di conservazione delle istantanee."
}
},
"quality": {
"label": "Qualità istantanee",
"description": "Qualità di codifica per le istantanee salvate (0-100)."
}
},
"motion": {
@@ -654,10 +849,12 @@
"description": "Se impostato su un valore compreso tra 0.0 e 110, e se in un singolo fotogramma cambia una porzione dell'immagine superiore a tale frazione, il rilevatore non restituirà alcun riquadro di movimento e si ricalibrerà immediatamente. Ciò consente di risparmiare risorse della CPU e ridurre i falsi positivi in caso di fulmini, temporali, ecc., ma potrebbe comportare la mancata rilevazione di eventi reali, come ad esempio il tracciamento automatico di un oggetto da parte di una telecamera PTZ. Il compromesso consiste nel scegliere se sacrificare alcuni megabyte di registrazioni o rivedere un paio di brevi video. Lasciare non impostato (Nessuno) per disabilitare questa funzione."
},
"delta_alpha": {
"description": "Fattore di fusione alfa utilizzato nel calcolo della differenza tra fotogrammi per il calcolo del movimento."
"description": "Fattore di fusione alfa utilizzato nel calcolo della differenza tra fotogrammi per il calcolo del movimento.",
"label": "Delta alfa"
},
"frame_alpha": {
"description": "Valore alfa utilizzato durante la fusione dei fotogrammi per la preelaborazione del movimento."
"description": "Valore alfa utilizzato durante la fusione dei fotogrammi per la preelaborazione del movimento.",
"label": "Frame alfa"
},
"frame_height": {
"label": "Altezza del frame",
@@ -672,7 +869,8 @@
"description": "Secondi di attesa dopo l'ultimo movimento prima di pubblicare uno stato 'off' MQTT."
},
"enabled_in_config": {
"description": "Indica se il rilevamento del movimento era abilitato nella configurazione statica originale."
"description": "Indica se il rilevamento del movimento era abilitato nella configurazione statica originale.",
"label": "Stato movimento originale"
},
"raw_mask": {
"label": "Maschera grezza"
@@ -710,11 +908,11 @@
},
"min_score": {
"label": "Confidenza minima",
"description": "Livello minimo di confidenza del rilevamento per singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
"description": "Livello minimo di confidenza nel rilevamento in un singolo fotogramma richiesto affinché l'oggetto venga conteggiato."
},
"mask": {
"label": "Maschera filtro",
"description": "Coordinate del poligono che definisce l'area all'interno dell'inquadratura in cui si applica questo filtro."
"description": "Coordinate del poligono che definiscono la posizione di applicazione di questo filtro all'interno dell'inquadratura."
},
"raw_mask": {
"label": "Maschera grezza"
@@ -722,40 +920,42 @@
},
"mask": {
"label": "Maschera oggetto",
"description": "Poligono di maschera utilizzato per impedire il rilevamento di oggetti in aree specificate."
"description": "Poligono di mascheramento utilizzato per impedire il rilevamento di oggetti in aree specifiche."
},
"genai": {
"label": "Configurazione degli oggetti GenAI",
"description": "Opzioni GenAI per la descrizione degli oggetti tracciati e l'invio dei fotogrammi per la generazione.",
"enabled": {
"label": "Abilita GenAI",
"description": "Abilita di default la generazione tramite GenAI delle descrizioni degli oggetti monitorati."
"description": "Abilita in modo predefinito la generazione di descrizioni da parte di GenAI per gli oggetti tracciati."
},
"use_snapshot": {
"label": "Usa istantanee",
"label": "Utilizza istantanee",
"description": "Utilizza le istantanee degli oggetti anziché le miniature per la generazione di descrizioni con GenAI."
},
"prompt": {
"description": "Modello di prompt predefinito utilizzato per la generazione di descrizioni con GenAI."
"description": "Modello di richiesta predefinito utilizzato per la generazione di descrizioni con GenAI.",
"label": "Richiesta di didascalia"
},
"object_prompts": {
"description": "Prompt specifici per ogni oggetto per personalizzare i risultati di GenAI in base a etichette specifiche."
"description": "Richieste specifiche per ogni oggetto per personalizzare i risultati di GenAI in base a etichette specifiche.",
"label": "Richiesta di oggetto"
},
"objects": {
"label": "Oggetti GenAI",
"description": "Elenco delle etichette degli oggetti da inviare a GenAI per impostazione predefinita."
"description": "Elenco di etichette degli oggetti da inviare a GenAI per impostazione predefinita."
},
"required_zones": {
"label": "Zone obbligatorie",
"description": "Zone che devono essere inserite affinché gli oggetti possano essere utilizzati per la generazione di descrizioni tramite GenAI."
"label": "Zone richieste",
"description": "Zone che devono essere inserite affinché gli oggetti siano idonei alla generazione della descrizione GenAI."
},
"debug_save_thumbnails": {
"label": "Salva miniature",
"description": "Salva le miniature inviate a GenAI per il debug e la revisione."
"description": "Salva le miniature inviate a GenAI per la correzione e la revisione."
},
"send_triggers": {
"label": "Attivatori GenAI",
"description": "Definisce quando i frame devono essere inviati a GenAI (al termine, dopo gli aggiornamenti, ecc.).",
"label": "Attivazioni GenAI",
"description": "Definisce quando i fotogrammi devono essere inviati a GenAI (alla fine, dopo gli aggiornamenti, ecc.).",
"tracked_object_end": {
"label": "Invia alla fine",
"description": "Invia una richiesta a GenAI quando l'oggetto tracciato termina."
@@ -776,6 +976,24 @@
"filters_attribute": {
"raw_mask": {
"label": "Maschera grezza"
},
"min_ratio": {
"label": "Rapporto di aspetto minimo",
"description": "Rapporto minimo tra larghezza e altezza richiesto affinché il riquadro di delimitazione sia valido."
},
"max_ratio": {
"label": "Rapporto di aspetto massimo",
"description": "Rapporto massimo tra larghezza e altezza richiesto affinché il riquadro di delimitazione sia valido."
},
"threshold": {
"label": "Soglia di confidenza"
},
"min_score": {
"label": "Confidenza minima"
},
"mask": {
"label": "Maschera filtro",
"description": "Coordinate del poligono che definiscono la posizione di applicazione di questo filtro all'interno dell'inquadratura."
}
}
},
@@ -795,7 +1013,39 @@
}
},
"timestamp_style": {
"label": "Stile orario"
"label": "Stile orario",
"position": {
"label": "Posizione timestamp",
"description": "Posizione del timestamp sull'immagine (tl/tr/bl/br)."
},
"format": {
"label": "Formato timestamp",
"description": "Stringa di formato data/ora utilizzata per i timestamp (codici di formato datetime di Python)."
},
"color": {
"label": "Colore timestamp",
"description": "Valori di colore RGB per il testo del timestamp (tutti i valori da 0 a 255).",
"red": {
"label": "Rosso",
"description": "Componente rosso (0-255) per il colore del timestamp."
},
"green": {
"label": "Verde",
"description": "Componente verde (0-255) per il colore del timestamp."
},
"blue": {
"label": "Blu",
"description": "Componente blu (0-255) per il colore del timestamp."
}
},
"thickness": {
"label": "Spessore timestamp",
"description": "Spessore della linea del testo del timestamp."
},
"effect": {
"label": "Effetto timestamp",
"description": "Effetto visivo per il testo del timestamp (none, solid, shadow)."
}
},
"database": {
"label": "Database",
@@ -824,7 +1074,7 @@
"description": "Indirizzo email utilizzato per le notifiche push o richiesto da alcuni fornitori di servizi di notifica."
},
"cooldown": {
"label": "Periodo di raffreddamento",
"label": "Tempo di attesa tra notifiche",
"description": "Tempo di attesa (in secondi) tra le notifiche per evitare di inviare spam ai destinatari."
},
"enabled_in_config": {
@@ -857,10 +1107,44 @@
}
},
"tls": {
"label": "TLS"
"label": "TLS",
"description": "Impostazioni TLS per gli endpoint web di Frigate (porta 8971).",
"enabled": {
"label": "Abilita TLS",
"description": "Abilita il protocollo TLS per l'interfaccia utente web e le API di Frigate sulla porta TLS configurata."
}
},
"telemetry": {
"label": "Telemetria"
"label": "Telemetria",
"description": "Opzioni di telemetria e statistiche di sistema, incluso il monitoraggio della GPU e della larghezza di banda di rete.",
"network_interfaces": {
"label": "Interfacce di rete",
"description": "Elenco dei prefissi dei nomi delle interfacce di rete da monitorare per le statistiche sulla larghezza di banda."
},
"stats": {
"label": "Statistiche di sistema",
"description": "Opzioni per abilitare/disabilitare la raccolta di varie statistiche di sistema e della GPU.",
"amd_gpu_stats": {
"label": "Statistiche GPU AMD",
"description": "Abilita la raccolta delle statistiche della GPU AMD, se presente una GPU AMD."
},
"intel_gpu_stats": {
"label": "Statistiche GPU Intel",
"description": "Abilita la raccolta delle statistiche della GPU Intel, se presente una GPU Intel."
},
"network_bandwidth": {
"label": "Larghezza di banda di rete",
"description": "Abilita il monitoraggio della larghezza di banda di rete per singolo processo per i processi ffmpeg della telecamera e per i rilevatori (richiede capability specifiche)."
},
"intel_gpu_device": {
"label": "Dispositivo GPU Intel",
"description": "Indirizzo bus PCI o percorso del dispositivo DRM (es. /dev/dri/card1) utilizzato per associare le statistiche della GPU Intel a un dispositivo specifico quando ne sono presenti molteplici."
}
},
"version_check": {
"label": "Controllo versione",
"description": "Abilita un controllo in uscita per rilevare se è disponibile una versione più recente di Frigate."
}
},
"birdseye": {
"label": "Birdseye",
@@ -887,7 +1171,7 @@
"label": "Attivatori",
"friendly_name": {
"label": "Nome descrittivo",
"description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo innesco."
"description": "Nome descrittivo opzionale visualizzato nell'interfaccia utente per questo attivatore."
},
"description": "Azioni e criteri di corrispondenza per gli attivatori della ricerca semantica specifici della telecamera.",
"enabled": {
+2 -2
View File
@@ -202,8 +202,8 @@
"aria": "Invia a Frigate Plus"
},
"addTrigger": {
"label": "Aggiungi innesco",
"aria": "Aggiungi un innesco per questo oggetto tracciato"
"label": "Aggiungi attivatore",
"aria": "Aggiungi un attivatore per questo oggetto tracciato"
},
"audioTranscription": {
"label": "Trascrivere",
+1 -1
View File
@@ -9,7 +9,7 @@
"disable": "Disabilita audio bidirezionale"
},
"snapshots": {
"enable": "Abilita istantanee",
"enable": "Abilita Istantanee",
"disable": "Disabilita istantanee"
},
"manualRecording": {
+37 -37
View File
@@ -212,7 +212,7 @@
"type": {
"zone": "zona",
"motion_mask": "maschera di movimento",
"object_mask": "maschera di oggetto"
"object_mask": "maschera oggetto"
},
"revertOverride": {
"title": "Ripristina la configurazione di base",
@@ -447,7 +447,7 @@
"users": "Utenti",
"frigateplus": "Frigate+",
"enrichments": "Miglioramenti",
"triggers": "Inneschi",
"triggers": "Attivatori",
"roles": "Ruoli",
"cameraManagement": "Gestione della telecamera",
"cameraReview": "Revisiona",
@@ -896,22 +896,22 @@
"restart_required": "Riavvio richiesto (impostazioni di miglioramento modificate)"
},
"triggers": {
"documentTitle": "Inneschi",
"documentTitle": "Attivatori",
"management": {
"title": "Inneschi",
"desc": "Gestisci gli inneschi per {{camera}}. Utilizza il tipo miniatura per attivare miniature simili all'oggetto tracciato selezionato e il tipo descrizione per attivare descrizioni simili al testo specificato."
"title": "Attivatori",
"desc": "Gestisci gli attivatori per {{camera}}. Utilizza il tipo miniatura per attivare miniature simili all'oggetto tracciato selezionato e il tipo descrizione per attivare descrizioni simili al testo specificato."
},
"addTrigger": "Aggiungi innesco",
"addTrigger": "Aggiungi attivatore",
"table": {
"name": "Nome",
"type": "Tipo",
"content": "Contenuto",
"threshold": "Soglia",
"actions": "Azioni",
"noTriggers": "Nessun innesco configurato per questa telecamera.",
"noTriggers": "Nessun attivatore configurato per questa telecamera.",
"edit": "Modifica",
"deleteTrigger": "Elimina innesco",
"lastTriggered": "Ultimo innesco"
"deleteTrigger": "Elimina attivatore",
"lastTriggered": "Ultimo attivatore"
},
"type": {
"thumbnail": "Miniatura",
@@ -925,34 +925,34 @@
},
"dialog": {
"createTrigger": {
"title": "Crea innesco",
"desc": "Crea un innesco per la telecamera {{camera}}"
"title": "Crea attivatore",
"desc": "Crea un attivatore per la telecamera {{camera}}"
},
"editTrigger": {
"title": "Modifica innesco",
"desc": "Modifica le impostazioni per l'innesco della telecamera {{camera}}"
"title": "Modifica attivatore",
"desc": "Modifica le impostazioni per l'attivatore della telecamera {{camera}}"
},
"deleteTrigger": {
"title": "Elimina innesco",
"desc": "Vuoi davvero eliminare l'innesco <strong>{{triggerName}}</strong>? Questa azione non può essere annullata."
"title": "Elimina attivatore",
"desc": "Vuoi davvero eliminare l'attivatore <strong>{{triggerName}}</strong>? Questa azione non può essere annullata."
},
"form": {
"name": {
"title": "Nome",
"placeholder": "Assegna un nome a questo innesco",
"placeholder": "Assegna un nome a questo attivatore",
"error": {
"minLength": "Il campo deve contenere almeno 2 caratteri.",
"invalidCharacters": "Il campo può contenere solo lettere, numeri, caratteri di sottolineatura e trattini.",
"alreadyExists": "Per questa telecamera esiste già un innesco con questo nome."
"alreadyExists": "Per questa telecamera esiste già un attivatore con questo nome."
},
"description": "Inserisci un nome o una descrizione univoca per identificare questo innesco"
"description": "Inserisci un nome o una descrizione univoca per identificare questo attivatore"
},
"enabled": {
"description": "Abilita o disabilita questo innesco"
"description": "Abilita o disabilita questo attivatore"
},
"type": {
"title": "Tipo",
"placeholder": "Seleziona il tipo di innesco",
"placeholder": "Seleziona il tipo di attivatore",
"description": "Si attiva quando viene rilevata una descrizione di un oggetto simile tracciato",
"thumbnail": "Attiva quando viene rilevata una miniatura di un oggetto simile tracciato"
},
@@ -960,7 +960,7 @@
"title": "Contenuto",
"imagePlaceholder": "Seleziona una miniatura",
"textPlaceholder": "Inserisci il contenuto del testo",
"imageDesc": "Vengono visualizzate solo le 100 miniature più recenti. Se non riesci a trovare la miniatura desiderata, controlla gli oggetti precedenti in Esplora e imposta un innesco dal menu.",
"imageDesc": "Vengono visualizzate solo le 100 miniature più recenti. Se non riesci a trovare la miniatura desiderata, controlla gli oggetti precedenti in Esplora e imposta un attivatore dal menu.",
"textDesc": "Inserisci il testo per attivare questa azione quando viene rilevata una descrizione simile dell'oggetto tracciato.",
"error": {
"required": "Il contenuto è obbligatorio."
@@ -972,11 +972,11 @@
"min": "La soglia deve essere almeno 0",
"max": "La soglia deve essere al massimo 1"
},
"desc": "Imposta la soglia di similarità per questo innesco. Una soglia più alta indica che è necessaria una corrispondenza più vicina per attivare l'innesco."
"desc": "Imposta la soglia di similarità per questo attivatore. Una soglia più alta indica che è necessaria una corrispondenza più vicina per attivare l'attivatore."
},
"actions": {
"title": "Azioni",
"desc": "Per impostazione predefinita, Frigate invia un messaggio MQTT per tutti gli inneschi. Le sottoetichette aggiungono il nome dell'innesco all'etichetta dell'oggetto. Gli attributi sono metadati ricercabili, memorizzati separatamente nei metadati dell'oggetto tracciato.",
"desc": "Per impostazione predefinita, Frigate invia un messaggio MQTT per tutti gli attivatori. Le sottoetichette aggiungono il nome dell'attivatore all'etichetta dell'oggetto. Gli attributi sono metadati ricercabili, memorizzati separatamente nei metadati dell'oggetto tracciato.",
"error": {
"min": "È necessario selezionare almeno un'azione."
}
@@ -990,30 +990,30 @@
},
"toast": {
"success": {
"createTrigger": "L'innesco {{name}} è stato creato correttamente.",
"updateTrigger": "L'innesco {{name}} è stato aggiornato correttamente.",
"deleteTrigger": "L'innesco {{name}} è stato eliminato correttamente."
"createTrigger": "L'attivatore {{name}} è stato creato correttamente.",
"updateTrigger": "L'attivatore {{name}} è stato aggiornato correttamente.",
"deleteTrigger": "L'attivatore {{name}} è stato eliminato correttamente."
},
"error": {
"createTriggerFailed": "Impossibile creare l'innesco: {{errorMessage}}",
"updateTriggerFailed": "Impossibile aggiornare l'innesco: {{errorMessage}}",
"deleteTriggerFailed": "Impossibile eliminare l'innesco: {{errorMessage}}"
"createTriggerFailed": "Impossibile creare l'attivatore: {{errorMessage}}",
"updateTriggerFailed": "Impossibile aggiornare l'attivatore: {{errorMessage}}",
"deleteTriggerFailed": "Impossibile eliminare l'attivatore: {{errorMessage}}"
}
},
"semanticSearch": {
"title": "La ricerca semantica è disabilitata",
"desc": "Per utilizzare gli inneschi, è necessario abilitare la ricerca semantica."
"desc": "Per utilizzare gli attivatori, è necessario abilitare la ricerca semantica."
},
"wizard": {
"title": "Crea innesco",
"title": "Crea attivatore",
"step1": {
"description": "Configura le impostazioni di base per il tuo innesco."
"description": "Configura le impostazioni di base per il tuo attivatore."
},
"step2": {
"description": "Imposta il contenuto che attiverà questa azione."
},
"step3": {
"description": "Configura la soglia e le azioni per questo innesco."
"description": "Configura la soglia e le azioni per questo attivatore."
},
"steps": {
"nameAndType": "Nome e tipo",
@@ -2030,10 +2030,10 @@
"desc": "La griglia di regioni è un algoritmo di ottimizzazione che apprende dove gli oggetti di diverse dimensioni appaiono tipicamente nel campo visivo di ciascuna telecamera. Frigate utilizza questi dati per dimensionare in modo efficiente le regioni di rilevamento. La griglia viene creata automaticamente nel tempo a partire dai dati degli oggetti tracciati.",
"clear": "Pulisci griglia di regioni",
"clearConfirmTitle": "Pulisci griglia di regioni",
"clearConfirmDesc": "La pulizia della griglia di regioni non è consigliata a meno che non si sia recentemente modificato il modello del rilevatore o la posizione fisica della telecamera, riscontrando problemi di tracciamento degli oggetti. La griglia verrà ricostruita automaticamente nel tempo man mano che gli oggetti vengono tracciati. Per rendere effettive le modifiche è necessario riavviare Frigate.",
"clearSuccess": "Griglia di regioni pulita con successo",
"clearError": "Impossibile pulire la griglia di regioni",
"restartRequired": "È necessario riavviare il sistema affinché le modifiche alla griglia di regioni abbiano effetto"
"clearConfirmDesc": "La pulizia della griglia delle regioni non è consigliata, a meno che non sia stata modificata di recente la dimensione del modello del rilevatore, oppure sia stata cambiata la posizione fisica della telecamera e si riscontrino problemi di tracciamento degli oggetti. La griglia verrà ricostruita automaticamente nel tempo man mano che gli oggetti vengono tracciati. È richiesto un riavvio di Frigate affinché le modifiche abbiano effetto.",
"clearSuccess": "Griglia delle regioni pulita con successo",
"clearError": "Impossibile pulire la griglia delle regioni",
"restartRequired": "È necessario riavviare il sistema affinché le modifiche alla griglia delle regioni abbiano effetto"
}
},
"retainMode": {
+6 -2
View File
@@ -217,7 +217,8 @@
"id": "Bahasa Indonesia (Indonesisk)",
"ur": "اردو (Urdu)",
"hr": "Hrvatski (Kroatisk)",
"bs": "Bosanski (Bosnisk)"
"bs": "Bosanski (Bosnisk)",
"zhHant": "繁體中文 (Tradisjonell kinesisk)"
},
"appearance": "Utseende",
"darkMode": {
@@ -326,5 +327,8 @@
"separatorWithSpace": ", "
},
"validation_errors": "Valideringsfeil",
"no_items": "Ingen elementer"
"no_items": "Ingen elementer",
"credentialField": {
"savedPlaceholder": "Lagret – la stå tomt for å beholde gjeldende"
}
}
@@ -68,7 +68,10 @@
"desc": "Velg kameraer for denne gruppen."
},
"icon": "Ikon",
"success": "Kameragruppen ({{name}}) er lagret."
"success": "Kameragruppen ({{name}}) er lagret.",
"showAll": "Vis alle kameragrupper",
"showLess": "Vis mindre",
"editGroups": "Rediger kameragrupper"
},
"debug": {
"options": {
@@ -34,6 +34,9 @@
"ask_an": "Er dette objekt en <code>{{label}}</code>?",
"ask_a": "Er dette objektet en <code>{{label}}</code>?",
"ask_full": "Er dette objekt en <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"toast": {
"error": "Kunne ikke sende til Frigate+. Vennligst sjekk nettverksforbindelsen din og prøv igjen."
}
}
},
@@ -112,7 +115,14 @@
"detectionCount_one": "1 sporet objekt",
"detectionCount_other": "{{count}} sporede objekter",
"exportButton_one": "Eksporter 1 kamera",
"exportButton_other": "Eksporter {{count}} kameraer"
"exportButton_other": "Eksporter {{count}} kameraer",
"searchOrSelectGroup": "Søk, eller velg en kameragruppe...",
"selectAll": "Velg alle kameraer",
"clearSelection": "Nullstill valg",
"selectWithActivity": "Kameraer med sporede objekter",
"selectGroup": "Velg gruppe",
"noMatchingCameras": "Ingen kameraer samsvarer med søket ditt",
"selectedCount": "{{selected}} / {{total}} valgt"
},
"multi": {
"description": "Eksporter hver valgte inspeksjon. Alle eksporter vil bli gruppert under én sak.",
@@ -48,5 +48,6 @@
"error": {
"submitFrigatePlusFailed": "Kunne ikke sende bildet til Frigate+"
}
}
},
"cameraOff": "Kameraet er av"
}
+11 -4
View File
@@ -67,7 +67,7 @@
},
"listen": {
"label": "Lyttetyper",
"description": "Liste over typer lydhendelser som skal detekteres (f.eks. bjeff, brannalarm, skrik, tale, rop)."
"description": "Liste over typer lydhendelser som skal detekteres (f.eks. bjeff, brannalarm, tale, rop)."
},
"filters": {
"label": "Lydfiltre",
@@ -164,11 +164,11 @@
}
},
"ffmpeg": {
"label": "FFmpeg",
"label": "Strømmer (FFmpeg)",
"description": "FFmpeg-innstillinger, inkludert sti til binærfil, argumenter, alternativer for maskinvareakselerasjon og utdata-argumenter per rolle.",
"path": {
"label": "FFmpeg-sti",
"description": "Sti til FFmpeg-binærfilen som skal brukes, eller et versjonsalias (\"5.0\" eller \"7.0\")."
"description": "Sti til FFmpeg-binærfilen som skal brukes, eller et versjonsalias (\"7.0\" eller \"8.0\")."
},
"global_args": {
"label": "Globale FFmpeg-argumenter",
@@ -484,6 +484,9 @@
"max_concurrent": {
"description": "Maksimalt antall eksportjobber som kan behandles samtidig.",
"label": "Maksimalt antall samtidige eksporter"
},
"chapters": {
"label": "Kapittelmetadata som skal bygges inn i eksporterte opptak"
}
},
"preview": {
@@ -674,7 +677,7 @@
"label": "Effekt for tidsstempel",
"description": "Visuell effekt for tidsstempelteksten (none, solid, shadow)."
},
"description": "Stilalternativer for tidsstempler i strømmen, brukt på opptak og stillbilder."
"description": "Stilalternativer for tidsstempler brukt på stillbilder og i Feilsøkingsvisning."
},
"audio_transcription": {
"label": "Lydtranskripsjon",
@@ -870,6 +873,10 @@
"order": {
"description": "Numerisk rekkefølge for sortering av kameraet i grensesnittet; høyere tall vises senere.",
"label": "Rekkefølge i UI"
},
"review": {
"description": "Velg om dette kameraet skal være synlig i inspeksjonen (inspeksjonssiden og dens kamerafilter, bevegelsesinspeksjon og historikkvisning).",
"label": "Vis i inspeksjon"
}
},
"webui_url": {
+10 -3
View File
@@ -212,7 +212,7 @@
},
"default_role": {
"label": "Standardrolle",
"description": "Standardrolle tildelt proxy-autentiserte brukere når ingen rolletilordning gjelder (admin eller viewer)."
"description": "Standardrolle tildelt proxy-autentiserte brukere når ingen rolletilordning gjelder."
},
"separator": {
"label": "Skilletegn",
@@ -555,7 +555,7 @@
},
"listen": {
"label": "Lyttetyper",
"description": "Liste over typer lydhendelser som skal detekteres (f.eks. bjeff, brannalarm, skrik, tale, rop)."
"description": "Liste over typer lydhendelser som skal detekteres (f.eks. bjeff, brannalarm, tale, rop)."
},
"filters": {
"label": "Lydfiltre",
@@ -691,7 +691,7 @@
"description": "FFmpeg-innstillinger, inkludert sti til binærfil, argumenter, alternativer for maskinvareakselerasjon og utdata-argumenter per rolle.",
"path": {
"label": "FFmpeg-sti",
"description": "Sti til FFmpeg-binærfilen som skal brukes, eller et versjonsalias (\"5.0\" eller \"7.0\")."
"description": "Sti til FFmpeg-binærfilen som skal brukes, eller et versjonsalias (\"7.0\" eller \"8.0\")."
},
"global_args": {
"label": "Globale FFmpeg-argumenter",
@@ -1043,6 +1043,9 @@
"max_concurrent": {
"description": "Maksimalt antall eksportjobber som kan behandles samtidig.",
"label": "Maksimalt antall samtidige eksporter"
},
"chapters": {
"label": "Kapittelmetadata som skal bygges inn i eksporterte opptak"
}
},
"preview": {
@@ -1554,6 +1557,10 @@
"dashboard": {
"label": "Vis i grensesnitt",
"description": "Velg om dette kameraet skal være synlig i Frigate-grensesnittet. Deaktivering krever manuell redigering av konfigurasjonen for å vise kameraet igjen."
},
"review": {
"label": "Vis i inspeksjon",
"description": "Velg om dette kameraet skal være synlig i inspeksjon (inspeksjonssiden og dens kamerafilter, bevegelsesinspeksjon og historikkvisning)."
}
},
"onvif": {
@@ -28,5 +28,8 @@
}
},
"minLength": "Må være minst {{limit}} tegn",
"maxLength": "Må være maks {{limit}} tegn"
"maxLength": "Må være maks {{limit}} tegn",
"detect": {
"dimensionMustBeEven": "Må være et partall."
}
}
+3
View File
@@ -65,5 +65,8 @@
"active": "Resonnerer…",
"show": "Vis resonnering",
"hide": "Skjul resonnering"
},
"thinking": {
"toggle": "Aktiver/deaktiver tenking"
}
}
+5 -2
View File
@@ -50,7 +50,9 @@
},
"camera": {
"enable": "Aktiver kamera",
"disable": "Deaktiver kamera"
"disable": "Deaktiver kamera",
"turnOn": "Slå kamera på",
"turnOff": "Skå kamera av"
},
"snapshots": {
"enable": "Aktiver stillbilder",
@@ -169,7 +171,8 @@
"snapshots": "Stillbilder",
"audioDetection": "Lydregistrering",
"autotracking": "Automatisk sporing",
"transcription": "Lydtranskripsjon"
"transcription": "Lydtranskripsjon",
"camera": "Kamera"
},
"transcription": {
"enable": "Aktiver direkte lydtranskripsjon",
@@ -24,7 +24,9 @@
"points_one": "{{count}} punkt",
"points_other": "{{count}} punkter",
"undo": "Angre siste punkt",
"reset": "Tilbakestill polygon"
"reset": "Tilbakestill polygon",
"moveMode": "Flytt",
"drawMode": "Tegn"
},
"motionHeatmapLabel": "Varmekart for bevegelse",
"dialog": {
@@ -40,11 +42,11 @@
"settings": {
"title": "Søkeinnstillinger",
"parallelMode": "Parallellmodus",
"parallelModeDesc": "Skann flere opptakssegmenter samtidig (raskere, men betydelig mer CPU-intensivt)",
"parallelModeDesc": "Skann flere opptaksintervaller samtidig (raskere, men krever mer dekodingsressurser)",
"threshold": "Følsomhetsterskel",
"thresholdDesc": "Lavere verdier detekterer mindre endringer (1–255)",
"minArea": "Minimum endringsområde",
"minAreaDesc": "Minimum prosentandel av interesseområdet som må endres for å anses som betydelig",
"minAreaDesc": "Minimumsstørrelse for et enkelt bevegelsesområde, som en prosentandel av interesseområdet",
"frameSkip": "Bilde-sprang",
"frameSkipDesc": "Behandle hvert N-te bilde. Sett denne til kameraets bildefrekvens for å behandle ett bilde i sekundet (f.eks. 5 for et 5 FPS-kamera, 30 for et 30 FPS-kamera). Høyere verdier vil være raskere, men kan gå glipp av korte bevegelseshendelser.",
"maxResults": "Maksimalt antall resultater",
@@ -70,6 +72,9 @@
"framesDecoded": "Bilder dekodet",
"wallTime": "Søketid",
"segmentErrors": "Segmentfeil",
"seconds": "{{seconds}}s"
}
"seconds": "{{seconds}}s",
"scanSummary": "{{segments}} segmenter · {{time}}",
"minutesSeconds": "{{minutes}}m {{seconds}}s"
},
"scanning": "Skanner {{time}}"
}
+184 -16
View File
@@ -31,7 +31,7 @@
"notifications": "Meldingsvarsler",
"enrichments": "Utvidelser",
"triggers": "Utløsere",
"cameraManagement": "Administrasjon",
"cameraManagement": "Kamerabehandling",
"cameraReview": "Inspeksjon",
"roles": "Roller",
"profiles": "Profiler",
@@ -46,7 +46,7 @@
"systemDetectionModel": "Deteksjonsmodell",
"cameraLivePlayback": "Direkteavspilling",
"globalLivePlayback": "Direkteavspilling",
"cameraFfmpeg": "FFmpeg",
"cameraFfmpeg": "Strømmer (FFmpeg)",
"globalFfmpeg": "FFmpeg",
"systemFfmpeg": "FFmpeg",
"cameraBirdseye": "Fugleperspektiv",
@@ -723,7 +723,8 @@
"notificationUnavailable": {
"documentation": "Se dokumentasjonen",
"title": "Meldingsvarsler utilgjengelig",
"desc": "Nettleser push-varsler krever et sikkert miljø (<code>https://…</code>). Dette er en nettleserbegrensning. Få tilgang til Frigate på en sikker måte for å bruke meldingsvarsler."
"desc": "Nettleser push-varsler krever et sikkert miljø (<code>https://…</code>). Dette er en nettleserbegrensning. Få tilgang til Frigate på en sikker måte for å bruke meldingsvarsler.",
"descPwa": "På iOS er web-pushvarsler kun tilgjengelig når Frigate er installert på hjemskjermen din. Åpne <strong>Del</strong>-menyen, velg <strong>Legg til på hjemskjermen</strong>, og åpne deretter Frigate fra det nye ikonet for å registrere denne enheten for varsler."
},
"email": {
"title": "E-post",
@@ -1136,7 +1137,7 @@
"brands": {
"reolink-rtsp": "Reolink RTSP anbefales ikke. Aktiver HTTP i kameraets fastvare-innstillinger og start kameraveiviseren på nytt."
},
"customUrlRtspRequired": "Egendefinerte URL-er må begynne med \"rtsp://\". Manuell konfigurering kreves for kamera­strømmer som ikke bruker RTSP."
"customUrlRtspRequired": "Egendefinerte URL-er må begynne med «rtsp://» eller «rtsps://». Manuell konfigurasjon kreves for kamerastrømmer som ikke bruker RTSP."
},
"docs": {
"reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras"
@@ -1364,10 +1365,10 @@
"selectCamera": "Velg et kamera",
"backToSettings": "Tilbake til kamerainnstillinger",
"streams": {
"title": "Aktiver / Deaktiver kameraer",
"title": "Kamerastatus og detaljer",
"desc": "Midlertidig deaktiver et kamera til Frigate startes på nytt. Deaktivering av et kamera stopper Frigates behandling av dette kameraets strømmer fullstendig. Deteksjon, opptak og feilsøking vil være utilgjengelig.<br /> <em>Merk: Dette deaktiverer ikke go2rtc-restrømming.</em>",
"disableDesc": "Aktiver et kamera som for øyeblikket ikke er synlig i grensesnittet og deaktivert i konfigurasjonen. En omstart av Frigate kreves etter aktivering.",
"enableSuccess": "Aktiverte {{cameraName}} i konfigurasjonen. Start Frigate på nytt for å ta i bruk endringene.",
"enableSuccess": "Aktiverte {{cameraName}}. Start Frigate på nytt for å ta i bruk.",
"enableLabel": "Aktiverte kameraer",
"enableDesc": "Deaktiver et aktivert kamera midlertidig frem til Frigate starter på nytt. Deaktivering av et kamera stopper all prosessering av kameraets strømmer. Deteksjon, opptak og feilsøking vil være utilgjengelig.<br /> <em>Merk: Dette deaktiverer ikke videreformidling (restream) i go2rtc.</em><br /><br />Dra i feltet for å endre rekkefølgen på kameraene slik de vises i grensesnittet. Rekkefølgen på de aktiverte kameraene vil gjenspeiles i hele grensesnittet, inkludert Live-dashbordet og rullegardinmenyene for kameravalg.",
"disableLabel": "Deaktiverte kameraer",
@@ -1379,7 +1380,30 @@
},
"reorderHandle": "Dra for å endre rekkefølge",
"saving": "Lagrer…",
"saved": "Lagret"
"saved": "Lagret",
"label": "Kamerastatus",
"description": "Angi driftsstatus for hvert kamera.<br /><br /><strong>På</strong>: Strømmer behandles normalt.<br /><strong>Av</strong>: Setter behandlingen midlertidig på pause. Vedvarer ikke etter omstart av Frigate.<br /><strong>Deaktivert</strong>: Stopper behandlingen og lagrer endringen i konfigurasjonen din. En omstart kreves for å aktivere et deaktivert kamera igjen.<br /><br /><em>Merk: Deaktivering påvirker ikke videreformidling (restream) i go2rtc.</em><br /><br />Dra i ikonet for å endre rekkefølgen på aktive kameraer slik de vises i grensesnittet, inkludert Live-dashbordet og rullegardinmenyene for kameravalg.",
"disabledSubheading": "Deaktivert i konfigurasjonen",
"status": {
"on": "På",
"off": "Av",
"disabled": "Deaktivert"
},
"disableSuccess": "Deaktiverte {{cameraName}} og lagret i konfigurasjonen.",
"details": {
"edit": "Rediger kameradetaljer",
"title": "Rediger kameradetaljer",
"description": "Oppdater visningsnavn, ekstern URL og synlighet brukt for dette kameraet i Frigate-grensesnittet.",
"friendlyNameLabel": "Visningsnavn",
"friendlyNameHelp": "Vennlig navn som vises for dette kameraet i Frigate-grensesnittet. La stå tomt for å bruke kamera-ID.",
"webuiUrlLabel": "URL til kameraets webgrensesnitt",
"webuiUrlHelp": "URL for å besøke kameraets webgrensesnitt direkte fra feilsøkingsvisningen (Debug). La stå tomt for å deaktivere lenken.",
"webuiUrlInvalid": "Må være en gyldig URL (f.eks. https://example.com).",
"dashboardLabel": "Vis på Live-dashbordet",
"dashboardHelp": "Vis dette kameraet på Live-dashbordet.",
"reviewLabel": "Vis i Inspeksjons-modus",
"reviewHelp": "Vis dette kameraet i Inspeksjon (Review), inkludert kamerafilteret, bevegelsesgjennomgang og historikkvisningen."
}
},
"cameraConfig": {
"add": "Legg til kamera",
@@ -1414,9 +1438,11 @@
"enabled": "Aktivert",
"inherit": "Arv",
"disabled": "Deaktivert",
"description": "Konfigurer hvilke kameraer som er aktivert eller deaktivert når en profil aktiveres. Kameraer satt til \"Arv\" beholder sin opprinnelige status.",
"description": "Konfigurer hvilke kameraer som slås på eller av når en profil aktiveres. Kameraer satt til «Arv» beholder sin standardstatus.",
"title": "Profiloverstyringer for kamera",
"selectLabel": "Velg profil"
"selectLabel": "Velg profil",
"on": "På",
"off": "Av"
},
"deleteCameraDialog": {
"confirmTitle": "Er du sikker?",
@@ -1438,7 +1464,92 @@
"dedicatedLpr": "Dedikert LPR (lesing av kjennemerker)",
"saveSuccess": "Kameratype oppdatert for {{cameraName}}. Start Frigate på nytt for å bruke endringene."
},
"description": "Legg til, rediger og slett kameraer. Kontroller hvilke kameraer som er aktivert og konfigurer overstyringer for hver profil og kameratype. For å konfigurere strømmer, deteksjon, bevegelse og andre kameraspesifikke innstillinger, velg den aktuelle seksjonen under Kamerakonfigurasjon."
"description": "Legg til, rediger og slett kameraer, kontroller statusen til hvert kamera, og konfigurer overstyringer per profil og kameratype. For å konfigurere strømmer, deteksjon, bevegelse og andre kameraspesifikke innstillinger, velg den aktuelle seksjonen under Kamerakonfigurasjon.",
"clone": {
"sectionTitle": "Klon innstillinger",
"sectionDescription": "Kopier konfigurasjon fra ett kamera til et annet eller til et nytt kamera.",
"button": "Klon innstillinger",
"title": "Klon kamerainnstillinger",
"description": "Kopier et kameras konfigurasjon til ett eller flere andre kameraer eller til et nytt kamera. Identitet (navn, visningsnavn, URL til webgrensesnitt, visningsrekkefølge) kopieres ikke.",
"source": {
"label": "Kildekamera",
"placeholder": "Velg et kildekamera",
"required": "Kildekamera må velges"
},
"target": {
"legend": "Mål",
"newRadio": "Nytt kamera",
"newNameLabel": "Kameranavn",
"newNamePlaceholder": "f.eks. bakdoer eller Bakdør",
"newNameRequired": "Kameranavn kreves",
"newNameInvalid": "Ugyldig kameranavn",
"newNameCollision": "Et kamera med dette navnet eksisterer allerede",
"newStreamsForced": "Strømmer kopieres alltid for et nytt kamera.",
"existingCamerasRadio": "Eksisterende kameraer",
"allCameras": "Alle kameraer",
"existingPlaceholder": "Velg minst ett kamera",
"existingDisabled": "Ingen andre kameraer å kopiere til"
},
"categories": {
"legend": "Innstillinger som skal klones",
"description": "Velg hvilke innstillinger som skal kopieres fra kildekameraet.",
"selectAll": "Velg alle",
"selectNone": "Velg ingen",
"resetDefaults": "Tilbakestill til standardverdier",
"general": "Generelt",
"spatial": "Romlige innstillinger",
"streams": "Strømmer",
"spatialWarningTitle": "Uoverensstemmelse i oppløsning",
"spatialWarning": "Kildekameraet {{srcCamera}} sin deteksjonsoppløsning ({{srcWidth}}×{{srcHeight}}) er forskjellig fra: {{cameras}}. Polygoner vil kanskje ikke samsvare på disse kameraene. Disse er deaktivert som standard; aktiver for å kopiere som de er.",
"restartHint": "Omstart kreves",
"items": {
"record": "Opptak pågår",
"snapshots": "Øyeblikksbilder",
"review": "Inspeksjon",
"motion": "Bevegelsesdeteksjon",
"objects": "Objekter",
"audio": "Lyddeteksjon",
"audio_transcription": "Lydtranskripsjon",
"notifications": "Varsler",
"birdseye": "Fugleperspektiv",
"mqtt": "MQTT",
"timestamp_style": "Tidsstempelstil",
"onvif": "ONVIF",
"lpr": "Kjennemerke gjenkjenning",
"face_recognition": "Ansiktsgjenkjenning",
"semantic_search": "Semantisk søk",
"genai": "Generativ AI",
"type": "Kameratype (normal / dedikert LPR)",
"profiles": "Profiler",
"detect": "Deteksjonsdimensjoner",
"zones": "Soner",
"motion_mask": "Bevegelsesmasker",
"object_masks": "Objektmasker",
"ffmpeg_live": "Strømme-URL-er og roller"
}
},
"footer": {
"restartNeeded": "Omstart vil kreves for enkelte endringer.",
"liveOnly": "Alle endringer vil trå i kraft direkte uten omstart.",
"submit": "Klon",
"submitting": "Kloner…",
"changeCount_one": "{{count}} endring vil bli brukt",
"changeCount_other": "{{count}} endringer vil bli brukt"
},
"toast": {
"success": "Innstillinger kopiert til {{cameraName}}",
"successWithRestart": "Innstillinger kopiert til {{cameraName}}. Start Frigate på nytt for å ta i bruk alle endringer.",
"partialFailure": "{{successCount}} seksjoner ble tatt i bruk; «{{failedSection}}» feilet: {{errorMessage}}",
"partialFailureMulti": "Kopiert til {{successCount}} kamera(er); feilet for {{failed}}: {{errorMessage}}",
"newCameraPartialFailure": "Kameraet {{cameraName}} ble opprettet, men noen innstillinger kunne ikke kopieres: {{errorMessage}}",
"sourceMissing": "Kildekameraet eksisterer ikke lenger",
"submitError": "Kunne ikke klone kamera: {{errorMessage}}",
"successMulti_one": "Innstillinger kopiert til {{count}} kamera",
"successMulti_other": "Innstillinger kopiert til {{count}} kameraer",
"successMultiWithRestart_one": "Innstillinger kopiert til {{count}} kamera. Start Frigate på nytt for å aktivere alle endringene.",
"successMultiWithRestart_other": "Innstillinger kopiert til {{count}} kameraer. Start Frigate på nytt for å bruke alle endringene."
}
}
},
"cameraReview": {
"title": "Innstillinger for kamerainspeksjon",
@@ -1659,18 +1770,58 @@
"addCustomLabel": "Legg til egendefinert etikett...",
"restartRequiredField": "Omstart påkrevd",
"cameraInputs": {
"itemTitle": "Strøm {{index}}"
"itemTitle": "Strøm {{index}}",
"sourceMode": {
"restream": "Videreformidling / Restream (go2rtc)",
"manual": "Manuell kildesti",
"go2rtcStreamLabel": "go2rtc-strøm",
"go2rtcStreamPlaceholder": "Velg en go2rtc-strøm",
"noGo2rtcStreams": "Ingen go2rtc-strømmer er konfigurert",
"go2rtcStreamSearch": "Søk i strømmer...",
"availableStreams": "Tilgjengelige strømmer",
"noMatchingStreams": "Ingen matchende strømmer"
}
},
"searchPlaceholder": "Søk...",
"showAdvanced": "Vis avanserte innstillinger",
"genaiModel": {
"placeholder": "Velg modell…",
"search": "Søk modeller…",
"noModels": "Ingen modeller tilgjengelig"
"placeholder": "Velg eller skriv inn en modell…",
"search": "Søk eller skriv inn en modell…",
"noModels": "Ingen modeller tilgjengelig",
"available": "Tilgjengelige modeller",
"useCustom": "Bruk «{{value}}»",
"refresh": "Oppdater modeller",
"probeFailed": "Kunne ikke hente modeller",
"fetchedModels": "Modelliste ble hentet"
},
"knownPlates": {
"platePlaceholder": "Kjennemerke nummer eller regex",
"namePlaceholder": "f.eks konas bil"
},
"liveStreams": {
"streamNameLabel": "Strømnavn",
"streamNamePlaceholder": "f.eks. Hovedstrøm HD",
"go2rtcStreamLabel": "go2rtc-strøm",
"go2rtcStreamPlaceholder": "Velg en go2rtc-strøm",
"go2rtcStreamSearch": "Søk eller skriv inn et strømnavn…",
"noGo2rtcStreams": "Ingen go2rtc-strømmer er konfigurert",
"availableStreams": "Tilgjengelige strømmer",
"useCustom": "Bruk «{{value}}»",
"addStream": "Legg til strøm"
},
"semanticSearchModelSize": {
"notApplicable": "Ikke relevant for leverandører av generativ AI"
},
"ptzPresets": {
"placeholder": "Velg eller skriv inn en forhåndsinnstilling...",
"search": "Søk eller skriv inn en forhåndsinnstilling...",
"noPresets": "Ingen forhåndsinnstillinger tilgjengelig",
"available": "Forhåndsinnstillinger for kamera",
"useCustom": "Bruk «{{value}}»"
},
"defaultRole": {
"admin": "Administrator",
"viewer": "Seer (Viewer)"
}
},
"button": {
@@ -1754,7 +1905,8 @@
"renameStreamDesc": "Skriv inn et nytt navn for denne strømmen. Endring av navn kan ødelegge for kameraer eller andre strømmer som refererer til den ved navn.",
"deleteStream": "Slett strøm",
"streamName": "Strømnavn",
"streamNumber": "Strøm {{index}}"
"streamNumber": "Strøm {{index}}",
"sourceNumber": "Kilde {{index}}"
},
"profiles": {
"active": "Aktiv",
@@ -1816,7 +1968,13 @@
},
"detect": {
"fpsGreaterThanFive": "Det anbefales ikke å sette FPS for deteksjon høyere enn 5. Høyere verdier kan føre til ytelsesproblemer uten å gi noen fordeler.",
"disabled": "Objektdeteksjon er deaktivert. Stillbilder, inspeksjonselementer og utvidelser som ansiktsgjenkjenning, lesing av kjennemerker og generativ AI vil ikke fungere."
"disabled": "Objektdeteksjon er deaktivert. Stillbilder, inspeksjonselementer og utvidelser som ansiktsgjenkjenning, lesing av kjennemerker og generativ AI vil ikke fungere.",
"resolutionShouldBeMultipleOfFour": "For best resultat bør deteksjonsbredde og -høyde være delelig med 4. Andre partall kan forårsake visuelle feil eller svak forvrengning i deteksjonsstrømmen.",
"aspectRatioMismatch": "Bredden og høyden du har oppgitt samsvarer ikke med sideforholdet til din nåværende deteksjonsoppløsning. Dette kan føre til et strukket eller forvrengt bilde.",
"maxFramesSet": "Å angi maksimalt antall bilder (max frames) overstyrer standard oppførsel og deaktiverer sporing av stasjonære objekter. Det er svært få situasjoner hvor dette er nødvendig, så bruk det med forsiktighet.",
"squareResolution": "En kvadratisk deteksjonsoppløsning er uvanlig. Deteksjonsbredden og -høyden bør samsvare med kameraets sideforhold (for eksempel 16:9), ikke dimensjonene til objektdeteksjonsmodellen. Et feilaktig sideforhold kan strekke bildet og redusere treffsikkerheten for deteksjon.",
"resolutionHigh": "Denne deteksjonsoppløsningen er høyere enn anbefalt og kan føre til økt ressursbruk uten å forbedre deteksjonsnøyaktigheten. En deteksjonsoppløsning på eller under 1080p anbefales for de fleste kameraer.",
"globalResolutionMultipleCameras": "En global deteksjonsoppløsning er satt samtidig som flere kameraer er konfigurert. Med mindre alle kameraer deler nøyaktig samme oppløsning og sideforhold, bør deteksjonsbredden og -høyden defineres per kamera for å matche hvert kameras opprinnelige sideforhold."
},
"birdseye": {
"objectsModeDetectDisabled": "Fugleperspektiv er satt til 'objekter'-modus, men objektdeteksjon er deaktivert for dette kameraet. Kameraet vil ikke vises i Fugleperspektiv."
@@ -1843,6 +2001,16 @@
},
"semanticSearch": {
"jinav2SmallModelSize": "Størrelsen \"liten\" med Jina V2-modellen har høyt minnebruk og beregningskostnad. Den \"store\" modellen med en dedikert GPU anbefales."
},
"model": {
"optimizedFor320": "Frigate er optimalisert for en 320x320-modell, som er det beste valget for de fleste oppsett. En 640x640-modell er tregere og hjelper kun i spesifikke scenarier.",
"inputDimensionsNotDetectResolution": "Modellens inndata for bredde og høyde er dimensjonene til selve objektdeteksjonsmodellen, ikke kameraets deteksjonsoppløsning. De skal samsvare med dimensjonene til modellen du bruker – vanligvis en kvadratisk størrelse som 320x320 eller 640x640."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "Manuelle argumenter for maskinvareakselerasjon anbefales ikke. Med mindre det foreligger et spesifikt behov, bør du velge forhåndsinnstillingen som samsvarer med maskinvaren din."
},
"onvif": {
"autotrackingNoZones": "Autosporing krever minst én sone. Definer en sone for dette kameraet under Masker / Soner, og angi den deretter som en påkrevd sone nedenfor."
}
},
"maintenance": {
+16 -1
View File
@@ -170,7 +170,22 @@
"tips": {
"title": "Kamerainformasjon"
},
"aspectRatio": "bildeforhold"
"aspectRatio": "bildeforhold",
"keyframes": {
"error": "Keyframe-intervallet (~{{seconds}}s) overskrider lengden på opptakssegmentet ({{segmentTime}}s). Enkelte segmenter kan mangle en keyframe, noe som ødelegger avspillingen. Deaktiver smart / +kodek'en på kameraet eller forkort keyframe-intervallet.",
"warning": "Spredte eller variable ke,yframes (lengste avstand ~{{seconds}}s), sannsynligvis på grunn av en smart-kodek (H.264+/H.265+). Dette er ikke anbefalt.",
"unknown": "Kunne ikke bestemme keyframe-intervallet.",
"ok": "Keyframes hvert ~{{seconds}}s, optimalt for opptak og avspilling.",
"gap": "Keyframe-intervall (min / snitt / maks):",
"keyframeCount": "Registrerte keyframes:",
"stillAnalyzing": "Analyserer keyframes fremdeles...",
"analyzing": "Analyserer keyframes... {{seconds}} sekunder gjenstår",
"title": "Keyframe-analyse",
"recordStream": "Opptaksstrøm:",
"observedDuration": "Observert varighet:",
"segmentLength": "Lengde på opptakssegment:",
"recordDisabled": "Opptak er deaktivert for dette kameraet."
}
},
"framesAndDetections": "Bilder / Deteksjoner",
"title": "Kameraer",
+11 -4
View File
@@ -216,7 +216,8 @@
"id": "Bahasa Indonesia (Indonesisch)",
"ur": "اردو (Urdu)",
"hr": "Hrvatski (Kroatisch)",
"zhHant": "繁體中文 (Traditioneel Chinees)"
"zhHant": "繁體中文 (Traditioneel Chinees)",
"bs": "Bosanksi (Bosnisch)"
},
"darkMode": {
"label": "Donkere modus",
@@ -267,7 +268,10 @@
"anonymous": "anoniem"
},
"classification": "Classificatie",
"profiles": "Profielen"
"profiles": "Profielen",
"actions": "Acties",
"features": "Functies",
"chat": "Chat"
},
"toast": {
"copyUrlToClipboard": "URL naar klembord gekopieerd.",
@@ -276,7 +280,8 @@
"error": {
"title": "Opslaan van configuratiewijzigingen mislukt: {{errorMessage}}",
"noMessage": "Het opslaan van configuratiewijzigingen is mislukt"
}
},
"success": "De configuratie aanpassingen zijn succesvol opgeslagen."
}
},
"role": {
@@ -323,5 +328,7 @@
},
"credentialField": {
"savedPlaceholder": "Opgeslagen - leeg laten om huidige te behouden"
}
},
"no_items": "Geen items",
"validation_errors": "Validatie fouten"
}
+24 -3
View File
@@ -67,11 +67,14 @@
"endTimeMustAfterStartTime": "Eindtijd moet na starttijd zijn"
},
"success": "Export is succesvol gestart. Bekijk het bestand op de exportpagina.",
"view": "Weergeven"
"view": "Weergeven",
"queued": "Export staat in de wachtrij. Bekijk voortgang op de exports pagina."
},
"fromTimeline": {
"saveExport": "Export opslaan",
"previewExport": "Export vooraf bekijken"
"previewExport": "Export vooraf bekijken",
"useThisRange": "Gebruik dit bereik",
"queueingExport": "Export in wachtrij zetten..."
},
"export": "Exporteren",
"selectOrExport": "Selecteren of exporteren",
@@ -107,7 +110,17 @@
"title_one": "Review 1 exporteren",
"title_other": "{{count}} reviews exporteren",
"description": "Exporteer alle geselecteerde reviews. Alle exports worden samengevoegd in één case.",
"descriptionNoCase": "Exporteer elke geselecteerde review."
"descriptionNoCase": "Exporteer elke geselecteerde review.",
"toast": {
"startedNoCase_one": "1 export gestart.",
"startedNoCase_other": "{{count}} Exports gestart.",
"partial": "{{successful}} van {{total}} exports gestart. Mislukte items: {{failedItems}}",
"failed": "Het starten van {{total}} exports is mislukt. Mislukt: {{failedItems}}"
},
"exportingButton": "Exporteren...",
"exportButton_one": "Exporteer 1 revisie",
"exportButton_other": "Exporteer {{count}} revisies",
"caseNamePlaceholder": "Inspecteer export - {{date}}"
}
},
"streaming": {
@@ -155,6 +168,14 @@
"error": "Verwijderen mislukt: {{error}}",
"success": "De videobeelden die aan de geselecteerde beoordelingsitems zijn gekoppeld, zijn succesvol verwijderd."
}
},
"shareTimestamp": {
"label": "Tijdstempel delen",
"title": "Tijdstempel delen",
"description": "Deel een URL met tijdstempel van de huidige positie in de afspeler of kies een aangepaste tijdstempel. Let op: dit is geen openbare deel-URL en is alleen toegankelijk voor gebruikers die toegang hebben tot Frigate en deze camera.",
"custom": "Aangepaste tijdstempel",
"button": "Deel tijdstempel URL",
"shareTitle": "Frigate Beoordelingstijdstempel: {{camera}}"
}
},
"imagePicker": {
+11 -2
View File
@@ -167,7 +167,8 @@
"saveAll": "Zapisz wszystkie",
"savingAll": "Zapisywanie wszystkich…",
"undoAll": "Cofnij wszystko",
"retry": "Powtórz"
"retry": "Powtórz",
"resetToGlobal": "Przywróć ustawienie globalne"
},
"menu": {
"system": "System",
@@ -274,7 +275,10 @@
"settings": "Ustawienia",
"export": "Eksportuj",
"classification": "Klasyfikacja",
"profiles": "Profile"
"profiles": "Profile",
"actions": "Akcje",
"features": "Funkcje",
"chat": "Czat"
},
"role": {
"viewer": "Przeglądający",
@@ -328,5 +332,10 @@
"field": {
"optional": "Opcjonalny",
"internalID": "Wewnętrzny identyfikator używany przez Frigate w konfiguracji i bazie danych"
},
"no_items": "Brak elementów",
"validation_errors": "Błędy walidacji",
"credentialField": {
"savedPlaceholder": "Zapisano — pozostaw puste, aby zachować bieżącą wartość"
}
}
+71 -3
View File
@@ -72,11 +72,24 @@
"endTimeMustAfterStartTime": "Czas zakończenia musi być późniejszy niż czas rozpoczęcia",
"noVaildTimeSelected": "Nie wybrano prawidłowego zakresu czasu"
},
"view": "Widok"
"view": "Widok",
"queued": "Eksport dodany do kolejki. Postęp można sprawdzić na stronie eksportów.",
"batchSuccess_one": "Rozpoczęto 1 eksport. Otwieranie przypadku.",
"batchSuccess_few": "Rozpoczęto {{count}} eksporty Otwieranie przypadku.",
"batchSuccess_many": "Rozpoczęto {{count}} eksportów. Otwieranie przypadku.",
"batchPartial": "Rozpoczęto {{successful}} z {{total}} eksportów. Nieudane kamery: {{failedCameras}}",
"batchFailed": "Nie udało się uruchomić {{total}} eksportów. Nieudane kamery: {{failedCameras}}",
"batchQueuedSuccess_one": "Eksport dodany do kolejki. Otwieranie przypadku.",
"batchQueuedSuccess_few": "Dodano {{count}} eksportydo kolejki. Otwieranie przypadku.",
"batchQueuedSuccess_many": "Dodano {{count}} eksportów do kolejki. Otwieranie przypadku.",
"batchQueuedPartial": "Dodano do kolejki {{successful}} z {{total}} eksportów. Nieudane kamery: {{failedCameras}}",
"batchQueueFailed": "Nie udało się dodać do kolejki {{total}} eksportów. Nieudane kamery: {{failedCameras}}"
},
"fromTimeline": {
"saveExport": "Zapisz Eksport",
"previewExport": "Podgląd Eksportu"
"previewExport": "Podgląd Eksportu",
"queueingExport": "Kolejkowanie eksportu...",
"useThisRange": "Użyj tego zakresu"
},
"multiCamera": {
"timeRange": "Zakres czasu",
@@ -88,7 +101,54 @@
"detectionCount_one": "{{count}} śledzony obiekt",
"detectionCount_few": "{{count}} śledzone obiekty",
"detectionCount_many": "{{count}} śledzonych obiektów",
"nameLabel": "Wyeksportuj nazwę"
"nameLabel": "Wyeksportuj nazwę",
"namePlaceholder": "Opcjonalna nazwa bazowa eksportów",
"queueingButton": "Kolejkowanie eksportów...",
"exportButton_one": "Eksport 1 kamery",
"exportButton_few": "Eksport {{count}} kamer",
"exportButton_many": "Eksport {{count}} kamer",
"searchOrSelectGroup": "Szukaj lub wybierz grupę kamer ...",
"selectAll": "Wybierz wszystkie kamery",
"clearSelection": "Wyczyść wybór",
"selectWithActivity": "Kamery z obiektami śledzonymi",
"selectGroup": "Wybierz grupę",
"noMatchingCameras": "Nie ma kamer spełniających Twoje wyszukiwanie",
"selectedCount": "{{selected}} / {{total}} wybrane"
},
"case": {
"newCaseOption": "Utwórz nowy przypadek",
"newCaseNamePlaceholder": "Nazwa nowego przypadku",
"newCaseDescriptionPlaceholder": "Opis przypadku",
"label": "Przypadek",
"nonAdminHelp": "Dla tych eksportów zostanie utworzony nowy przypadek.",
"placeholder": "Wybierz przypadek"
},
"queueing": "Dodawanie eksportu do kolejki...",
"tabs": {
"export": "Pojedyncza kamera",
"multiCamera": "Wiele kamer"
},
"multi": {
"title_one": "Eksport 1 recenzji",
"title_few": "Eksport {{count}} recenzji",
"title_many": "Eksport {{count}} recenzji",
"description": "Eksportuj każdą wybraną recenzję. Wszystkie eksporty zostaną pogrupowane w jednym przypadku.",
"descriptionNoCase": "Eksportuj każdą wybraną recenzję.",
"caseNamePlaceholder": "Eksport recenzji – {{date}}",
"exportButton_one": "Eksport 1 recenzji",
"exportButton_few": "Eksport {{count}} recenzji",
"exportButton_many": "Eksport {{count}} recenzji",
"exportingButton": "Eksportowanie...",
"toast": {
"started_one": "Rozpoczęto 1 eksport. Otwieranie przypadku.",
"started_few": "Rozpoczęto {{count}} eksportów. Otwieranie przypadku.",
"started_many": "Rozpoczęto {{count}} eksportów. Otwieranie przypadku.",
"startedNoCase_one": "Rozpoczęto 1 eksport.",
"startedNoCase_few": "Rozpoczęto {{count}} eksportów.",
"startedNoCase_many": "Rozpoczęto {{count}} eksportów.",
"partial": "Rozpoczęto {{successful}} z {{total}} eksportów. Niepowodzenia: {{failedItems}}",
"failed": "Nie udało się uruchomić {{total}} eksportów. Niepowodzenia: {{failedItems}}"
}
}
},
"recording": {
@@ -107,6 +167,14 @@
"success": "Nagrania wideo powiązane z wybranymi elementami przeglądu zostały pomyślnie usunięte.",
"error": "Nie udało się usunąć: {{error}}"
}
},
"shareTimestamp": {
"label": "Udostępnij znacznik czasu",
"title": "Udostępnij znacznik czasu",
"description": "Udostępnij adres URL z aktualnym znacznikiem czasu pozycji odtwarzacza lub wybierz niestandardowy znacznik czasu. Należy pamiętać, że nie jest to publiczny link udostępniania i jest dostępny wyłącznie dla użytkowników mających dostęp do Frigate i tej kamery.",
"custom": "Własny znacznik czasu",
"button": "Udostępnij adres URL ze znacznikiem czasu",
"shareTitle": "Znacznik czasu przeglądu Frigate: {{camera}}"
}
},
"streaming": {
+95 -5
View File
@@ -176,7 +176,7 @@
"description": "Włączone"
},
"audio": {
"label": "Zdarzenia audio",
"label": "Wykrywanie dźwięku",
"description": "Ustawienia detekcji zdarzeń audio dla tej kamery.",
"enabled": {
"label": "Włącz detekcję audio",
@@ -196,7 +196,11 @@
},
"filters": {
"label": "Filtry audio",
"description": "Ustawienia filtrów dla poszczególnych typów audio, takie jak progi pewności, używane do redukcji fałszywych alarmów."
"description": "Ustawienia filtrów dla poszczególnych typów audio, takie jak progi pewności, używane do redukcji fałszywych alarmów.",
"threshold": {
"label": "Minimalna pewność wykrycia dźwięku",
"description": "Minimalny próg pewności, aby zdarzenie audio zostało zliczone."
}
},
"enabled_in_config": {
"label": "Pierwotny stan audio",
@@ -224,10 +228,18 @@
},
"birdseye": {
"mode": {
"label": "Tryb śledzenia"
"label": "Tryb śledzenia",
"description": "Tryb uwzględniania kamer w widoku z lotu ptaka: „obiekty”, „ruch” lub „ciągły”."
},
"order": {
"label": "Pozycja"
"label": "Pozycja",
"description": "Pozycja numeryczna określająca kolejność kamery w układzie widoku z lotu ptaka."
},
"label": "Widok z lotu ptaka",
"description": "Ustawienia widoku z lotu ptaka „Birdseye”, który łączy obraz z wielu kamer w jeden układ.",
"enabled": {
"label": "Włącz widok z lotu ptaka",
"description": "Włącz lub wyłącz funkcję widoku z lotu ptaka."
}
},
"detect": {
@@ -236,7 +248,58 @@
"description": "Włącza lub wyłącza wykrywanie obiektów dla tej kamery."
},
"stationary": {
"label": "Konfiguracja obiektów stacjonarnych"
"label": "Konfiguracja obiektów stacjonarnych",
"description": "Ustawienia wykrywania i obsługi obiektów statycznych przez określony czas.",
"interval": {
"label": "Okres bezruchu",
"description": "Częstotliwość (w klatkach) sprawdzania detekcji dla obiektów nieruchomych."
},
"threshold": {
"label": "Próg bezruchu",
"description": "Liczba klatek bez zmiany pozycji potrzebna do uznania obiektu za nieruchomy."
},
"max_frames": {
"label": "Maksymalna liczba klatek",
"description": "Ogranicza czas śledzenia nieruchomych obiektów przed ich usunięciem.",
"default": {
"label": "Domyślna maks. liczba klatek",
"description": "Domyślna maksymalna liczba klatek śledzenia nieruchomego obiektu przed zatrzymaniem."
},
"objects": {
"label": "Maksymalna liczba klatek obiektu",
"description": "Nadpisania dla poszczególnych obiektów określające maksymalną liczbę klatek śledzenia nieruchomych obiektów."
}
},
"classifier": {
"label": "Włącz klasyfikator wizualny",
"description": "Użyj klasyfikatora wizualnego do wykrywania rzeczywiście nieruchomych obiektów, nawet gdy ramki ograniczające drżą."
}
},
"label": "Wykrywanie obiektów",
"description": "Ustawienia roli „detection/detect” używanej do wykrywania obiektów i inicjalizacji trackerów.",
"height": {
"label": "Wysokość wykrywania",
"description": "Wysokość (w pikselach) klatek używanych w strumieniu detekcji; pozostaw puste, aby użyć natywnej rozdzielczości strumienia."
},
"width": {
"label": "Szerokość wykrywania",
"description": "Szerokość (w pikselach) klatek używanych w strumieniu detekcji; pozostaw puste, aby użyć natywnej rozdzielczości strumienia."
},
"fps": {
"label": "FPS wykrywania",
"description": "Docelowa liczba klatek na sekundę używana do detekcji; niższe wartości zmniejszają użycie CPU (zalecana wartość to 5, ustaw wyższą — maksymalnie 10 — tylko jeśli śledzisz bardzo szybko poruszające się obiekty)."
},
"min_initialized": {
"label": "Minimalna liczba klatek inicjalizacyjnych",
"description": "Liczba kolejnych trafień detekcji wymagana do utworzenia śledzonego obiektu. Zwiększenie wartości zmniejsza liczbę fałszywych inicjalizacji. Wartość domyślna to fps podzielone przez 2."
},
"max_disappeared": {
"label": "Maksymalna liczba pominiętych klatek",
"description": "Liczba klatek bez detekcji, po której obiekt śledzony jest uznawany za utracony."
},
"annotation_offset": {
"label": "Przesunięcie oznaczenia",
"description": "Liczba milisekund przesunięcia adnotacji detekcji w celu lepszego dopasowania ramek ograniczających na osi czasu do nagrań; wartość może być dodatnia lub ujemna."
}
},
"face_recognition": {
@@ -245,6 +308,33 @@
"enabled": {
"label": "Włącz rozpoznawanie twarzy",
"description": "Włącz lub wyłącz rozpoznawanie twarzy."
},
"min_area": {
"label": "Minimalny obszar twarzy",
"description": "Minimalny obszar twarzy (w pikselach) wymagany do podjęcia próby rozpoznania."
}
},
"ffmpeg": {
"label": "Strumienie (FFmpeg)",
"output_args": {
"detect": {
"description": "Domyślne argumenty wyjściowe dla strumieni z rolą detekcji."
},
"record": {
"description": "Domyślne argumenty wyjściowe dla strumieni z rolą zapisu."
}
},
"retry_interval": {
"label": "Czas ponownej próby FFmpeg",
"description": "Czas (w sekundach) przed ponownym uruchomieniem utraconego strumienia kamery. Domyślnie: 10."
},
"apple_compatibility": {
"label": "Kompatybilność z Apple",
"description": "Włącz tagowanie HEVC, aby zapewnić lepszą zgodność z odtwarzaczami Apple podczas nagrywania w formacie H.265."
},
"gpu": {
"label": "Indeks GPU",
"description": "Domyślny indeks karty graficznej używany do akceleracji sprzętowej, jeśli jest dostępna."
}
}
}
+94 -5
View File
@@ -1,6 +1,6 @@
{
"audio": {
"label": "Zdarzenia audio",
"label": "Wykrywanie dźwięku",
"enabled": {
"label": "Włącz detekcję audio"
},
@@ -18,7 +18,11 @@
},
"filters": {
"label": "Filtry audio",
"description": "Ustawienia filtrów dla poszczególnych typów audio, takie jak progi pewności, używane do redukcji fałszywych alarmów."
"description": "Ustawienia filtrów dla poszczególnych typów audio, takie jak progi pewności, używane do redukcji fałszywych alarmów.",
"threshold": {
"label": "Minimalna pewność wykrycia dźwięku",
"description": "Minimalny próg pewności, aby zdarzenie audio zostało zliczone."
}
},
"enabled_in_config": {
"label": "Pierwotny stan audio",
@@ -71,10 +75,18 @@
},
"birdseye": {
"mode": {
"label": "Tryb śledzenia"
"label": "Tryb śledzenia",
"description": "Tryb uwzględniania kamer w widoku z lotu ptaka: „obiekty”, „ruch” lub „ciągły”."
},
"order": {
"label": "Pozycja"
"label": "Pozycja",
"description": "Pozycja numeryczna określająca kolejność kamery w układzie widoku z lotu ptaka."
},
"label": "Widok z lotu ptaka",
"description": "Ustawienia widoku z lotu ptaka „Birdseye”, który łączy obraz z wielu kamer w jeden układ.",
"enabled": {
"label": "Włącz widok z lotu ptaka",
"description": "Włącz lub wyłącz funkcję widoku z lotu ptaka."
}
},
"detect": {
@@ -82,13 +94,90 @@
"label": "Włącz wykrywanie obiektów"
},
"stationary": {
"label": "Konfiguracja obiektów stacjonarnych"
"label": "Konfiguracja obiektów stacjonarnych",
"description": "Ustawienia wykrywania i obsługi obiektów statycznych przez określony czas.",
"interval": {
"label": "Okres bezruchu",
"description": "Częstotliwość (w klatkach) sprawdzania detekcji dla obiektów nieruchomych."
},
"threshold": {
"label": "Próg bezruchu",
"description": "Liczba klatek bez zmiany pozycji potrzebna do uznania obiektu za nieruchomy."
},
"max_frames": {
"label": "Maksymalna liczba klatek",
"description": "Ogranicza czas śledzenia nieruchomych obiektów przed ich usunięciem.",
"default": {
"label": "Domyślna maks. liczba klatek",
"description": "Domyślna maksymalna liczba klatek śledzenia nieruchomego obiektu przed zatrzymaniem."
},
"objects": {
"label": "Maksymalna liczba klatek obiektu",
"description": "Nadpisania dla poszczególnych obiektów określające maksymalną liczbę klatek śledzenia nieruchomych obiektów."
}
},
"classifier": {
"label": "Włącz klasyfikator wizualny",
"description": "Użyj klasyfikatora wizualnego do wykrywania rzeczywiście nieruchomych obiektów, nawet gdy ramki ograniczające drżą."
}
},
"label": "Wykrywanie obiektów",
"description": "Ustawienia roli „detection/detect” używanej do wykrywania obiektów i inicjalizacji trackerów.",
"height": {
"label": "Wysokość wykrywania",
"description": "Wysokość (w pikselach) klatek używanych w strumieniu detekcji; pozostaw puste, aby użyć natywnej rozdzielczości strumienia."
},
"width": {
"label": "Szerokość wykrywania",
"description": "Szerokość (w pikselach) klatek używanych w strumieniu detekcji; pozostaw puste, aby użyć natywnej rozdzielczości strumienia."
},
"fps": {
"label": "FPS wykrywania",
"description": "Docelowa liczba klatek na sekundę używana do detekcji; niższe wartości zmniejszają użycie CPU (zalecana wartość to 5, ustaw wyższą — maksymalnie 10 — tylko jeśli śledzisz bardzo szybko poruszające się obiekty)."
},
"min_initialized": {
"label": "Minimalna liczba klatek inicjalizacyjnych",
"description": "Liczba kolejnych trafień detekcji wymagana do utworzenia śledzonego obiektu. Zwiększenie wartości zmniejsza liczbę fałszywych inicjalizacji. Wartość domyślna to fps podzielone przez 2."
},
"max_disappeared": {
"label": "Maksymalna liczba pominiętych klatek",
"description": "Liczba klatek bez detekcji, po której obiekt śledzony jest uznawany za utracony."
},
"annotation_offset": {
"label": "Przesunięcie oznaczenia",
"description": "Liczba milisekund przesunięcia adnotacji detekcji w celu lepszego dopasowania ramek ograniczających na osi czasu do nagrań; wartość może być dodatnia lub ujemna."
}
},
"face_recognition": {
"label": "Rozpoznawanie twarzy",
"enabled": {
"label": "Włącz rozpoznawanie twarzy"
},
"min_area": {
"label": "Minimalny obszar twarzy",
"description": "Minimalny obszar twarzy (w pikselach) wymagany do podjęcia próby rozpoznania."
}
},
"ffmpeg": {
"output_args": {
"detect": {
"description": "Domyślne argumenty wyjściowe dla strumieni z rolą detekcji."
},
"record": {
"description": "Domyślne argumenty wyjściowe dla strumieni z rolą zapisu."
}
},
"retry_interval": {
"label": "Czas ponownej próby FFmpeg",
"description": "Czas (w sekundach) przed ponownym uruchomieniem utraconego strumienia kamery. Domyślnie: 10."
},
"apple_compatibility": {
"label": "Kompatybilność z Apple",
"description": "Włącz tagowanie HEVC, aby zapewnić lepszą zgodność z odtwarzaczami Apple podczas nagrywania w formacie H.265."
},
"gpu": {
"label": "Indeks GPU",
"description": "Domyślny indeks karty graficznej używany do akceleracji sprzętowej, jeśli jest dostępna."
}
}
}
@@ -30,7 +30,8 @@
"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}}"
"renamedCategory": "Pomyślnie zmieniono nazwę klasy na {{name}}",
"reclassifiedImage": "Pomyślne przeklasyfikowanie obrazu"
},
"error": {
"deleteImageFailed": "Nie udało się usunąć: {{errorMessage}}",
@@ -40,7 +41,8 @@
"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}}"
"renameCategoryFailed": "Nie udało się zmienić nazwy klasy: {{errorMessage}}",
"reclassifyFailed": "Niepowodzenie zmiany klasyfikacji obrazu: {{errorMessage}}"
}
},
"deleteCategory": {
@@ -191,7 +193,14 @@
"missingStatesWarning": {
"title": "Przykłady brakujących stanów",
"description": "Aby uzyskać najlepsze wyniki, zaleca się wybranie przykładów dla wszystkich stanów. Można kontynuować bez wybierania wszystkich stanów, ale model nie zostanie wytrenowany, dopóki wszystkie stany nie będą miały obrazów. Po kontynuowaniu należy użyć widoku Ostatnie klasyfikacje, aby sklasyfikować obrazy dla brakujących stanów, a następnie wytrenować model."
},
"refreshExamples": "Generuj nowe przykłady",
"refreshConfirm": {
"title": "Czy generować nowe przykłady?",
"description": "Spowoduje to wygenerowanie nowego zestawu obrazów i wyczyszczenie wszystkich zaznaczeń, w tym dotychczasowych klas. Konieczne będzie ponowne wybranie przykładów dla wszystkich klas."
}
}
}
},
"reclassifyImageAs": "Klasyfikuj jako:",
"reclassifyImage": "Zmiana klasyfikacji obrazu"
}
+2 -1
View File
@@ -497,5 +497,6 @@
"echo": "Eco",
"mains_hum": "Zumbido Elétrico",
"sidetone": "Retorno de Voz",
"throbbing": "Latejante"
"throbbing": "Latejante",
"sodeling": "Soldagem"
}
+2 -1
View File
@@ -210,7 +210,8 @@
"id": "Bahasa Indonesia (Indonésio)",
"ur": "اردو (Urdu)",
"hr": "Hrvatski (Croata)",
"bs": "Bosanski (Bósnio)"
"bs": "Bosanski (Bósnio)",
"zhHant": "Chinês Tradicional"
},
"systemLogs": "Logs de sistema",
"settings": "Configurações",
@@ -68,7 +68,10 @@
}
},
"birdseye": "Visão Panorâmica"
}
},
"showAll": "Exibir todos os grupos de câmeras",
"showLess": "Mostrar menos",
"editGroups": "Editar grupos de câmeras"
},
"debug": {
"options": {
@@ -24,6 +24,9 @@
},
"state": {
"submitted": "Enviado"
},
"toast": {
"error": "Falha ao enviar para o Frigate+. Verifique sua conexão de rede e tente novamente."
}
}
},
@@ -56,15 +59,25 @@
"toast": {
"success": "Exportação iniciada com sucesso. Veja o arquivo na tela exportar.",
"error": {
"failed": "Falha em iniciar exportação: {{error}}",
"failed": "Falha ao iniciar exportação: {{error}}",
"endTimeMustAfterStartTime": "Tempo de finalização deve ser após tempo de início",
"noVaildTimeSelected": "Nenhuma faixa de tempo válida selecionada"
},
"view": "Ver"
"view": "Ver",
"batchQueuedSuccess_one": "1 exportação na fila. Abrindo o caso agora.",
"batchQueuedSuccess_many": "{{count}} exportações colocadas na fila. Abrindo o caso agora.",
"batchQueuedSuccess_other": "",
"batchQueuedPartial": "{{successful}} de {{total}} exportações na fila. Câmeras com falha: {{failedCameras}}",
"batchQueueFailed": "Falha ao enfileirar {{total}} exportações. Câmeras com falha: {{failedCameras}}",
"batchPartial": "Iniciadas {{successful}} de {{total}} exportações. Câmeras com falha: {{failedCameras}}",
"batchFailed": "Falha ao iniciar {{total}} exportações. Câmeras com falha: {{failedCameras}}",
"queued": "Exportação na fila. Acompanhe o progresso na página de exportações."
},
"fromTimeline": {
"saveExport": "Salvar Exportação",
"previewExport": "Pré-Visualizar Exportação"
"previewExport": "Pré-Visualizar Exportação",
"queueingExport": "Enfileirando exportação...",
"useThisRange": "Use esta faixa"
},
"case": {
"label": "Caso",
@@ -94,7 +107,14 @@
"queueingButton": "Exportações na fila...",
"exportButton_one": "Exportar câmera",
"exportButton_many": "Exportar {{count}} câmeras",
"exportButton_other": "Exportar {{count}} câmeras"
"exportButton_other": "Exportar {{count}} câmeras",
"searchOrSelectGroup": "Procurar, ou selecionar um grupo de câmeras...",
"selectAll": "Selecionar todas as câmeras",
"clearSelection": "Limpar seleção",
"selectWithActivity": "Câmeras com rastreamento de objetos",
"selectGroup": "Selecione grupo",
"noMatchingCameras": "Nenhuma câmera corresponde à sua pesquisa",
"selectedCount": "{{selected}} / {{total}} selecionados"
},
"multi": {
"title_one": "Exportar análise",
@@ -106,7 +126,14 @@
"exportButton_one": "Exportar análise",
"exportButton_many": "Exportar {{count}} análises",
"exportButton_other": "Exportar {{count}} análises",
"exportingButton": "Exportando..."
"exportingButton": "Exportando...",
"toast": {
"started_one": "Uma exportação iniciada. Abrindo o caso agora.",
"started_many": "Iniciadas {{count}} exportações. Abrindo o caso agora.",
"started_other": "",
"failed": "Falha ao iniciar {{total}} exportações. Falhas: {{failedItems}}",
"partial": "Iniciadas {{successful}} de {{total}} exportações. Falhas: {{failedItems}}"
}
}
},
"streaming": {
@@ -154,6 +181,14 @@
"export": "Exportar",
"deleteNow": "Deletar Agora",
"markAsUnreviewed": "Marcar como não revisado"
},
"shareTimestamp": {
"label": "Compartilhar marca de tempo",
"title": "Compartilhar marca de tempo",
"description": "Compartilhe uma URL com marca de tempo da posição atual da reprodução ou escolha uma marca de tempo personalizada. Observe que esta não é uma URL de compartilhamento público e só pode ser acessada por usuários que tenham acesso ao Frigate e a esta câmera.",
"custom": "Marcação de data/hora personalizado",
"button": "Compartilhar URL com marcação de tempo",
"shareTitle": "Marcação de data/hora da análise do Frigate: {{camera}}"
}
},
"imagePicker": {
@@ -4,7 +4,8 @@
"noPreviewFoundFor": "Nenhuma Pré-Visualização Encontrada em {{cameraName}}",
"submitFrigatePlus": {
"title": "Enviar esse frame para Frigate+?",
"submit": "Enviar"
"submit": "Enviar",
"previewError": "Não foi possível carregar a prévia do instantâneo. A gravação pode não estar disponível no momento."
},
"livePlayerRequiredIOSVersion": "iOS 17.1 ou superior é necessário para esse tipo de transmissão ao vivo.",
"streamOffline": {
@@ -47,5 +48,6 @@
"error": {
"submitFrigatePlusFailed": "Falha em submeter quadro ao Frigate+"
}
}
},
"cameraOff": "A câmera está desligada"
}
+494 -6
View File
@@ -12,7 +12,7 @@
"description": "Habilitado"
},
"audio": {
"label": "Eventos de áudio",
"label": "Detecção de áudio",
"description": "Configurações para detecção de eventos baseados em áudio para esta câmera.",
"enabled": {
"label": "Habilitar detecção de áudio",
@@ -28,11 +28,15 @@
},
"listen": {
"label": "Tipos de escuta",
"description": "Lista de tipos de eventos de áudio a serem detectados (por exemplo: latido, alarme de incêndio, grito, fala, berro)."
"description": "Lista de tipos de eventos de áudio a serem detectados (por exemplo: latido, alarme de incêndio, fala, grito)."
},
"filters": {
"label": "Filtros de áudio",
"description": "Configurações de filtro por tipo de áudio, como limites de confiança, usadas para reduzir falsos positivos."
"description": "Configurações de filtro por tipo de áudio, como limites de confiança, usadas para reduzir falsos positivos.",
"threshold": {
"label": "Confiança mínima do áudio",
"description": "Limite mínimo de confiança para que o evento de áudio seja contabilizado."
}
},
"enabled_in_config": {
"label": "Estado de áudio original",
@@ -47,11 +51,495 @@
"audio_transcription": {
"label": "Transcrição de áudio",
"enabled": {
"label": "Habilitar transcrição"
"label": "Habilitar transcrição",
"description": "Ative ou desative a transcrição de eventos de áudio acionada manualmente."
},
"live_enabled": {
"label": "Transcrição em tempo real"
"label": "Transcrição em tempo real",
"description": "Ative a transcrição ao vivo por streaming para o áudio à medida que ele é recebido."
},
"description": "Configurações de transcrição de áudio e voz ao vivo para eventos e legendas em tempo real."
"description": "Configurações de transcrição de áudio e voz ao vivo para eventos e legendas em tempo real.",
"enabled_in_config": {
"label": "Estado original da transcrição"
}
},
"detect": {
"enabled": {
"label": "Ativar detecção de objetos",
"description": "Ative ou desative a detecção de objetos para esta câmera."
},
"height": {
"label": "Detectar altura",
"description": "Altura (em pixels) dos quadros usados para o fluxo de detecção; deixe em branco para usar a resolução nativa do fluxo."
},
"width": {
"label": "Detectar largura",
"description": "Largura (em pixels) dos quadros usados para o fluxo de detecção; deixe em branco para usar a resolução nativa do fluxo."
},
"fps": {
"label": "Detectar FPS",
"description": "Taxa de quadros por segundo desejada para a execução da detecção; valores mais baixos reduzem o uso da CPU (o valor recomendado é 5; defina um valor mais alto — no máximo 10 — apenas se estiver rastreando objetos que se movem extremamente rápido)."
},
"min_initialized": {
"label": "Quadros de inicialização mínimos",
"description": "Número de detecções consecutivas necessárias antes de criar um objeto rastreado. Aumente esse valor para reduzir inicializações falsas. O valor padrão é o fps dividido por 2."
},
"max_disappeared": {
"label": "Máximo de quadros perdidos",
"description": "Número de quadros sem detecção antes que um objeto rastreado seja considerado desaparecido."
},
"stationary": {
"label": "Configuração de objetos estáticos",
"description": "Configurações para detectar e gerenciar objetos que permanecem parados por um período de tempo.",
"interval": {
"label": "Intervalo estacionário",
"description": "Com que frequência (em quadros) realizar uma verificação de detecção para confirmar um objeto estacionário."
},
"threshold": {
"label": "Limiar estacionário",
"description": "Número de quadros sem alteração de posição necessários para marcar um objeto como estacionário."
},
"max_frames": {
"label": "Quadros máximos",
"description": "Limita por quanto tempo objetos estacionários são rastreados antes de serem descartados.",
"default": {
"label": "Máximo de quadros padrão",
"description": "Número máximo padrão de quadros para rastrear um objeto estacionário antes de parar."
},
"objects": {
"label": "Quadros máximos do objeto",
"description": "Substituições por objeto para o número máximo de quadros de rastreamento de objetos estacionários."
}
},
"classifier": {
"label": "Ativar classificador visual",
"description": "Use um classificador visual para detectar objetos verdadeiramente estacionários, mesmo quando as caixas delimitadoras oscilam."
}
},
"annotation_offset": {
"label": "Deslocamento da anotação",
"description": "Milissegundos para deslocar as anotações de detecção, a fim de alinhar melhor as caixas delimitadoras da linha do tempo com as gravações; pode ser um valor positivo ou negativo."
},
"label": "Detecção de Objetos",
"description": "Configurações para a função de detecção (*detect*) usada para executar a detecção de objetos e inicializar rastreadores."
},
"face_recognition": {
"label": "Reconhecimento facial",
"description": "Configurações de detecção e reconhecimento facial para esta câmera.",
"enabled": {
"label": "Ativar reconhecimento facial",
"description": "Ative ou desative o reconhecimento facial."
},
"min_area": {
"label": "Área mínima do rosto",
"description": "Área mínima (em pixels) da caixa delimitadora de um rosto detectado necessária para tentar o reconhecimento."
}
},
"ffmpeg": {
"label": "Fluxos (FFmpeg)",
"description": "Entradas de fluxo de câmera e opções do FFmpeg, incluindo caminho do binário, argumentos, aceleração de hardware (hwaccel) e argumentos de saída por função.",
"path": {
"label": "Caminho do FFmpeg",
"description": "Caminho para o binário do FFmpeg a ser utilizado ou um alias de versão (\"7.0\" ou \"8.0\")."
},
"global_args": {
"label": "Argumentos globais do FFmpeg",
"description": "Argumentos globais passados para processos do FFmpeg."
},
"hwaccel_args": {
"label": "Argumentos de aceleração de hardware",
"description": "Argumentos de aceleração de hardware para o FFmpeg. Recomenda-se o uso de predefinições específicas do provedor."
},
"input_args": {
"label": "Argumentos de entrada",
"description": "Argumentos de entrada aplicados aos fluxos de entrada do FFmpeg."
},
"output_args": {
"label": "Argumentos de saída",
"description": "Argumentos de saída padrão utilizados para diferentes funções do FFmpeg, como detecção e gravação.",
"detect": {
"label": "Detectar argumentos de saída",
"description": "Argumentos de saída padrão para fluxos de detecção de função."
},
"record": {
"label": "Registrar argumentos de saída",
"description": "Argumentos de saída padrão para fluxos de função de registro."
}
},
"retry_interval": {
"label": "Tempo de nova tentativa do FFmpeg",
"description": "Segundos de espera antes de tentar reconectar um fluxo de câmera após uma falha. O padrão é 10."
},
"apple_compatibility": {
"label": "Compatibilidade com a Apple",
"description": "Ative a marcação HEVC para melhor compatibilidade com reprodutores da Apple ao gravar em H.265."
},
"gpu": {
"label": "Índice da GPU",
"description": "Índice da GPU padrão usado para aceleração de hardware, se disponível."
},
"inputs": {
"label": "Entradas de câmera",
"description": "Lista de definições de fluxo de entrada (caminhos e funções) para esta câmera.",
"path": {
"label": "Caminho de entrada",
"description": "URL ou caminho do fluxo de entrada da câmera."
},
"roles": {
"label": "Funções de entrada",
"description": "Funções para este fluxo de entrada."
},
"global_args": {
"label": "Argumentos globais do FFmpeg",
"description": "Argumentos globais do FFmpeg para este fluxo de entrada."
},
"hwaccel_args": {
"label": "Argumentos de aceleração de hardware",
"description": "Argumentos de aceleração de hardware para este fluxo de entrada."
},
"input_args": {
"label": "Argumentos de entrada",
"description": "Argumentos de entrada específicos para este fluxo."
}
}
},
"birdseye": {
"mode": {
"label": "Modo de rastreamento",
"description": "Modo de inclusão de câmeras no Birdseye: 'objetos', 'movimento' ou 'contínuo'."
},
"order": {
"label": "Posição",
"description": "Posição numérica que controla a ordem da câmera no layout de vista aérea (Birdseye)."
},
"label": "Birdseye",
"description": "Configurações para a visualização composta \"Birdseye\", que combina múltiplas transmissões de câmera em um único layout.",
"enabled": {
"label": "Ativar Birdseye"
}
},
"live": {
"label": "Reprodução ao vivo",
"description": "Configurações utilizadas pela interface web para controlar a seleção, a resolução e a qualidade da transmissão ao vivo.",
"streams": {
"label": "Nomes de transmissões ao vivo",
"description": "Mapeamento de nomes de fluxos configurados para nomes de restream/go2rtc usados na reprodução ao vivo."
},
"height": {
"description": "Altura (em pixels) para renderizar a transmissão ao vivo jsmpeg na interface web; deve ser menor ou igual à altura da transmissão de detecção."
},
"quality": {
"description": "Qualidade de codificação para o fluxo jsmpeg (1 para a mais alta, 31 para a mais baixa)."
}
},
"motion": {
"enabled": {
"label": "Ativar detecção de movimento",
"description": "Ative ou desative a detecção de movimento para esta câmera."
},
"threshold": {
"label": "Limiar de movimento",
"description": "Limiar de diferença de pixels utilizado pelo detector de movimento; valores mais altos reduzem a sensibilidade (faixa de 1 a 255)."
},
"lightning_threshold": {
"label": "Limiar de relâmpago",
"description": "Limite para detectar e ignorar picos breves de luminosidade (valores mais baixos indicam maior sensibilidade; valores entre 0,3 e 1,0). Isso não impede totalmente a detecção de movimento; apenas faz com que o detector pare de analisar quadros adicionais assim que o limite é excedido. Gravações baseadas em movimento continuam sendo geradas durante esses eventos."
},
"skip_motion_threshold": {
"label": "Limite de movimento para pular",
"description": "Se definido para um valor entre 0,0 e 1,0, e se uma proporção da imagem superior a esse valor sofrer alterações em um único quadro, o detector não retornará caixas de detecção de movimento e será recalibrado imediatamente. Isso pode economizar recursos da CPU e reduzir falsos positivos causados por relâmpagos, tempestades, etc., mas pode deixar passar eventos reais, como o rastreamento automático de um objeto por uma câmera PTZ. A escolha envolve um equilíbrio entre descartar alguns megabytes de gravações e analisar alguns clipes curtos. Deixe a opção não definida (None) para desativar esse recurso."
},
"improve_contrast": {
"label": "Melhorar contraste",
"description": "Aplique melhoria de contraste aos quadros antes da análise de movimento para auxiliar na detecção."
},
"contour_area": {
"label": "Área de contorno",
"description": "Área mínima do contorno, em pixels, necessária para que um contorno de movimento seja contabilizado."
},
"delta_alpha": {
"label": "Delta Alfa",
"description": "Fator de *alpha blending* utilizado na diferenciação de quadros para o cálculo de movimento."
},
"frame_alpha": {
"label": "Quadro alfa",
"description": "Valor alfa utilizado ao combinar quadros para o pré-processamento de movimento."
},
"frame_height": {
"label": "Altura da quadro",
"description": "Altura em pixels para a qual os quadros são redimensionados ao calcular o movimento."
},
"mask": {
"label": "Coordenadas da máscara",
"description": "Coordenadas x,y ordenadas que definem o polígono da máscara de movimento utilizado para incluir ou excluir áreas."
},
"mqtt_off_delay": {
"label": "Atraso de desligamento MQTT",
"description": "Segundos de espera após o último movimento antes de publicar um estado \"off\" via MQTT."
},
"enabled_in_config": {
"label": "Estado de movimento original",
"description": "Indica se a detecção de movimento estava habilitada na configuração estática original."
},
"raw_mask": {
"label": "Máscara Bruta"
},
"label": "Detecção de movimento",
"description": "Configurações padrão de detecção de movimento para esta câmera."
},
"objects": {
"label": "Objetos",
"description": "Configurações padrão de rastreamento de objetos, incluindo quais rótulos rastrear e filtros por objeto.",
"track": {
"label": "Objetos a rastrear",
"description": "Lista de rótulos de objetos a serem rastreados para esta câmera."
},
"filters": {
"label": "Filtros de objeto",
"description": "Filtros aplicados aos objetos detectados para reduzir falsos positivos (área, proporção, confiança).",
"min_area": {
"label": "Área mínima do objeto",
"description": "Área mínima da caixa delimitadora (em pixels ou porcentagem) necessária para este tipo de objeto. Pode ser especificada em pixels (inteiro) ou porcentagem (valor de ponto flutuante entre 0,000001 e 0,99)."
},
"max_area": {
"label": "Área máxima do objeto",
"description": "Área máxima da caixa delimitadora (pixels ou porcentagem) permitida para este tipo de objeto. Pode ser pixels (int) ou porcentagem (flutuar entre 0,000001 e 0,99)."
},
"min_ratio": {
"label": "Razão de aspecto mínimo",
"description": "Razão mínima entre largura e altura necessária para que a caixa delimitadora se qualifique."
},
"max_ratio": {
"label": "Razão de aspecto máxima",
"description": "Razão máxima entre largura e altura permitida para que a caixa delimitadora qualifique."
},
"threshold": {
"label": "Limiar de confiança",
"description": "Limiar médio de confiança de detecção necessário para que o objeto seja considerado um verdadeiro positivo."
},
"min_score": {
"label": "Confiança mínima",
"description": "Confiança mínima de detecção em um único quadro necessária para que o objeto seja contabilizado."
},
"mask": {
"label": "Máscara com filtro",
"description": "Coordenadas do polígono que definem onde este filtro é aplicado dentro do quadro."
},
"raw_mask": {
"label": "Máscara Bruta"
}
},
"mask": {
"label": "Máscara de objeto",
"description": "Polígono de máscara usado para impedir a detecção de objetos em áreas específicas."
},
"raw_mask": {
"label": "Máscara Bruta"
},
"genai": {
"label": "Configuração de objeto da GenAI",
"description": "Opções de GenIA para descrever objetos rastreados e enviar quadros para geração.",
"enabled": {
"label": "Ativar GenAI",
"description": "Habilitar por padrão a geração de descrições para objetos rastreados usando GenAI."
},
"use_snapshot": {
"label": "Usar instantâneos",
"description": "Use instantâneos de objetos em vez de miniaturas para a geração de descrições pela GenAI."
},
"prompt": {
"label": "Sugestão de legenda",
"description": "Modelo de prompt padrão usado ao gerar descrições com GenAI."
},
"object_prompts": {
"label": "Prompts de objeto",
"description": "Prompts por objeto para personalizar as saídas de GenAI para rótulos específicos."
},
"objects": {
"label": "Objetos de GenAI",
"description": "Lista de rótulos de objetos a serem enviados à GenAI por padrão."
},
"required_zones": {
"label": "Zonas obrigatórias",
"description": "Zonas que devem ser acessadas para que os objetos se qualifiquem para a geração de descrições pela GenAI."
},
"debug_save_thumbnails": {
"label": "Salvar miniaturas",
"description": "Salve as miniaturas enviadas à GenAI para depuração e revisão."
},
"send_triggers": {
"label": "Gatilhos de GenAI",
"description": "Define quando os quadros devem ser enviados para a GenAI (ao final, após atualizações, etc.).",
"tracked_object_end": {
"label": "Enviar no fim",
"description": "Envie uma solicitação à GenAI quando o objeto rastreado terminar."
},
"after_significant_updates": {
"label": "Acionamento antecipado da GenAI",
"description": "Envie uma solicitação à GenAI após um número especificado de atualizações significativas do objeto monitorado."
}
},
"enabled_in_config": {
"label": "Estado original da GenAI",
"description": "Indica se a GenAI foi habilitada na configuração estática original."
}
}
},
"lpr": {
"enabled": {
"label": "Ativar LPR",
"description": "Ative ou desative o LPR nesta câmera."
},
"expire_time": {
"label": "Segundos para expirar",
"description": "Tempo, em segundos, após o qual uma placa não detectada é removida do rastreador (apenas para câmeras LPR dedicadas)."
},
"min_area": {
"label": "Área mínima da placa",
"description": "Área mínima da placa (em pixels) necessária para tentar o reconhecimento."
},
"enhancement": {
"label": "Nível de aprimoramento",
"description": "Nível de aprimoramento (0-10) a ser aplicado aos recortes da placa antes do OCR; valores mais altos nem sempre melhoram os resultados, e níveis acima de 5 podem funcionar apenas com placas noturnas, devendo ser utilizados com cautela."
}
},
"record": {
"label": "Gravação",
"description": "Configurações de gravação e retenção para esta câmera.",
"enabled": {
"label": "Ativar gravação",
"description": "Ative ou desative a gravação para esta câmera."
},
"expire_interval": {
"label": "Intervalo de limpeza de gravação",
"description": "Minutos entre as execuções de limpeza que removem segmentos de gravação expirados."
},
"continuous": {
"label": "Retenção contínua",
"description": "Número de dias para manter as gravações, independentemente de objetos rastreados ou movimento. Defina como 0 se quiser manter apenas gravações de alertas e detecções.",
"days": {
"label": "Dias de retenção",
"description": "Dias para manter as gravações."
}
},
"motion": {
"label": "Retenção de movimento",
"description": "Número de dias para manter gravações acionadas por movimento, independentemente dos objetos rastreados. Defina como 0 se quiser manter apenas gravações de alertas e detecções.",
"days": {
"label": "Dias de retenção",
"description": "Dias para manter as gravações."
}
},
"detections": {
"label": "Retenção de detecção",
"description": "Configurações de retenção de gravação para eventos de detecção, incluindo durações de pré e pós-captura.",
"pre_capture": {
"label": "Segundos de pré-captura",
"description": "Número de segundos anteriores ao evento de detecção a serem incluídos na gravação."
},
"post_capture": {
"label": "Segundos após a captura",
"description": "Número de segundos após o evento de detecção a serem incluídos na gravação."
},
"retain": {
"label": "Retenção de eventos",
"description": "Configurações de retenção para gravações de eventos de detecção.",
"days": {
"label": "Dias de retenção",
"description": "Número de dias para manter as gravações de eventos de detecção."
},
"mode": {
"label": "Modo de retenção",
"description": "Modo de retenção: all (salva todos os segmentos), motion (salva segmentos com movimento) ou active_objects (salva segmentos com objetos ativos)."
}
}
},
"alerts": {
"label": "Retenção de alertas",
"description": "Configurações de retenção de gravações para eventos de alerta, incluindo durações de pré e pós-captura.",
"pre_capture": {
"label": "Segundos de pré-captura",
"description": "Número de segundos anteriores ao evento de detecção a serem incluídos na gravação."
},
"post_capture": {
"label": "Segundos após a captura",
"description": "Número de segundos após o evento de detecção a serem incluídos na gravação."
},
"retain": {
"label": "Retenção de eventos",
"description": "Configurações de retenção para gravações de eventos de detecção.",
"days": {
"label": "Dias de retenção",
"description": "Número de dias para manter as gravações de eventos de detecção."
},
"mode": {
"label": "Modo de retenção",
"description": "Modo de retenção: all (salvar todos os segmentos), motion (salvar segmentos com movimento) ou active_objects (salvar segmentos com objetos ativos)."
}
}
},
"export": {
"label": "Exportar configuração",
"description": "Configurações utilizadas ao exportar gravações, como timelapse e aceleração de hardware.",
"hwaccel_args": {
"label": "Exportar argumentos de hwaccel",
"description": "Argumentos de aceleração de hardware a serem usados para operações de exportação/transcodificação."
},
"max_concurrent": {
"label": "Máximo de exportações simultâneas",
"description": "Número máximo de tarefas de exportação a serem processadas simultaneamente."
},
"chapters": {
"label": "Metadados de capítulos para incorporar nas gravações exportadas"
}
},
"preview": {
"label": "Pré-visualizar configuração",
"description": "Configurações que controlam a qualidade das prévias de gravação exibidas na interface de usuário.",
"quality": {
"label": "Qualidade da pré-visualização",
"description": "Nível de qualidade da pré-visualização (muito_baixa, baixa, média, alta, muito_alta)."
}
},
"enabled_in_config": {
"label": "Estado original da gravação",
"description": "Indica se a gravação foi habilitada na configuração estática original."
}
},
"review": {
"label": "Rever",
"description": "Configurações que controlam alertas, detecções e resumos de revisão por GenAI utilizados pela interface do usuário e pelo armazenamento desta câmera.",
"alerts": {
"label": "Configuração de alertas",
"description": "Configurações sobre quais objetos monitorados geram alertas e como os alertas são retidos.",
"enabled": {
"label": "Ativar alertas",
"description": "Ative ou desative a geração de alertas para esta câmera."
},
"labels": {
"label": "Etiquetas de alerta",
"description": "Lista de rótulos de objetos que se qualificam como alertas (por exemplo: carro, pessoa)."
},
"required_zones": {
"label": "Zonas obrigatórias",
"description": "Zonas nas quais um objeto deve entrar para ser considerado um alerta; deixe em branco para permitir qualquer zona."
},
"enabled_in_config": {
"label": "Estado dos alertas originais",
"description": "Monitora se os alertas estavam originalmente habilitados na configuração estática."
},
"cutoff_time": {
"label": "Horário limite dos alertas",
"description": "Segundos de espera após a ausência de atividade que gere alerta antes de encerrar o alerta."
}
},
"detections": {
"label": "Configuração de detecções",
"description": "Configurações que definem para quais objetos rastreados são geradas detecções (sem gerar alerta) e como essas detecções são retidas.",
"enabled": {
"label": "Ativar detecções",
"description": "Ative ou desative eventos de detecção para esta câmera."
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More