Compare commits

...

46 Commits

Author SHA1 Message Date
Nicolas Mowen
5615ec82dc Set log to debug 2026-02-05 12:20:07 -07:00
GuoQing Liu
c9055ea941 fix: fix delete zone type i18n (#21894) 2026-02-05 09:38:09 -06:00
Nicolas Mowen
c9ba851f0d Fix event getting stuck due to only checking current clip / snapshot (#21893)
* Fix event getting stuck due to only checking current clip / snapshot

* formatting
2026-02-05 08:43:19 -06:00
Pops0n
a8ab82937b Update hailo installation instructions and script (#21882)
* Update installation.md for Raspberry Pi and Hailo

Updated Hailo installation instructions to cover both Bookworm and Trixie OS on Raspberry Pi. 


Referenced discussions: #21177, #20621, #20062, #19531

* Update user_installation.sh for Raspberry Pi (Bookworm and Trixie)

Simplified and improved the user installation script for  Hailo to support Raspberry Pi OS Bookworm, Trixie, and x86 platforms.

Referenced discussions: #21177, #20621, #20062, #19531

* Update installation.md

* Update user_installation.sh

* Update installation.md

* Update installation.md

Added optional fix for PCIe descriptor page size error.
Related discussion: #19481

* Update installation.md

Changed kernel driver version check from modinfo to /sys/module for correct post-reboot output
2026-02-05 06:38:34 -07:00
Josh Hawkins
21e4b36c7c Add languages (#21870)
* add persian, croatian, and slovak

* i18n

* fix formatting due to new version of ruff
2026-02-03 13:29:52 -06:00
Hosted Weblate
06141b900e Update translation files
Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common
2026-02-03 10:54:04 -07:00
Hosted Weblate
011e7a1ce6 Update translation files
Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common
2026-02-03 10:54:04 -07:00
Hosted Weblate
81d5e80dd2 Update translation files
Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common
2026-02-03 10:54:04 -07:00
Hosted Weblate
3b79b34c07 Update translation files
Updated by "Squash Git commits" add-on in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/
Translation: Frigate NVR/common
2026-02-03 10:54:04 -07:00
Hosted Weblate
7d8d2c5521 Translated using Weblate (French)
Currently translated at 100.0% (654 of 654 strings)

Co-authored-by: Apocoloquintose <bertrand.moreux@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/fr/
Translation: Frigate NVR/views-settings
2026-02-03 10:54:04 -07:00
Hosted Weblate
7fcce67c2a Translated using Weblate (Arabic)
Currently translated at 1.6% (2 of 122 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Med Taha Ben Brahim <mohamedtaha.bb@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ar/
Translation: Frigate NVR/views-classificationmodel
2026-02-03 10:54:04 -07:00
Hosted Weblate
87da12c453 Translated using Weblate (Korean)
Currently translated at 75.4% (40 of 53 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 임도균 <limkwon7@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/ko/
Translation: Frigate NVR/views-facelibrary
2026-02-03 10:54:04 -07:00
Hosted Weblate
522630487b Translated using Weblate (Serbian)
Currently translated at 94.5% (52 of 55 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (49 of 49 strings)

Translated using Weblate (Serbian)

Currently translated at 7.6% (50 of 654 strings)

Translated using Weblate (Serbian)

Currently translated at 55.4% (51 of 92 strings)

Translated using Weblate (Serbian)

Currently translated at 44.0% (52 of 118 strings)

Translated using Weblate (Serbian)

Currently translated at 37.5% (51 of 136 strings)

Translated using Weblate (Serbian)

Currently translated at 18.6% (40 of 215 strings)

Translated using Weblate (Serbian)

Currently translated at 12.9% (65 of 501 strings)

Translated using Weblate (Serbian)

Currently translated at 36.0% (49 of 136 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Serbian)

Currently translated at 96.2% (51 of 53 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (43 of 43 strings)

Translated using Weblate (Serbian)

Currently translated at 42.6% (52 of 122 strings)

Translated using Weblate (Serbian)

Currently translated at 31.9% (39 of 122 strings)

Translated using Weblate (Serbian)

Currently translated at 16.2% (35 of 215 strings)

Translated using Weblate (Serbian)

Currently translated at 10.3% (52 of 501 strings)

Translated using Weblate (Serbian)

Currently translated at 71.6% (38 of 53 strings)

Translated using Weblate (Serbian)

Currently translated at 42.3% (39 of 92 strings)

Translated using Weblate (Serbian)

Currently translated at 27.9% (38 of 136 strings)

Translated using Weblate (Serbian)

Currently translated at 32.2% (38 of 118 strings)

Translated using Weblate (Serbian)

Currently translated at 84.7% (39 of 46 strings)

Translated using Weblate (Serbian)

Currently translated at 70.9% (39 of 55 strings)

Translated using Weblate (Serbian)

Currently translated at 90.6% (39 of 43 strings)

Translated using Weblate (Serbian)

Currently translated at 28.6% (39 of 136 strings)

Translated using Weblate (Serbian)

Currently translated at 79.5% (39 of 49 strings)

Translated using Weblate (Serbian)

Currently translated at 5.5% (36 of 654 strings)

Translated using Weblate (Serbian)

Currently translated at 14.8% (32 of 215 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (10 of 10 strings)

Translated using Weblate (Serbian)

Currently translated at 56.6% (30 of 53 strings)

Translated using Weblate (Serbian)

Currently translated at 72.0% (31 of 43 strings)

Translated using Weblate (Serbian)

Currently translated at 22.7% (31 of 136 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Serbian)

Currently translated at 67.3% (31 of 46 strings)

Translated using Weblate (Serbian)

Currently translated at 25.4% (31 of 122 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (10 of 10 strings)

Translated using Weblate (Serbian)

Currently translated at 56.3% (31 of 55 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Serbian)

Currently translated at 8.5% (43 of 501 strings)

Translated using Weblate (Serbian)

Currently translated at 63.2% (31 of 49 strings)

Translated using Weblate (Serbian)

Currently translated at 32.6% (30 of 92 strings)

Translated using Weblate (Serbian)

Currently translated at 26.2% (31 of 118 strings)

Translated using Weblate (Serbian)

Currently translated at 22.0% (30 of 136 strings)

Translated using Weblate (Serbian)

Currently translated at 4.5% (30 of 654 strings)

Co-authored-by: Aleksandar Jevremovic <aleksandar@jevremovic.org>
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/common/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sr/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-configeditor
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
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
77eb5d6012 Translated using Weblate (Finnish)
Currently translated at 76.9% (10 of 13 strings)

Translated using Weblate (Finnish)

Currently translated at 32.8% (215 of 654 strings)

Translated using Weblate (Finnish)

Currently translated at 4.0% (5 of 122 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Niko Järvinen <nbjarvinen@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/fi/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/fi/
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-settings
2026-02-03 10:54:04 -07:00
Hosted Weblate
7339961636 Translated using Weblate (Swedish)
Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (216 of 216 strings)

Co-authored-by: Felix Boström <felix.bostrum@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sv/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-input
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
2026-02-03 10:54:04 -07:00
Hosted Weblate
c34fd3b0d5 Translated using Weblate (French)
Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (French)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (French)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (French)

Currently translated at 100.0% (654 of 654 strings)

Co-authored-by: Apocoloquintose <bertrand.moreux@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/fr/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
00c8c407c5 Translated using Weblate (Spanish)
Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (10 of 10 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (216 of 216 strings)

Co-authored-by: Daniel <danieldiazdelaiglesia@gmail.com>
Co-authored-by: Gerard Ricart Castells <gerard.ricart@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/es/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/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/common
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
b17e5a3eff Translated using Weblate (Dutch)
Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (122 of 122 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Marijn <168113859+Marijn0@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/nl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nl/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
2026-02-03 10:54:04 -07:00
Hosted Weblate
8b3c8a0ade Translated using Weblate (Indonesian)
Currently translated at 36.4% (27 of 74 strings)

Translated using Weblate (Indonesian)

Currently translated at 96.0% (24 of 25 strings)

Translated using Weblate (Indonesian)

Currently translated at 12.5% (27 of 216 strings)

Translated using Weblate (Indonesian)

Currently translated at 17.7% (89 of 501 strings)

Translated using Weblate (Indonesian)

Currently translated at 16.1% (22 of 136 strings)

Translated using Weblate (Indonesian)

Currently translated at 58.6% (27 of 46 strings)

Translated using Weblate (Indonesian)

Currently translated at 4.2% (28 of 654 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.6% (39 of 43 strings)

Translated using Weblate (Indonesian)

Currently translated at 23.7% (29 of 122 strings)

Translated using Weblate (Indonesian)

Currently translated at 47.2% (26 of 55 strings)

Translated using Weblate (Indonesian)

Currently translated at 98.1% (52 of 53 strings)

Translated using Weblate (Indonesian)

Currently translated at 25.5% (25 of 98 strings)

Translated using Weblate (Indonesian)

Currently translated at 19.1% (26 of 136 strings)

Translated using Weblate (Indonesian)

Currently translated at 53.0% (26 of 49 strings)

Translated using Weblate (Indonesian)

Currently translated at 23.7% (28 of 118 strings)

Translated using Weblate (Indonesian)

Currently translated at 13.9% (17 of 122 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Syarif Hidayat <syarifbl09@gmail.com>
Co-authored-by: ariska <ariska@databisnis.id>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/id/
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/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/id/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/id/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
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-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
2fe5e06fed Translated using Weblate (Arabic)
Currently translated at 1.6% (2 of 122 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Med Taha Ben Brahim <mohamedtaha.bb@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ar/
Translation: Frigate NVR/views-classificationmodel
2026-02-03 10:54:04 -07:00
Hosted Weblate
e9db966097 Translated using Weblate (Italian)
Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (216 of 216 strings)

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/common/it/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/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/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/it/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
4d63a74fd6 Translated using Weblate (Polish)
Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Polish)

Currently translated at 95.9% (94 of 98 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (215 of 215 strings)

Co-authored-by: Damian Radecki <damianradecki97@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: J P <jpoloczek24@gmail.com>
Co-authored-by: Mateusz Kulis <kulis.matis@gmail.com>
Co-authored-by: przeniek <przeniek@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/pl/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-live
2026-02-03 10:54:04 -07:00
Hosted Weblate
b6e5894650 Translated using Weblate (Hungarian)
Currently translated at 71.3% (97 of 136 strings)

Translated using Weblate (Hungarian)

Currently translated at 25.4% (31 of 122 strings)

Translated using Weblate (Hungarian)

Currently translated at 93.9% (203 of 216 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Hungarian)

Currently translated at 62.3% (408 of 654 strings)

Translated using Weblate (Hungarian)

Currently translated at 96.2% (51 of 53 strings)

Translated using Weblate (Hungarian)

Currently translated at 83.7% (36 of 43 strings)

Translated using Weblate (Hungarian)

Currently translated at 20.4% (25 of 122 strings)

Translated using Weblate (Hungarian)

Currently translated at 88.9% (121 of 136 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.4% (428 of 501 strings)

Translated using Weblate (Hungarian)

Currently translated at 93.9% (202 of 215 strings)

Translated using Weblate (Hungarian)

Currently translated at 68.3% (93 of 136 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Peter Bartfai <pbartfai@stardust.hu>
Co-authored-by: Zsolt Fojtyik <zsozso830316@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/hu/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/hu/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
62b880a4b2 Translated using Weblate (Croatian)
Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (25 of 25 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (654 of 654 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: stipe-jurkovic <sjurko00@fesb.hr>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/hr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/hr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/hr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/hr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/hr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/hr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/hr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/hr/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-player
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
5984346623 Added translation using Weblate (Icelandic)
Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Added translation using Weblate (Icelandic)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sindris <sindri.sse@gmail.com>
2026-02-03 10:54:04 -07:00
Hosted Weblate
a394d37bfe Translated using Weblate (Portuguese)
Currently translated at 90.5% (48 of 53 strings)

Translated using Weblate (Portuguese)

Currently translated at 76.9% (10 of 13 strings)

Translated using Weblate (Portuguese)

Currently translated at 28.6% (35 of 122 strings)

Co-authored-by: Carlos Santos <c.santos00@hotmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/pt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/pt/
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
2026-02-03 10:54:04 -07:00
Hosted Weblate
a407f08db6 Translated using Weblate (Czech)
Currently translated at 65.4% (428 of 654 strings)

Translated using Weblate (Czech)

Currently translated at 45.9% (56 of 122 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (53 of 53 strings)

Translated using Weblate (Czech)

Currently translated at 91.9% (125 of 136 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (55 of 55 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Czech)

Currently translated at 86.7% (118 of 136 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (53 of 53 strings)

Translated using Weblate (Czech)

Currently translated at 93.4% (86 of 92 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (43 of 43 strings)

Translated using Weblate (Czech)

Currently translated at 96.3% (53 of 55 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Czech)

Currently translated at 64.9% (425 of 654 strings)

Translated using Weblate (Czech)

Currently translated at 74.2% (101 of 136 strings)

Translated using Weblate (Czech)

Currently translated at 32.7% (40 of 122 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Martin Brož <code@martin-broz.cz>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/cs/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/cs/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
2cd14341e0 Translated using Weblate (Catalan)
Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (216 of 216 strings)

Co-authored-by: Eduardo Pastor Fernández <123eduardoneko123@gmail.com>
Co-authored-by: Gerard Ricart Castells <gerard.ricart@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
2026-02-03 10:54:04 -07:00
Hosted Weblate
9285c5e10a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (216 of 216 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/uk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/uk/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
2026-02-03 10:54:04 -07:00
Hosted Weblate
74ac45d0af Translated using Weblate (Romanian)
Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (10 of 10 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (216 of 216 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/common/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
2026-02-03 10:54:04 -07:00
Hosted Weblate
2f06cfe50c Translated using Weblate (Russian)
Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (43 of 43 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (98 of 98 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: internetson <sockmancore@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/ru/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ru/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
9413f1c46d Translated using Weblate (Estonian)
Currently translated at 80.4% (74 of 92 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (216 of 216 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/et/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-live
2026-02-03 10:54:04 -07:00
Hosted Weblate
fee3050886 Translated using Weblate (Greek)
Currently translated at 6.5% (8 of 122 strings)

Translated using Weblate (Greek)

Currently translated at 53.2% (115 of 216 strings)

Translated using Weblate (Greek)

Currently translated at 48.8% (21 of 43 strings)

Co-authored-by: Apostolos Tsaganos <apostolos94@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/el/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/el/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
2026-02-03 10:54:04 -07:00
Hosted Weblate
9d572ba8cb Translated using Weblate (Danish)
Currently translated at 72.0% (18 of 25 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Danish)

Currently translated at 18.3% (9 of 49 strings)

Translated using Weblate (Danish)

Currently translated at 92.3% (12 of 13 strings)

Translated using Weblate (Danish)

Currently translated at 39.5% (17 of 43 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (46 of 46 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (10 of 10 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (118 of 118 strings)

Translated using Weblate (Danish)

Currently translated at 39.1% (196 of 501 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (10 of 10 strings)

Translated using Weblate (Danish)

Currently translated at 18.8% (10 of 53 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Danish)

Currently translated at 37.2% (16 of 43 strings)

Translated using Weblate (Danish)

Currently translated at 59.8% (73 of 122 strings)

Co-authored-by: Bjorn Jorgensen <github@bjornz.dk>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
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-auth/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/da/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/da/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-search
2026-02-03 10:54:04 -07:00
Hosted Weblate
9267d006ce Translated using Weblate (German)
Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (German)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (German)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (German)

Currently translated at 99.8% (653 of 654 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sebastian Sie <sebastian.neuplanitz@googlemail.com>
Co-authored-by: jmtatsch <julian@tatsch.it>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/de/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/de/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
2026-02-03 10:54:04 -07:00
Hosted Weblate
e6e2b74034 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 83.8% (114 of 136 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.1% (54 of 55 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 97.6% (42 of 43 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 47.5% (58 of 122 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (49 of 49 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 69.1% (452 of 654 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.5% (200 of 216 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 96.3% (53 of 55 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 68.6% (449 of 654 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 78.6% (107 of 136 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 43.4% (53 of 122 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (53 of 53 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 77.9% (106 of 136 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 96.7% (89 of 92 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 40.9% (50 of 122 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Rhuan Barreto <rhuan@barreto.work>
Co-authored-by: cvroque <carlos.vroque@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/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-filter/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-events/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/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-search/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
2026-02-03 10:54:04 -07:00
Hosted Weblate
0a307edce9 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Lithuanian)

Currently translated at 84.5% (553 of 654 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (501 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: MaBeniu <runnerm@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/lt/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/lt/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Hosted Weblate
59a959430d Translated using Weblate (Turkish)
Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (136 of 136 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (53 of 53 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (216 of 216 strings)

Co-authored-by: Emircanos <emircan368@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: pcislocked <git@pcislocked.net>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/tr/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-02-03 10:54:04 -07:00
Nicolas Mowen
2d83992284 Miscellaneous fixes (0.17 beta) (#21867)
* Adjust title prompt to have less rigidity

* Improve motion boxes handling for features that don't require motion

* Improve handling of classes starting with digits

* Improve vehicle nuance

* tweak lpr docs

* Improve grammar

* Don't allow # in face name

* add password requirements to new user dialog

* change password requirements

* Clenaup

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2026-02-03 08:31:00 -06:00
Blake Blackshear
e4fe021279 Merge remote-tracking branch 'origin/master' into dev 2026-01-31 18:42:40 +00:00
Josh Hawkins
b4520d9e2f Miscellaneous fixes (0.17 beta) (#21826)
* revert other changes

* fix verified icon overlay in debug view list

* Add classification object debug logs

* Formatting

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2026-01-29 12:42:06 -07:00
Josh Hawkins
3b6814fbc9 Revert "Miscellaneous fixes (0.17 beta) (#21764)" (#21825)
This reverts commit 50ac5a1483.
2026-01-29 11:30:21 -07:00
Marijn0
338d85a9a2 Fix i18n keys (#21814) 2026-01-28 13:55:38 -07:00
Blake Blackshear
4131252a3b Port go2rtc check (#21808)
* version update

* Restrict go2rtc exec sources by default (#21543)

* Restrict go2rtc exec sources by default

* add docs

* check for addon value too

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2026-01-28 06:56:15 -06:00
Josh Hawkins
50ac5a1483 Miscellaneous fixes (0.17 beta) (#21764)
* Add 640x640 Intel NPU stats

* use css instead of js for reviewed button hover state in filmstrip

* update copilot instructions to copy HA's format

* Set json schema for genai

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2026-01-25 18:59:25 -07:00
Blake Blackshear
ea39bb3565 update copyright (#21485) 2026-01-01 09:55:46 -06:00
256 changed files with 5950 additions and 622 deletions

View File

@@ -1,3 +1,385 @@
- For Frigate NVR, never write strings in the frontend directly. Since the project uses `react-i18next`, use `t()` and write the English string in the relevant translations file in `web/public/locales/en`.
- Always conform new and refactored code to the existing coding style in the project.
- Always have a way to test your work and confirm your changes. When running backend tests, use `python3 -u -m unittest`.
# GitHub Copilot Instructions for Frigate NVR
This document provides coding guidelines and best practices for contributing to Frigate NVR, a complete and local NVR designed for Home Assistant with AI object detection.
## Project Overview
Frigate NVR is a realtime object detection system for IP cameras that uses:
- **Backend**: Python 3.13+ with FastAPI, OpenCV, TensorFlow/ONNX
- **Frontend**: React with TypeScript, Vite, TailwindCSS
- **Architecture**: Multiprocessing design with ZMQ and MQTT communication
- **Focus**: Minimal resource usage with maximum performance
## Code Review Guidelines
When reviewing code, do NOT comment on:
- Missing imports - Static analysis tooling catches these
- Code formatting - Ruff (Python) and Prettier (TypeScript/React) handle formatting
- Minor style inconsistencies already enforced by linters
## Python Backend Standards
### Python Requirements
- **Compatibility**: Python 3.13+
- **Language Features**: Use modern Python features:
- Pattern matching
- Type hints (comprehensive typing preferred)
- f-strings (preferred over `%` or `.format()`)
- Dataclasses
- Async/await patterns
### Code Quality Standards
- **Formatting**: Ruff (configured in `pyproject.toml`)
- **Linting**: Ruff with rules defined in project config
- **Type Checking**: Use type hints consistently
- **Testing**: unittest framework - use `python3 -u -m unittest` to run tests
- **Language**: American English for all code, comments, and documentation
### Logging Standards
- **Logger Pattern**: Use module-level logger
```python
import logging
logger = logging.getLogger(__name__)
```
- **Format Guidelines**:
- No periods at end of log messages
- No sensitive data (keys, tokens, passwords)
- Use lazy logging: `logger.debug("Message with %s", variable)`
- **Log Levels**:
- `debug`: Development and troubleshooting information
- `info`: Important runtime events (startup, shutdown, state changes)
- `warning`: Recoverable issues that should be addressed
- `error`: Errors that affect functionality but don't crash the app
- `exception`: Use in except blocks to include traceback
### Error Handling
- **Exception Types**: Choose most specific exception available
- **Try/Catch Best Practices**:
- Only wrap code that can throw exceptions
- Keep try blocks minimal - process data after the try/except
- Avoid bare exceptions except in background tasks
Bad pattern:
```python
try:
data = await device.get_data() # Can throw
# ❌ Don't process data inside try block
processed = data.get("value", 0) * 100
result = processed
except DeviceError:
logger.error("Failed to get data")
```
Good pattern:
```python
try:
data = await device.get_data() # Can throw
except DeviceError:
logger.error("Failed to get data")
return
# ✅ Process data outside try block
processed = data.get("value", 0) * 100
result = processed
```
### Async Programming
- **External I/O**: All external I/O operations must be async
- **Best Practices**:
- Avoid sleeping in loops - use `asyncio.sleep()` not `time.sleep()`
- Avoid awaiting in loops - use `asyncio.gather()` instead
- No blocking calls in async functions
- Use `asyncio.create_task()` for background operations
- **Thread Safety**: Use proper synchronization for shared state
### Documentation Standards
- **Module Docstrings**: Concise descriptions at top of files
```python
"""Utilities for motion detection and analysis."""
```
- **Function Docstrings**: Required for public functions and methods
```python
async def process_frame(frame: ndarray, config: Config) -> Detection:
"""Process a video frame for object detection.
Args:
frame: The video frame as numpy array
config: Detection configuration
Returns:
Detection results with bounding boxes
"""
```
- **Comment Style**:
- Explain the "why" not just the "what"
- Keep lines under 88 characters when possible
- Use clear, descriptive comments
### File Organization
- **API Endpoints**: `frigate/api/` - FastAPI route handlers
- **Configuration**: `frigate/config/` - Configuration parsing and validation
- **Detectors**: `frigate/detectors/` - Object detection backends
- **Events**: `frigate/events/` - Event management and storage
- **Utilities**: `frigate/util/` - Shared utility functions
## Frontend (React/TypeScript) Standards
### Internationalization (i18n)
- **CRITICAL**: Never write user-facing strings directly in components
- **Always use react-i18next**: Import and use the `t()` function
```tsx
import { useTranslation } from "react-i18next";
function MyComponent() {
const { t } = useTranslation(["views/live"]);
return <div>{t("camera_not_found")}</div>;
}
```
- **Translation Files**: Add English strings to the appropriate json files in `web/public/locales/en`
- **Namespaces**: Organize translations by feature/view (e.g., `views/live`, `common`, `views/system`)
### Code Quality
- **Linting**: ESLint (see `web/.eslintrc.cjs`)
- **Formatting**: Prettier with Tailwind CSS plugin
- **Type Safety**: TypeScript strict mode enabled
- **Testing**: Vitest for unit tests
### Component Patterns
- **UI Components**: Use Radix UI primitives (in `web/src/components/ui/`)
- **Styling**: TailwindCSS with `cn()` utility for class merging
- **State Management**: React hooks (useState, useEffect, useCallback, useMemo)
- **Data Fetching**: Custom hooks with proper loading and error states
### ESLint Rules
Key rules enforced:
- `react-hooks/rules-of-hooks`: error
- `react-hooks/exhaustive-deps`: error
- `no-console`: error (use proper logging or remove)
- `@typescript-eslint/no-explicit-any`: warn (always use proper types instead of `any`)
- Unused variables must be prefixed with `_`
- Comma dangles required for multiline objects/arrays
### File Organization
- **Pages**: `web/src/pages/` - Route components
- **Views**: `web/src/views/` - Complex view components
- **Components**: `web/src/components/` - Reusable components
- **Hooks**: `web/src/hooks/` - Custom React hooks
- **API**: `web/src/api/` - API client functions
- **Types**: `web/src/types/` - TypeScript type definitions
## Testing Requirements
### Backend Testing
- **Framework**: Python unittest
- **Run Command**: `python3 -u -m unittest`
- **Location**: `frigate/test/`
- **Coverage**: Aim for comprehensive test coverage of core functionality
- **Pattern**: Use `TestCase` classes with descriptive test method names
```python
class TestMotionDetection(unittest.TestCase):
def test_detects_motion_above_threshold(self):
# Test implementation
```
### Test Best Practices
- Always have a way to test your work and confirm your changes
- Write tests for bug fixes to prevent regressions
- Test edge cases and error conditions
- Mock external dependencies (cameras, APIs, hardware)
- Use fixtures for test data
## Development Commands
### Python Backend
```bash
# Run all tests
python3 -u -m unittest
# Run specific test file
python3 -u -m unittest frigate.test.test_ffmpeg_presets
# Check formatting (Ruff)
ruff format --check frigate/
# Apply formatting
ruff format frigate/
# Run linter
ruff check frigate/
```
### Frontend (from web/ directory)
```bash
# Start dev server (AI agents should never run this directly unless asked)
npm run dev
# Build for production
npm run build
# Run linter
npm run lint
# Fix linting issues
npm run lint:fix
# Format code
npm run prettier:write
```
### Docker Development
AI agents should never run these commands directly unless instructed.
```bash
# Build local image
make local
# Build debug image
make debug
```
## Common Patterns
### API Endpoint Pattern
```python
from fastapi import APIRouter, Request
from frigate.api.defs.tags import Tags
router = APIRouter(tags=[Tags.Events])
@router.get("/events")
async def get_events(request: Request, limit: int = 100):
"""Retrieve events from the database."""
# Implementation
```
### Configuration Access
```python
# Access Frigate configuration
config: FrigateConfig = request.app.frigate_config
camera_config = config.cameras["front_door"]
```
### Database Queries
```python
from frigate.models import Event
# Use Peewee ORM for database access
events = (
Event.select()
.where(Event.camera == camera_name)
.order_by(Event.start_time.desc())
.limit(limit)
)
```
## Common Anti-Patterns to Avoid
### ❌ Avoid These
```python
# Blocking operations in async functions
data = requests.get(url) # ❌ Use async HTTP client
time.sleep(5) # ❌ Use asyncio.sleep()
# Hardcoded strings in React components
<div>Camera not found</div> # ❌ Use t("camera_not_found")
# Missing error handling
data = await api.get_data() # ❌ No exception handling
# Bare exceptions in regular code
try:
value = await sensor.read()
except Exception: # ❌ Too broad
logger.error("Failed")
```
### ✅ Use These Instead
```python
# Async operations
import aiohttp
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
data = await response.json()
await asyncio.sleep(5) # ✅ Non-blocking
# Translatable strings in React
const { t } = useTranslation();
<div>{t("camera_not_found")}</div> # ✅ Translatable
# Proper error handling
try:
data = await api.get_data()
except ApiException as err:
logger.error("API error: %s", err)
raise
# Specific exceptions
try:
value = await sensor.read()
except SensorException as err: # ✅ Specific
logger.exception("Failed to read sensor")
```
## Project-Specific Conventions
### Configuration Files
- Main config: `config/config.yml`
### Directory Structure
- Backend code: `frigate/`
- Frontend code: `web/`
- Docker files: `docker/`
- Documentation: `docs/`
- Database migrations: `migrations/`
### Code Style Conformance
Always conform new and refactored code to the existing coding style in the project:
- Follow established patterns in similar files
- Match indentation and formatting of surrounding code
- Use consistent naming conventions (snake_case for Python, camelCase for TypeScript)
- Maintain the same level of verbosity in comments and docstrings
## Additional Resources
- Documentation: https://docs.frigate.video
- Main Repository: https://github.com/blakeblackshear/frigate
- Home Assistant Integration: https://github.com/blakeblackshear/frigate-hass-integration

View File

@@ -2,15 +2,19 @@
# Update package list and install dependencies
sudo apt-get update
sudo apt-get install -y build-essential cmake git wget
sudo apt-get install -y build-essential cmake git wget linux-headers-$(uname -r)
hailo_version="4.21.0"
arch=$(uname -m)
if [[ $arch == "x86_64" ]]; then
sudo apt install -y linux-headers-$(uname -r);
else
sudo apt install -y linux-modules-extra-$(uname -r);
if [[ $arch == "aarch64" ]]; then
source /etc/os-release
os_codename=$VERSION_CODENAME
echo "Detected OS codename: $os_codename"
fi
if [ "$os_codename" = "trixie" ]; then
sudo apt install -y dkms
fi
# Clone the HailoRT driver repository
@@ -47,3 +51,4 @@ sudo udevadm control --reload-rules && sudo udevadm trigger
echo "HailoRT driver installation complete."
echo "reboot your system to load the firmware!"
echo "Driver version: $(modinfo -F version hailo_pci)"

View File

@@ -29,6 +29,10 @@ auth:
reset_admin_password: true
```
## Password guidance
Constructing secure passwords and managing them properly is important. Frigate requires a minimum length of 12 characters. For guidance on password standards see [NIST SP 800-63B](https://pages.nist.gov/800-63-3/sp800-63b.html). To learn what makes a password truly secure, read this [article](https://medium.com/peerio/how-to-build-a-billion-dollar-password-3d92568d9277).
## Login failure rate limiting
In order to limit the risk of brute force attacks, rate limiting is available for login failures. This is implemented with SlowApi, and the string notation for valid values is available in [the documentation](https://limits.readthedocs.io/en/stable/quickstart.html#examples).

View File

@@ -381,6 +381,7 @@ Start with ["Why isn't my license plate being detected and recognized?"](#why-is
```yaml
lpr:
enabled: true
device: CPU
debug_save_plates: true
```

View File

@@ -214,6 +214,12 @@ The `exec:`, `echo:`, and `expr:` sources are disabled by default for security.
:::
:::warning
The `exec:`, `echo:`, and `expr:` sources are disabled by default for security. You must set `GO2RTC_ALLOW_ARBITRARY_EXEC=true` to use them. See [Security: Restricted Stream Sources](#security-restricted-stream-sources) for more information.
:::
NOTE: The output will need to be passed with two curly braces `{{output}}`
```yaml

View File

@@ -167,7 +167,7 @@ Inference speeds vary greatly depending on the CPU or GPU used, some known examp
| Intel N100 | ~ 15 ms | s-320: 30 ms | 320: ~ 25 ms | | Can only run one detector instance |
| Intel N150 | ~ 15 ms | t-320: 16 ms s-320: 24 ms | | | |
| Intel Iris XE | ~ 10 ms | t-320: 6 ms t-640: 14 ms s-320: 8 ms s-640: 16 ms | 320: ~ 10 ms 640: ~ 20 ms | 320-n: 33 ms | |
| Intel NPU | ~ 6 ms | s-320: 11 ms | 320: ~ 14 ms 640: ~ 34 ms | 320-n: 40 ms | |
| Intel NPU | ~ 6 ms | s-320: 11 ms s-640: 30 ms | 320: ~ 14 ms 640: ~ 34 ms | 320-n: 40 ms | |
| Intel Arc A310 | ~ 5 ms | t-320: 7 ms t-640: 11 ms s-320: 8 ms s-640: 15 ms | 320: ~ 8 ms 640: ~ 14 ms | | |
| Intel Arc A380 | ~ 6 ms | | 320: ~ 10 ms 640: ~ 22 ms | 336: 20 ms 448: 27 ms | |
| Intel Arc A750 | ~ 4 ms | | 320: ~ 8 ms | | |

View File

@@ -112,42 +112,65 @@ The Hailo-8 and Hailo-8L AI accelerators are available in both M.2 and HAT form
:::warning
The Raspberry Pi kernel includes an older version of the Hailo driver that is incompatible with Frigate. You **must** follow the installation steps below to install the correct driver version, and you **must** disable the built-in kernel driver as described in step 1.
On Raspberry Pi OS **Bookworm**, the kernel includes an older version of the Hailo driver that is incompatible with Frigate. You **must** follow the installation steps below to install the correct driver version, and you **must** disable the built-in kernel driver as described in step 1.
On Raspberry Pi OS **Trixie**, the Hailo driver is no longer shipped with the kernel. It is installed via DKMS, and the conflict described below does not apply. You can simply run the installation script.
:::
1. **Disable the built-in Hailo driver (Raspberry Pi only)**:
1. **Disable the built-in Hailo driver (Raspberry Pi Bookworm OS only)**:
:::note
If you are **not** using a Raspberry Pi, skip this step and proceed directly to step 2.
If you are **not** using a Raspberry Pi with **Bookworm OS**, skip this step and proceed directly to step 2.
If you are using Raspberry Pi with **Trixie OS**, also skip this step and proceed directly to step 2.
:::
If you are using a Raspberry Pi, you need to blacklist the built-in kernel Hailo driver to prevent conflicts. First, check if the driver is currently loaded:
First, check if the driver is currently loaded:
```bash
lsmod | grep hailo
```
If it shows `hailo_pci`, unload it:
```bash
sudo rmmod hailo_pci
sudo modprobe -r hailo_pci
```
Now blacklist the driver to prevent it from loading on boot:
Then locate the built-in kernel driver and rename it so it cannot be loaded.
Renaming allows the original driver to be restored later if needed.
First, locate the currently installed kernel module:
```bash
echo "blacklist hailo_pci" | sudo tee /etc/modprobe.d/blacklist-hailo_pci.conf
modinfo -n hailo_pci
```
Update initramfs to ensure the blacklist takes effect:
Example output:
```
/lib/modules/6.6.31+rpt-rpi-2712/kernel/drivers/media/pci/hailo/hailo_pci.ko.xz
```
Save the module path to a variable:
```bash
sudo update-initramfs -u
BUILTIN=$(modinfo -n hailo_pci)
```
And rename the module by appending .bak:
```bash
sudo mv "$BUILTIN" "${BUILTIN}.bak"
```
Now refresh the kernel module map so the system recognizes the change:
```bash
sudo depmod -a
```
Reboot your Raspberry Pi:
```bash
@@ -160,9 +183,9 @@ The Raspberry Pi kernel includes an older version of the Hailo driver that is in
lsmod | grep hailo
```
This command should return no results. If it still shows `hailo_pci`, the blacklist did not take effect properly and you may need to check for other Hailo packages installed via apt that are loading the driver.
This command should return no results.
2. **Run the installation script**:
3. **Run the installation script**:
Download the installation script:
@@ -190,7 +213,7 @@ The Raspberry Pi kernel includes an older version of the Hailo driver that is in
- Download and install the required firmware
- Set up udev rules
3. **Reboot your system**:
4. **Reboot your system**:
After the script completes successfully, reboot to load the firmware:
@@ -198,7 +221,7 @@ The Raspberry Pi kernel includes an older version of the Hailo driver that is in
sudo reboot
```
4. **Verify the installation**:
5. **Verify the installation**:
After rebooting, verify that the Hailo device is available:
@@ -212,6 +235,38 @@ The Raspberry Pi kernel includes an older version of the Hailo driver that is in
lsmod | grep hailo_pci
```
Verify the driver version:
```bash
cat /sys/module/hailo_pci/version
```
Verify that the firmware was installed correctly:
```bash
ls -l /lib/firmware/hailo/hailo8_fw.bin
```
**Optional: Fix PCIe descriptor page size error**
If you encounter the following error:
```
[HailoRT] [error] CHECK failed - max_desc_page_size given 16384 is bigger than hw max desc page size 4096
```
Create a configuration file to force the correct descriptor page size:
```bash
echo 'options hailo_pci force_desc_page_size=4096' | sudo tee /etc/modprobe.d/hailo_pci.conf
```
and reboot:
```bash
sudo reboot
```
#### Setup
To set up Frigate, follow the default installation instructions, for example: `ghcr.io/blakeblackshear/frigate:stable`

View File

@@ -350,21 +350,15 @@ def validate_password_strength(password: str) -> tuple[bool, Optional[str]]:
Validate password strength.
Returns a tuple of (is_valid, error_message).
Longer passwords are harder to crack than shorter complex ones.
https://pages.nist.gov/800-63-3/sp800-63b.html
"""
if not password:
return False, "Password cannot be empty"
if len(password) < 8:
return False, "Password must be at least 8 characters long"
if not any(c.isupper() for c in password):
return False, "Password must contain at least one uppercase letter"
if not any(c.isdigit() for c in password):
return False, "Password must contain at least one digit"
if not any(c in '!@#$%^&*(),.?":{}|<>' for c in password):
return False, "Password must contain at least one special character"
if len(password) < 12:
return False, "Password must be at least 12 characters long"
return True, None
@@ -800,7 +794,7 @@ def get_users():
"/users",
dependencies=[Depends(require_role(["admin"]))],
summary="Create new user",
description='Creates a new user with the specified username, password, and role. Requires admin role. Password must meet strength requirements: minimum 8 characters, at least one uppercase letter, at least one digit, and at least one special character (!@#$%^&*(),.?":{} |<>).',
description="Creates a new user with the specified username, password, and role. Requires admin role. Password must be at least 12 characters long.",
)
def create_user(
request: Request,
@@ -817,6 +811,15 @@ def create_user(
content={"message": f"Role must be one of: {', '.join(config_roles)}"},
status_code=400,
)
# Validate password strength
is_valid, error_message = validate_password_strength(body.password)
if not is_valid:
return JSONResponse(
content={"message": error_message},
status_code=400,
)
role = body.role or "viewer"
password_hash = hash_password(body.password, iterations=HASH_ITERATIONS)
User.insert(
@@ -851,7 +854,7 @@ def delete_user(request: Request, username: str):
"/users/{username}/password",
dependencies=[Depends(allow_any_authenticated())],
summary="Update user password",
description="Updates a user's password. Users can only change their own password unless they have admin role. Requires the current password to verify identity for non-admin users. Password must meet strength requirements: minimum 8 characters, at least one uppercase letter, at least one digit, and at least one special character (!@#$%^&*(),.?\":{} |<>). If user changes their own password, a new JWT cookie is automatically issued.",
description="Updates a user's password. Users can only change their own password unless they have admin role. Requires the current password to verify identity for non-admin users. Password must be at least 12 characters long. If user changes their own password, a new JWT cookie is automatically issued.",
)
async def update_password(
request: Request,

View File

@@ -73,7 +73,7 @@ def get_faces():
face_dict[name] = []
for file in filter(
lambda f: (f.lower().endswith((".webp", ".png", ".jpg", ".jpeg"))),
lambda f: f.lower().endswith((".webp", ".png", ".jpg", ".jpeg")),
os.listdir(face_dir),
):
face_dict[name].append(file)
@@ -582,7 +582,7 @@ def get_classification_dataset(name: str):
dataset_dict[category_name] = []
for file in filter(
lambda f: (f.lower().endswith((".webp", ".png", ".jpg", ".jpeg"))),
lambda f: f.lower().endswith((".webp", ".png", ".jpg", ".jpeg")),
os.listdir(category_dir),
):
dataset_dict[category_name].append(file)
@@ -693,7 +693,7 @@ def get_classification_images(name: str):
status_code=200,
content=list(
filter(
lambda f: (f.lower().endswith((".webp", ".png", ".jpg", ".jpeg"))),
lambda f: f.lower().endswith((".webp", ".png", ".jpg", ".jpeg")),
os.listdir(train_dir),
)
),

View File

@@ -108,12 +108,13 @@ class GenAIReviewConfig(FrigateBaseModel):
default="""### Normal Activity Indicators (Level 0)
- Known/verified people in any zone at any time
- People with pets in residential areas
- Routine residential vehicle access during daytime/evening (6 AM - 10 PM): entering, exiting, loading/unloading items — normal commute and travel patterns
- Deliveries or services during daytime/evening (6 AM - 10 PM): carrying packages to doors/porches, placing items, leaving
- Services/maintenance workers with visible tools, uniforms, or service vehicles during daytime
- Activity confined to public areas only (sidewalks, streets) without entering property at any time
### Suspicious Activity Indicators (Level 1)
- **Testing or attempting to open doors/windows/handles on vehicles or buildings** — ALWAYS Level 1 regardless of time or duration
- **Checking or probing vehicle/building access**: trying handles without entering, peering through windows, examining multiple vehicles, or possessing break-in tools — Level 1
- **Unidentified person in private areas (driveways, near vehicles/buildings) during late night/early morning (11 PM - 5 AM)** — ALWAYS Level 1 regardless of activity or duration
- Taking items that don't belong to them (packages, objects from porches/driveways)
- Climbing or jumping fences/barriers to access property
@@ -133,8 +134,8 @@ Evaluate in this order:
1. **If person is verified/known** → Level 0 regardless of time or activity
2. **If person is unidentified:**
- Check time: If late night/early morning (11 PM - 5 AM) AND in private areas (driveways, near vehicles/buildings) → Level 1
- Check actions: If testing doors/handles, taking items, climbing → Level 1
- Otherwise, if daytime/evening (6 AM - 10 PM) with clear legitimate purpose (delivery, service worker) → Level 0
- Check actions: If probing access (trying handles without entering, checking multiple vehicles), taking items, climbing → Level 1
- Otherwise, if daytime/evening (6 AM - 10 PM) with clear legitimate purpose (delivery, service, routine vehicle access) → Level 0
3. **Escalate to Level 2 if:** Weapons, break-in tools, forced entry in progress, violence, or active property damage visible (escalates from Level 0 or 1)
The mere presence of an unidentified person in private areas during late night hours is inherently suspicious and warrants human review, regardless of what activity they appear to be doing or how brief the sequence is.""",

View File

@@ -97,7 +97,7 @@ class CustomStateClassificationProcessor(RealTimeProcessorApi):
self.interpreter.allocate_tensors()
self.tensor_input_details = self.interpreter.get_input_details()
self.tensor_output_details = self.interpreter.get_output_details()
self.labelmap = load_labels(labelmap_path, prefill=0)
self.labelmap = load_labels(labelmap_path, prefill=0, indexed=False)
self.classifications_per_second.start()
def __update_metrics(self, duration: float) -> None:
@@ -398,7 +398,7 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi):
self.interpreter.allocate_tensors()
self.tensor_input_details = self.interpreter.get_input_details()
self.tensor_output_details = self.interpreter.get_output_details()
self.labelmap = load_labels(labelmap_path, prefill=0)
self.labelmap = load_labels(labelmap_path, prefill=0, indexed=False)
def __update_metrics(self, duration: float) -> None:
self.classifications_per_second.update()
@@ -419,14 +419,21 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi):
"""
if object_id not in self.classification_history:
self.classification_history[object_id] = []
logger.debug(f"Created new classification history for {object_id}")
self.classification_history[object_id].append(
(current_label, current_score, current_time)
)
history = self.classification_history[object_id]
logger.debug(
f"History for {object_id}: {len(history)} entries, latest=({current_label}, {current_score})"
)
if len(history) < 3:
logger.debug(
f"History for {object_id} has {len(history)} entries, need at least 3"
)
return None, 0.0
label_counts = {}
@@ -445,14 +452,27 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi):
best_count = label_counts[best_label]
consensus_threshold = total_attempts * 0.6
logger.debug(
f"Consensus calc for {object_id}: label_counts={label_counts}, "
f"best_label={best_label}, best_count={best_count}, "
f"total={total_attempts}, threshold={consensus_threshold}"
)
if best_count < consensus_threshold:
logger.debug(
f"No consensus for {object_id}: {best_count} < {consensus_threshold}"
)
return None, 0.0
avg_score = sum(label_scores[best_label]) / len(label_scores[best_label])
if best_label == "none":
logger.debug(f"Filtering 'none' label for {object_id}")
return None, 0.0
logger.debug(
f"Consensus reached for {object_id}: {best_label} with avg_score={avg_score}"
)
return best_label, avg_score
def process_frame(self, obj_data, frame):
@@ -560,17 +580,30 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi):
)
if score < self.model_config.threshold:
logger.debug(f"Score {score} is less than threshold.")
logger.debug(
f"{self.model_config.name}: Score {score} < threshold {self.model_config.threshold} for {object_id}, skipping"
)
return
sub_label = self.labelmap[best_id]
logger.debug(
f"{self.model_config.name}: Object {object_id} (label={obj_data['label']}) passed threshold with sub_label={sub_label}, score={score}"
)
consensus_label, consensus_score = self.get_weighted_score(
object_id, sub_label, score, now
)
logger.debug(
f"{self.model_config.name}: get_weighted_score returned consensus_label={consensus_label}, consensus_score={consensus_score} for {object_id}"
)
if consensus_label is not None:
camera = obj_data["camera"]
logger.debug(
f"{self.model_config.name}: Publishing sub_label={consensus_label} for {obj_data['label']} object {object_id} on {camera}"
)
if (
self.model_config.object_config.classification_type
@@ -662,7 +695,7 @@ def write_classification_attempt(
# delete oldest face image if maximum is reached
try:
files = sorted(
filter(lambda f: (f.endswith(".webp")), os.listdir(folder)),
filter(lambda f: f.endswith(".webp"), os.listdir(folder)),
key=lambda f: os.path.getctime(os.path.join(folder, f)),
reverse=True,
)

View File

@@ -539,7 +539,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
cv2.imwrite(file, frame)
files = sorted(
filter(lambda f: (f.endswith(".webp")), os.listdir(folder)),
filter(lambda f: f.endswith(".webp"), os.listdir(folder)),
key=lambda f: os.path.getctime(os.path.join(folder, f)),
reverse=True,
)

View File

@@ -633,7 +633,7 @@ class EmbeddingMaintainer(threading.Thread):
camera, frame_name, _, _, motion_boxes, _ = data
if not camera or len(motion_boxes) == 0 or camera not in self.config.cameras:
if not camera or camera not in self.config.cameras:
return
camera_config = self.config.cameras[camera]
@@ -660,8 +660,10 @@ class EmbeddingMaintainer(threading.Thread):
return
for processor in self.realtime_processors:
if dedicated_lpr_enabled and isinstance(
processor, LicensePlateRealTimeProcessor
if (
dedicated_lpr_enabled
and len(motion_boxes) > 0
and isinstance(processor, LicensePlateRealTimeProcessor)
):
processor.process_frame(camera, yuv_frame, True)

View File

@@ -15,6 +15,16 @@ logger = logging.getLogger(__name__)
def should_update_db(prev_event: Event, current_event: Event) -> bool:
"""If current_event has updated fields and (clip or snapshot)."""
# If event is ending and was previously saved, always update to set end_time
# This ensures events are properly ended even when alerts/detections are disabled
# mid-event (which can cause has_clip/has_snapshot to become False)
if (
prev_event["end_time"] is None
and current_event["end_time"] is not None
and (prev_event["has_clip"] or prev_event["has_snapshot"])
):
return True
if current_event["has_clip"] or current_event["has_snapshot"]:
# if this is the first time has_clip or has_snapshot turned true
if not prev_event["has_clip"] and not prev_event["has_snapshot"]:

View File

@@ -99,8 +99,8 @@ When forming your description:
## Response Format
Your response MUST be a flat JSON object with:
- `title` (string): A concise, direct title that describes the primary action or event in the sequence, not just what you literally see. Use spatial context when available to make titles more meaningful. When multiple objects/actions are present, prioritize whichever is most prominent or occurs first. Use names from "Objects in Scene" based on what you visually observe. If you see both a name and an unidentified object of the same type but visually observe only one person/object, use ONLY the name. Examples: "Joe walking dog", "Person taking out trash", "Vehicle arriving in driveway", "Joe accessing vehicle", "Person leaving porch for driveway".
- `scene` (string): A narrative description of what happens across the sequence from start to finish, in chronological order. Start by describing how the sequence begins, then describe the progression of events. **Describe all significant movements and actions in the order they occur.** For example, if a vehicle arrives and then a person exits, describe both actions sequentially. **Only describe actions you can actually observe happening in the frames provided.** Do not infer or assume actions that aren't visible (e.g., if you see someone walking but never see them sit, don't say they sat down). Include setting, detected objects, and their observable actions. Avoid speculation or filling in assumed behaviors. Your description should align with and support the threat level you assign.
- `title` (string): A concise, grammatically complete title in the format "[Subject] [action verb] [context]" that matches your scene description. Use names from "Objects in Scene" when you visually observe them.
- `shortSummary` (string): A brief 2-sentence summary of the scene, suitable for notifications. Should capture the key activity and context without full detail. This should be a condensed version of the scene description above.
- `confidence` (float): 0-1 confidence in your analysis. Higher confidence when objects/actions are clearly visible and context is unambiguous. Lower confidence when the sequence is unclear, objects are partially obscured, or context is ambiguous.
- `potential_threat_level` (integer): 0, 1, or 2 as defined in "Normal Activity Patterns for This Property" above. Your threat level must be consistent with your scene description and the guidance above.

View File

@@ -26,15 +26,16 @@ LOG_HANDLER.setFormatter(
# filter out norfair warning
LOG_HANDLER.addFilter(
lambda record: not record.getMessage().startswith(
"You are using a scalar distance function"
lambda record: (
not record.getMessage().startswith("You are using a scalar distance function")
)
)
# filter out tflite logging
LOG_HANDLER.addFilter(
lambda record: "Created TensorFlow Lite XNNPACK delegate for CPU."
not in record.getMessage()
lambda record: (
"Created TensorFlow Lite XNNPACK delegate for CPU." not in record.getMessage()
)
)

View File

@@ -208,8 +208,10 @@ class RecordingMaintainer(threading.Thread):
processed_segment_count = len(
list(
filter(
lambda r: r["start_time"].timestamp()
< most_recently_processed_frame_time,
lambda r: (
r["start_time"].timestamp()
< most_recently_processed_frame_time
),
grouped_recordings[camera],
)
)

View File

@@ -129,7 +129,9 @@ def get_ffmpeg_arg_list(arg: Any) -> list:
return arg if isinstance(arg, list) else shlex.split(arg)
def load_labels(path: Optional[str], encoding="utf-8", prefill=91):
def load_labels(
path: Optional[str], encoding="utf-8", prefill=91, indexed: bool | None = None
):
"""Loads labels from file (with or without index numbers).
Args:
path: path to label file.
@@ -146,11 +148,12 @@ def load_labels(path: Optional[str], encoding="utf-8", prefill=91):
if not lines:
return {}
if lines[0].split(" ", maxsplit=1)[0].isdigit():
if indexed != False and lines[0].split(" ", maxsplit=1)[0].isdigit():
pairs = [line.split(" ", maxsplit=1) for line in lines]
labels.update({int(index): label.strip() for index, label in pairs})
else:
labels.update({index: line.strip() for index, line in enumerate(lines)})
return labels

View File

@@ -1,5 +1,6 @@
{
"train": {
"titleShort": "الأخيرة"
}
},
"documentTitle": "تصنيف النماذج - Frigate"
}

View File

@@ -60,7 +60,7 @@
"cough": "Tos",
"throat_clearing": "Carraspeig",
"sneeze": "Esternut",
"sniff": "Fregit nasal",
"sniff": "olorar",
"run": "Córrer",
"shuffle": "Passos arrossegats",
"footsteps": "Passos",
@@ -97,7 +97,7 @@
"moo": "Mugir",
"cowbell": "Esquellot",
"pig": "Porc",
"oink": "Oink",
"oink": "Oinc",
"bleat": "Brama",
"fowl": "Au de corral",
"chicken": "Pollastre",
@@ -439,37 +439,37 @@
"inside": "Interior",
"pulse": "Pols",
"outside": "Fora",
"chirp_tone": "To de grinyol",
"chirp_tone": "Gisclada",
"harmonic": "Harmònic",
"sine_wave": "Ona sinus",
"crunch": "Cruixit",
"hum": "Taral·lejar",
"plop": "Chof",
"hum": "Zunzum",
"plop": "Xip-xap",
"clickety_clack": "Clic-Clac",
"clicking": "Clicant",
"clatter": "Soroll",
"clatter": "Rebombori",
"chird": "Piular",
"liquid": "Líquid",
"splash": "Xof",
"slosh": "Xip-xap",
"boing": "Boing",
"zing": "Fiu",
"rumble": "Bum-bum",
"sizzle": "Xiu-xiu",
"splash": "Esquitx",
"slosh": "Xipolleig",
"boing": "Rebot",
"zing": "Zunzum agut",
"rumble": "Retombori",
"sizzle": "Crepitació",
"whir": "Brrrm",
"rustle": "Fru-Fru",
"creak": "Clic-clac",
"clang": "Clang",
"rustle": "Frec",
"creak": "Rascada",
"clang": "Soroll metàl·lic",
"squish": "Xaf",
"drip": "Plic-plic",
"pour": "Glug-glug",
"trickle": "Xiulet",
"gush": "Xuuuix",
"fill": "Glug-glug",
"ding": "Ding",
"ping": "Ping",
"beep": "Bip",
"squeal": "Xiscle",
"drip": "Goteig",
"pour": "Abocament",
"trickle": "Raig fi",
"gush": "Raig fort",
"fill": "Ompliment",
"ding": "Ting",
"ping": "Ressò",
"beep": "Pitit",
"squeal": "Chirrit",
"crumpling": "Arrugant-se",
"rub": "Fregar",
"scrape": "Raspar",
@@ -480,13 +480,13 @@
"smash": "Aixafar",
"whack": "Cop",
"slap": "Bufetada",
"bang": "Bang",
"bang": "Cop fort",
"basketball_bounce": "Rebot de bàsquet",
"chorus_effect": "Efecte de cor",
"effects_unit": "Unitat d'Efectes",
"electronic_tuner": "Afinador electrònic",
"thunk": "Bruix",
"thump": "Cop fort",
"thump": "Soroll sord",
"whoosh": "Xiuxiueig",
"arrow": "Fletxa",
"sonar": "Sonar",

View File

@@ -201,7 +201,8 @@
},
"inProgress": "En curs",
"invalidStartTime": "Hora d'inici no vàlida",
"invalidEndTime": "Hora de finalització no vàlida"
"invalidEndTime": "Hora de finalització no vàlida",
"never": "Mai"
},
"unit": {
"speed": {

View File

@@ -184,6 +184,16 @@
"restricted": {
"title": "No hi ha càmeres disponibles",
"description": "No teniu permís per veure cap càmera en aquest grup."
},
"default": {
"title": "No s'ha configurat cap càmera",
"description": "Comenceu connectant una càmera a Frigate.",
"buttonText": "Afegeix una càmera"
},
"group": {
"title": "No hi ha càmeres al grup",
"description": "Aquest grup de càmeres no té càmeres assignades o habilitades.",
"buttonText": "Gestiona els grups"
}
}
}

View File

@@ -954,7 +954,7 @@
"useDigestAuthDescription": "Usa l'autenticació de resum HTTP per a ONVIF. Algunes càmeres poden requerir un nom d'usuari/contrasenya ONVIF dedicat en lloc de l'usuari administrador estàndard."
},
"save": {
"failure": "SS'ha produït un error en desar {{cameraName}}.",
"failure": "S'ha produït un error en desar {{cameraName}}.",
"success": "S'ha desat correctament la càmera nova {{cameraName}}."
},
"testResultLabels": {
@@ -1211,11 +1211,11 @@
"cameraReview": {
"object_descriptions": {
"title": "Descripcions d'objectes generadors d'IA",
"desc": "Activa/desactiva temporalment les descripcions d'objectes generatius d'IA per a aquesta càmera. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als objectes rastrejats en aquesta càmera."
"desc": "Activa/desactiva temporalment les descripcions d'objectes generatius d'IA per a aquesta càmera fins que es reiniciï Frigate. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als objectes rastrejats en aquesta càmera."
},
"review_descriptions": {
"title": "Descripcions de la IA generativa",
"desc": "Activa/desactiva temporalment les descripcions de revisió de la IA generativa per a aquesta càmera. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als elements de revisió d'aquesta càmera."
"desc": "Activa/desactiva temporalment les descripcions de la IA Generativa per a aquesta càmera fins que es reiniciï Frigate. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als elements de revisió d'aquesta càmera."
},
"review": {
"title": "Revisió",

View File

@@ -78,7 +78,11 @@
"formattedTimestampFilename": {
"24hour": "dd-MM-yy-HH-mm-ss",
"12hour": "dd-MM.yy-h-mm-ss-a"
}
},
"never": "Nikdy",
"inProgress": "Zpracovává se",
"invalidStartTime": "Neplatný čas začátku",
"invalidEndTime": "Neplatný čas konce"
},
"button": {
"twoWayTalk": "Obousměrná komunikace",
@@ -115,10 +119,17 @@
"unselect": "Zrušit výběr",
"deleteNow": "Smazat hned",
"next": "Další",
"export": "Exportovat"
"export": "Exportovat",
"continue": "Pokračovat"
},
"label": {
"back": "Jdi zpět"
"back": "Jdi zpět",
"hide": "Skrýt {{item}}",
"show": "Zobrazit {{item}}",
"ID": "ID",
"none": "Nic",
"all": "Vše",
"other": "Ostatní"
},
"unit": {
"speed": {
@@ -128,6 +139,14 @@
"length": {
"feet": "stopa",
"meters": "metry"
},
"data": {
"kbps": "kB/s",
"mbps": "MB/s",
"gbps": "GB/s",
"kbph": "kB/hodinu",
"mbph": "MB/hodinu",
"gbph": "GB/hodinu"
}
},
"selectItem": "Vybrat {{item}}",
@@ -230,7 +249,8 @@
"uiPlayground": "UI hřiště",
"faceLibrary": "Knihovna Obličejů",
"configurationEditor": "Editor Konfigurace",
"withSystem": "Systém"
"withSystem": "Systém",
"classification": "Klasifikace"
},
"pagination": {
"previous": {
@@ -270,5 +290,17 @@
"viewer": "Divák",
"desc": "Správci mají plný přístup ke všem funkcím v uživatelském rozhraní Frigate. Diváci jsou omezeni na sledování kamer, položek přehledu a historických záznamů v UI."
},
"readTheDocumentation": "Přečtěte si dokumentaci"
"readTheDocumentation": "Přečtěte si dokumentaci",
"list": {
"two": "{{0}} a {{1}}",
"many": "{{items}}, a {{last}}",
"separatorWithSpace": ", "
},
"field": {
"optional": "Volitelné",
"internalID": "Interní ID Frigate používá v konfiguraci a databázi"
},
"information": {
"pixels": "{{area}}px"
}
}

View File

@@ -44,7 +44,8 @@
"button": {
"markAsReviewed": "Označit jako zkontrolované",
"deleteNow": "Smazat hned",
"export": "Exportovat"
"export": "Exportovat",
"markAsUnreviewed": "Označit jako nezkontrolované"
}
},
"export": {
@@ -67,12 +68,13 @@
"export": "Exportovat",
"selectOrExport": "Vybrat pro Export",
"toast": {
"success": "Export úspěšně spuštěn. Soubor najdete v adresáři /exports.",
"success": "Export úspěšně spuštěn. Soubor najdete na stránce exportů.",
"error": {
"failed": "Chyba spuštění exportu: {{error}}",
"endTimeMustAfterStartTime": "Čas konce musí být po čase začátku",
"noVaildTimeSelected": "Není vybráno žádné platné časové období"
}
},
"view": "Zobrazení"
},
"fromTimeline": {
"saveExport": "Uložit export",
@@ -116,6 +118,7 @@
"search": {
"placeholder": "Hledej pomocí štítku nebo podštítku..."
},
"noImages": "Nebyly nalezeny žádné náhledy pro tuto kameru"
"noImages": "Nebyly nalezeny žádné náhledy pro tuto kameru",
"unknownLabel": "Uložený obrázek Spouštěče"
}
}

View File

@@ -132,5 +132,9 @@
},
"count_one": "Třída {{count}}",
"count_other": "Třídy {{count}}"
},
"attributes": {
"label": "Atributy Klasifikace",
"all": "Všechny Atributy"
}
}

View File

@@ -38,10 +38,65 @@
"deleteImageFailed": "Chyba při mazání: {{errorMessage}}",
"deleteCategoryFailed": "Chyba při mazání třídy: {{errorMessage}}",
"deleteModelFailed": "Chyba při mazání modelu: {{errorMessage}}",
"categorizeFailed": "Chyba při mazání obrázku: {{errorMessage}}"
"categorizeFailed": "Chyba při mazání obrázku: {{errorMessage}}",
"trainingFailed": "Trénování modelu selhalo. Zkontrolujte logy Frigate pro zjištění detailů.",
"trainingFailedToStart": "Chyba spuštění trénování modelu: {{errorMessage}}",
"updateModelFailed": "Chyba aktualizace modelu: {{errorMessage}}",
"renameCategoryFailed": "Chyba přejmenování třídy: {{errorMessage}}"
}
},
"train": {
"titleShort": "Nedávný"
}
"titleShort": "Nedávný",
"title": "Předchozí klasifikace",
"aria": "Vybrat předchozí Klasifikace"
},
"deleteModel": {
"desc_one": "Jste si jistí, že chcete odstranit {{count}} model? Tím trvale odstraníte všechny související data včetně obrázků a tréninkových dat. Tato akce je nevratná.",
"desc_few": "Jste si jistí, že chcete odstranit {{count}} modely? Tím trvale odstraníte všechny související data včetně obrázků a tréninkových dat. Tato akce je nevratná.",
"desc_other": "Jste si jistí, že chcete odstranit {{count}} modelů? Tím trvale odstraníte všechny související data včetně obrázků a tréninkových dat. Tato akce je nevratná."
},
"deleteDatasetImages": {
"desc_one": "Opravdu chcete odstranit {{count}} obrázek z {{dataset}}? Tato akce je nevratná a vyžaduje přetrénování modelu.",
"desc_few": "Opravdu chcete odstranit {{count}} obrázky z {{dataset}}? Tato akce je nevratná a vyžaduje přetrénování modelu.",
"desc_other": "Opravdu chcete odstranit {{count}} obrázků z {{dataset}}? Tato akce je nevratná a vyžaduje přetrénování modelu.",
"title": "Smazat obrázky datové sady"
},
"deleteTrainImages": {
"desc_one": "Opravdu chcete odstranit {{count}} obrázek? Tato akce je nevratná.",
"desc_few": "Opravdu chcete odstranit {{count}} obrázky? Tato akce je nevratná.",
"desc_other": "Opravdu chcete odstranit {{count}} obrázků? Tato akce je nevratná.",
"title": "Odstranit tréninkové obrázky"
},
"wizard": {
"step3": {
"allImagesRequired_one": "Prosím, zařaďte všechny obrázky. Zbývá {{count}} obrázek.",
"allImagesRequired_few": "Prosím, zařaďte všechny obrázky. Zbývají {{count}} obrázky.",
"allImagesRequired_other": "Prosím, zařaďte všechny obrázky. Zbývá {{count}} obrázků.",
"trainingStarted": "Trénování úspěšně spuštěno",
"generateSuccess": "Vzorové obrázky byly úspěšně vytvořeny"
}
},
"deleteCategory": {
"title": "Smazat Třídu",
"desc": "Opravdu chcete odstranit třídu {{name}}? Tím se na trvalo odstraní všechny související obrázky a bude potřeba přetrénovat model.",
"minClassesTitle": "Nemůžete smazat třídu",
"minClassesDesc": "Klasifikační model musí mít alespoň 2 třídy. Než tuto třídu odstraníte přidejte další třídu."
},
"edit": {
"descriptionObject": "Upravte typ objektu a typ klasifikace pro tento model klasifikace.",
"stateClassesInfo": "Poznámka: Změna tříd stavů vyžaduje přetrénování modelu s aktualizovanými třídami."
},
"renameCategory": {
"title": "Přejmenovat třídu",
"desc": "Vložte nové jméno pro {{name}}. Aby se změna názvu projevila, bude nutné model znovu natrénovat."
},
"description": {
"invalidName": "Neplatné jméno. Jméno můžou obsahovat pouze písmena, čísla, mezery, apostrofy, podtržítka a spojovníky."
},
"categories": "Třídy",
"createCategory": {
"new": "Vytvořit novou Třídu"
},
"categorizeImageAs": "Klasifikovat obrázek jako:",
"categorizeImage": "Klasifikovat obrázek"
}

View File

@@ -9,14 +9,18 @@
"empty": {
"alert": "Nejsou žádné výstrahy na kontrolu",
"detection": "Nejsou žádné detekce na kontrolu",
"motion": "Nenalezena žádná data o pohybu"
"motion": "Nenalezena žádná data o pohybu",
"recordingsDisabled": {
"title": "Nahrávání musí být povoleno",
"description": "Položky revize lze pro kameru vytvořit pouze tehdy, je-li pro ni povoleno nahrávání."
}
},
"timeline": "Časová osa",
"timeline.aria": "Zvolit časovou osu",
"events": {
"label": "Události",
"aria": "Zvolit události",
"noFoundForTimePeriod": "Pro toto období nebyly nalezeny žádné události."
"noFoundForTimePeriod": "Pro toto časové období nebyly nalezeny žádné události."
},
"documentTitle": "Revize - Frigate",
"camera": "Kamera",
@@ -26,8 +30,8 @@
"markAsReviewed": "Označit jako zkontrolované",
"markTheseItemsAsReviewed": "Označit tyto položky jako zkontrolované",
"newReviewItems": {
"label": "Zobrazit nové položky na kontrolu",
"button": "Nové položky na kontrolu"
"label": "Zobrazit nové položky revize",
"button": "Nové položky revize"
},
"recordings": {
"documentTitle": "Záznamy - Frigate"
@@ -42,8 +46,22 @@
"detail": {
"label": "Detail",
"noDataFound": "Žádná detailní data k prohlédnutí",
"aria": "Přepnout detailní zobrazení",
"aria": "Přepnout zobrazení detailů",
"trackedObject_other": "{{count}} objektů",
"trackedObject_one": "{{count}} objektů"
}
"trackedObject_one": "{{count}} objekt",
"noObjectDetailData": "Nejsou k dispozici žádné podrobné údaje o objektu.",
"settings": "Nastavení Detailního Zobrazení",
"alwaysExpandActive": {
"title": "Vždy rozbalit aktivní",
"desc": "Vždy zobrazit podrobnosti objektu aktivní položky revize, pokud jsou k dispozici."
}
},
"objectTrack": {
"trackedPoint": "Sledovaný bod",
"clickToSeek": "Kliknutím přeskočte na tento čas"
},
"select_all": "Vše",
"normalActivity": "Normální",
"needsReview": "Potřebuje revizi",
"securityConcern": "Obava o bezpečnost"
}

View File

@@ -24,7 +24,8 @@
"regenerate": "Od {{provider}} byl vyžádán nový popis. V závislosti na rychlosti vašeho poskytovatele může obnovení nového popisu nějakou dobu trvat.",
"updatedSublabel": "Úspěšně aktualizovaný podružný štítek.",
"updatedLPR": "Úspěšně aktualizovaná SPZ.",
"audioTranscription": "Požádání o přepis zvuku bylo úspěšné."
"audioTranscription": "Požádání o přepis zvuku bylo úspěšné. V závislosti na rychlosti Vašeho Frigate serveru může přepis trvat nějaký čas než bude dokončen.",
"updatedAttributes": "Atributy byly úspěšně aktualizovány."
},
"error": {
"regenerate": "Chyba volání {{provider}} pro nový popis: {{errorMessage}}",
@@ -206,7 +207,7 @@
"dialog": {
"confirmDelete": {
"title": "Potvrdit smazání",
"desc": "Odstraněním tohoto sledovaného objektu se odstraní snímek, všechna uložená vložení a všechny související položky životního cyklu objektu. Zaznamenaný záznam tohoto sledovaného objektu v zobrazení Historie <em>NEBUDE</em> smazán.<br /><br />Opravdu chcete pokračovat?"
"desc": "Odstraněním tohoto sledovaného objektu se odstraní snímek, všechna uložená vložení a všechny související položky s podrobnostmi o sledování. Zaznamenaný záznam tohoto sledovaného objektu v zobrazení Historie <em>NEBUDE</em> smazán.<br /><br />Opravdu chcete pokračovat?"
}
},
"trackedObjectDetails": "Detaily sledovaných objektů",
@@ -214,7 +215,9 @@
"details": "detaily",
"snapshot": "snímek",
"video": "video",
"object_lifecycle": "životní cyklus objektu"
"object_lifecycle": "životní cyklus objektu",
"thumbnail": "Náhled",
"tracking_details": "detaily sledování"
},
"noTrackedObjects": "Žádné sledované objekty nebyly nalezeny",
"fetchingTrackedObjectsFailed": "Chyba při načítání sledovaných objektů: {{errorMessage}}",
@@ -224,5 +227,49 @@
},
"concerns": {
"label": "Obavy"
},
"trackingDetails": {
"title": "Detaily Sledování",
"noImageFound": "Nebyl nalezen obrázek pro tuto časovou značku.",
"createObjectMask": "Vytvořit Masku Objektu",
"adjustAnnotationSettings": "Upravte nastavení poznámek",
"scrollViewTips": "Klikněte pro zobrazení významných okamžiků z životního cyklu tohoto objektu.",
"autoTrackingTips": "Pozice ohraničujících rámečků budou nepřesné pro kamery s automatickým sledováním.",
"count": "{{first}} z {{second}}",
"trackedPoint": "Sledovaný Bod",
"lifecycleItemDesc": {
"visible": "Detekován {{label}}",
"entered_zone": "{{label}} vstoupil do {{zones}}",
"active": "{{label}} se stal aktivním",
"stationary": "{{label}} se zastavil",
"attribute": {
"faceOrLicense_plate": "Pro {{label}} zjištěn {{attribute}}"
},
"header": {
"ratio": "Poměr",
"area": "Oblast",
"score": "Skóre"
}
},
"annotationSettings": {
"title": "Nastavení anotací",
"showAllZones": {
"title": "Zobrazit všechny zóny",
"desc": "Vždy zobrazovat zóny na snímcích, na kterých objekty vstoupili do zóny."
},
"offset": {
"label": "Odsazení anotace",
"desc": "Tato data pocházejí z detekčního kanálu vaší kamery, ale překrývají se s obrázky ze záznamového kanálu. Je nepravděpodobné, že by oba streamy byly dokonale synchronizované. V důsledku toho se ohraničovací rámeček a záznam nebudou dokonale srovnávat. Toto nastavení můžete použít k časovému posunutí anotací dopředu nebo dozadu, abyste je lépe zarovnali se zaznamenaným záznamem.",
"millisecondsToOffset": "Milisekundy na posunutí detekce anotací. <em>Výchozí: 0</em>",
"tips": "Snižte hodnotu, pokud je přehrávané video před ohraničením a body cesty, nebo zvyšte hodnotu, pokud je přehrávané video za nimi. Hodnota může být i záporná.",
"toast": {
"success": "Odsazení anotací pro {{camera}} bylo uloženo do konfiguračního souboru."
}
}
},
"carousel": {
"previous": "Předcházející snímek",
"next": "Další snímek"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"imageEntry": {
"dropInstructions": "Přetáhněte obrázek zde, nebo klikněte na výběr",
"dropInstructions": "Přetáhněte obrázek sem, nebo klikněte na výběr",
"maxSize": "Maximální velikost: {{size}}MB",
"dropActive": "Přetáhněte obrázek zde…",
"validation": {
@@ -10,7 +10,7 @@
"createFaceLibrary": {
"new": "Vytvořit nový obličej",
"desc": "Vytvořit novou kolekci",
"nextSteps": "Chcete-li vybudovat pevný základ:<li>Použijte kartu Trénování k výběru a trénování na snímcích pro každou detekovanou osobu.</li><li>Pro nejlepší výsledky se zaměřte na přímé snímky; vyhněte se trénování snímků, které zachycují obličeje pod úhlem.</li></ul>",
"nextSteps": "Chcete-li vybudovat pevný základ:<li>Použijte kartu Nedávná Rozpoznání k výběru a trénování na snímcích pro každou detekovanou osobu.</li><li>Pro nejlepší výsledky se zaměřte na přímé snímky; vyhněte se trénování snímků, které zachycují obličeje pod úhlem.</li></ul>",
"title": "Vytvořit kolekci"
},
"details": {
@@ -44,7 +44,7 @@
"description": {
"addFace": "Přidejte novou kolekci do Knihovny obličejů nahráním prvního obrázku.",
"placeholder": "Zadejte název pro tuto kolekci",
"invalidName": "Neplatný název. Názvy mohou obsahovat pouze písmena, čísla, mezery, apostrofy, podtržítka a pomlčky."
"invalidName": "Neplatné jméno. Jméno můžou obsahovat pouze písmena, čísla, mezery, apostrofy, podtržítka a spojovníky."
},
"documentTitle": "Knihovna obličejů - Frigate",
"uploadFaceImage": {

View File

@@ -86,7 +86,7 @@
"enable": "Ukázat statistiky streamu"
},
"manualRecording": {
"title": "Nahrávání na vyžádání",
"title": "Na požádání",
"playInBackground": {
"label": "Přehrát na pozadí",
"desc": "Povolte tuto volbu pro pokračování streamování i když je přehrávač skrytý."
@@ -103,7 +103,7 @@
"started": "Manuálně spuštěno nahrávání na požádání.",
"ended": "Ukončeno manuální nahrávání na vyžádání.",
"recordDisabledTips": "Protože je v konfiguraci této kamery nahrávání zakázáno nebo omezeno, bude uložen pouze snímek.",
"tips": "Spustit ruční událost na základě nastavení uchování záznamů této kamery."
"tips": "Stáhněte si aktuální snímek nebo spusťte ruční událost na základě nastavení uchování záznamu této kamery."
},
"streamingSettings": "Nastavení Streamování",
"audio": "Zvuk",
@@ -167,5 +167,11 @@
"transcription": {
"enable": "Povolit živý přepis zvuku",
"disable": "Zakázat živý přepis zvuku"
},
"snapshot": {
"takeSnapshot": "Stáhnout aktuální snímek",
"noVideoSource": "Pro snímek není k dispozici žádné video.",
"captureFailed": "Zachycení snímku selhalo.",
"downloadStarted": "Stažení snímku spuštěno."
}
}

View File

@@ -134,7 +134,7 @@
"name": {
"inputPlaceHolder": "Zadejte jméno…",
"title": "Jméno",
"tips": "Název musí mít alespoň 2 znaky a nesmí být shodný s názvem kamery nebo jiné zóny."
"tips": "Název musí mít alespoň 2 znaky, musí obsahovat alespoň jedno písmeno a nesmí být shodný s názvem kamery nebo jiné zóny této kamery."
},
"inertia": {
"title": "Setrvačnost",
@@ -160,7 +160,7 @@
}
},
"toast": {
"success": "Zóna {{zoneName}} byla uložena. Restartujte Frigate pro aplikování změn."
"success": "Zóna {{zoneName}} byla uložena."
},
"label": "Zóny",
"desc": {
@@ -199,8 +199,8 @@
"clickDrawPolygon": "Kliknutím nakreslíte polygon do obrázku.",
"toast": {
"success": {
"title": "{{polygonName}} byl uložen. Restartujte Frigate pro aplikování změn.",
"noName": "Maska Detekce pohybu byla uložena. Restartujte Frigate pro aplikování změn."
"title": "{{polygonName}} byl uložen.",
"noName": "Maska Detekce pohybu byla uložena."
}
}
},
@@ -284,8 +284,8 @@
"clickDrawPolygon": "Kliknutím nakreslete polygon do obrázku.",
"toast": {
"success": {
"title": "{{polygonName}} byl uložen. Restartujte Frigate pro aplikování změn.",
"noName": "Maska Objektu byla uložena. Restartujte Frigate pro aplikování změn."
"title": "{{polygonName}} byl uložen.",
"noName": "Maska Objektu byla uložena."
}
},
"point_one": "{{count}} bod",
@@ -322,7 +322,7 @@
"noCamera": "Žádná Kamera"
},
"general": {
"title": "Hlavní nastavení",
"title": "Nastavení rozhraní",
"liveDashboard": {
"title": "Živý dashboard",
"automaticLiveView": {
@@ -332,6 +332,13 @@
"playAlertVideos": {
"label": "Přehrát videa s výstrahou",
"desc": "Ve výchozím nastavení se nedávná upozornění na ovládacím panelu Živě přehrávají jako malá opakující se videa. Vypněte tuto možnost, chcete-li na tomto zařízení/prohlížeči zobrazovat pouze statický obrázek nedávných výstrah."
},
"displayCameraNames": {
"label": "Vždy zobrazit názvy kamer",
"desc": "Vždy zobrazit názvy kamer v čipu na ovládacím panelu živého náhledu s více kamerami."
},
"liveFallbackTimeout": {
"label": "Časový limit pádu živého přehrávání"
}
},
"storedLayouts": {
@@ -629,11 +636,11 @@
"actions": "Akce",
"noUsers": "Žádní uživatelé nebyli nalezeni.",
"changeRole": "Změnit roli uživatele",
"password": "Heslo",
"password": "Resetovat Heslo",
"deleteUser": "Smazat uživatele",
"role": "Role"
},
"updatePassword": "Aktualizovat heslo",
"updatePassword": "Resetovat heslo",
"toast": {
"success": {
"createUser": "Uživatel {{user}} úspěšně vytvořen",
@@ -743,7 +750,7 @@
"triggers": {
"documentTitle": "Spouštěče",
"management": {
"title": "Správa spouštěčů",
"title": "Spouštěče",
"desc": "Spravovat spouštěče pro {{camera}}. Použít typ miniatury ke spuštění u miniatur podobných vybranému sledovanému objektu a typ popisu ke spuštění u popisů podobných zadanému textu."
},
"addTrigger": "Přidat spouštěč",
@@ -782,10 +789,10 @@
"form": {
"name": {
"title": "Název",
"placeholder": "Zadejte název spouštěče",
"placeholder": "Pojmenujte tento spouštěč",
"error": {
"minLength": "Název musí mít alespoň 2 znaky.",
"invalidCharacters": "Jméno může obsahovat pouze písmena, číslice, podtržítka a pomlčky.",
"minLength": "Pole musí mít alespoň 2 znaky.",
"invalidCharacters": "Pole může obsahovat pouze písmena, číslice, podtržítka a pomlčky.",
"alreadyExists": "Spouštěč s tímto názvem již pro tuto kameru existuje."
}
},
@@ -798,9 +805,9 @@
},
"content": {
"title": "Obsah",
"imagePlaceholder": "Vybrat obrázek",
"imagePlaceholder": "Vyberte miniaturu",
"textPlaceholder": "Zadat textový obsah",
"imageDesc": "Vybrat obrázek, který spustí tuto akci, když bude detekován podobný obrázek.",
"imageDesc": "Je zobrazeno pouze posledních 100 miniatur. Pokud nemůžete najít požadovanou miniaturu, prosím zkontrolujte dřívější objekty v Prozkoumat a nastavte spouštěč ze tamějšího menu.",
"textDesc": "Zadejte text, který spustí tuto akci, když bude zjištěn podobný popis sledovaného objektu.",
"error": {
"required": "Obsah je povinný."
@@ -808,7 +815,7 @@
},
"actions": {
"title": "Akce",
"desc": "Ve výchozím nastavení Frigate odesílá MQTT zprávu pro všechny spouštěče. Zvolte dodatečnou akci, která se má provést, když se tento spouštěč aktivuje.",
"desc": "Ve výchozím nastavení Frigate odesílá MQTT zprávu pro všechny spouštěče. Podřazené popisky přidávají název spouštěče k popisku objektu. Atributy jsou prohledávatelná metadata uložená samostatně v metadatech sledovaného objektu.",
"error": {
"min": "Musí být vybrána alespoň jedna akce."
}
@@ -850,9 +857,9 @@
"createRole": "Role {{role}} byla úspěšně vytvořena",
"updateCameras": "Kamery byly aktualizovány pro roli {{role}}",
"deleteRole": "Role {{role}} byla úspěšně smazána",
"userRolesUpdated_one": "{{count}} uživatel(ů) přiřazených k této roli bylo aktualizováno na „Divák“, který má přístup ke všem kamerám.",
"userRolesUpdated_few": "",
"userRolesUpdated_other": ""
"userRolesUpdated_one": "{{count}} uživatel přiřazený k této roli byl aktualizován na „diváka“, který má přístup ke všem kamerám.",
"userRolesUpdated_few": "{{count}} uživatelé přiřazení k této roli bylo aktualizováno na „diváky“, kteří mají přístup ke všem kamerám.",
"userRolesUpdated_other": "{{count}} uživatelů přiřazených k této roli bylo aktualizováno na „diváky“, kteří mají přístup ke všem kamerám."
},
"error": {
"createRoleFailed": "Nepodařilo se vytvořit roli: {{errorMessage}}",
@@ -896,5 +903,36 @@
"title": "Správa role diváka",
"desc": "Spravujte vlastní role diváků a jejich oprávnění k přístupu ke kamerám pro tuto instanci Frigate."
}
},
"cameraWizard": {
"save": {
"success": "Nová kamera {{cameraName}} úspěšně uložena."
},
"step2": {
"testSuccess": "Test připojení v pořádku!",
"probeSuccessful": "Sonda úspěšná",
"probeNoSuccess": "Sonda neúspěšná"
},
"step3": {
"testSuccess": "Test streamu v pořádku!"
},
"step4": {
"reconnectionSuccess": "Opakované připojení úspěšné.",
"streamValidated": "Stream {{number}} úspěšně ověřený"
}
},
"cameraManagement": {
"cameraConfig": {
"toast": {
"success": "Kamera {{cameraName}} úspěšně uložena"
}
}
},
"cameraReview": {
"reviewClassification": {
"toast": {
"success": "Konfigurace Klasifikací Revizí byla uložena. Restartujte Frigate pro aplikování změn."
}
}
}
}

View File

@@ -112,12 +112,23 @@
"gpuUsage": "Využití CPU",
"gpuMemory": "Paměť GPU",
"gpuEncoder": "GPU kodér",
"gpuDecoder": "GPU Dekodér"
"gpuDecoder": "GPU Dekodér",
"intelGpuWarning": {
"title": "Upozornění Intel GPU Stats",
"message": "Statistiky GPU nedostupné",
"description": "Toto je známá chyba v nástrojích Intel pro hlášení statistik GPU (intel_gpu_top), která selhává a opakovaně vrací využití GPU 0 %, a to i v případech, kdy na (i)GPU správně běží hardwarová akcelerace a detekce objektů. Nejedná se o chybu Frigate. Můžete restartovat hostitele, abyste problém dočasně vyřešili a potvrdili, že GPU funguje správně. Toto neovlivňuje výkon."
}
},
"otherProcesses": {
"title": "Ostatní procesy",
"processCpuUsage": "Využití CPU procesy",
"processMemoryUsage": "Využití paměti procesy"
"processMemoryUsage": "Využití paměti procesy",
"series": {
"go2rtc": "go2rtc",
"recording": "nahrávání",
"review_segment": "revidovat segment",
"embeddings": "vložení"
}
},
"title": "Hlavní"
},

View File

@@ -84,5 +84,116 @@
"babbling": "Pludren",
"yell": "Råb",
"whoop": "Jubel",
"snicker": "Smålatter"
"snicker": "Smålatter",
"bird": "Fugl",
"cat": "Kat",
"dog": "Hund",
"horse": "Hest",
"sheep": "Får",
"mouse": "Mus",
"keyboard": "Tastatur",
"blender": "Mixer",
"hair_dryer": "Føntørrer",
"animal": "Dyr",
"bark": "Gø",
"goat": "Gæd",
"sigh": "Suk",
"singing": "Synger",
"choir": "Kor",
"yodeling": "Jodlen",
"chant": "Messe",
"mantra": "Meditationsmantra",
"child_singing": "Barn Synger",
"synthetic_singing": "Syntetisk Sang",
"rapping": "Rapper",
"humming": "Nynner",
"groan": "Støn",
"grunt": "Grynt",
"whistling": "Fløjter",
"breathing": "Vejrtrækning",
"wheeze": "Hæsende vejrtrækning",
"snoring": "Snorker",
"gasp": "Gisp",
"pant": "Anstrengende vejrtrækning",
"snort": "Fnyse",
"cough": "Hoster",
"throat_clearing": "Rømmer sig",
"sneeze": "Nyser",
"sniff": "Snøfter",
"run": "Løb",
"shuffle": "Trække fødderne",
"footsteps": "Fodtrin",
"chewing": "Tygger",
"biting": "Bider",
"gargling": "Gurgler",
"stomach_rumble": "Maverumlen",
"burping": "Bøvser",
"hiccup": "Hikke",
"fart": "Prut",
"hands": "Hænder",
"finger_snapping": "Knipse fingere",
"clapping": "Klapper",
"heartbeat": "Hjertebanken",
"heart_murmur": "Hjertemislyd",
"cheering": "Hujen",
"applause": "Bifald",
"chatter": "Snak",
"crowd": "Forsamling",
"children_playing": "Børn leger",
"pets": "Kæledyr",
"yip": "Jubel",
"howl": "Hyl",
"bow_wow": "Vov vov",
"growling": "Knurren",
"whimper_dog": "Hunde­klynk",
"purr": "Spinde",
"meow": "Meaw",
"hiss": "Hvæser",
"caterwaul": "Kattejammer",
"livestock": "Husdyr",
"oink": "Nøf",
"bleat": "Brægen",
"vibration": "Vibration",
"fowl": "Fjerkræ",
"chicken": "Kylling",
"cluck": "Kagle",
"cock_a_doodle_doo": "Kykeliky",
"turkey": "Kalkun",
"gobble": "Kalkunlyd",
"duck": "And",
"quack": "Rap",
"goose": "Gås",
"honk": "Dyt",
"wild_animals": "Vilde dyr",
"roaring_cats": "Brølende katte",
"roar": "Brøl",
"chirp": "Pip",
"squawk": "Skræppen",
"pigeon": "Due",
"coo": "Kurre",
"crow": "Krage",
"caw": "Kragelyd",
"owl": "Ugle",
"hoot": "Uglehyl",
"flapping_wings": "Vingeslag",
"dogs": "Hunde",
"rats": "Rotter",
"patter": "Dråbelyd",
"insect": "Insekt",
"cricket": "Cricket",
"guitar": "Guitar",
"electric_guitar": "Elektrisk Guitar",
"bass_guitar": "Basguitar",
"acoustic_guitar": "Akustisk Guitar",
"steel_guitar": "Stål Guitar",
"tapping": "Tapping på guitar",
"strum": "Slå an",
"banjo": "Banjo",
"sitar": "Sitar",
"mandolin": "Mandolin",
"snare_drum": "Lilletromme",
"rimshot": "Kantslag",
"drum_roll": "Trommehvirvel",
"bass_drum": "Stortromme",
"techno": "Techno"
}

View File

@@ -24,13 +24,13 @@
"am": "am",
"year_one": "{{time}} år",
"year_other": "{{time}} år",
"mo": "{{time}}mo",
"mo": "{{time}}må",
"month_one": "{{time}} måned",
"month_other": "{{time}} måneder",
"d": "{{time}}d",
"day_one": "{{time}} dag",
"day_other": "{{time}} dage",
"h": "{{time}}h",
"h": "{{time}}t",
"yr": "{{time}}yr",
"hour_one": "{{time}} time",
"hour_other": "{{time}} timer",
@@ -41,11 +41,11 @@
"second_one": "{{time}} sekund",
"second_other": "{{time}} sekunder",
"formattedTimestamp": {
"12hour": "MMM d, h:mm:ss aaa",
"24hour": "MMM d, HH:mm:ss"
"12hour": "d MMM, h:mm:ss aaa",
"24hour": "d. MMM, HH:mm:ss"
},
"formattedTimestamp2": {
"12hour": "MM/dd h:mm:ssa",
"12hour": "dd/MM h:mm:ss",
"24hour": "d MMM HH:mm:ss"
},
"formattedTimestampHourMinute": {
@@ -57,22 +57,26 @@
"24hour": "HH:mm:ss"
},
"formattedTimestampMonthDayHourMinute": {
"12hour": "MMM d, h:mm aaa",
"24hour": "MMM d, HH:mm"
"12hour": "d MMM, h:mm aaa",
"24hour": "d MMM, HH:mm"
},
"formattedTimestampMonthDayYear": {
"12hour": "MMM d, yyyy",
"24hour": "MMM d, yyyy"
"12hour": "d MMM, yyyy",
"24hour": "d MMM, yyyy"
},
"formattedTimestampMonthDayYearHourMinute": {
"12hour": "MMM d yyyy, h:mm aaa",
"24hour": "MMM d yyyy, HH:mm"
"12hour": "d MMM yyyy, h:mm aaa",
"24hour": "d MMM yyyy, HH:mm"
},
"formattedTimestampMonthDay": "MMM d",
"formattedTimestampMonthDay": "d MMM",
"formattedTimestampFilename": {
"12hour": "MM-dd-yy-h-mm-ss-a",
"24hour": "MM-dd-yy-HH-mm-ss"
}
"12hour": "dd-MM-yy-h-mm-ss-a",
"24hour": "dd-MM-yy-HH-mm-ss"
},
"never": "Aldrig",
"inProgress": "Under behandling",
"invalidStartTime": "Ugyldig starttid",
"invalidEndTime": "Ugyldig sluttid"
},
"unit": {
"speed": {
@@ -82,14 +86,28 @@
"length": {
"feet": "fod",
"meters": "meter"
},
"data": {
"kbps": "kB/s",
"mbps": "MB/s",
"gbps": "GB/s",
"kbph": "kB/time",
"mbph": "MB/time",
"gbph": "GB/time"
}
},
"label": {
"back": "Gå tilbage"
"back": "Gå tilbage",
"hide": "Skjul {{item}}",
"show": "Vis {{item}}",
"ID": "ID",
"none": "Ingen",
"all": "Alle",
"other": "Andet"
},
"button": {
"apply": "Anvend",
"reset": "Reset",
"reset": "Nulstil",
"done": "Udført",
"enabled": "Aktiveret",
"enable": "Aktiver",
@@ -116,21 +134,22 @@
"no": "Nej",
"download": "Download",
"info": "Info",
"suspended": "Suspenderet",
"unsuspended": "Ophæv suspendering",
"suspended": "Sat på pause",
"unsuspended": "Genoptag",
"play": "Afspil",
"unselect": "Fravælg",
"export": "Eksporter",
"deleteNow": "Slet nu",
"next": "Næste"
"next": "Næste",
"continue": "Fortsæt"
},
"menu": {
"system": "System",
"systemMetrics": "System metrics",
"systemMetrics": "Systemstatistik",
"configuration": "Konfiguration",
"systemLogs": "System logs",
"systemLogs": "Systemlogfiler",
"settings": "Indstillinger",
"configurationEditor": "Konfiguratons Editor",
"configurationEditor": "Konfigurationsværktøj",
"languages": "Sprog",
"language": {
"en": "English (Engelsk)",
@@ -165,8 +184,16 @@
"th": "ไทย (Thai)",
"ca": "Català (Katalansk)",
"withSystem": {
"label": "Brug system indstillinger for sprog"
}
"label": "Brug systemindstillinger for sprog"
},
"ptBR": "Português brasileiro (Brasiliansk Portugisisk)",
"sr": "Српски (Serbisk)",
"sl": "Slovenščina (Slovensk)",
"lt": "Lietuvių (Litauisk)",
"bg": "Български (Bulgarsk)",
"gl": "Galego (Galisisk)",
"id": "Bahasa Indonesia (Indonesisk)",
"ur": "اردو (Urdu)"
},
"appearance": "Udseende",
"darkMode": {
@@ -185,7 +212,7 @@
"nord": "Nord",
"red": "Rød",
"highcontrast": "Høj Kontrast",
"default": "Default"
"default": "Standard"
},
"help": "Hjælp",
"documentation": {
@@ -202,19 +229,20 @@
"count_other": "{{count}} Kameraer"
}
},
"review": "Review",
"review": "Gennemse",
"explore": "Udforsk",
"export": "Eksporter",
"uiPlayground": "UI sandkasse",
"faceLibrary": "Face Library",
"faceLibrary": "Ansigtsarkiv",
"user": {
"title": "Bruger",
"account": "Konto",
"current": "Aktiv bruger: {{user}}",
"anonymous": "anonym",
"logout": "Logout",
"logout": "Log ud",
"setPassword": "Set Password"
}
},
"classification": "Kategorisering"
},
"toast": {
"copyUrlToClipboard": "Kopieret URL til klippebord.",
@@ -252,8 +280,20 @@
"notFound": {
"documentTitle": "Ikke fundet - Frigate",
"title": "404",
"desc": "Side ikke fundet"
"desc": "Siden blev ikke fundet"
},
"selectItem": "Vælg {{item}}",
"readTheDocumentation": "Læs dokumentationen"
"readTheDocumentation": "Læs dokumentationen",
"list": {
"two": "{{0}} og {{1}}",
"many": "{{items}}, og {{last}}",
"separatorWithSpace": ", "
},
"field": {
"optional": "Valgfrit",
"internalID": "Det interne ID som Frigate bruger i konfigurationen og databasen"
},
"information": {
"pixels": "{{area}}px"
}
}

View File

@@ -8,7 +8,8 @@
"passwordRequired": "Kodeord kræves",
"loginFailed": "Login fejlede",
"unknownError": "Ukendt fejl. Tjek logs.",
"rateLimit": "Grænsen for forespørgsler er overskredet. Prøv igen senere."
"rateLimit": "Grænsen for forespørgsler er overskredet. Prøv igen senere.",
"webUnknownError": "Ukendt fejl. Tjek konsollogs."
},
"firstTimeLogin": "Forsøger du at logge ind for første gang? Loginoplysningerne står i Frigate-loggene."
}

View File

@@ -14,8 +14,73 @@
"label": "Navn",
"placeholder": "Indtast et navn…",
"errorMessage": {
"mustLeastCharacters": "Kameragruppens navn skal være mindst 2 tegn."
"mustLeastCharacters": "Kameragruppens navn skal være mindst 2 tegn.",
"exists": "Kameragruppenavn findes allerede.",
"nameMustNotPeriod": "Kameragruppenavn må ikke indeholde en periode.",
"invalid": "Ugyldigt kamera gruppenavn."
}
},
"cameras": {
"label": "Kameraer",
"desc": "Vælg kameraer til denne gruppe."
},
"icon": "Ikon",
"success": "Kameragruppe ({{name}}) er blevet gemt.",
"camera": {
"birdseye": "Fugleøje",
"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>",
"audioIsAvailable": "Lyd er tilgængelig for denne stream",
"audioIsUnavailable": "Lyd er ikke tilgængelig for denne strøm",
"audio": {
"tips": {
"title": "Lyd skal komme fra dit kamera og konfigureret i go2rtc til denne stream."
}
},
"stream": "Stream",
"placeholder": "Vælg en stream",
"streamMethod": {
"label": "Streaming Metode",
"placeholder": "Vælg en streaming metode",
"method": {
"noStreaming": {
"label": "Ingen Streaming",
"desc": "Kamerabilleder vil kun opdatere én gang i minuttet og ingen live streaming vil forekomme."
},
"smartStreaming": {
"label": "Smart Streaming (anbefalet)",
"desc": "Smart streaming vil opdatere dit kamerabillede én gang i minuttet, når der ikke sker noget, for at spare båndbredde og ressourcer. Når der registreres aktivitet, skifter billedet problemfrit til en live stream."
},
"continuousStreaming": {
"label": "Kontinuerlig Streaming",
"desc": {
"title": "Kamerabillede vil altid være en live stream, når det er synligt på instrumentbrættet, selv om der ikke registreres nogen aktivitet.",
"warning": "Kontinuerlig streaming kan forårsage højt båndbreddeforbrug og ydelsesproblemer. Brug med omtanke."
}
}
}
},
"compatibilityMode": {
"label": "Kompatibilitetstilstand",
"desc": "Aktivér kun denne mulighed, hvis kameraets live stream viser farve artefakter og har en diagonal linje på højre side af billedet."
}
}
}
},
"debug": {
"options": {
"label": "Indstillinger",
"title": "Valgmuligheder",
"showOptions": "Vis muligheder",
"hideOptions": "Skjul muligheder"
},
"boundingBox": "Afgrænsningsfelt",
"timestamp": "Tidsstempel",
"zones": "Zoner",
"mask": "Maske",
"motion": "Bevægelse",
"regions": "Regioner"
}
}

View File

@@ -2,7 +2,7 @@
"iconPicker": {
"selectIcon": "Vælg et ikon",
"search": {
"placeholder": "Søg efter ikoner…"
"placeholder": "Søg efter et ikon…"
}
}
}

View File

@@ -11,5 +11,28 @@
"streamOffline": {
"title": "Stream offline",
"desc": "Der er ikke modtaget nogen frames på {{cameraName}}-<code>detect</code>-streamen, tjek fejlloggene."
},
"stats": {
"streamType": {
"title": "Stream type:",
"short": "Type"
},
"bandwidth": {
"title": "Bandbredde:",
"short": "Bandbredde"
},
"latency": {
"title": "Latenstid:",
"value": "{{seconds}} sekunder",
"short": {
"title": "Latenstid",
"value": "{{seconds}} sek"
}
},
"droppedFrames": {
"short": {
"title": "Tabt"
}
}
}
}

View File

@@ -14,5 +14,107 @@
"sink": "Håndvask",
"toothbrush": "Tandbørste",
"scissors": "Saks",
"clock": "Ur"
"clock": "Ur",
"fire_hydrant": "Brandhane",
"street_sign": "Gadeskilt",
"stop_sign": "Stopskilt",
"parking_meter": "Parkeringsautomat",
"bench": "Bænk",
"bird": "Fugl",
"cat": "Kat",
"dog": "Hund",
"horse": "Hest",
"sheep": "Får",
"cow": "Ko",
"elephant": "Elefant",
"bear": "Bjørn",
"zebra": "Zebra",
"giraffe": "Giraf",
"hat": "Hat",
"backpack": "Rygsæk",
"umbrella": "Paraply",
"shoe": "Sko",
"eye_glasses": "Briller",
"handbag": "Håndtaske",
"tie": "Slips",
"suitcase": "Kuffert",
"frisbee": "Frisbee",
"skis": "Ski",
"snowboard": "Snowboard",
"sports_ball": "Bold",
"kite": "Drage",
"baseball_bat": "Baseball Bat",
"baseball_glove": "Baseball hanske",
"surfboard": "Surfbræt",
"tennis_racket": "Tennis ketcher",
"bottle": "Flaske",
"plate": "Tallerken",
"wine_glass": "Vinglas",
"cup": "Kop",
"fork": "Gaffel",
"knife": "Kniv",
"spoon": "Ske",
"bowl": "Skål",
"banana": "Banan",
"apple": "Æble",
"sandwich": "Sandwich",
"orange": "Appelsin",
"broccoli": "Broccoli",
"carrot": "Gulerod",
"hot_dog": "Hotdog",
"pizza": "Pizza",
"donut": "Donut",
"cake": "Kage",
"chair": "Stol",
"couch": "Sofa",
"potted_plant": "Potteplante",
"bed": "Seng",
"mirror": "Spejl",
"dining_table": "Spisebord",
"window": "Vindue",
"desk": "Bord",
"toilet": "Toilet",
"tv": "Fjernsyn",
"laptop": "Bærebar computer",
"mouse": "Mus",
"remote": "Fjernbetjening",
"keyboard": "Tastatur",
"cell_phone": "Mobiltelefon",
"microwave": "Mikrobølgeovn",
"oven": "Ovn",
"toaster": "Brødrister",
"refrigerator": "Køleskab",
"blender": "Mixer",
"book": "Bog",
"vase": "Vase",
"teddy_bear": "Bamse",
"hair_dryer": "Føntørrer",
"hair_brush": "Hårbørste",
"squirrel": "Egern",
"deer": "Hjort",
"animal": "Dyr",
"bark": "Gø",
"fox": "Ræv",
"goat": "Gæd",
"rabbit": "Kanin",
"raccoon": "Vaskebjørn",
"robot_lawnmower": "Robotplæneklipper",
"waste_bin": "Affaldsspand",
"on_demand": "Manuel optagelse",
"face": "Ansigt",
"license_plate": "Nummerplade",
"package": "Pakke",
"bbq_grill": "Grill",
"amazon": "Amazon levering",
"usps": "USPS levering",
"ups": "UPS levering",
"fedex": "FedEx levering",
"dhl": "DHL levering",
"an_post": "An Post levering",
"purolator": "Purolator levering",
"postnl": "PostNL levering",
"nzpost": "NZPost levering",
"postnord": "PostNord levering",
"gls": "GLS levering",
"dpd": "DPD levering"
}

View File

@@ -1,18 +1,187 @@
{
"documentTitle": "Klassifikationsmodeller",
"documentTitle": "Kategoriseringsmodeller - Frigate",
"details": {
"scoreInfo": "Scoren repræsenterer den gennemsnitlige klassifikationssikkerhed på tværs af alle registreringer af dette objekt.",
"unknown": "Ukendt"
"scoreInfo": "Scoren viser den gennemsnitlige sikkerhed for kategoriseringen på tværs af alle registreringer af dette objekt.",
"unknown": "Ukendt",
"none": "Ingen"
},
"description": {
"invalidName": "Ugyldigt navn. Navne må kun indeholde bogstaver, tal, mellemrum, apostroffer, understregninger og bindestreger."
},
"button": {
"deleteClassificationAttempts": "Slet klassifikationsbilleder",
"deleteClassificationAttempts": "Slet kategoriseringsbilleder",
"renameCategory": "Omdøb klasse",
"deleteCategory": "Slet klasse",
"deleteImages": "Slet billeder",
"trainModel": "Træn model",
"addClassification": "Tilføj klassifikation"
"addClassification": "Tilføj Kategori",
"deleteModels": "Slet modeller",
"editModel": "Rediger model"
},
"tooltip": {
"trainingInProgress": "Modellen er ved at blive trænet",
"noNewImages": "Der er ingen nye billeder at lære af. Kategorisér flere billeder i datasættet først.",
"noChanges": "Ingen ændringer i datasættet siden sidste træning.",
"modelNotReady": "Modellen er ikke klar til træning"
},
"toast": {
"success": {
"deletedCategory": "Slettet kategori",
"deletedImage": "Slettede billeder",
"deletedModel_one": "{{count}} model er nu slettet",
"deletedModel_other": "{{count}} modeller er nu slettet",
"categorizedImage": "Billedet er nu kategoriseret",
"trainedModel": "Modellen er klar.",
"trainingModel": "Modeltræning er started.",
"updatedModel": "Modellens indstillinger er opdateret",
"renamedCategory": "Kategorien er omdøbt til {{name}}"
},
"error": {
"deleteImageFailed": "Fejl under sletning: {{errorMessage}}",
"deleteCategoryFailed": "Sletning af kategori fejlede: {{errorMessage}}",
"deleteModelFailed": "Sletning af model fejlede: {{errorMessage}}",
"categorizeFailed": "Kategorisering af billedet fejlede: {{errorMessage}}",
"trainingFailed": "Træning af modellen fejlede. Check Frigate loggen.",
"trainingFailedToStart": "Opstart af modeltræning fejlede: {{errorMessage}}",
"updateModelFailed": "Ændring af modellen fejlede: {{errorMessage}}",
"renameCategoryFailed": "Kan ikke omdøbe kategorien: {{errorMessage}}"
}
},
"deleteCategory": {
"title": "Slet kategori",
"desc": "Er du sikker på at du vil slette kategorien {{name}}? Dette kan ikke fortrydes og sletter alle tilhørende billeder samt træning af modellen.",
"minClassesTitle": "Kan ikke slette Kategori",
"minClassesDesc": "Modellen skal have mindst 2 kategorier. Tilføj en kategori, før du sletter denne."
},
"deleteModel": {
"title": "Slet Kategoriseringsmodellen",
"desc_one": "Er du sikker på, at du vil slette {{count}} model? Dette vil permanent slette alle tilknyttede data, inkl. billeder og træningsdata. Denne handling kan ikke fortrydes.",
"desc_other": "Er du sikker på, at du vil slette {{count}} modeller? Dette vil permanent slette alle tilknyttede data, inkl. billeder og træningsdata. Denne handling kan ikke fortrydes.",
"single": "Er du sikker på, at du vil slette {{name}}? Dette vil permanent slette alle tilknyttede data, inklusive billeder og træningsdata. Denne handling kan ikke fortrydes."
},
"train": {
"title": "Nyeste kategorier",
"titleShort": "Nyeste",
"aria": "Vælg de nyeste kategorier"
},
"categories": "Kategorier",
"createCategory": {
"new": "Opret en ny kategori"
},
"categorizeImageAs": "Kategoriser billedet som:",
"categorizeImage": "Kategoriser billedet",
"menu": {
"objects": "Genstande",
"states": "Statestik"
},
"noModels": {
"object": {
"title": "Ingen kategoriseringsmodeller for genstande",
"description": "Opret en model, der kan kategorisere genstande.",
"buttonText": "Opret Genstands Model"
},
"state": {
"title": "Ingen modeller til genstandstilstande",
"description": "Opret en brugerdefineret model til at overvåge og kategorisere tilstandsændringer i specifikke kamerområder.",
"buttonText": "Opret tilstandsmodel"
}
},
"wizard": {
"step1": {
"type": "Type",
"typeState": "Tilstand",
"typeObject": "Genstand",
"objectLabel": "Genstands mærkat",
"objectLabelPlaceholder": "Vælg genstands type...",
"classificationType": "Kategoriseringstype",
"classificationTypeTip": "Udforsk kategoriseringstyper",
"errors": {
"nameLength": "Modellens navn må højst være 64 tegn",
"nameOnlyNumbers": "Modellens navn skal indeholde bogstaver",
"classRequired": "Der mangler en kategori",
"classesUnique": "Kategorinavne skal være unikke",
"noneNotAllowed": "Kategorinavnet 'none' er ikke tilladt",
"stateRequiresTwoClasses": "Tilstandsmodeller har brug for 2 kategorier",
"objectLabelRequired": "Vælg genstands mærkat",
"objectTypeRequired": "Vælg kategoriseringstype",
"nameRequired": "Modelnavn er påkrævet"
},
"description": "Tilstandsmodeller overvåger faste kameraområder for ændringer (f.eks. dør åben/lukket). Genstandsmodeller tilføjer kategoriseringer til detekterede genstande (f.eks. kendte dyr, leveringspersoner osv.).",
"name": "Navn",
"namePlaceholder": "Skriv modelnavn...",
"classificationTypeDesc": "Underetiketter tilføjer ekstra tekst til genstandens etiket (f.eks. 'Person: UPS'). Attributter er søgbare metadata, der opbevares separat i genstandens metadata.",
"classificationSubLabel": "Underetiketter",
"classificationAttribute": "Attribut",
"classes": "Kategori",
"states": "Tilstande",
"classesTip": "Lær om kategorier",
"classesStateDesc": "Definér de forskellige tilstande, dit kameraområde kan være i. For eksempel: 'åben' og 'lukket' for en garageport.",
"classesObjectDesc": "Definér de forskellige kategorier, som detekterede genstande skal kategoriseres i. For eksempel: 'leveringsperson', 'beboer', 'fremmed' til kategorisering af personer.",
"classPlaceholder": "Skriv kategorinavn..."
},
"step2": {
"description": "Vælg kameraer, og definer det område, der skal overvåges for hvert kamera. Modellen vil kategorisere tilstanden i disse områder.",
"cameras": "Kameraer",
"selectCamera": "Vælg Kamera",
"noCameras": "Klik + for at tilføje kamera",
"selectCameraPrompt": "Vælg et kamera fra listen for at definere dets overvågningsområde"
},
"step3": {
"selectImagesPrompt": "Vælg alle billeder med: {{className}}",
"selectImagesDescription": "Klik på billederne for at vælge dem. Klik på Fortsæt, når du er færdig med denne kategori.",
"allImagesRequired_one": "Venligst kategoriser alle billeder. {{count}} billede tilbage.",
"allImagesRequired_other": "Venligst kategoriser alle billeder. {{count}} billeder tilbage.",
"generating": {
"title": "Genererer testbilleder",
"description": "Frigate henter repræsentative billeder fra dine optagelser. Det kan tage et øjeblik..."
},
"training": {
"title": "Træningsmodel",
"description": "Din model trænes i baggrunden. Luk denne dialog, og din model vil begynde at køre, så snart træningen er færdig."
},
"retryGenerate": "Forsøg at generere igen",
"noImages": "Ingen prøvebilleder blev genereret",
"classifying": "Kategoriserer og træner...",
"trainingStarted": "Træningen er startet",
"modelCreated": "Model er oprettet. Brug visningen af nylige kategoriseringer til at tilføje billeder for de manglende tilstande, og træn modellen derefter.",
"errors": {
"noCameras": "Ingen kamera konfigureret",
"noObjectLabel": "Ingen genstandsmærkat valgt",
"generateFailed": "Kunne ikke generere eksempler: {{error}}",
"generationFailed": "Der opstod en fejl under genereringen. Prøv igen.",
"classifyFailed": "Kunne ikke kategorisere billederne: {{error}}"
},
"generateSuccess": "Eksempelbilleder er nu genereret",
"missingStatesWarning": {
"title": "Manglende tilstandseksempler",
"description": "Det anbefales at vælge eksempler for alle tilstande for at opnå de bedste resultater. Du kan fortsætte uden at vælge alle tilstande, men modellen bliver ikke trænet, før alle tilstande har billeder. Efter du fortsætter, kan du bruge visningen Seneste kategoriseringer til at kategorisere billeder for de manglende tilstande og derefter træne modellen."
}
},
"title": "Opret ny kategorisering",
"steps": {
"nameAndDefine": "Navn og definition",
"stateArea": "Tilstandsområde",
"chooseExamples": "Vælg Eksempler"
}
},
"edit": {
"title": "Rediger kategoriseringsmodel",
"descriptionState": "Rediger kategorierne for denne model til genstandstilstande. Ændringer kræver, at modellen trænes igen.",
"descriptionObject": "Rediger genstandstypen og kategoriseringstypen for denne genstandskategoriseringsmodel.",
"stateClassesInfo": "Bemærk: Ændring af tilstandskategorier kræver, at modellen trænes igen med de opdaterede kategorier."
},
"deleteDatasetImages": {
"title": "Slet billeder i datasættet",
"desc_one": "Er du sikker på, at du vil slette {{count}} billede fra {{dataset}}? Denne handling kan ikke fortrydes og kræver, at modellen trænes igen.",
"desc_other": "Er du sikker på, at du vil slette {{count}} billeder fra {{dataset}}? Denne handling kan ikke fortrydes og kræver, at modellen trænes igen."
},
"deleteTrainImages": {
"title": "Slet trænings billeder",
"desc_one": "Er du sikker på, at du vil slette {{count}} billede? Denne handling kan ikke fortrydes.",
"desc_other": "Er du sikker på, at du vil slette {{count}} billeder? Denne handling kan ikke fortrydes."
},
"renameCategory": {
"title": "Omdøb Kategori",
"desc": "Indtast et nyt navn til {{name}}. Modellen skal trænes igen, før navneændringen træder i kraft."
}
}

View File

@@ -3,8 +3,16 @@
"copyConfig": "Kopiér konfiguration",
"saveAndRestart": "Gem & Genstart",
"saveOnly": "Kun gem",
"configEditor": "Konfigurationseditor",
"safeConfigEditor": "Konfigurationseditor (Sikker tilstand)",
"safeModeDescription": "Frigate er i sikker tilstand på grund af en fejl ved validering af konfigurationen.",
"confirm": "Afslut uden at gemme?"
"configEditor": "Konfigurationsværktøj",
"safeConfigEditor": "Konfigurationsværktøj (Sikker tilstand)",
"safeModeDescription": "Frigate er i sikker tilstand på grund af valideringsfejl af konfigurationen.",
"confirm": "Afslut uden at gemme?",
"toast": {
"success": {
"copyToClipboard": "Konfigurationen er kopieret."
},
"error": {
"savingError": "Kan ikke gemme konfigurationen"
}
}
}

View File

@@ -11,6 +11,21 @@
"empty": {
"alert": "Der er ingen advarsler at gennemgå",
"detection": "Der er ingen registreringer at gennemgå",
"motion": "Ingen bevægelsesdata fundet"
"motion": "Ingen bevægelsesdata fundet",
"recordingsDisabled": {
"title": "Optagelser skal være aktiveret"
}
},
"documentTitle": "Gennemse - Frigate",
"recordings": {
"documentTitle": "Optagelser - Frigate"
},
"calendarFilter": {
"last24Hours": "Sidste 24 timer"
},
"markAsReviewed": "Marker som gennemset",
"markTheseItemsAsReviewed": "Marker disse som gennemset",
"detail": {
"aria": "Skift til detaljevisning"
}
}

View File

@@ -8,5 +8,11 @@
"desc": "Indtast et nyt navn for denne eksport."
},
"noExports": "Ingen eksporter fundet",
"deleteExport": "Slet eksport"
"deleteExport": "Slet eksport",
"tooltip": {
"shareExport": "Del eksport",
"downloadVideo": "Download video",
"editName": "Rediger navn",
"deleteExport": "Slette eksport"
}
}

View File

@@ -15,5 +15,8 @@
"uploadFaceImage": {
"title": "Upload ansigtsbillede",
"desc": "Upload et billede for at scanne efter ansigter og inkludere det for {{pageToggle}}"
},
"train": {
"titleShort": "Nyeste"
}
}

View File

@@ -8,5 +8,6 @@
"filterInformation": "Filter information",
"filterActive": "Filtre aktiv",
"clear": "Ryd søgning"
}
},
"trackedObjectId": "Sporet genstands-ID"
}

View File

@@ -84,7 +84,8 @@
},
"inProgress": "Im Gange",
"invalidStartTime": "Ungültige Startzeit",
"invalidEndTime": "Ungültige Endzeit"
"invalidEndTime": "Ungültige Endzeit",
"never": "Nie"
},
"button": {
"save": "Speichern",

View File

@@ -178,6 +178,16 @@
"restricted": {
"title": "Keine Kamera verfügbar",
"description": "Sie haben keine Berechtigung, Kameras in dieser Gruppe anzuzeigen."
},
"default": {
"title": "Keine Kameras konfiguriert",
"description": "Zum Start eine Kamera mit Frigate verbinden.",
"buttonText": "Kamera hinzufügen"
},
"group": {
"title": "Keine Kameras in der Gruppe",
"description": "Diese Kameragruppe hat keine zugewiesenen oder aktiven Kameras.",
"buttonText": "Gruppen verwalten"
}
},
"snapshot": {

View File

@@ -1265,11 +1265,11 @@
"title": "Kamera-Einstellungen überprüfen",
"object_descriptions": {
"title": "Generative KI Objektbeschreibungen",
"desc": "Aktiviere/deaktiviere vorübergehend die Objektbeschreibungen durch Generative KI für diese Kamera. Wenn diese Option deaktiviert ist, werden keine KI-generierten Beschreibungen für verfolgte Objekte dieser Kamera erstellt."
"desc": "Aktiviere/deaktiviere vorübergehend die Objektbeschreibungen durch generative KI für diese Kamera. Wenn diese Option deaktiviert ist, werden keine KI-generierten Beschreibungen für verfolgte Objekte dieser Kamera erstellt."
},
"review_descriptions": {
"title": "Generative KI Review Beschreibungen",
"desc": "Generative KI Review Beschreibungen für diese Kamera vorübergehend aktivieren/deaktivieren. Wenn diese Option deaktiviert ist, werden für die Review Elemente dieser Kamera keine KI-generierten Beschreibungen angefordert."
"desc": "Aktivieren/deaktivieren Sie vorübergehend die generativen KI-Überprüfungsbeschreibungen für diese Kamera, bis Frigate neu gestartet wird. Wenn diese Option deaktiviert ist, werden für Überprüfungselemente auf dieser Kamera keine KI-generierten Beschreibungen angefordert."
},
"review": {
"title": "Überprüfung",

View File

@@ -75,7 +75,8 @@
"s": "{{time}}δ",
"inProgress": "Σε εξέλιξη",
"invalidStartTime": "Μη έγκυρη ώρα έναρξης",
"invalidEndTime": "Μη έγκυρη ώρα λήξης"
"invalidEndTime": "Μη έγκυρη ώρα λήξης",
"never": "Ποτέ"
},
"menu": {
"live": {

View File

@@ -2,6 +2,13 @@
"documentTitle": "Μοντέλα Ταξινόμησης - Frigate",
"details": {
"scoreInfo": "Η βαθμολογία αντιπροσωπεύει την κατά μέσο όρο ταξινομική εμπιστοσύνη μεταξύ όλων των ανιχνεύσεων αυτού του αντικειμένου.",
"none": "Καμία"
"none": "Καμία",
"unknown": "Άγνωστο"
},
"button": {
"deleteClassificationAttempts": "Διαγραφή Εικόνων Ταξινόμησης",
"deleteImages": "Διαγραφή Εικόνων",
"trainModel": "Εκπαίδευση Μοντέλου",
"addClassification": "Προσθήκη Ταξινόμησης"
}
}

View File

@@ -9,7 +9,10 @@
"empty": {
"alert": "Δεν υπάρχουν ειδοποιήσεις για εξέταση",
"detection": "Δεν υπάρχουν εντοπισμοί για εξέταση",
"motion": "Δεν βρέθηκαν στοιχεία κίνησης"
"motion": "Δεν βρέθηκαν στοιχεία κίνησης",
"recordingsDisabled": {
"title": "Οι καταγραφές πρέπει να είναι ενεργοποιημένες"
}
},
"timeline": "Χρονολόγιο",
"timeline.aria": "Επιλογή χρονοσειράς",

View File

@@ -193,6 +193,7 @@
"yue": "粵語 (Cantonese)",
"th": "ไทย (Thai)",
"ca": "Català (Catalan)",
"hr": "Hrvatski (Croatian)",
"sr": "Српски (Serbian)",
"sl": "Slovenščina (Slovenian)",
"lt": "Lietuvių (Lithuanian)",

View File

@@ -2,7 +2,8 @@
"description": {
"addFace": "Add a new collection to the Face Library by uploading your first image.",
"placeholder": "Enter a name for this collection",
"invalidName": "Invalid name. Names can only include letters, numbers, spaces, apostrophes, underscores, and hyphens."
"invalidName": "Invalid name. Names can only include letters, numbers, spaces, apostrophes, underscores, and hyphens.",
"nameCannotContainHash": "Name cannot contain #."
},
"details": {
"timestamp": "Timestamp",

View File

@@ -468,6 +468,11 @@
}
},
"polygonDrawing": {
"type": {
"zone": "zone",
"motion_mask": "motion mask",
"object_mask": "object mask"
},
"removeLastPoint": "Remove last point",
"reset": {
"label": "Clear all points"
@@ -728,10 +733,7 @@
},
"requirements": {
"title": "Password requirements:",
"length": "At least 8 characters",
"uppercase": "At least one uppercase letter",
"digit": "At least one digit",
"special": "At least one special character (!@#$%^&*(),.?\":{}|<>)"
"length": "At least 12 characters"
},
"match": "Passwords match",
"notMatch": "Passwords don't match"

View File

@@ -90,7 +90,8 @@
},
"inProgress": "En progreso",
"invalidStartTime": "Hora de inicio no válida",
"invalidEndTime": "Hora de finalización no válida"
"invalidEndTime": "Hora de finalización no válida",
"never": "Nunca"
},
"menu": {
"settings": "Ajustes",
@@ -267,7 +268,8 @@
"show": "Mostrar {{item}}",
"ID": "ID",
"none": "Ninguno",
"all": "Todas"
"all": "Todas",
"other": "Otro"
},
"role": {
"title": "Rol",

View File

@@ -135,7 +135,7 @@
"count_other": "{{count}} Clases"
},
"attributes": {
"label": "Clasificación de Atributos",
"label": "Atributos de Clasificación",
"all": "Todos los Atributos"
}
}

View File

@@ -62,7 +62,7 @@
"details": {
"scoreInfo": "La puntuación representa la confianza media de clasificación en todas las detecciones de este objeto.",
"unknown": "Desconocido",
"none": "Nada"
"none": "Ninguna"
},
"categorizeImage": "Clasificar Imagen",
"menu": {

View File

@@ -14,5 +14,5 @@
"documentTitle": "Editor de Configuración - Frigate",
"confirm": "¿Salir sin guardar?",
"safeConfigEditor": "Editor de Configuración (Modo Seguro)",
"safeModeDescription": "Frigate esta en modo seguro debido a un error en la configuración."
"safeModeDescription": "Frigate esta en modo seguro debido a un error en la validación de la configuración."
}

View File

@@ -178,6 +178,16 @@
"restricted": {
"title": "No hay cámaras disponibles",
"description": "No tiene permiso para ver ninguna cámara en este grupo."
},
"default": {
"title": "No hay Cámaras Configuradas",
"description": "Comienza conectando una cámara a Frigate.",
"buttonText": "Añadir Cámara"
},
"group": {
"title": "No hay Cámaras en Grupo",
"description": "Estae grupo de cámaras no tiene cámaras asignadas o habilitadas.",
"buttonText": "Gestionar Grupos"
}
},
"snapshot": {

View File

@@ -52,7 +52,7 @@
},
"title": "Panel en directo",
"displayCameraNames": {
"label": "Siempre mostrar nombres de las Camaras",
"label": "Siempre mostrar nombres de las Cámaras",
"desc": "Siempre mostrar nombres de cámaras en la vista en vivo multi-cámara."
},
"liveFallbackTimeout": {
@@ -708,7 +708,7 @@
"unsavedChanges": "Cambios en la configuración de Frigate+ no guardados"
},
"enrichments": {
"title": "Configuración de Análisis Avanzado",
"title": "Configuración de Enriquecimientos",
"unsavedChanges": "Cambios sin guardar en la configuración de Análisis Avanzado",
"birdClassification": {
"title": "Clasificación de Aves",
@@ -1191,11 +1191,11 @@
"title": "Configuración de revisión de la cámara",
"object_descriptions": {
"title": "Descripciones de objetos de IA generativa",
"desc": "Habilite o deshabilite temporalmente las descripciones de objetos generadas por IA para esta cámara. Al deshabilitarlas, no se solicitarán descripciones generadas por IA para los objetos rastreados en esta cámara."
"desc": "Habilite o deshabilite temporalmente las descripciones de objetos generadas por IA para esta cámara hasta que Frigate se reinicie. Al deshabilitarlas, no se solicitarán descripciones generadas por IA para los objetos rastreados en esta cámara."
},
"review_descriptions": {
"title": "Revisión de descripciones de IA generativa",
"desc": "Habilita o deshabilita temporalmente las revisión de descripciones generadas por IA para esta cámara. Al deshabilitarlas, no se solicitarán descripciones generadas por IA para los elementos de revisión de esta cámara."
"desc": "Habilita o deshabilita temporalmente las revisión de descripciones generadas por IA para esta cámara hasta que Frigate se reinicie. Al deshabilitarlas, no se solicitarán descripciones generadas por IA para los elementos de revisión de esta cámara."
},
"review": {
"title": "Revisar",

View File

@@ -90,7 +90,9 @@
"series": {
"go2rtc": "go2rtc",
"recording": "grabación",
"review_segment": "revisar segmento"
"review_segment": "revisar segmento",
"embeddings": "embeddings",
"audio_detector": "detector de audio"
}
}
},
@@ -190,7 +192,7 @@
"classification_speed": "Velocidad de clasificación de {{name}}",
"classification_events_per_second": "Clasificacion de eventos por segundo de {{name}}"
},
"title": "Enriquecimientos",
"title": "Enriquicimientos",
"averageInf": "Tiempo promedio de inferencia"
},
"stats": {

View File

@@ -75,7 +75,8 @@
"12hour": "dd. MMM yyyy, hh:mm aaa",
"24hour": "dd. MMM yyyy, HH:mm"
},
"formattedTimestampMonthDay": "dd. MMM"
"formattedTimestampMonthDay": "dd. MMM",
"never": "Mitte kunagi"
},
"menu": {
"user": {

View File

@@ -10,7 +10,8 @@
"objectDetection": "Objektide tuvastamine",
"audioDetection": "Heli tuvastus",
"transcription": "Heli üleskirjutus",
"snapshots": "Hetkvõtted"
"snapshots": "Hetkvõtted",
"autotracking": "Automaatne jälgimine"
},
"documentTitle": "Otseülekanne - Frigate",
"documentTitle.withCamera": "{{camera}} - Otseülekanne - Frigate",
@@ -95,6 +96,10 @@
"playInBackground": {
"label": "Esita taustal",
"tips": "Selle eelistusega saad määrata, et voogedastus jääb tööle ka siis, kui meesiaesitaja on suletud."
},
"audio": {
"available": "Selles voogedastuses on heliriba saadaval",
"unavailable": "Selles voogedastuses pole heliriba saadaval"
}
},
"notifications": "Teavitused",
@@ -129,6 +134,25 @@
"restricted": {
"title": "Ühtegi kaamerat pole saadaval",
"description": "Sul pole õigust ühegi selle grupi kaamera vaatamiseks."
},
"title": "Ühtegi kaamerat pole seadistatud",
"description": "Alustamiseks ühenda mõni kaamera Frigate'iga."
},
"effectiveRetainMode": {
"modes": {
"active_objects": "Aktiivsed objektid",
"all": "Kõik",
"motion": "Liikumine"
}
},
"editLayout": {
"label": "Muuda paigutust",
"group": {
"label": "Muuda kaameragruppi"
},
"exitEdit": "Välju muutmisest"
},
"history": {
"label": "Näita varasemat sisu"
}
}

View File

@@ -1 +1,11 @@
{}
{
"documentTitle": "Luokittelumallit - Frigate",
"details": {
"scoreInfo": "Pistemäärä edustaa tämän objektin kaikkien havaintojen keskimääräistä luokitteluvarmuutta.",
"none": "Ei mitään"
},
"button": {
"deleteImages": "Poista kuvat",
"trainModel": "Kouluta malli"
}
}

View File

@@ -13,5 +13,8 @@
"title": "Nimeä uudelleen",
"desc": "Anna uusi nimi viedylle kohteelle.",
"saveExport": "Tallenna vienti"
},
"tooltip": {
"editName": "Muokkaa nimeä"
}
}

View File

@@ -10,7 +10,8 @@
"object": "Virheenjäljitys - Frigate",
"authentication": "Autentikointiuasetukset - Frigate",
"notifications": "Ilmoitusasetukset - Frigate",
"enrichments": "Laajennusasetukset Frigate"
"enrichments": "Laajennusasetukset Frigate",
"cameraManagement": "Hallitse Kameroita - Frigate"
},
"menu": {
"ui": "Käyttöliittymä",

View File

@@ -90,7 +90,8 @@
},
"inProgress": "En cours",
"invalidStartTime": "Heure de début invalide",
"invalidEndTime": "Heure de fin invalide"
"invalidEndTime": "Heure de fin invalide",
"never": "Jamais"
},
"button": {
"apply": "Appliquer",
@@ -279,7 +280,8 @@
"show": "Afficher {{item}}",
"ID": "ID",
"none": "Aucun",
"all": "Tous"
"all": "Tous",
"other": "Autre"
},
"unit": {
"speed": {

View File

@@ -178,6 +178,16 @@
"restricted": {
"title": "Aucune caméra disponible",
"description": "Vous n'avez pas la permission de visionner les caméras de ce groupe."
},
"default": {
"title": "Aucune caméra configurée",
"description": "Pour commencer, connectez une caméra à Frigate.",
"buttonText": "Ajouter une caméra"
},
"group": {
"title": "Aucune caméra dans le groupe",
"description": "Ce groupe de caméras ne contient aucune caméra assignée ou activée.",
"buttonText": "Gérer les groupes"
}
},
"snapshot": {

View File

@@ -1278,11 +1278,11 @@
"title": "Paramètres des activités caméra",
"object_descriptions": {
"title": "Descriptions d'objets par l'IA générative",
"desc": "Active ou désactive temporairement les descriptions d'objets générées par l'IA générative pour cette caméra. Lorsque cette option est désactivée, aucune description par l'IA n'est générée pour les objets suivis sur cette caméra."
"desc": "Activez ou désactivez temporairement les descriptions par IA générative jusqu'au redémarrage. Si désactivé, l'IA ne sera plus sollicitée pour décrire les objets suivis sur cette caméra."
},
"review_descriptions": {
"title": "Descriptions des activités par l'IA générative",
"desc": "Active ou désactive temporairement les descriptions par l'IA générative pour cette caméra. Lorsque cette option est désactivée, aucune description nouvelle n'est générée pour les activités sur cette caméra."
"desc": "Activez ou désactivez temporairement les descriptions d'activités par IA générative jusqu'au redémarrage. Si désactivé, l'IA ne sera plus sollicitée pour décrire les activités sur cette caméra."
},
"review": {
"title": "Activités",

View File

@@ -89,7 +89,10 @@
"processMemoryUsage": "Utilisation mémoire du processus",
"series": {
"go2rtc": "go2rtc",
"recording": "enregistrement"
"recording": "enregistrement",
"review_segment": "Segment d'activité",
"embeddings": "embeddings",
"audio_detector": "détecteur audio"
}
}
},
@@ -147,11 +150,11 @@
"cameraFfmpeg": "{{camName}} FFmpeg",
"cameraSkippedDetectionsPerSecond": "{{camName}} détections ignorées par seconde",
"overallDetectionsPerSecond": "Moyenne de détections par seconde",
"overallFramesPerSecond": "Moyenne d'images par seconde (IPS)",
"overallFramesPerSecond": "images par seconde (global)",
"overallSkippedDetectionsPerSecond": "Moyenne de détections ignorées par seconde",
"cameraCapture": "{{camName}} capture",
"cameraDetect": "{{camName}} détection",
"cameraFramesPerSecond": "{{camName}} images par seconde (IPS)",
"cameraFramesPerSecond": "{{camName}} images par seconde",
"cameraDetectionsPerSecond": "{{camName}} détections par seconde"
},
"overview": "Vue d'ensemble",

View File

@@ -81,7 +81,8 @@
},
"inProgress": "U tijeku",
"invalidStartTime": "Nevažeće vrijeme početka",
"invalidEndTime": "Nevažeće vrijeme završetka"
"invalidEndTime": "Nevažeće vrijeme završetka",
"never": "Nikad"
},
"menu": {
"live": {

View File

@@ -29,9 +29,9 @@
"camera": {
"birdseye": "Ptičja perspektiva",
"setting": {
"label": "Postavke streamanja kamere",
"title": "{{cameraName}} Streaming Postavke",
"desc": "Promijenite opcije streamanja uživo za nadzornu ploču ove grupe kamera. <em>Ove postavke su specifične za uređaj/preglednik.</em>",
"label": "Postavke emitiranja kamere",
"title": "{{cameraName}} Postavke Emitiranja",
"desc": "Promijenite opcije emitiranja uživo za nadzornu ploču ove grupe kamera. <em>Ove postavke su specifične za uređaj/preglednik.</em>",
"audioIsAvailable": "Za ovaj prijenos dostupan je zvuk",
"audioIsUnavailable": "Za ovaj prijenos zvuk nije dostupan",
"audio": {
@@ -39,15 +39,15 @@
"title": "Audio mora dolaziti s vaše kamere i biti konfiguriran u go2rtc za ovaj prijenos."
}
},
"stream": "Prijenos",
"placeholder": "Izaberi prijenos",
"stream": "Emitiranje",
"placeholder": "Izaberi emitiranje",
"streamMethod": {
"label": "Metoda Prijenosa",
"placeholder": "Odaberi metodu prijenosa",
"label": "Metoda emitiranja",
"placeholder": "Odaberi metodu emitiranja",
"method": {
"noStreaming": {
"label": "Nema Prijenosa",
"desc": "Slike s kamere bit će ažurirane samo jednom u minuti, a prijenos uživo neće biti dostupan."
"label": "Nema emitiranja",
"desc": "Slike s kamere bit će ažurirane samo jednom u minuti, a emitiranje uživo neće biti dostupno."
},
"smartStreaming": {
"desc": "Pametno emitiranje ažurirat će sliku vaše kamere jednom u minuti kada nema prepoznatljive aktivnosti kako bi uštedjelo propusnost i resurse. Kada se detektira aktivnost, slika će se besprijekorno prebaciti na prijenos uživo.",

View File

@@ -37,7 +37,7 @@
"noPreviewFoundFor": "Pretpregled nije nađen za {{cameraName}}",
"livePlayerRequiredIOSVersion": "iOS 17.1 ili noviji je potreban za ovu vrstu uživog prijenosa.",
"streamOffline": {
"title": "Stream nije dostupan",
"title": "Emitiranje nije dostupno",
"desc": "Slike nisu primljene sa {{cameraName}} <code>detect</code> stream-a, provjeri logove"
},
"toast": {

View File

@@ -18,7 +18,7 @@
},
"details": {
"unknown": "Nepoznato",
"none": "Nijedan",
"none": "Nema",
"scoreInfo": "Rezultat predstavlja prosječnu klasifikacijsku pouzdanost kroz sve detekcije ovog objekta."
},
"toast": {
@@ -38,35 +38,155 @@
"deleteImageFailed": "Neuspješno brisanje: {{errorMessage}}",
"deleteCategoryFailed": "Neuspješno brisanje klase: {{errorMessage}}",
"deleteModelFailed": "Nije uspjelo brisanje modela: {{errorMessage}}",
"categorizeFailed": "Nije uspjelo kategoriziranje slike: {{errorMessage}}"
"categorizeFailed": "Nije uspjelo kategoriziranje slike: {{errorMessage}}",
"trainingFailed": "Neuspješno treniranje modela. Provjerite Frigate zapisnike za detalje.",
"trainingFailedToStart": "Neuspješno pokretanje treniranja modela: {{errorMessage}}",
"updateModelFailed": "Neuspješno ažuriranje modela: {{errorMessage}}",
"renameCategoryFailed": "Neuspješno preimenovanje klase: {{errorMessage}}"
}
},
"description": {
"invalidName": "Nevaljano ime. Ime može samo uključivati slova, brojeve, razmake, navodnike, podcrte i crtice."
},
"train": {
"titleShort": "Nedavno"
"titleShort": "Nedavno",
"aria": "Odaberi Nedavne Klasifikacije",
"title": "Nedavne Klasifikacije"
},
"deleteModel": {
"desc_one": "Jeste li sigurni da želite izbrisati {{count}} model? Ovo će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti.",
"desc_few": "Jeste li sigurni da želite izbrisati {{count}} modela? Ovo će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti.",
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} modela? Ovo će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti."
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} modela? Ovo će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti.",
"title": "Izbriši klasifikacijski model",
"single": "Jesi li siguran da želiš izbrisati {{name}}? To će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti."
},
"deleteDatasetImages": {
"desc_one": "Jeste li sigurni da želite izbrisati {{count}} sliku iz {{dataset}}? Ova radnja se ne može poništiti i zahtijevat će ponovno treniranje modela.",
"desc_few": "Jeste li sigurni da želite izbrisati {{count}} slike iz {{dataset}}? Ova radnja se ne može poništiti i zahtijevat će ponovno treniranje modela.",
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} slika iz {{dataset}}? Ova radnja se ne može poništiti i zahtijevat će ponovno treniranje modela."
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} slika iz {{dataset}}? Ova radnja se ne može poništiti i zahtijevat će ponovno treniranje modela.",
"title": "Izbriši slike iz skupa podataka"
},
"deleteTrainImages": {
"desc_one": "Jeste li sigurni da želite izbrisati {{count}} sliku? Ova radnja se ne može poništiti.",
"desc_few": "Jeste li sigurni da želite izbrisati {{count}} slike? Ova radnja se ne može poništiti.",
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} slika? Ova radnja se ne može poništiti."
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} slika? Ova radnja se ne može poništiti.",
"title": "Izbriši slike iz skupa za treniranje"
},
"wizard": {
"step3": {
"allImagesRequired_one": "Molimo klasificirajte sve slike. Preostala je {{count}} slika.",
"allImagesRequired_few": "Molimo klasificirajte sve slike. Preostale su {{count}} slike.",
"allImagesRequired_other": "Molimo klasificirajte sve slike. Preostalo je {{count}} slika."
"allImagesRequired_other": "Molimo klasificirajte sve slike. Preostalo je {{count}} slika.",
"selectImagesPrompt": "Odaberite sve slike s: {{className}}",
"selectImagesDescription": "Kliknite na slike za odabir. Kliknite Nastavi kada završite s ovom klasom.",
"generating": {
"title": "Generiranje Primjeraka Slika",
"description": "Frigate povlači reprezentativne slike iz vaših snimaka. Ovo može potrajati..."
},
"training": {
"title": "Treniranje Modela",
"description": "Vaš model se trenira u pozadini. Zatvorite ovaj dijalog, a model će početi raditi čim treniranje završi."
},
"retryGenerate": "Ponovi Generiranje",
"noImages": "Nema generiranih primjeraka slika",
"classifying": "Klasificiranje & Treniranje...",
"trainingStarted": "Treniranje je uspješno pokrenuto",
"modelCreated": "Model je uspješno kreiran. Koristite prikaz Nedavnih Klasifikacija za dodavanje slika za nedostajuća stanja, a zatim trenirajte model.",
"errors": {
"noCameras": "Nema konfiguriranih kamera",
"noObjectLabel": "Nije odabrana oznaka objekta",
"generateFailed": "Neuspjelo generiranje primjera: {{error}}",
"generationFailed": "Generiranje nije uspjelo. Pokušajte ponovo.",
"classifyFailed": "Neuspjela klasifikacija slika: {{error}}"
},
"generateSuccess": "Primjerci slika su uspješno generirani",
"missingStatesWarning": {
"title": "Nedostaju Primjeri Stanja",
"description": "Preporučuje se odabrati primjere za sva stanja radi najboljih rezultata. Možete nastaviti bez odabira svih stanja, ali model neće biti treniran dok svi statusi nemaju slike. Nakon nastavka, koristite prikaz Nedavnih Klasifikacija za klasifikaciju slika za nedostajuća stanja, a zatim trenirajte model."
}
},
"title": "Kreiraj Novu Klasifikaciju",
"steps": {
"nameAndDefine": "Naziv & Definicija",
"stateArea": "Područje Stanja",
"chooseExamples": "Odaberi Primjere"
},
"step1": {
"description": "Modeli stanja prate fiksna područja kamere za promjene (npr. vrata otvorena/zatvorena). Modeli objekata dodaju klasifikacije detektiranim objektima (npr. poznate životinje, dostavljači, itd.).",
"name": "Naziv",
"namePlaceholder": "Unesite naziv modela...",
"type": "Tip",
"typeState": "Stanje",
"typeObject": "Objekt",
"objectLabel": "Oznaka Objekta",
"objectLabelPlaceholder": "Odaberi tip objekta...",
"classificationType": "Tip Klasifikacije",
"classificationTypeTip": "Saznaj više o tipovima klasifikacije",
"classificationTypeDesc": "Podoznake dodaju dodatni tekst na oznaku objekta (npr. 'Osoba: UPS'). Atributi su pretraživi metapodaci pohranjeni zasebno u metapodacima objekta.",
"classificationSubLabel": "Podoznaka",
"classificationAttribute": "Atribut",
"classes": "Klase",
"states": "Stanja",
"classesTip": "Saznaj više o klasama",
"classesStateDesc": "Definiraj različita stanja u kojima područje kamere može biti. Na primjer: 'otvoreno' i 'zatvoreno' za garažna vrata.",
"classesObjectDesc": "Definiraj različite kategorije za klasifikaciju detektiranih objekata. Na primjer: 'dostavljač', 'stanar', 'nepoznata osoba' za klasifikaciju ljudi.",
"classPlaceholder": "Unesite naziv klase...",
"errors": {
"nameRequired": "Naziv modela je obavezan",
"nameLength": "Naziv modela mora imati najviše 64 znaka",
"nameOnlyNumbers": "Naziv modela ne smije sadržavati samo brojeve",
"classRequired": "Potrebna je barem 1 klasa",
"classesUnique": "Nazivi klasa moraju biti jedinstveni",
"noneNotAllowed": "Klasa 'none' nije dopuštena",
"stateRequiresTwoClasses": "Modeli stanja zahtijevaju najmanje 2 klase",
"objectLabelRequired": "Molimo odaberite oznaku objekta",
"objectTypeRequired": "Molimo odaberite tip klasifikacije"
}
},
"step2": {
"description": "Odaberite kamere i definirajte područje praćenja za svaku kameru. Model će klasificirati stanje tih područja.",
"cameras": "Kamere",
"selectCamera": "Odaberi Kameru",
"noCameras": "Kliknite + za dodavanje kamera",
"selectCameraPrompt": "Odaberite kameru s popisa kako biste definirali područje praćenja"
}
},
"deleteCategory": {
"title": "Izbriši klasu",
"desc": "Jesi li siguran da želiš izbrisati klasu {{name}}? To će trajno izbrisati sve povezane slike i zahtijevati ponovno treniranje modela.",
"minClassesTitle": "Nije moguće izbrisati klasu",
"minClassesDesc": "Model klasifikacije mora imati barem 2 klase. Dodaj još jednu klasu prije brisanja ove."
},
"edit": {
"title": "Uredi model klasifikacije",
"descriptionState": "Uredi klase za ovaj model klasifikacije stanja. Promjene zahtijevaju ponovno treniranje modela.",
"descriptionObject": "Uredi tip objekta i tip klasifikacije za ovaj model klasifikacije objekata.",
"stateClassesInfo": "Napomena: Promjena klasa stanja zahtijeva ponovno treniranje modela s ažuriranim klasama."
},
"renameCategory": {
"title": "Preimenuj klasu",
"desc": "Unesite novi naziv za {{name}}. Bit će potrebno ponovno trenirati model da promjena naziva stupi na snagu."
},
"categories": "Klase",
"createCategory": {
"new": "Kreiraj Novu Klasu"
},
"categorizeImageAs": "Klasificiraj Sliku Kao:",
"categorizeImage": "Klasificiraj Sliku",
"menu": {
"objects": "Objekti",
"states": "Stanja"
},
"noModels": {
"object": {
"title": "Nema Modela Klasifikacije Objekata",
"description": "Kreiraj prilagođeni model za klasifikaciju detektiranih objekata.",
"buttonText": "Kreiraj Model Objekta"
},
"state": {
"title": "Nema Modela Klasifikacije Stanja",
"description": "Kreiraj prilagođeni model za praćenje i klasifikaciju promjena stanja u određenim područjima kamere.",
"buttonText": "Kreiraj Model Stanja"
}
}
}

View File

@@ -21,7 +21,7 @@
"visionModelFeatureExtractor": "Ekstraktor značajki modela vizije",
"textTokenizer": "Tokenizator teksta"
},
"context": "Frigate preuzima potrebne modele ugrađivanja (embeddings) kako bi podržao značajku semantičkog pretraživanja. To može potrajati nekoliko minuta, ovisno o brzini vaše mrežne veze.",
"context": "Frigate preuzima potrebne modele ugrađivanja kako bi podržao značajku semantičkog pretraživanja. To može potrajati nekoliko minuta, ovisno o brzini vaše mrežne veze.",
"tips": {
"context": "Možda ćete htjeti ponovno indeksirati ugrađivanja (embeddings) svojih praćenih objekata kada se modeli preuzmu."
},
@@ -34,8 +34,84 @@
"tips": {
"mismatch_one": "{{count}} nedostupan objekt je otkriven i uključen u ovaj pregledni stavak. Ti objekti ili nisu kvalificirani kao upozorenje ili detekcija, ili su već uklonjeni/izbrisani.",
"mismatch_few": "{{count}} nedostupna objekta su otkrivena i uključena u ovaj pregledni stavak. Ti objekti ili nisu kvalificirani kao upozorenje ili detekcija, ili su već uklonjeni/izbrisani.",
"mismatch_other": "{{count}} nedostupnih objekata je otkriveno i uključeno u ovaj pregledni stavak. Ti objekti ili nisu kvalificirani kao upozorenje ili detekcija, ili su već uklonjeni/izbrisani."
"mismatch_other": "{{count}} nedostupnih objekata je otkriveno i uključeno u ovaj pregledni stavak. Ti objekti ili nisu kvalificirani kao upozorenje ili detekcija, ili su već uklonjeni/izbrisani.",
"hasMissingObjects": "Prilagodite svoju konfiguraciju ako želite da Frigate sprema praćene objekte za sljedeće oznake: <em>{{objects}}</em>"
},
"title": "Detalji o pregledu stavke",
"desc": "Detalji o pregledu stavke",
"button": {
"share": "Podijelite ovaj pregled",
"viewInExplore": "Pogledaj u Istraži"
},
"toast": {
"success": {
"regenerate": "Zatražen je novi opis od {{provider}}. Ovisno o brzini vašeg pružatelja usluga, novi opis može trebati neko vrijeme da se regenerira.",
"updatedSublabel": "Uspješno ažurirana podoznaka.",
"updatedLPR": "Uspješno ažurirana registarska pločica.",
"updatedAttributes": "Uspješno ažurirani atributi.",
"audioTranscription": "Uspješno zatražena audio transkripcija. Ovisno o brzini vašeg Frigate servera, transkripcija može potrajati neko vrijeme."
},
"error": {
"regenerate": "Neuspješno pozivanje {{provider}} za novi opis: {{errorMessage}}",
"updatedSublabelFailed": "Nije uspjelo ažurirati podoznake: {{errorMessage}}",
"updatedLPRFailed": "Neuspješno ažuriranje registarske pločice: {{errorMessage}}",
"updatedAttributesFailed": "Neuspješno ažuriranje atributa: {{errorMessage}}",
"audioTranscription": "Neuspješno zatraživanje audio transkripcije: {{errorMessage}}"
}
}
},
"label": "Oznaka",
"editSubLabel": {
"title": "Uredi podoznaku",
"desc": "Unesite novu podoznaku za ovaj {{label}}",
"descNoLabel": "Unesite novu oznaku podoznake za ovaj praćeni objekt"
},
"editLPR": {
"title": "Uredi registarsku pločicu",
"desc": "Unesite novu vrijednost registarske pločice za ovaj {{label}}",
"descNoLabel": "Unesite novu vrijednost registarske pločice za ovaj praćeni objekt"
},
"editAttributes": {
"title": "Atributi uređivanja",
"desc": "Odaberite klasifikacijske atribute za ovaj {{label}}"
},
"snapshotScore": {
"label": "Ocjena snimke"
},
"topScore": {
"label": "Najbolja ocjena",
"info": "Najviša ocjena je najviši medijan za praćeni objekt, pa se može razlikovati od rezultata prikazanog na sličici rezultata pretraživanja."
},
"score": {
"label": "Ocjena"
},
"recognizedLicensePlate": "Priznata registarska pločica",
"attributes": "Klasifikacijski atributi",
"estimatedSpeed": "Procijenjena brzina",
"objects": "Objekti",
"camera": "Kamera",
"zones": "Zone",
"button": {
"findSimilar": "Pronađite slične",
"regenerate": {
"title": "Regeneriraj",
"label": "Ponovno generiranje opisa praćenog objekta"
}
},
"description": {
"label": "Opis",
"placeholder": "Opis praćenog objekta",
"aiTips": "Frigate neće tražiti opis od vašeg Generative AI pružatelja dok životni ciklus praćenog objekta ne završi."
},
"expandRegenerationMenu": "Proširi izbornik regeneracije",
"regenerateFromSnapshot": "Regeneracija iz Snimki",
"regenerateFromThumbnails": "Regeneracija iz sličica",
"tips": {
"descriptionSaved": "Uspješno spremljen opis",
"saveDescriptionFailed": "Nije ažuriran opis: {{errorMessage}}"
},
"title": {
"label": "Naslov"
}
},
"trackedObjectDetails": "Detalji praćenog objekta",
@@ -51,9 +127,124 @@
"title": "Detalji Praćenja",
"noImageFound": "Slika nije nađena za ovaj vremenski zapis.",
"createObjectMask": "Napravi Masku Objekta",
"adjustAnnotationSettings": "Podesi postavke anotacije"
"adjustAnnotationSettings": "Podesi postavke anotacije",
"scrollViewTips": "Kliknite za prikaz značajnih trenutaka životnog ciklusa ovog objekta.",
"autoTrackingTips": "Pozicije ograničavajućih okvira bit će netočne za kamere s automatskim praćenjem.",
"count": "{{first}} of {{second}}",
"trackedPoint": "Praćena točka",
"lifecycleItemDesc": {
"visible": "{{label}} detektiran",
"entered_zone": "{{label}} ušlo u {{zones}}",
"active": "{{label}} postao aktivan",
"stationary": "{{label}} je postao stacionaran",
"attribute": {
"faceOrLicense_plate": "{{attribute}} detektiran za {{label}}",
"other": "{{label}} prepoznat kao {{attribute}}"
},
"gone": "{{label}} lijevo",
"heard": "{{label}} zvuk detektiran",
"external": "{{label}} detektiran",
"header": {
"zones": "Zone",
"ratio": "Omjer",
"area": "Površina",
"score": "Ocjena"
}
},
"annotationSettings": {
"title": "Postavke anotacija",
"showAllZones": {
"title": "Pokaži sve zone",
"desc": "Uvijek prikaži zone u okvirima gdje su objekti ušli u zonu."
},
"offset": {
"label": "Pomak anotacija",
"desc": "Ovi podaci dolaze s detekcijskog emitiranja vaše kamere, ali se prikazuju preko slika iz snimajućeg emitiranja. Malo je vjerojatno da su oba emitiranja potpuno sinkronizirana. Kao rezultat toga, okvir (bounding box) i snimka možda neće savršeno odgovarati. Ovom postavkom možete pomaknuti oznake unaprijed ili unatrag u vremenu kako bi bolje odgovarale snimljenoj snimci.",
"millisecondsToOffset": "Milisekunde za pomicanje detekcije anotacija za. <em>Zadano: 0</em>",
"tips": "Smanjite vrijednost ako je reprodukcija videa ispred kutija i točaka puta, a povećajte vrijednost ako je reprodukcija videa iza njih. Ta vrijednost može biti negativna.",
"toast": {
"success": "Pomak anotacija za {{camera}} spremljen je u konfiguracijsku datoteku."
}
}
},
"carousel": {
"previous": "Prethodni slajd",
"next": "Sljedeći slajd"
}
},
"trackedObjectsCount_one": "{{count}} praćeni objekt ",
"trackedObjectsCount_few": "{{count}} praćena objekta ",
"trackedObjectsCount_other": "{{count}} praćenih objekata "
"trackedObjectsCount_other": "{{count}} praćenih objekata ",
"itemMenu": {
"downloadVideo": {
"label": "Preuzmi video",
"aria": "Preuzmi video"
},
"downloadSnapshot": {
"label": "Preuzmite snimku",
"aria": "Preuzmite snimku"
},
"downloadCleanSnapshot": {
"label": "Preuzmite čistu snimku",
"aria": "Preuzmite čistu snimku"
},
"viewTrackingDetails": {
"label": "Pogledajte detalje praćenja",
"aria": "Prikaži detalje praćenja"
},
"findSimilar": {
"label": "Pronađi slične",
"aria": "Pronađi slične praćene objekte"
},
"addTrigger": {
"label": "Dodaj okidač",
"aria": "Dodajte okidač za ovaj praćeni objekt"
},
"audioTranscription": {
"label": "Prepisivanje",
"aria": "Zatražite audio transkripciju"
},
"submitToPlus": {
"label": "Pošalji na Frigate+",
"aria": "Pošalji na Frigate Plus"
},
"viewInHistory": {
"label": "Pogled u povijest",
"aria": "Pogled u povijest"
},
"deleteTrackedObject": {
"label": "Izbriši ovaj praćeni objekt"
},
"showObjectDetails": {
"label": "Prikaži putanju objekta"
},
"hideObjectDetails": {
"label": "Put skrivanja objekta"
}
},
"dialog": {
"confirmDelete": {
"title": "Potvrdi brisanje",
"desc": "Brisanjem ovog praćenog objekta uklanja se snimka, sve spremljene ugradnje i svi povezani unosi o praćenju. Snimljeni materijal ovog praćenog objekta u prikazu Povijesti <em>NEĆE</em> biti izbrisan.<br /><br />Jeste li sigurni da želite nastaviti?"
}
},
"noTrackedObjects": "Nema pronađenih praćenih objekata",
"fetchingTrackedObjectsFailed": "Neuspješno dohvaćanje praćenih objekata: {{errorMessage}}",
"searchResult": {
"tooltip": "Pronađen {{type}} s pouzdanošću od {{confidence}}%",
"previousTrackedObject": "Prethodni praćeni objekt",
"nextTrackedObject": "Sljedeći praćeni objekt",
"deleteTrackedObject": {
"toast": {
"success": "Praćeni objekt je uspješno izbrisan.",
"error": "Neuspješno brisanje praćenog objekta: {{errorMessage}}"
}
}
},
"aiAnalysis": {
"title": "Analiza umjetne inteligencije"
},
"concerns": {
"label": "Zabrinutosti"
}
}

View File

@@ -96,6 +96,101 @@
"disable": "Sakrij statistike emitiranja"
},
"manualRecording": {
"title": "Na Zahtjev"
"title": "Na Zahtjev",
"tips": "Preuzmite trenutnu snimku ili pokrenite ručni događaj prema postavkama zadržavanja snimki ove kamere.",
"playInBackground": {
"label": "Reproduciraj u pozadini",
"desc": "Omogući ovu opciju za nastavak emitiranja kada je prozor za reprodukciju skriven."
},
"showStats": {
"label": "Prikaži statistike",
"desc": "Omogući ovu opciju da se statistika emitiranja prikazuje preko prikaza kamere."
},
"debugView": "Debug prikaz",
"start": "Pokreni snimanje na zahtjev",
"started": "Pokrenuto ručno snimanje na zahtjev.",
"failedToStart": "Neuspješno pokretanje ručnog snimanja na zahtjev.",
"recordDisabledTips": "Budući da je snimanje onemogućeno ili ograničeno u konfiguraciji za ovu kameru, spremit će se samo jedna snimka.",
"end": "Kraj snimanja na zahtjev",
"ended": "Prekinuto je ručno snimanje na zahtjev.",
"failedToEnd": "Neuspješno prekidanje ručnog snimanja na zahtjev."
},
"streamingSettings": "Postavke emitiranja",
"notifications": "Obavijesti",
"audio": "Audio",
"suspend": {
"forTime": "Pauziraj zbog: "
},
"stream": {
"title": "Emitiranje",
"audio": {
"tips": {
"title": "Zvuk mora biti izlazan iz vaše kamere i konfiguriran u go2rtc za ovaj stream."
},
"available": "Audio je dostupan za ovo emitiranje",
"unavailable": "Audio nije dostupan za ovo emitiranje"
},
"debug": {
"picker": "Odabir streama nije dostupan u debug načinu. Debug prikaz uvijek koristi emitiranje dodijeljeno ulozi detekcije."
},
"twoWayTalk": {
"tips": "Vaš uređaj mora podržavati tu značajku, a WebRTC mora biti konfiguriran za dvosmjernu komunikaciju.",
"available": "Za ovo emitiranje dostupan je dvosmjerni razgovor",
"unavailable": "Dvosmjerni razgovor nije dostupan za ovo emitiranje"
},
"lowBandwidth": {
"tips": "Prikaz uživo je u načinu rada s niskom propusnošću zbog međuspremnika ili grešaka u emitiranju.",
"resetStream": "Resetiraj emitiranje"
},
"playInBackground": {
"label": "Reproduciraj u pozadini",
"tips": "Omogući ovu opciju za nastavak emitiranja kad je player skriven."
}
},
"cameraSettings": {
"title": "{{camera}} Postavke",
"cameraEnabled": "Kamera omogućena",
"objectDetection": "Detekcija objekata",
"recording": "Snimanje",
"snapshots": "Snimke",
"audioDetection": "Detekcija zvuka",
"transcription": "Audio transkripcija",
"autotracking": "Automatsko praćenje"
},
"history": {
"label": "Prikaži povijesne snimke"
},
"effectiveRetainMode": {
"modes": {
"all": "Svi",
"motion": "Prijedlog",
"active_objects": "Aktivni objekti"
}
},
"editLayout": {
"label": "Uredi raspored",
"group": {
"label": "Uredi Grupu Kamera"
},
"exitEdit": "Izlaz iz uređivanja"
},
"noCameras": {
"title": "Nema konfiguriranih kamera",
"description": "Započnite povezivanjem kamere na Frigate.",
"buttonText": "Dodaj kameru",
"restricted": {
"title": "Nema dostupnih kamera",
"description": "Nemate dopuštenje za gledanje kamera u ovoj grupi."
},
"default": {
"title": "Nema konfiguriranih kamera",
"description": "Započnite povezivanjem kamere na Frigate.",
"buttonText": "Dodaj kameru"
},
"group": {
"title": "Nema kamera u grupi",
"description": "Ova grupa kamera nema dodijeljene niti omogućene kamere.",
"buttonText": "Upravljanje grupama"
}
}
}

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,14 @@
{
"documentTitle": {
"cameras": "Statistika kamera - Frigate",
"general": "Generalne statistike - Frigate",
"cameras": "Statistika Kamera - Frigate",
"general": "Opća Statistika - Frigate",
"logs": {
"go2rtc": "Go2RTC Zapisnici- Frigate",
"nginx": "Nginx Zapisnici - Frigate",
"frigate": "Frigate Zapisnici - Frigate"
"go2rtc": "Zapisnici Go2RTC - Frigate",
"nginx": "Zapisnici Nginx - Frigate",
"frigate": "Zapisnici Frigate - Frigate"
},
"storage": "Statistika pohrane - Frigate",
"enrichments": "Statistika obogaćivanja - Frigate"
"storage": "Statistika Pohrane - Frigate",
"enrichments": "Statistika Obogaćenja - Frigate"
},
"title": "Sustav",
"logs": {
@@ -22,15 +22,15 @@
"message": "Poruka"
},
"copy": {
"label": "Kopiraj u Međuspremnik",
"success": "Kopirani zapisnici u međuspremnik",
"error": "Nisam mogao kopirati zapisnike u međuspremnik"
"label": "Kopiraj u međuspremnik",
"success": "Zapisnici kopirani u međuspremnik",
"error": "Nije moguće kopirati zapisnike u međuspremnik"
},
"tips": "Zapisnici se prenose s poslužitelja",
"tips": "Zapisnici se prenose sa servera",
"toast": {
"error": {
"fetchingLogsFailed": "Greška dohvaćanja zapisnika: {{errorMessage}}",
"whileStreamingLogs": "Pogreška tijekom prijenosa zapisnika: {{errorMessage}}"
"fetchingLogsFailed": "Greška pri dohvaćanju zapisnika: {{errorMessage}}",
"whileStreamingLogs": "Greška tijekom prijenosa zapisnika: {{errorMessage}}"
}
}
},
@@ -39,26 +39,170 @@
"title": "Općenito",
"detector": {
"title": "Detektori",
"inferenceSpeed": "Brzina izvođenja detektora",
"temperature": "Temperatura Detektora",
"cpuUsage": "Detektorova iskorištenost CPU-a",
"cpuUsageInformation": "CPU korišten za pripremu ulaznih i izlaznih podataka za modele detekcije. Ova vrijednost ne mjeri korištenje tijekom izvođenja modela, čak ni ako se koristi GPU ili akcelerator.",
"memoryUsage": "Detektorova Iskorištenost Memorije"
"inferenceSpeed": "Brzina inferencije detektora",
"temperature": "Temperatura detektora",
"cpuUsage": "Upotreba CPU-a detektora",
"cpuUsageInformation": "CPU korišten za pripremu ulaznih i izlaznih podataka za/od modela detekcije. Ova vrijednost ne mjeri korištenje za inferenciju, čak ni ako se koristi GPU ili akcelerator.",
"memoryUsage": "Upotreba memorije detektora"
},
"hardwareInfo": {
"title": "Informacije o hardveru",
"gpuUsage": "Iskorištenost GPU-a",
"gpuMemory": "GPU Memorija",
"gpuEncoder": "GPU Enkoder",
"gpuDecoder": "GPU Dekoder",
"gpuUsage": "Upotreba GPU-a",
"gpuMemory": "Memorija GPU-a",
"gpuEncoder": "GPU Encoder",
"gpuDecoder": "GPU Decoder",
"gpuInfo": {
"vainfoOutput": {
"title": "Ispis Vainfo",
"title": "Vainfo Izlaz",
"returnCode": "Povratni kod: {{code}}",
"processOutput": "Ispis procesa:",
"processOutput": "Izlaz procesa:",
"processError": "Greška procesa:"
},
"nvidiaSMIOutput": {
"title": "Nvidia SMI Izlaz",
"name": "Naziv: {{name}}",
"driver": "Driver: {{driver}}",
"cudaComputerCapability": "CUDA Compute Capability: {{cuda_compute}}",
"vbios": "VBios Informacije: {{vbios}}"
},
"closeInfo": {
"label": "Zatvori informacije o GPU-u"
},
"copyInfo": {
"label": "Kopiraj informacije o GPU-u"
},
"toast": {
"success": "Informacije o GPU-u kopirane u međuspremnik"
}
},
"npuUsage": "Upotreba NPU-a",
"npuMemory": "Memorija NPU-a",
"intelGpuWarning": {
"title": "Upozorenje Intel GPU Statistika",
"message": "Statistika GPU-a nije dostupna",
"description": "Ovo je poznata greška u Intelovim alatima za izvještavanje GPU statistike (intel_gpu_top) gdje će se podaci prekinuti i stalno prikazivati 0% korištenja GPU-a, čak i kada hardversko ubrzanje i detekcija objekata pravilno rade na (i)GPU-u. Ovo nije greška Frigate-a. Možete ponovno pokrenuti host da privremeno riješite problem i potvrdite da GPU radi ispravno. Ovo ne utječe na performanse."
}
},
"otherProcesses": {
"title": "Ostali Procesi",
"processCpuUsage": "Upotreba CPU-a procesa",
"processMemoryUsage": "Upotreba memorije procesa",
"series": {
"go2rtc": "go2rtc",
"recording": "snimanje",
"review_segment": "pregled segmenta",
"embeddings": "ugrađivanja",
"audio_detector": "audio detektor"
}
}
},
"storage": {
"title": "Pohrana",
"overview": "Pregled",
"recordings": {
"title": "Snimke",
"tips": "Ova vrijednost predstavlja ukupno korištenje prostora za snimke u Frigate bazi podataka. Frigate ne prati korištenje prostora za sve datoteke na disku.",
"earliestRecording": "Najranija dostupna snimka:"
},
"shm": {
"title": "SHM (zajednička memorija) alokacija",
"warning": "Trenutna veličina SHM od {{total}} MB je premala. Povećajte je na najmanje {{min_shm}} MB."
},
"cameraStorage": {
"title": "Pohrana Kamere",
"camera": "Kamera",
"unusedStorageInformation": "Informacije o neiskorištenom prostoru",
"storageUsed": "Pohrana",
"percentageOfTotalUsed": "Postotak od ukupnog",
"bandwidth": "Propusnost",
"unused": {
"title": "Neiskorišteno",
"tips": "Ova vrijednost možda ne prikazuje točno slobodan prostor dostupan Frigate-u ako imate druge datoteke pohranjene na disku osim Frigate snimaka. Frigate ne prati korištenje prostora izvan svojih snimki."
}
}
},
"cameras": {
"title": "Kamere",
"overview": "Pregled",
"info": {
"aspectRatio": "Omjer stranica",
"cameraProbeInfo": "{{camera}} Informacije ispitane od kamere",
"streamDataFromFFPROBE": "Podaci emitiranja dohvaćeni su pomoću <code>ffprobe</code>.",
"fetching": "Dohvaćanje podataka kamere",
"stream": "Emitiranje {{idx}}",
"video": "Video:",
"codec": "Kodek:",
"resolution": "Rezolucija:",
"fps": "FPS:",
"unknown": "Nepoznato",
"audio": "Audio:",
"error": "Greška: {{error}}",
"tips": {
"title": "Informacije Ispitivanja Kamere"
}
},
"framesAndDetections": "Okviri / Detekcije",
"label": {
"camera": "kamera",
"detect": "detekcija",
"skipped": "preskočeno",
"ffmpeg": "FFmpeg",
"capture": "snimanje",
"overallFramesPerSecond": "ukupni okviri po sekundi",
"overallDetectionsPerSecond": "ukupne detekcije po sekundi",
"overallSkippedDetectionsPerSecond": "ukupne preskočene detekcije po sekundi",
"cameraFfmpeg": "{{camName}} FFmpeg",
"cameraCapture": "{{camName}} snimanje",
"cameraDetect": "{{camName}} detekcija",
"cameraFramesPerSecond": "{{camName}} okviri po sekundi",
"cameraDetectionsPerSecond": "{{camName}} detekcije po sekundi",
"cameraSkippedDetectionsPerSecond": "{{camName}} preskočene detekcije po sekundi"
},
"toast": {
"success": {
"copyToClipboard": "Podaci probe kopirani u međuspremnik."
},
"error": {
"unableToProbeCamera": "Nije moguće probati kameru: {{errorMessage}}"
}
}
},
"lastRefreshed": "Zadnje osvježavanje: ",
"stats": {
"ffmpegHighCpuUsage": "{{camera}} ima visoku upotrebu CPU-a za FFmpeg ({{ffmpegAvg}}%)",
"detectHighCpuUsage": "{{camera}} ima visoku upotrebu CPU-a za detekciju ({{detectAvg}}%)",
"healthy": "Sustav je zdrav",
"reindexingEmbeddings": "Reindeksiranje embeddings ({{processed}}% završeno)",
"cameraIsOffline": "{{camera}} je offline",
"detectIsSlow": "{{detect}} je sporo ({{speed}} ms)",
"detectIsVerySlow": "{{detect}} je vrlo sporo ({{speed}} ms)",
"shmTooLow": "/dev/shm alokacija ({{total}} MB) treba biti povećana na najmanje {{min}} MB."
},
"enrichments": {
"title": "Obogaćenja",
"infPerSecond": "Inferencija po sekundi",
"averageInf": "Prosječno vrijeme inferencije",
"embeddings": {
"image_embedding": "Ugrađivanja slike",
"text_embedding": "Ugrađivanja teksta",
"face_recognition": "Prepoznavanje lica",
"plate_recognition": "Prepoznavanje registarskih pločica",
"image_embedding_speed": "Brzina Image Embedding",
"face_embedding_speed": "Brzina Face Embedding",
"face_recognition_speed": "Brzina prepoznavanja lica",
"plate_recognition_speed": "Brzina prepoznavanja registarskih pločica",
"text_embedding_speed": "Brzina Text Embedding",
"yolov9_plate_detection_speed": "Brzina YOLOv9 prepoznavanja pločica",
"yolov9_plate_detection": "YOLOv9 Prepoznavanje pločica",
"review_description": "Opis Pregleda",
"review_description_speed": "Brzina Opisa Pregleda",
"review_description_events_per_second": "Opis Pregleda",
"object_description": "Opis Objekta",
"object_description_speed": "Brzina Opisa Objekta",
"object_description_events_per_second": "Opis Objekta",
"classification": "{{name}} Klasifikacija",
"classification_speed": "Brzina {{name}} Klasifikacije",
"classification_events_per_second": "{{name}} Klasifikacija po događajima po sekundi"
}
}
}

View File

@@ -425,5 +425,6 @@
"crack": "Törés",
"chink": "Csörömpölés",
"shatter": "Összetörés",
"field_recording": "Helyszíni felvétel"
"field_recording": "Helyszíni felvétel",
"noise": "Zaj"
}

View File

@@ -72,7 +72,10 @@
"24hour": "MMM d, HH:mm",
"12hour": "MMM d, h:mm aaa"
},
"formattedTimestampMonthDay": "MMM d"
"formattedTimestampMonthDay": "MMM d",
"inProgress": "Folyamatban",
"invalidStartTime": "Érvénytelen kezdeti idő",
"never": "Soha"
},
"menu": {
"darkMode": {
@@ -269,7 +272,8 @@
"next": "Következő"
},
"label": {
"back": "Vissza"
"back": "Vissza",
"all": "Mind"
},
"readTheDocumentation": "Olvassa el a dokumentációt",
"information": {

View File

@@ -132,5 +132,9 @@
},
"count_one": "{{count}} Osztály",
"count_other": "{{count}} Osztályok"
},
"attributes": {
"label": "Osztályozási attribútumok",
"all": "Minden attribútum"
}
}

View File

@@ -16,10 +16,15 @@
"deletedModel_one": "Sikeresen törölt {{count}} modellt",
"deletedModel_other": "",
"categorizedImage": "A kép sikeresen osztályozva",
"deletedCategory": "Osztály törlése"
"deletedCategory": "Osztály törlése",
"trainedModel": "Sikeresen betanított modell.",
"trainingModel": "A modell tanítás sikeresen megkezdődött.",
"updatedModel": "Modellkonfiguráció sikeresen frissítve",
"renamedCategory": "Sikeresen átneveztük az osztályt {{name}} névre"
},
"error": {
"deleteImageFailed": "Törlés sikertelen: {{errorMessage}}"
"deleteImageFailed": "Törlés sikertelen: {{errorMessage}}",
"deleteCategoryFailed": "Nem sikerült törölni az osztályt: {{errorMessage}}"
}
},
"details": {
@@ -43,5 +48,11 @@
"noNewImages": "Nincsenek új képek a betanításhoz. Először osztályozzon több képet az adathalmazban.",
"noChanges": "Az adathalmazban nem történt változás az utolsó betanítás óta.",
"modelNotReady": "A modell nem áll készen a betanításra"
},
"menu": {
"objects": "Objektumok"
},
"train": {
"titleShort": "Friss"
}
}

View File

@@ -3,7 +3,11 @@
"empty": {
"detection": "Nincs megnézendő észlelés",
"alert": "Nincs megnézendő riasztás",
"motion": "Nem található mozgás"
"motion": "Nem található mozgás",
"recordingsDisabled": {
"title": "A felvétel készítést engedélyezni kell",
"description": "Csak akkor hozhatók létre áttekintési elemek egy kamerához, ha az adott kamerához engedélyezve vannak a felvételek."
}
},
"detections": "Észlelések",
"motion": {
@@ -38,5 +42,17 @@
"suspiciousActivity": "Gyanús Tevékenység",
"threateningActivity": "Fenyegető Tevékenység",
"zoomIn": "Nagyítás",
"zoomOut": "Kicsinyítés"
"zoomOut": "Kicsinyítés",
"detail": {
"trackedObject_other": "{{count}} objektum",
"label": "Részletes",
"noDataFound": "Nincsenek részletes adatok áttekintésre",
"aria": "Részletes nézet kapcsolása",
"trackedObject_one": "{{count}} objektum",
"noObjectDetailData": "Nincsenek elérhető objektumrészlet adatok.",
"settings": "Részletes nézet beállításai",
"alwaysExpandActive": {
"title": "Mindig kibontja az aktív részt"
}
}
}

View File

@@ -213,7 +213,9 @@
"video": "videó",
"object_lifecycle": "tárgy életciklus",
"details": "részletek",
"snapshot": "pillanatfelvétel"
"snapshot": "pillanatfelvétel",
"thumbnail": "bélyegkép",
"tracking_details": "követési adatok"
},
"trackedObjectDetails": "Követett Tárgy Részletei",
"exploreMore": "Fedezzen fel több {{label}} tárgyat",
@@ -222,5 +224,21 @@
},
"concerns": {
"label": "Aggodalmak"
},
"trackingDetails": {
"lifecycleItemDesc": {
"active": "{{label}} aktív lett",
"attribute": {
"other": "{{label}} felismerve mint {{attribute}}"
},
"external": "{{label}} érzékelve",
"header": {
"zones": "Zónák",
"ratio": "Arány",
"area": "Terület"
}
},
"title": "Követési adatok",
"noImageFound": "Nem található kép ehhez az időbélyeghez."
}
}

View File

@@ -92,7 +92,8 @@
"train": {
"title": "Friss felismerések",
"empty": "Nincs friss arcfelismerés",
"aria": "Válassza ki a tanítást"
"aria": "Válassza ki a tanítást",
"titleShort": "Friss"
},
"pixels": "{{area}}px",
"selectItem": "KIválasztani {{item}}-et"

View File

@@ -778,6 +778,12 @@
"semanticSearch": {
"title": "Szemantikus keresés le van tiltva",
"desc": "A Triggerek használatához engedélyezni kell a szemantikus keresést."
},
"wizard": {
"steps": {
"nameAndType": "Név és típus",
"configureData": "Configurációs adatok"
}
}
},
"roles": {

View File

@@ -121,12 +121,19 @@
"gpuEncoder": "GPU Enkóder",
"gpuDecoder": "GPU Dekóder",
"npuUsage": "NPU Kihasználtság",
"npuMemory": "NPU Memória"
"npuMemory": "NPU Memória",
"intelGpuWarning": {
"message": "GPU statisztika nem érhető el"
}
},
"otherProcesses": {
"processMemoryUsage": "Folyamat Memória Kihasználtság",
"title": "Egyéb Folyamatok",
"processCpuUsage": "Folyamat CPU Kihasználtság"
"processCpuUsage": "Folyamat CPU Kihasználtság",
"series": {
"go2rtc": "go2rtc",
"recording": "felvétel"
}
}
},
"storage": {

View File

@@ -85,5 +85,7 @@
"snoring": "Ngorok",
"cough": "Batuk",
"clapping": "Tepukan",
"camera": "Kamera"
"camera": "Kamera",
"wheeze": "Nafas",
"gasp": "Tersedak"
}

View File

@@ -10,7 +10,22 @@
"last7": "7 hari terakhir",
"last14": "14 hari terakhir",
"last30": "30 hari terakhir",
"thisWeek": "Minggu Ini"
"thisWeek": "Minggu Ini",
"never": "Tidak Pernah",
"lastWeek": "Minggu Lalu",
"thisMonth": "Bulan Ini",
"lastMonth": "Bulan Lalu",
"5minutes": "5 menit",
"10minutes": "10 menit",
"30minutes": "30 menit",
"1hour": "1 jam",
"12hours": "12 jam",
"24hours": "24 jam",
"pm": "pm",
"am": "am",
"yr": "{{time}} tahun",
"year_other": "{{time}} tahun",
"mo": "{{time}} bulan"
},
"readTheDocumentation": "Baca dokumentasi"
}

View File

@@ -16,8 +16,38 @@
"errorMessage": {
"mustLeastCharacters": "Nama grup kamera minimal harus 2 karakter.",
"exists": "Nama grup kamera sudah ada.",
"nameMustNotPeriod": "Nama grup kamera tidak boleh ada titik."
"nameMustNotPeriod": "Nama grup kamera tidak boleh ada titik.",
"invalid": "Nama grup kamera tidak valid."
}
},
"cameras": {
"label": "Kamera",
"desc": "Pilih kamera untuk grup ini."
},
"icon": "Ikon",
"success": "Grup kamera {{name}} telah disimpan.",
"camera": {
"birdseye": "Mata Elang",
"setting": {
"label": "Pengaturan Streaming Kamera",
"title": "Pengaturan Kamera {{cameraName}}",
"desc": "Ubah pengaturan streaming untuk dasbor grup kamera ini. <em>Pengaturan ini spesifik untuk perangkat / browser tertentu.</em>",
"audioIsAvailable": "Terdapat audio untuk stream ini",
"audioIsUnavailable": "Tidak terdapat audio untuk stream ini",
"audio": {
"tips": {
"title": "Audio harus dikeluarkan dari kamera Anda dan dikonfigurasi di go2rtc untuk stream ini."
}
},
"stream": "Siaran",
"placeholder": "Pilih stream",
"streamMethod": {
"label": "Metode Streaming"
}
}
}
},
"debug": {
"boundingBox": "Batas Kotak"
}
}

View File

@@ -20,8 +20,43 @@
"ask_a": "Apakah objek ini adalah sebuah<code>{{label}}</code>?",
"ask_an": "Apakah objek ini <code>{{label}}</code>?",
"ask_full": "Apakah ini object <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"state": {
"submitted": "Terkirim"
}
}
},
"video": {
"viewInHistory": "Lihat di Histori"
}
},
"export": {
"time": {
"fromTimeline": "Pilih dari Linimasa",
"lastHour_other": "{{count}} Jam Terakhir",
"custom": "Kustom",
"start": {
"title": "Waktu Mulai",
"label": "Pilih Waktu Mulai"
},
"end": {
"title": "Waktu Akhir",
"label": "Pilih Waktu Akhir"
}
},
"name": {
"placeholder": "Nama Ekspor"
},
"select": "Pilih",
"export": "Ekspor",
"selectOrExport": "Pilih atau Ekspor",
"toast": {
"success": "Berhasil memulai ekspor. Lihat file pada halaman ekspor."
}
},
"search": {
"saveSearch": {
"overwrite": "{{searchName}} sudah ada. Menyimpan akan menimpa file yang sudah ada."
}
}
}

View File

@@ -23,5 +23,35 @@
},
"count_one": "{{count}} Kelas",
"count_other": "{{count}} Kelas"
},
"dates": {
"selectPreset": "Pilih preset…",
"all": {
"title": "Semua Tanggal",
"short": "Tanggal"
}
},
"more": "Lebih Banyak",
"reset": {
"label": "Atur ulang filter ke default"
},
"timeRange": "Rentang Waktu",
"subLabels": {
"label": "Sublabel",
"all": "Semua Sublabel"
},
"attributes": {
"label": "Klasifikasi Atribut",
"all": "Semua Atribut"
},
"score": "Skor",
"estimatedSpeed": "Perkiraan Kecepatan {{unit}}",
"features": {
"label": "Fitur"
},
"cameras": {
"all": {
"short": "Kamera"
}
}
}

View File

@@ -16,6 +16,36 @@
"streamType": {
"title": "Tipe stream:",
"short": "Jenis"
},
"bandwidth": {
"title": "Bandwith:",
"short": "Bandwith"
},
"latency": {
"title": "Latensi:",
"value": "{{seconds}} detik",
"short": {
"title": "Latensi",
"value": "{{seconds}} detik"
}
},
"totalFrames": "Total Frame:",
"droppedFrames": {
"title": "Frame Terbuang:",
"short": {
"title": "Terbuang",
"value": "{{droppedFrames}} frame"
}
},
"decodedFrames": "Decoded Frames:",
"droppedFrameRate": "Frame Rate Terbuang:"
},
"toast": {
"success": {
"submittedFrigatePlus": "Berhasil mengirim frame ke Frigate+"
},
"error": {
"submitFrigatePlusFailed": "Gagal mengirim frame ke Frigate+"
}
}
}

View File

@@ -17,5 +17,15 @@
"goat": "Kambing",
"sheep": "Domba",
"bird": "Burung",
"street_sign": "Rambu Jalan"
"street_sign": "Rambu Jalan",
"stop_sign": "Tanda Stop",
"parking_meter": "Parkir Meter",
"bench": "Kursi",
"cow": "Sapi",
"elephant": "Gajah",
"bear": "Beruang",
"zebra": "Zebra",
"giraffe": "Jerapah",
"hat": "Topi",
"backpack": "Tas"
}

View File

@@ -12,5 +12,36 @@
"addClassification": "Tambah Klasifikasi",
"deleteModels": "Hapus Model",
"editModel": "Ubah Model"
},
"tooltip": {
"trainingInProgress": "Model dalam training",
"noNewImages": "Tidak ada gambar untuk dilatih. Klasifikasikan gambar terlebih dahulu di dataset.",
"noChanges": "Tidak ada perubahan dataset sejak latihan terakhir.",
"modelNotReady": "Model tidak siap untuk dilatih"
},
"toast": {
"success": {
"deletedCategory": "Kelas dihapus",
"deletedImage": "Image dihapus",
"deletedModel_other": "Berhasil menghapus {{count}} model",
"categorizedImage": "Berhasil Mengklasifikasikan Gambar",
"trainedModel": "Berhasil melatih model.",
"trainingModel": "Berhasil memulai pelatihan model.",
"updatedModel": "Berhasil memperbarui konfigurasi model",
"renamedCategory": "Berhasil mengganti nama class ke {{name}}"
},
"error": {
"updateModelFailed": "Gagal melakukan perubahan pada model: {{errorMessage}}",
"renameCategoryFailed": "Gagal merubah penamaan kelas: {{errorMessage}}",
"deleteImageFailed": "Gagal menghapus: {{errorMessage}}",
"deleteCategoryFailed": "Gagal menghapus kelas: {{errorMessage}}"
}
},
"deleteCategory": {
"title": "Kelas dihapus",
"minClassesTitle": "Dilarang menghapus Kelas"
},
"train": {
"titleShort": "Terkini"
}
}

View File

@@ -9,7 +9,11 @@
"empty": {
"detection": "Tidak ada deteksi untuk ditinjau",
"alert": "Tidak ada peringatan untuk ditinjau",
"motion": "Data gerakan tidak ditemukan"
"motion": "Data gerakan tidak ditemukan",
"recordingsDisabled": {
"title": "Perekaman harus di aktifkan",
"description": "Ulasan item hanya dapat dibuat untuk kamera jika perekaman diaktifkan untuk kamera tersebut."
}
},
"timeline.aria": "Pilih timeline",
"timeline": "Linimasa",
@@ -24,8 +28,8 @@
"label": "Detil",
"noDataFound": "Tidak ada detil data untuk di review",
"aria": "Beralih tampilan detil",
"trackedObject_one": "objek",
"trackedObject_other": "objek-objek",
"trackedObject_one": "{{count}} objek",
"trackedObject_other": "{{count}} objek",
"noObjectDetailData": "Tidak ada data objek detil tersedia.",
"settings": "Pengaturan Tampilan Detil",
"alwaysExpandActive": {

View File

@@ -10,12 +10,37 @@
"finishingShortly": "Selesai sesaat lagi",
"step": {
"thumbnailsEmbedded": "Keluku dilampirkan ",
"descriptionsEmbedded": "Deskripsi terlampir: "
"descriptionsEmbedded": "Deskripsi terlampir: ",
"trackedObjectsProcessed": "Objek yang dilacak diproses: "
}
},
"downloadingModels": {
"context": "Frigate sedang mengunduh model embedding yang diperlukan untuk mendukung fitur Pencarian Semantik. Proses ini mungkin memakan waktu beberapa menit tergantung pada kecepatan koneksi jaringan Anda.",
"setup": {
"visionModel": "Model vision",
"visionModelFeatureExtractor": "Ekstraktor fitur model visi",
"textModel": "Model teks",
"textTokenizer": "Teks tokenizer"
},
"tips": {
"context": "Anda mungkin ingin mengindeks ulang embeddings dari objek yang Anda lacak setelah model-model tersebut diunduh."
},
"error": "Terjadi eror. Periksa log Frigate."
}
},
"details": {
"timestamp": "Stempel waktu"
},
"exploreMore": "Eksplor lebih jauh objek-objek {{label}}"
"exploreMore": "Eksplor lebih jauh objek-objek {{label}}",
"trackedObjectDetails": "Detail Objek Terlacak",
"type": {
"details": "detail",
"snapshot": "tangkapan layar",
"thumbnail": "thumbnail",
"video": "video",
"tracking_details": "detail pelacakan"
},
"trackingDetails": {
"title": "Detail Pelacakan"
}
}

View File

@@ -36,7 +36,8 @@
"train": {
"title": "Pengenalan Terkini",
"aria": "Pilih pengenalan terkini",
"empty": "Tidak ada percobaan pengenalan wajah baru-baru ini"
"empty": "Tidak ada percobaan pengenalan wajah baru-baru ini",
"titleShort": "Terkini"
},
"deleteFaceLibrary": {
"title": "Hapus Nama",

View File

@@ -16,7 +16,53 @@
"label": "Klik kotak ini untuk menengahkan kamera",
"enable": "Aktifkan klik untuk bergerak",
"disable": "Non-aktifkan klik untuk bergerak"
},
"left": {
"label": "Geser kamera PTZ ke kiri"
},
"up": {
"label": "Geser kamera PTZ keatas"
},
"down": {
"label": "Geser kamera PTZ kebawah"
},
"right": {
"label": "Geser kamera PTZ ke kanan"
}
}
},
"zoom": {
"in": {
"label": "Perbesar kamera PTZ"
},
"out": {
"label": "Perkecil kamera PTZ"
}
},
"focus": {
"in": {
"label": "Fokus kamera PTZ kedalam"
},
"out": {
"label": "Fokus kamera PTZ keluar"
}
},
"frame": {
"center": {
"label": "Klik pada frame untuk menengahkan kamera PTZ"
}
},
"presets": "Preset kamera PTZ"
},
"camera": {
"enable": "Aktifkan Kamera",
"disable": "Nonaktifkan Kamera"
},
"muteCameras": {
"enable": "Bisukan Semua Kamera",
"disable": "Bunyikan Semua Kamera"
},
"detect": {
"enable": "Aktifkan Pendeteksi",
"disable": "Nonaktifkan Pendeteksi"
}
}

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