Compare commits

..
24 Commits
Author SHA1 Message Date
Josh HawkinsandGitHub 7ed7ed56cf Miscellaneous fixes (0.18 beta) (#23854)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
* fix watchdog process restarts reverting to the boot config

/api/config/set parses a new FrigateConfig and swaps the API and dispatcher onto it, but FrigateApp.config was never rebound, so the watchdog factories rebuilt a crashed process from the config as of startup. Fix is to read through a ConfigHolder that the swap updates.

* fix birdseye camera overrides being clobbered by a global mode change

A global birdseye save published only the global object, leaving the output process to infer which cameras were inheriting by comparing against the previous global mode. That cannot tell an inherited value from an explicit one that happens to match, so it overwrote the override until a restart. Publish the per-camera values the config parse already resolved instead.

* Reject non-finite numbers in GenAI review descriptions

A model returning NaN for confidence or potential_threat_level slipped through the model_construct fallback, which skips validation, and was written into the review segment's JSON data. NaN is not valid JSON, so every subsequent /review request failed with "Out of range float values are not JSON compliant", blanking the review page for any time range containing the poisoned row.

* restore fused DetectionOutput in the OpenVINO SSD model conversion

* fix rgb swap issue for face dataset testing script
2026-07-29 08:39:01 -06:00
860772f9f4 Miscellaneous fixes (0.18 beta) (#23828)
CI / AMD64 Build (push) Canceled after 0s
CI / ARM Build (push) Canceled after 0s
CI / Jetson Jetpack 6 (push) Canceled after 0s
CI / AMD64 Extra Build (push) Canceled after 0s
CI / ARM Extra Build (push) Canceled after 0s
CI / Synaptics Build (push) Canceled after 0s
CI / Assemble and push default build (push) Canceled after 0s
* widen the logger name field in the per-process log level settings

* add details to timestamp error faq

* tweak genai docs

* tweak vector language

* Combine Qwen3.5 and Qwen3.6 listings

* fix openvino yolox detector crashing on every detection

The intermediate (N, 7) array in the yolox branch shadowed the pre-allocated (20, 6) detections buffer, so writing a detection into it raised "could not broadcast input array from shape (6,) into shape (7,)" on the first frame with anything above the confidence threshold. An empty frame also returned a (0, 7) array instead of the (20, 6) buffer.

Regressed in #13794, which renamed the intermediate from dets to detections as part of a cspell cleanup. Broken since 0.15.0.

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2026-07-28 11:02:15 -06:00
66f5511a51 Translated using Weblate (Norwegian Bokmål)
CI / AMD64 Build (push) Canceled after 0s
CI / ARM Build (push) Canceled after 0s
CI / Jetson Jetpack 6 (push) Canceled after 0s
CI / AMD64 Extra Build (push) Canceled after 0s
CI / ARM Extra Build (push) Canceled after 0s
CI / Synaptics Build (push) Canceled after 0s
CI / Assemble and push default build (push) Canceled after 0s
Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 91.4% (129 of 141 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 99.6% (1290 of 1295 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (109 of 109 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: OverTheHillsAndFarAway <prosjektx@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/nb_NO/
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-settings
2026-07-26 17:36:43 -05:00
b9bf0ff0a0 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (1294 of 1294 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (474 of 474 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (141 of 141 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (1294 of 1294 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (474 of 474 strings)

Co-authored-by: GuoQing Liu <842607283@qq.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hans/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-settings
2026-07-26 17:36:43 -05:00
5be587787d Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (141 of 141 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (474 of 474 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (1294 of 1294 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 100.0% (109 of 109 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 莊凱鈞 <kcchuang88@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hant/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-settings
2026-07-26 17:36:43 -05:00
5e61fad934 Translated using Weblate (Slovak)
Currently translated at 93.0% (120 of 129 strings)

Translated using Weblate (Slovak)

Currently translated at 93.0% (120 of 129 strings)

Translated using Weblate (Slovak)

Currently translated at 72.3% (136 of 188 strings)

Translated using Weblate (Slovak)

Currently translated at 49.0% (631 of 1287 strings)

Translated using Weblate (Slovak)

Currently translated at 60.9% (39 of 64 strings)

Translated using Weblate (Slovak)

Currently translated at 90.0% (54 of 60 strings)

Translated using Weblate (Slovak)

Currently translated at 61.4% (67 of 109 strings)

Translated using Weblate (Slovak)

Currently translated at 97.9% (234 of 239 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Hosted Weblate user 157871 <gop60@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sk/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sk/
Translation: Frigate NVR/common
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-26 17:36:43 -05:00
b259c3fb1d Translated using Weblate (Serbian)
Currently translated at 96.7% (1245 of 1287 strings)

Translated using Weblate (Serbian)

Currently translated at 17.5% (42 of 239 strings)

Co-authored-by: Dalibor Radovanović <darkobg@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sr/
Translation: Frigate NVR/common
Translation: Frigate NVR/views-settings
2026-07-26 17:36:43 -05:00
23c42c8ed8 Translated using Weblate (Finnish)
Currently translated at 100.0% (49 of 49 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Tuomo Lahti <tuomo.lahti@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/fi/
Translation: Frigate NVR/views-search
2026-07-26 17:36:43 -05:00
581689a29b Translated using Weblate (Swedish)
Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Swedish)

Currently translated at 2.2% (18 of 808 strings)

Translated using Weblate (Swedish)

Currently translated at 5.4% (26 of 474 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Swedish)

Currently translated at 99.0% (108 of 109 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Swedish)

Currently translated at 92.9% (118 of 127 strings)

Translated using Weblate (Swedish)

Currently translated at 4.3% (1 of 23 strings)

Translated using Weblate (Swedish)

Currently translated at 4.0% (1 of 25 strings)

Translated using Weblate (Swedish)

Currently translated at 2.2% (18 of 808 strings)

Translated using Weblate (Swedish)

Currently translated at 5.4% (26 of 474 strings)

Translated using Weblate (Swedish)

Currently translated at 86.5% (122 of 141 strings)

Translated using Weblate (Swedish)

Currently translated at 71.8% (133 of 185 strings)

Translated using Weblate (Swedish)

Currently translated at 50.5% (654 of 1295 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (49 of 49 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Swedish)

Currently translated at 94.0% (94 of 100 strings)

Translated using Weblate (Swedish)

Currently translated at 90.0% (54 of 60 strings)

Translated using Weblate (Swedish)

Currently translated at 15.1% (13 of 86 strings)

Translated using Weblate (Swedish)

Currently translated at 94.4% (137 of 145 strings)

Translated using Weblate (Swedish)

Currently translated at 65.6% (42 of 64 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (10 of 10 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (26 of 26 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Swedish)

Currently translated at 99.0% (108 of 109 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (50 of 50 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (10 of 10 strings)

Translated using Weblate (Swedish)

Currently translated at 92.9% (118 of 127 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Swedish)

Currently translated at 2.2% (18 of 808 strings)

Translated using Weblate (Swedish)

Currently translated at 5.4% (26 of 474 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (109 of 109 strings)

Co-authored-by: Felix Boström <felix.bostrum@gmail.com>
Co-authored-by: Fredrik B <fredrik@brannvall.nu>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-input/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-groups/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/sv/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/sv/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/Config - Groups
Translation: Frigate NVR/Config - Validation
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-input
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-recording
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-26 17:36:43 -05:00
85d11bf66f Translated using Weblate (French)
Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (French)

Currently translated at 91.7% (100 of 109 strings)

Co-authored-by: Fabien LAMAISON <kerin@kerin444.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Timobil <matmobil@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/fr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fr/
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-dialog
2026-07-26 17:36:43 -05:00
bbaed4bf85 Translated using Weblate (Spanish)
Currently translated at 100.0% (109 of 109 strings)

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/components-dialog/es/
Translation: Frigate NVR/components-dialog
2026-07-26 17:36:43 -05:00
7d89efd05d Translated using Weblate (Dutch)
Currently translated at 92.6% (101 of 109 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Mark Holtkamp <markholtkamp85@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/nl/
Translation: Frigate NVR/components-dialog
2026-07-26 17:36:43 -05:00
360ab357b3 Translated using Weblate (Indonesian)
Currently translated at 67.8% (74 of 109 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Surya Desktop <desktopsurya@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/id/
Translation: Frigate NVR/components-dialog
2026-07-26 17:36:43 -05:00
bdea5f4061 Translated using Weblate (Polish)
Currently translated at 10.8% (88 of 808 strings)

Translated using Weblate (Polish)

Currently translated at 34.5% (164 of 474 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (109 of 109 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kamil Klyta <kamilklyta341@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/pl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/pl/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
2026-07-26 17:36:43 -05:00
87dcdf35cb Translated using Weblate (Hungarian)
Currently translated at 90.2% (452 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Martin Rácz <raczmartinroland@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/hu/
Translation: Frigate NVR/audio
2026-07-26 17:36:43 -05:00
ac484187b8 Translated using Weblate (Czech)
Currently translated at 88.8% (445 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Matěj Kratochvíl <matejkratochvilbilina@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/cs/
Translation: Frigate NVR/audio
2026-07-26 17:36:43 -05:00
2cc2cdcaec Translated using Weblate (Catalan)
Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1295 of 1295 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (141 of 141 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1294 of 1294 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (474 of 474 strings)

Co-authored-by: Eduardo Pastor Fernández <123eduardoneko123@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ca/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ca/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-settings
2026-07-26 17:36:43 -05:00
6e1c141c5f Translated using Weblate (Japanese)
Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (474 of 474 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (141 of 141 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (185 of 185 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (1294 of 1294 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (50 of 50 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: alpha <alphamob0@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/ja/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ja/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/ja/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/ja/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ja/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ja/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ja/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/ja/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-26 17:36:43 -05:00
96c8a30649 Translated using Weblate (Romanian)
Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (1295 of 1295 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (474 of 474 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (141 of 141 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (1294 of 1294 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (501 of 501 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (808 of 808 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (474 of 474 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (1287 of 1287 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (109 of 109 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/audio/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/ro/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ro/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-settings
2026-07-26 17:36:43 -05:00
6d0e1a2555 Translated using Weblate (Estonian)
Currently translated at 20.2% (164 of 808 strings)

Translated using Weblate (Estonian)

Currently translated at 15.1% (72 of 474 strings)

Translated using Weblate (Estonian)

Currently translated at 28.5% (367 of 1287 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (45 of 45 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (62 of 62 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Estonian)

Currently translated at 20.2% (164 of 808 strings)

Translated using Weblate (Estonian)

Currently translated at 20.2% (164 of 808 strings)

Translated using Weblate (Estonian)

Currently translated at 14.9% (71 of 474 strings)

Translated using Weblate (Estonian)

Currently translated at 14.9% (71 of 474 strings)

Translated using Weblate (Estonian)

Currently translated at 80.8% (152 of 188 strings)

Translated using Weblate (Estonian)

Currently translated at 28.4% (366 of 1287 strings)

Translated using Weblate (Estonian)

Currently translated at 28.4% (366 of 1287 strings)

Translated using Weblate (Estonian)

Currently translated at 98.3% (59 of 60 strings)

Translated using Weblate (Estonian)

Currently translated at 61.6% (53 of 86 strings)

Translated using Weblate (Estonian)

Currently translated at 75.8% (110 of 145 strings)

Translated using Weblate (Estonian)

Currently translated at 14.7% (19 of 129 strings)

Translated using Weblate (Estonian)

Currently translated at 11.3% (92 of 808 strings)

Translated using Weblate (Estonian)

Currently translated at 8.2% (39 of 474 strings)

Translated using Weblate (Estonian)

Currently translated at 47.8% (90 of 188 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Estonian)

Currently translated at 67.6% (339 of 501 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Co-authored-by: Rasmus Kuusmann <rasmus.kuusmann@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-replay/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/et/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/et/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/audio
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-replay
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system
2026-07-26 17:36:43 -05:00
d4c2b46bb0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 33.9% (274 of 808 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 58.2% (276 of 474 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 53.4% (69 of 129 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 39.6% (510 of 1287 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (109 of 109 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Rinaldo Pitzer Júnior <rinaldo90@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/pt_BR/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-settings
2026-07-26 17:36:43 -05:00
08d4b895d8 Translated using Weblate (Latvian)
Currently translated at 27.1% (136 of 501 strings)

Co-authored-by: Alex K <kamonishe@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/lv/
Translation: Frigate NVR/audio
2026-07-26 17:36:43 -05:00
27a3d4754c Translated using Weblate (Turkish)
Currently translated at 99.0% (108 of 109 strings)

Translated using Weblate (Turkish)

Currently translated at 99.0% (108 of 109 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Turhan Munis <turhan.munis@gmail.com>
Co-authored-by: drol <muratcimentr@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/tr/
Translation: Frigate NVR/components-dialog
2026-07-26 17:36:43 -05:00
36db13b104 Translated using Weblate (Galician)
Currently translated at 0.4% (6 of 1295 strings)

Translated using Weblate (Galician)

Currently translated at 14.2% (7 of 49 strings)

Translated using Weblate (Galician)

Currently translated at 6.6% (4 of 60 strings)

Translated using Weblate (Galician)

Currently translated at 17.3% (22 of 127 strings)

Translated using Weblate (Galician)

Currently translated at 12.7% (64 of 501 strings)

Translated using Weblate (Galician)

Currently translated at 4.6% (11 of 239 strings)

Co-authored-by: David Cambra <cambrafontan.david@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/gl/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/gl/
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
2026-07-26 17:36:43 -05:00
126 changed files with 5304 additions and 1129 deletions
+83 -19
View File
@@ -1,10 +1,14 @@
"""Convert the default SSDLite MobileNet v2 model to OpenVINO IR.
Replaces the legacy openvino-dev Model Optimizer conversion. The TensorFlow
frontend converts the Object Detection API frozen graph natively; the four TF
outputs are then repacked into the single [1, 1, 100, 7] DetectionOutput-style
tensor that Frigate's OpenVINO detector expects, and the input is flipped to
BGR to match the legacy reverse_input_channels behavior.
frontend translates the Object Detection API pre and post processors literally,
producing per-class NonMaxSuppression, NonZero ops and map loops with data
dependent shapes that the GPU plugin handles very badly. Both are cut out the
way ssd_v2_support.json used to do it: the preprocessor is an identity at the
native 300x300 input, and the postprocessor becomes a single fused
DetectionOutput. The result is the [1, 1, 100, 7] tensor that Frigate's
OpenVINO detector expects, with the input flipped to BGR to match the legacy
reverse_input_channels behavior.
"""
import numpy as np
@@ -12,31 +16,91 @@ import openvino as ov
from openvino import opset8 as ops
from openvino.preprocess import PrePostProcessor
MODEL_DIR = "/models/ssdlite_mobilenet_v2_coco_2018_05_09"
OUTPUT_PATH = "/models/ssdlite_mobilenet_v2.xml"
INPUT_SHAPE = [1, 300, 300, 3]
# faster_rcnn_box_coder divides the deltas by pipeline.config's y/x/height/width
# scales of 10/10/5/5, which DetectionOutput expresses as per-prior variances.
BOX_VARIANCES = np.float32([0.1, 0.1, 0.2, 0.2])
model = ov.convert_model(
"/models/ssdlite_mobilenet_v2_coco_2018_05_09/frozen_inference_graph.pb",
input=[("image_tensor:0", [1, 300, 300, 3])],
f"{MODEL_DIR}/frozen_inference_graph.pb",
input=[("image_tensor:0", INPUT_SHAPE)],
)
# rows of (image_id, class_id, score, xmin, ymin, xmax, ymax)
boxes = model.output("detection_boxes:0").get_node().input_value(0)
classes = model.output("detection_classes:0").get_node().input_value(0)
scores = model.output("detection_scores:0").get_node().input_value(0)
nodes = {op.get_friendly_name(): op for op in model.get_ordered_ops()}
parameter = model.get_parameters()[0]
# (ymin,xmin,ymax,xmax) -> (xmin,ymin,xmax,ymax)
boxes = ops.gather(boxes, [1, 0, 3, 2], 2)
classes = ops.unsqueeze(classes, 2)
scores = ops.unsqueeze(scores, 2)
image_id = ops.multiply(scores, np.float32(0.0))
preprocessor = nodes["Preprocessor/map/TensorArrayStack/TensorArrayGatherV3"]
box_deltas = nodes["Postprocessor/Reshape_1"].output(0)
class_scores = nodes["Postprocessor/convert_scores"].output(0)
anchors_output = nodes["Postprocessor/Reshape"].output(0)
detections = ops.concat([image_id, classes, scores, boxes], 2)
detections = ops.unsqueeze(detections, 1)
# The anchors only depend on the static input shape, so fold them into a
# constant and drop the generator subgraph with the rest of the postprocessor.
probe = ov.Core().compile_model(
ov.Model([anchors_output, preprocessor.output(0)], [parameter], "probe"), "CPU"
)
probe_input = np.random.default_rng(0).integers(0, 255, INPUT_SHAPE, dtype=np.uint8)
anchors, resized = (out.copy() for out in probe([probe_input]).values())
assert np.allclose(resized, probe_input, atol=1e-3), (
"preprocessor is not an identity at 300x300, it cannot be bypassed"
)
image = ops.convert(parameter, "f32")
for consumer in list(preprocessor.output(0).get_target_inputs()):
consumer.replace_source_output(image.output(0))
# (ymin, xmin, ymax, xmax) -> (xmin, ymin, xmax, ymax)
priors = anchors[:, [1, 0, 3, 2]].astype(np.float32).reshape(-1)
variances = np.tile(BOX_VARIANCES, len(anchors))
proposals = ops.constant(np.stack([priors, variances])[np.newaxis])
# (ty, tx, th, tw) -> (dx, dy, dw, dh) for the CENTER_SIZE decode
box_logits = ops.reshape(ops.gather(box_deltas, [1, 0, 3, 2], 1), [1, -1], False)
class_preds = ops.reshape(class_scores, [1, -1], False)
detections = ops.detection_output(
box_logits,
class_preds,
proposals,
{
"background_label_id": 0,
"top_k": 100,
"keep_top_k": [100],
"nms_threshold": 0.6,
"confidence_threshold": 0.3,
"code_type": "caffe.PriorBoxParameter.CENTER_SIZE",
"share_location": True,
"variance_encoded_in_target": False,
"normalized": True,
"clip_before_nms": False,
"clip_after_nms": True,
"decrease_label_id": False,
},
)
detections.output(0).get_tensor().set_names({"detection_out"})
model = ov.Model([detections], model.get_parameters(), "ssdlite_mobilenet_v2")
model = ov.Model([detections], [parameter], "ssdlite_mobilenet_v2")
ppp = PrePostProcessor(model)
ppp.input().tensor().set_layout(ov.Layout("NHWC"))
ppp.input().preprocess().reverse_channels()
model = ppp.build()
ov.save_model(model, "/models/ssdlite_mobilenet_v2.xml", compress_to_fp16=True)
# Fail the build rather than silently ship the dynamically shaped graph again.
op_types = [op.get_type_name() for op in model.get_ordered_ops()]
assert op_types.count("DetectionOutput") == 1, "postprocessor was not fused"
for dynamic_op in ("NonMaxSuppression", "NonZero", "Loop", "TensorIterator"):
assert dynamic_op not in op_types, f"{dynamic_op} left in the graph"
output_shape = model.outputs[0].get_partial_shape()
assert output_shape.is_static and list(output_shape) == [1, 1, 100, 7], (
f"unexpected detector output shape {output_shape}"
)
ov.save_model(model, OUTPUT_PATH, compress_to_fp16=True)
+103 -3
View File
@@ -6,6 +6,7 @@ title: Configuring Generative AI
import ConfigTabs from "@site/src/components/ConfigTabs";
import TabItem from "@theme/TabItem";
import NavPath from "@site/src/components/NavPath";
import FaqItem from "@site/src/components/FaqItem";
## Configuration
@@ -13,6 +14,18 @@ A Generative AI provider can be configured in the global config, which will make
`genai` is a map of named providers. Each key under `genai` is a name you choose, and its value is that provider's settings:
<ConfigTabs>
<TabItem value="ui">
1. Navigate to <NavPath path="Settings > Enrichments > Generative AI" />.
- Click **Add** and enter a **Provider name**. Any name of letters, numbers, hyphens, and underscores is accepted, but it cannot be changed from the UI after the provider is created.
- Set **Provider** to the service you are using (e.g., `ollama`)
- Set **Base URL**, **API key**, and **Model** as required by that provider
- Set **Roles** to the roles this provider should handle.
</TabItem>
<TabItem value="yaml">
```yaml
genai:
my_provider: # any name you like
@@ -25,6 +38,9 @@ genai:
- chat
```
</TabItem>
</ConfigTabs>
The examples on this page all use `my_provider`, but the name is arbitrary and is only used to reference the provider elsewhere in the config (for example, `semantic_search.model`).
Each provider handles one or more **roles**: `chat`, `descriptions`, and `embeddings`. A provider handles all three by default, and each role may be assigned to exactly one provider. Define a single provider if you want it to do everything, or split the roles across several providers using the `roles` option.
@@ -43,15 +59,20 @@ Running Generative AI models on CPU is not recommended, as high inference times
### Recommended Local Models
You must use a vision-capable model with Frigate. The following models are recommended for local deployment:
You must use a vision-capable model with Frigate. The following models are recommended for local deployment of the `descriptions` and `chat` roles:
| Model | Notes |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `qwen3-vl` | Strong visual and situational understanding, enhanced ability to identify smaller objects and interactions with object. |
| `qwen3.5` | Strong situational understanding, but missing DeepStack from qwen3-vl leading to worse performance for identifying objects in people's hand and other small details. |
| `qwen3.6` | Strong situational understanding, similar to qwen3-vl |
| `qwen3.6` | Strong situational understanding, but missing DeepStack from qwen3-vl leading to worse performance for identifying objects in people's hand and other small details. |
| `gemma4` | Strong situational understanding, sometimes resorts to more vague terms like 'interacts' instead of assigning a specific action. |
The `embeddings` role needs a different kind of model. Text queries are matched against the stored image embeddings, so the model must be trained to place images and text into the same vector space. A chat or description model will still return vectors when asked, but those vectors are not trained for retrieval and text searches will return poor matches with no error to indicate why.
| Model | Notes |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `qwen3-vl-embedding` | Multimodal embeddings for [Semantic Search](/configuration/semantic_search#genai-provider). Must be served by llama.cpp started with `--embeddings` and `--mmproj`. |
:::info
Each model is available in multiple parameter sizes (3b, 4b, 8b, etc.). Larger sizes are more capable of complex tasks and understanding of situations, but requires more memory and computational resources. It is recommended to try multiple models and experiment to see which performs best.
@@ -416,3 +437,82 @@ genai:
</TabItem>
</ConfigTabs>
## FAQ
<FaqItem id="how-do-i-debug-genai-issues" question="How do I debug GenAI issues?">
Frigate's Generative AI features are configured and enabled separately. [Review descriptions and summaries](/configuration/genai/genai_review) live under `review.genai`, and [object descriptions](/configuration/genai/genai_objects) live under `objects.genai`. Configuring a provider on this page does not enable either feature, and enabling one does not enable the other. Decide which of the two is not working, then work through the steps below.
1. Confirm a provider is available and holds the `descriptions` role.
- Review descriptions, review summaries, and object descriptions all use the provider that has the `descriptions` role assigned in <NavPath path="Settings > Enrichments > Generative AI > Roles" /> (`genai.<provider>.roles`).
- A provider is contacted the first time one of its roles is actually used. A provider holding the `embeddings` role for semantic search is initialized during startup, while a `descriptions` provider is not initialized until the first description is requested, which may be well after boot.
- In <NavPath path="Settings > Enrichments > Generative AI" />, use **Refresh models** next to the model field. It queries the provider for its model list and is a quick way to verify that the base URL, API key, and network path between Frigate and your provider are correct.
2. Confirm the feature you expect is actually enabled.
- Object descriptions are disabled by default. Turn on <NavPath path="Settings > Global configuration > Objects > GenAI object config > Enable GenAI" /> (`objects.genai.enabled`), either globally or per camera. This is the most common reason custom prompts appear to be ignored while review summaries are still being generated.
- Review descriptions are disabled by default. Turn on <NavPath path="Settings > Global configuration > Review > GenAI config > Enable GenAI descriptions" /> (`review.genai.enabled`). Once enabled, alerts are described by default but detections are not, so a detection-only review item will never get a summary unless **Enable GenAI for detections** (`review.genai.detections`) is also on.
3. If object descriptions are never requested, check the filters that skip generation.
- <NavPath path="Settings > Global configuration > Objects > GenAI object config > GenAI objects" /> (`objects.genai.objects`) limits generation to specific labels, and **Required zones** (`objects.genai.required_zones`) requires the object to have entered one of those zones. If either is set and does not match, Frigate skips the request silently.
- Thumbnails are only collected while an object is moving. Objects that go stationary early contribute fewer frames.
- **Use snapshots** (`objects.genai.use_snapshot`) requires snapshots to be enabled for the camera. If the snapshot cannot be read, Frigate logs `Cannot load snapshot for <id>, file not found` and no description is generated.
- **Send on end** (`objects.genai.send_triggers.tracked_object_end`) is on by default. If you have turned it off in favor of **Early GenAI trigger** (`objects.genai.send_triggers.after_significant_updates`), descriptions are only requested once that number of updates is reached.
4. Enable debug logs to see exactly what Frigate is doing. Restart Frigate after this change. The next step also requires a restart, so turn both on at the same time to avoid restarting twice.
```yaml
logger:
default: info
logs:
# highlight-start
frigate.genai: debug
frigate.data_processing.post.object_descriptions: debug
frigate.data_processing.post.review_descriptions: debug
# highlight-end
```
5. Save the exact images and prompts that were sent to your provider.
- Turn on **Save thumbnails** for the feature you are debugging (`review.genai.debug_save_thumbnails` or `objects.genai.debug_save_thumbnails`). Both features write to `/media/frigate/clips/genai-requests/`, and these files are admin-only.
- Review descriptions write `genai-requests/<review_id>/` containing the numbered frames that were sent, plus `prompt.txt` and `response.txt` with the exact prompt and the raw, unparsed model response.
- Review summary reports write `genai-requests/<start_ts>-<end_ts>/prompt.txt` and `response.txt`. No images are involved, since a report summarizes existing review descriptions.
- Object descriptions write `genai-requests/<event_id>/` containing the numbered thumbnails. The prompt for object descriptions is not written to a file, it is only visible in the debug logs from step 4.
- Look at the saved images before blaming the model. If the object is small, blurry, or out of frame, no prompt will fix the result. For object descriptions, consider turning on **Use snapshots** (`objects.genai.use_snapshot`) to send a higher quality image. For review items, consider setting **Review image source** (`review.genai.image_source`) to `recordings` for 480p frames instead of the lower resolution preview frames.
<ConfigTabs>
<TabItem value="ui">
For review descriptions, navigate to <NavPath path="Settings > Global configuration > Review" /> and set **GenAI config > Save thumbnails** to on.
For object descriptions, navigate to <NavPath path="Settings > Global configuration > Objects" />, expand **GenAI object config**, and set **Save thumbnails** to on.
</TabItem>
<TabItem value="yaml">
```yaml
review:
genai:
enabled: true
# highlight-next-line
debug_save_thumbnails: true
objects:
genai:
enabled: true
# highlight-next-line
debug_save_thumbnails: true
```
</TabItem>
</ConfigTabs>
6. Verify the prompt is what you think it is.
- Object description prompts are the ones you control directly. A camera-level <NavPath path="Settings > Camera configuration > Objects > GenAI object config > Caption prompt" /> (`objects.genai.prompt`) overrides the global one, and an entry in **Object prompts** (`objects.genai.object_prompts`) for a label overrides both for that label. Only `{label}`, `{sub_label}`, and `{camera}` are substituted.
- Review description prompts are built by Frigate and request a structured JSON response, so they are not fully replaceable. The parts you control are <NavPath path="Settings > Global configuration > Review > GenAI config > Activity context prompt" /> (`review.genai.activity_context_prompt`) and **Additional concerns** (`review.genai.additional_concerns`). Keep the activity context prompt general, since overly specific rules will sway the model's threat level scoring.
7. If descriptions are generated but the results are poor or inconsistent, look at the model and the context window.
- Empty fields, missing `shortSummary` values, or `Failed to parse review description` errors usually mean the model is not following the requested JSON schema. Smaller models struggle with structured output. Try a larger parameter size or one of the [recommended models](#recommended-local-models).
- Frigate calculates how many frames to send from the context size the provider reports. If your server reports a different value than it is actually running with, frames will be truncated or the request will fail. Pin the value by adding `context_size` under <NavPath path="Settings > Enrichments > Generative AI > Provider options" /> (`genai.<provider>.provider_options`), and for Ollama also confirm `options.num_ctx` there matches the context you have configured.
- Check **Review Description Speed** and **Object Description Speed** in <NavPath path="System metrics > Enrichments" />. If inference takes tens of seconds, requests will queue behind each other and descriptions will appear to stop. For Ollama, review `OLLAMA_NUM_PARALLEL`, `OLLAMA_MAX_QUEUE`, and `OLLAMA_MAX_LOADED_MODELS` so that concurrent requests from Frigate are handled the way you expect.
</FaqItem>
+4
View File
@@ -113,3 +113,7 @@ Many providers also have a public facing chat interface for their models. Downlo
- OpenAI - [ChatGPT](https://chatgpt.com)
- Gemini - [Google AI Studio](https://aistudio.google.com)
- Ollama - [Open WebUI](https://docs.openwebui.com/)
## Troubleshooting
If descriptions are not being generated, or the generated descriptions are not what you expect, see [How do I debug GenAI issues?](/configuration/genai/genai_config#how-do-i-debug-genai-issues).
@@ -201,3 +201,7 @@ Along with individual review item summaries, Generative AI can also produce a si
Review reports can be requested via the [API](/integrations/api/generate-review-summary-review-summarize-start-start-ts-end-end-ts-post) by sending a POST request to `/api/review/summarize/start/{start_ts}/end/{end_ts}` with Unix timestamps.
For Home Assistant users, there is a built-in service (`frigate.review_summarize`) that makes it easy to request review reports as part of automations or scripts. This allows you to automatically generate daily summaries, vacation reports, or custom time period reports based on your specific needs.
## Troubleshooting
If summaries are not being generated, or the generated summaries are not what you expect, see [How do I debug GenAI issues?](/configuration/genai/genai_config#how-do-i-debug-genai-issues).
+7 -3
View File
@@ -34,11 +34,15 @@ The detect FFmpeg process exited on its own. This message is only the notificati
</FaqItem>
<FaqItem id="non-monotonically-increasing-dts" question="Application provided invalid, non monotonically increasing dts to muxer">
<FaqItem id="non-monotonically-increasing-dts" question="Non-monotonic DTS / non monotonically increasing dts to muxer / Queue input is backward in time">
An FFmpeg message meaning the camera sent packets with out-of-order timestamps. Because recordings are copied without re-encoding, FFmpeg cannot fix them, and the segment muxer often splits early, producing one-second segments and a cache backlog. The usual cause is a camera "Smart Codec" / H.264+ / H.265+ mode or a camera clock that jumps.
These are FFmpeg messages indicating the camera sent packets with out-of-order timestamps, either on the video or the audio stream. Timestamp jitter like this is common with WiFi cameras and restreamed or proxied sources; other causes are a camera "Smart Codec" / H.264+ / H.265+ mode or a camera clock that jumps. A sustained flood of these messages usually precedes the stream stalling and the watchdog restarting FFmpeg.
See [Recordings: segments are only 1 second long](/troubleshooting/recordings#segments-are-only-1-second-long).
In most cases, the fix is to improve the network, reduce system resource usage, or switch to non-WiFi cameras. In general, WiFi cameras are [not recommended](https://ipcamtalk.com/threads/multiple-cameras-high-bandwidth.77100/#post-861110).
On the video stream, this can affect recordings: because they are copied without re-encoding, FFmpeg cannot fix the timestamps, and the segment muxer often splits early, producing one-second segments and a cache backlog. See [Recordings: segments are only 1 second long](/troubleshooting/recordings#segments-are-only-1-second-long).
On the audio stream, the messages can come from the output's audio encoding. If the audio stream is the problem, it may help to have go2rtc transcode it by adding `#audio=aac` to the camera's go2rtc stream to produce clean timestamps for everything consuming the restream.
</FaqItem>
+15 -1
View File
@@ -31,7 +31,10 @@ from frigate.api.auth import (
get_allowed_cameras_for_filter,
require_role,
)
from frigate.api.config_util import swap_runtime_config
from frigate.api.config_util import (
publish_camera_section_updates,
swap_runtime_config,
)
from frigate.api.defs.query.app_query_parameters import AppTimelineHourlyQueryParameters
from frigate.api.defs.request.app_body import (
AppConfigSetBody,
@@ -963,6 +966,17 @@ def config_set(request: Request, body: AppConfigSetBody):
body.update_topic, settings
)
# a config/cameras/* topic publishes camera copies, a
# global topic the global object. FrigateConfig.parse
# folds some global sections down into every camera,
# and workers read both objects, so any such section
# needs its camera copies sent alongside the global
# publish above.
if body.update_topic == "config/birdseye":
publish_camera_section_updates(
request.app, config, CameraConfigUpdateEnum.birdseye
)
return JSONResponse(
content=(
{
+28
View File
@@ -3,6 +3,30 @@
from fastapi import FastAPI
from frigate.config import FrigateConfig
from frigate.config.camera.updater import (
CameraConfigUpdateEnum,
CameraConfigUpdateTopic,
)
def publish_camera_section_updates(
app: FastAPI, config: FrigateConfig, update_type: CameraConfigUpdateEnum
) -> None:
"""Broadcast every camera's re-resolved value for a global section.
Global sections are folded into each camera at parse time and the camera
copies are what workers read, so send them rather than leave a worker to
guess which cameras were inheriting.
"""
for camera_name, camera_config in config.cameras.items():
settings = getattr(camera_config, update_type.name, None)
if settings is None:
continue
app.config_publisher.publish_update(
CameraConfigUpdateTopic(update_type, camera_name), settings
)
def swap_runtime_config(app: FastAPI, config: FrigateConfig) -> None:
@@ -16,6 +40,10 @@ def swap_runtime_config(app: FastAPI, config: FrigateConfig) -> None:
camera the user turned off would silently come back on.
"""
app.frigate_config = config
if app.config_holder is not None:
app.config_holder.set(config)
app.genai_manager.update_config(config)
if app.profile_manager is not None:
+3
View File
@@ -35,6 +35,7 @@ from frigate.comms.event_metadata_updater import (
)
from frigate.config import FrigateConfig
from frigate.config.camera.updater import CameraConfigUpdatePublisher
from frigate.config.holder import ConfigHolder
from frigate.config.profile_manager import ProfileManager
from frigate.debug_replay import DebugReplayManager, debug_replay_auto_stop_watchdog
from frigate.embeddings import EmbeddingsContext
@@ -74,6 +75,7 @@ def create_fastapi_app(
dispatcher: Dispatcher | None = None,
profile_manager: ProfileManager | None = None,
enforce_default_admin: bool = True,
config_holder: ConfigHolder | None = None,
):
logger.info("Starting FastAPI app")
app = FastAPI(
@@ -162,6 +164,7 @@ def create_fastapi_app(
app.replay_manager = replay_manager
app.dispatcher = dispatcher
app.profile_manager = profile_manager
app.config_holder = config_holder
if frigate_config.auth.enabled:
secret = get_jwt_secret()
+14 -1
View File
@@ -30,6 +30,7 @@ from frigate.comms.ws import WebSocketClient
from frigate.comms.zmq_proxy import ZmqProxy
from frigate.config.camera.updater import CameraConfigUpdatePublisher
from frigate.config.config import FrigateConfig
from frigate.config.holder import ConfigHolder
from frigate.config.profile_manager import ProfileManager
from frigate.const import (
CACHE_DIR,
@@ -122,7 +123,18 @@ class FrigateApp:
self.processes: dict[str, int] = {}
self.embeddings: EmbeddingsContext | None = None
self.profile_manager: ProfileManager | None = None
self.config = config
self.config_holder = ConfigHolder(config)
@property
def config(self) -> FrigateConfig:
"""The current config, not the one Frigate booted with.
Read through the holder so the deferred watchdog factories below build
a replacement process from the config as it is now. There is no setter
on purpose: a plain attribute would let a caller pin this back to a
single object and reintroduce the staleness.
"""
return self.config_holder.config
def ensure_dirs(self) -> None:
dirs = [
@@ -645,6 +657,7 @@ class FrigateApp:
self.replay_manager,
self.dispatcher,
self.profile_manager,
config_holder=self.config_holder,
),
host="127.0.0.1",
port=5001,
+34
View File
@@ -0,0 +1,34 @@
"""Shared handle on the config object that is current for this instance."""
from .config import FrigateConfig
__all__ = ["ConfigHolder"]
class ConfigHolder:
"""Indirection for the most recently parsed config.
/api/config/set re-parses yaml into a brand new FrigateConfig instead of
mutating the old one, so any reference captured during startup goes stale
the first time a user saves. Anything that has to build something after
startup, most importantly the watchdog factories that rebuild a crashed
process, must read through a holder rather than close over a config
object, or the rebuilt process comes back with the config as it was at
boot and silently discards every change made since.
There is deliberately no setter on the read side: the swap runs in exactly
one place (frigate.api.config_util.swap_runtime_config) and everyone else
only reads.
"""
def __init__(self, config: FrigateConfig) -> None:
self._config = config
@property
def config(self) -> FrigateConfig:
"""The config as of the most recent successful save."""
return self._config
def set(self, config: FrigateConfig) -> None:
"""Install a freshly parsed config as the current one."""
self._config = config
+3 -3
View File
@@ -226,12 +226,12 @@ class OvDetector(DetectionApi):
conf_mask = (image_pred[:, 4] * class_conf.squeeze() >= 0.3).squeeze()
# Detections ordered as (x1, y1, x2, y2, obj_conf, class_conf, class_pred)
detections = np.concatenate(
predictions = np.concatenate(
(image_pred[:, :5], class_conf, class_pred), axis=1
)
detections = detections[conf_mask]
predictions = predictions[conf_mask]
ordered = detections[detections[:, 5].argsort()[::-1]][:20]
ordered = predictions[predictions[:, 5].argsort()[::-1]][:20]
for i, object_detected in enumerate(ordered):
detections[i] = self.process_yolo(
+10
View File
@@ -23,6 +23,7 @@ from frigate.genai.prompts import (
build_review_summary_prompt,
)
from frigate.models import Event
from frigate.util.builtin import has_non_finite_number
logger = logging.getLogger(__name__)
@@ -164,6 +165,15 @@ class GenAIClient:
except json.JSONDecodeError as je:
logger.error("Failed to parse review description JSON: %s", je)
return None
# model_construct skips validation, so non-finite numbers that
# the validated path would have rejected have to be caught here
if has_non_finite_number(raw):
logger.error(
"Discarding review description containing non-finite numbers."
)
return None
# observations and confidence are required on the model; fill an empty default
# if the response omitted it so attribute access stays safe.
raw.setdefault("observations", [])
+3 -6
View File
@@ -178,13 +178,10 @@ class OutputProcess(FrigateProcess):
)
if update_topic is not None and birdseye_config is not None:
previous_global_mode = self.config.birdseye.mode
# only the global-only fields are applied here; the per-camera
# enabled and mode arrive on config/cameras/<name>/birdseye,
# already resolved against yaml by the config parse
self.config.birdseye = birdseye_config
for camera_config in self.config.cameras.values():
if camera_config.birdseye.mode == previous_global_mode:
camera_config.birdseye.mode = birdseye_config.mode
logger.debug("Applied dynamic birdseye config update")
# check if there is an updated config
@@ -13,6 +13,7 @@ from frigate.config.camera.updater import (
CameraConfigUpdatePublisher,
CameraConfigUpdateTopic,
)
from frigate.config.holder import ConfigHolder
from frigate.models import Event, Recordings, ReviewSegment
from frigate.test.http_api.base_http_test import AuthTestClient, BaseTestHttp
@@ -373,6 +374,128 @@ class TestConfigSetWildcardPropagation(BaseTestHttp):
finally:
os.unlink(config_path)
@patch("frigate.api.app.find_config_file")
def test_global_birdseye_save_fans_out_resolved_camera_configs(
self, mock_find_config
):
"""A global birdseye save must also publish the per-camera values.
Global birdseye only seeds enabled and mode; the camera copies are what
the output process actually reads. Sending just the global object makes
a worker guess which cameras were inheriting, and the only available
guess (mode still equals the previous global) wrongly claims a camera
whose explicit yaml mode happens to match.
"""
self.minimal_config["birdseye"] = {"enabled": True, "mode": "motion"}
# explicit override that matches the global value being replaced
self.minimal_config["cameras"]["front_door"]["birdseye"] = {"mode": "motion"}
config_path = self._write_config_file()
mock_find_config.return_value = config_path
try:
app, mock_publisher = self._create_app_with_publisher()
with AuthTestClient(app) as client:
resp = client.put(
"/config/set",
json={
"config_data": {"birdseye": {"mode": "continuous"}},
"update_topic": "config/birdseye",
"requires_restart": 0,
},
)
self.assertEqual(resp.status_code, 200)
# the global object still goes out on its own topic
mock_publisher.publisher.publish.assert_called_once()
topic, settings = mock_publisher.publisher.publish.call_args[0]
self.assertEqual(topic, "config/birdseye")
self.assertEqual(settings.mode.value, "continuous")
published = {
call[0][0].camera: call[0][1]
for call in mock_publisher.publish_update.call_args_list
}
self.assertEqual(set(published), {"front_door", "back_yard"})
for call in mock_publisher.publish_update.call_args_list:
self.assertEqual(
call[0][0].update_type, CameraConfigUpdateEnum.birdseye
)
# the override survives, the inheriting camera follows global
self.assertEqual(published["front_door"].mode.value, "motion")
self.assertEqual(published["back_yard"].mode.value, "continuous")
finally:
os.unlink(config_path)
@patch("frigate.api.app.find_config_file")
def test_save_updates_the_config_holder(self, mock_find_config):
"""A save must move the holder onto the freshly parsed config.
FrigateApp reads the holder when the watchdog rebuilds a crashed
process; if the save leaves it on the boot config, that process comes
back having lost every change made since Frigate started.
"""
from fastapi import Request
from frigate.api.auth import get_allowed_cameras_for_filter, get_current_user
from frigate.api.fastapi_app import create_fastapi_app
config_path = self._write_config_file()
mock_find_config.return_value = config_path
mock_publisher = Mock(spec=CameraConfigUpdatePublisher)
mock_publisher.publisher = MagicMock()
boot_config = FrigateConfig(**self.minimal_config)
holder = ConfigHolder(boot_config)
try:
app = create_fastapi_app(
boot_config,
self.db,
None,
None,
None,
None,
None,
None,
mock_publisher,
None,
enforce_default_admin=False,
config_holder=holder,
)
async def mock_get_current_user(request: Request):
return {"username": "admin", "role": "admin"}
async def mock_get_allowed_cameras_for_filter(request: Request):
return list(self.minimal_config.get("cameras", {}).keys())
app.dependency_overrides[get_current_user] = mock_get_current_user
app.dependency_overrides[get_allowed_cameras_for_filter] = (
mock_get_allowed_cameras_for_filter
)
with AuthTestClient(app) as client:
resp = client.put(
"/config/set",
json={
"config_data": {"birdseye": {"inactivity_threshold": 5}},
"update_topic": "config/birdseye",
"requires_restart": 0,
},
)
self.assertEqual(resp.status_code, 200)
self.assertIsNot(holder.config, boot_config)
self.assertIs(holder.config, app.frigate_config)
self.assertEqual(holder.config.birdseye.inactivity_threshold, 5)
finally:
os.unlink(config_path)
if __name__ == "__main__":
unittest.main()
+31
View File
@@ -4,6 +4,7 @@ import unittest
from unittest.mock import MagicMock
from frigate.api.config_util import swap_runtime_config
from frigate.config.holder import ConfigHolder
class TestSwapRuntimeConfig(unittest.TestCase):
@@ -12,6 +13,7 @@ class TestSwapRuntimeConfig(unittest.TestCase):
def _make_app(self) -> MagicMock:
app = MagicMock()
app.dispatcher.comms = [MagicMock(), MagicMock()]
app.config_holder = ConfigHolder(MagicMock(name="boot_config"))
return app
def test_rebinds_all_references(self) -> None:
@@ -37,11 +39,40 @@ class TestSwapRuntimeConfig(unittest.TestCase):
# the swap rebuilds cameras from yaml, so overrides must be re-layered
app.dispatcher.reapply_runtime_state_to_config.assert_called_once_with()
def test_updates_the_config_holder(self) -> None:
app = self._make_app()
holder = app.config_holder
config = MagicMock(name="new_config")
swap_runtime_config(app, config)
self.assertIs(holder.config, config)
def test_deferred_factory_builds_from_the_swapped_config(self) -> None:
"""A watchdog-style factory must not rebuild from the boot config.
The factories in FrigateApp are lambdas evaluated when a process is
restarted, long after a user may have saved. Reading through the
holder is what keeps a rebuilt process from reverting every change
made since Frigate started.
"""
app = self._make_app()
holder = app.config_holder
boot_config = holder.config
factory = lambda: holder.config # noqa: E731
self.assertIs(factory(), boot_config)
config = MagicMock(name="new_config")
swap_runtime_config(app, config)
self.assertIs(factory(), config)
def test_tolerates_missing_optional_collaborators(self) -> None:
app = MagicMock()
app.profile_manager = None
app.stats_emitter = None
app.dispatcher = None
app.config_holder = None
config = MagicMock(name="new_config")
# must not raise when the optional collaborators are absent
+12
View File
@@ -472,6 +472,18 @@ def sanitize_float(value):
return value
def has_non_finite_number(value: Any) -> bool:
"""Return True if any number in a parsed JSON value is NaN or infinite."""
if isinstance(value, float):
return not math.isfinite(value)
if isinstance(value, dict):
return any(has_non_finite_number(v) for v in value.values())
if isinstance(value, list):
return any(has_non_finite_number(v) for v in value)
return False
def cosine_similarity(a: np.ndarray, b: np.ndarray) -> float:
return 1 - cosine_distance(a, b)
+30 -38
View File
@@ -36,8 +36,8 @@ from __future__ import annotations
import argparse
import os
import sys
from collections.abc import Iterable
from dataclasses import dataclass
from typing import Iterable
import cv2
import numpy as np
@@ -53,21 +53,31 @@ ARCFACE_INPUT_SIZE = 112
# ---------------------------------------------------------------------------
def _bgr_to_rgb(frame: np.ndarray) -> np.ndarray:
"""Mirror BaseEmbedding._bgr_to_rgb."""
if isinstance(frame, np.ndarray) and frame.ndim == 3:
return np.ascontiguousarray(frame[:, :, ::-1])
return frame
def _process_image_frigate(image: np.ndarray) -> Image.Image:
"""Mirror BaseEmbedding._process_image for an ndarray input.
NOTE: Frigate passes the output of `cv2.imread` (BGR) directly in. PIL's
`Image.fromarray` does NOT reorder channels, so the embedder effectively
receives a BGR-ordered tensor. We replicate that faithfully here. (Tested
— swapping to RGB produces near-identical embeddings; this model is
robust to channel order.)
`Image.fromarray` does not reorder channels, so whatever order it is
handed is what reaches the model. Callers swap to RGB first, exactly as
ArcfaceEmbedding._preprocess_inputs does.
"""
return Image.fromarray(image)
def arcface_preprocess(image_bgr: np.ndarray) -> np.ndarray:
"""Mirror ArcfaceEmbedding._preprocess_inputs."""
pil = _process_image_frigate(image_bgr)
"""Mirror ArcfaceEmbedding._preprocess_inputs.
Face crops arrive BGR from cv2 and #23712 added the swap to RGB before
embedding, so this script has to do it too.
"""
pil = _process_image_frigate(_bgr_to_rgb(image_bgr))
width, height = pil.size
if width != ARCFACE_INPUT_SIZE or height != ARCFACE_INPUT_SIZE:
@@ -138,9 +148,7 @@ class LandmarkAligner:
M[0, 2] += tX - eyesCenter[0]
M[1, 2] += tY - eyesCenter[1]
aligned = cv2.warpAffine(
image, M, (out_w, out_h), flags=cv2.INTER_CUBIC
)
aligned = cv2.warpAffine(image, M, (out_w, out_h), flags=cv2.INTER_CUBIC)
info = dict(
angle=float(angle),
eye_dist_px=dist,
@@ -433,9 +441,7 @@ def vector_outlier_test(
if neg
else np.array([])
)
baseline_conf_neg = np.array(
[similarity_to_confidence(c) for c in baseline_neg]
)
baseline_conf_neg = np.array([similarity_to_confidence(c) for c in baseline_neg])
print(
f"\nBaseline (trim_mean only, {len(pos)} images):"
@@ -465,9 +471,7 @@ def vector_outlier_test(
mean, keep = iterative_mean(all_embs, T)
pos_sims = np.array([cosine(p.embedding, mean) for p in pos])
neg_sims = (
np.array([cosine(n.embedding, mean) for n in neg])
if neg
else np.array([])
np.array([cosine(n.embedding, mean) for n in neg]) if neg else np.array([])
)
neg_conf = np.array([similarity_to_confidence(c) for c in neg_sims])
margin = pos_sims.min() - (neg_sims.max() if len(neg_sims) else 0)
@@ -483,9 +487,7 @@ def vector_outlier_test(
# Show which images get dropped at the shipped threshold + neighbors
for T_show in (0.25, 0.30, 0.33):
_, keep = iterative_mean(all_embs, T_show)
print(
f"\nAt T={T_show}, the {int((~keep).sum())} dropped positives are:"
)
print(f"\nAt T={T_show}, the {int((~keep).sum())} dropped positives are:")
final_mean = stats.trim_mean(all_embs[keep], base_trim, axis=0)
m_n = final_mean / (np.linalg.norm(final_mean) + 1e-9)
for i, (p, k) in enumerate(zip(pos, keep)):
@@ -501,9 +503,7 @@ def vector_outlier_test(
)
def degenerate_embedding_test(
pos: list[FaceSample], neg: list[FaceSample]
) -> None:
def degenerate_embedding_test(pos: list[FaceSample], neg: list[FaceSample]) -> None:
"""Detect whether negatives and low-quality positives share a degenerate
'tiny/noisy face' region of the embedding space.
@@ -533,8 +533,7 @@ def degenerate_embedding_test(
f"(how tightly negatives cluster together)"
)
print(
f" pos<->pos mean cos : {np.nanmean(pp):.3f} "
f"(how tightly positives cluster)"
f" pos<->pos mean cos : {np.nanmean(pp):.3f} (how tightly positives cluster)"
)
print(
f" pos<->neg mean cos : {pn.mean():.3f} "
@@ -558,11 +557,7 @@ def degenerate_embedding_test(
neg_scores = np.array([cosine(n.embedding, clean_mean) for n in neg])
neg_confs = np.array([similarity_to_confidence(c) for c in neg_scores])
pos_scores = np.array(
[
cosine(pos[i].embedding, clean_mean)
for i in range(len(pos))
if keep[i]
]
[cosine(pos[i].embedding, clean_mean) for i in range(len(pos)) if keep[i]]
)
print(
f"\n mean_intra >= {thresh}: keeping {int(keep.sum())}/{len(pos)} positives"
@@ -585,9 +580,7 @@ def degenerate_embedding_test(
)
def contamination_analysis(
pos: list[FaceSample], neg: list[FaceSample]
) -> None:
def contamination_analysis(pos: list[FaceSample], neg: list[FaceSample]) -> None:
"""Check whether the positive collection contains a second identity.
Two signals:
@@ -617,10 +610,7 @@ def contamination_analysis(
"\nPositives closer to a negative than to their own class avg"
"\n(these are candidates for mislabeled images):"
)
print(
f"\n{'max_neg':>7} {'mean_neg':>8} {'mean_intra':>10} "
f"{'delta':>6} name"
)
print(f"\n{'max_neg':>7} {'mean_neg':>8} {'mean_intra':>10} {'delta':>6} name")
rows = list(zip(pos_names, max_to_neg, mean_to_neg, mean_intra))
rows.sort(key=lambda r: -(r[1] - r[3]))
for nm, mxn, mnn, mi in rows[:15]:
@@ -704,7 +694,9 @@ def main() -> int:
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog=__doc__,
)
ap.add_argument("--positive", required=True, help="Training folder for one identity")
ap.add_argument(
"--positive", required=True, help="Training folder for one identity"
)
ap.add_argument(
"--negative",
default=None,
+2 -1
View File
@@ -61,7 +61,8 @@
"error": {
"endTimeMustAfterStartTime": "L'hora de finalització ha de ser posterior a l'hora d'inici",
"noVaildTimeSelected": "No s'ha seleccionat un rang de temps vàlid",
"failed": "No s'ha pogut inciar l'exportació: {{error}}"
"failed": "No s'ha pogut inciar l'exportació: {{error}}",
"noValidTimeSelected": "No s'ha seleccionat cap interval de temps vàlid"
},
"view": "Vista",
"queued": "Exporta a la cua. Mostra el progrés a la pàgina d'exportacions.",
@@ -493,6 +493,9 @@
"max_concurrent": {
"label": "Màxim d'exportacions concurrents",
"description": "Nombre màxim de treballs d'exportació a processar al mateix temps."
},
"chapters": {
"label": "Metadades de capítol per incrustar en els enregistraments exportats"
}
},
"preview": {
+5 -2
View File
@@ -380,6 +380,9 @@
"max_concurrent": {
"label": "Màxim d'exportacions concurrents",
"description": "Nombre màxim de treballs d'exportació a processar al mateix temps."
},
"chapters": {
"label": "Metadades de capítol per incrustar en els enregistraments exportats"
}
},
"preview": {
@@ -1917,7 +1920,7 @@
},
"model_type": {
"label": "Tipus de Model de detecció d'objecte",
"description": "Tipus d'arquitectura del model de detector (ssd, yolox, yolonas) usat per l'optimització d'alguns detectors."
"description": "Tipus d'arquitectura del model de detector (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) utilitzat per alguns detectors per a l'optimització"
}
},
"model_path": {
@@ -1966,7 +1969,7 @@
},
"model_type": {
"label": "Tipus de model de detecció d'objectes",
"description": "Tipus d'arquitectura del model de detector (ssd, yolox, yolonas) utilitzat per alguns detectors per a l'optimització."
"description": "Tipus d'arquitectura del model de detector (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) utilitzat per alguns detectors per a l'optimització."
}
},
"genai": {
@@ -192,7 +192,20 @@
"title": "Edita el model de classificació",
"descriptionState": "Edita les classes per a aquest model de classificació d'estats. Els canvis requeriran tornar a entrenar el model.",
"descriptionObject": "Edita el tipus d'objecte i el tipus de classificació per a aquest model de classificació d'objectes.",
"stateClassesInfo": "Nota: Canviar les classes d'estat requereix tornar a entrenar el model amb les classes actualitzades."
"stateClassesInfo": "S'ha actualitzat el model. Restringeix el model perquè els canvis de classe tinguin efecte.",
"enabled": "Habilitat",
"enabledDesc": "Executa aquest model. Quan està desactivat, deixa d'executar-se i ja no classifica.",
"saveAttempts": "Desa els intents",
"saveAttemptsDesc": "Nombre d'imatges de classificació que s'intenten mantenir per a les classificacions recents UI.",
"motion": "Executa en moviment",
"motionDesc": "Executa la classificació quan es detecta el moviment dins de l'escapçat configurat.",
"interval": "Interval",
"intervalDesc": "Segons entre les classificacions periòdiques. Deixeu-ho buit per a executar-se només en moviment.",
"intervalPlaceholder": "Sense interval",
"errors": {
"saveAttemptsInvalid": "Els intents de desar han de ser un nombre sencer de 0 o més",
"intervalInvalid": "L'interval ha de ser un nombre sencer més gran que 0"
}
},
"tooltip": {
"trainingInProgress": "El model s'està entrenant actualment",
@@ -202,5 +215,6 @@
},
"none": "Cap",
"reclassifyImageAs": "Reclassifica la imatge com a:",
"reclassifyImage": "Reclassifica la imatge"
"reclassifyImage": "Reclassifica la imatge",
"disabled": "Desactivat"
}
+1 -1
View File
@@ -303,7 +303,7 @@
},
"offset": {
"label": "Òfset d'Anotació",
"desc": "Aquestes dades provenen del flux de detecció de la càmera, però se superposen a les imatges del flux de gravació. És poc probable que els dos fluxos estiguin perfectament sincronitzats. Com a resultat, el quadre delimitador i les imatges no s'alinearan perfectament. Tanmateix, es pot utilitzar el camp <code>annotation_offset</code> per ajustar-ho.",
"desc": "Aquestes dades provenen del canal de detecció de la càmera, però estan sobreposades a les imatges del canal de registre. És poc probable que els dos corrents estiguin perfectament sincronitzats. Com a resultat, la caixa contenidora i les imatges no s'alinearan perfectament. Podeu utilitzar aquest paràmetre per a compensar les anotacions cap endavant o cap enrere en el temps per a alinear-les millor amb el metratge gravat.",
"millisecondsToOffset": "Millisegons per l'òfset de detecció d'anotacions per. <em>Per defecte: 0</em>",
"tips": "Reduïu el valor si la reproducció del vídeo es troba per davant dels quadres i els punts de ruta, i augmenteu-lo si es troba per darrere. Aquest valor pot ser negatiu.",
"toast": {
+13 -5
View File
@@ -698,7 +698,7 @@
"title": "Crear un nou usuari",
"confirmPassword": "Siusplau, confirma la contrasenya",
"usernameOnlyInclude": "El nom d'usuari només pot contenir lletres, números, . o _",
"desc": "Afegeix un nou compte d'usuari i especifica un rol per accedir a àrees de la interfície de Frigate."
"desc": "Afegeix un compte d'usuari nou i especifica un rol per a l'accés a les àrees de la interfície d'usuari de Frigate."
}
},
"title": "Usuaris",
@@ -1323,7 +1323,7 @@
"details": {
"edit": "Edita els detalls de la càmera",
"title": "Edita els detalls de la càmera",
"description": "Actualitza el nom de visualització, l'URL extern i la visibilitat utilitzada per a aquesta càmera a tota la interfície d'usuari de la Fragata.",
"description": "Actualitza el nom de visualització, l'URL extern i la visibilitat utilitzada per a aquesta càmera a tota la interfície d'usuari de Frigate.",
"friendlyNameLabel": "Nom a mostrar",
"friendlyNameHelp": "Nom amistós que es mostra per a aquesta càmera a tota la interfície d'usuari de Frigate. Deixeu-ho en blanc per utilitzar l'ID de la càmera.",
"webuiUrlLabel": "URL de la interfície web de la càmera",
@@ -1484,7 +1484,7 @@
"successMulti_other": "Configuració copiada a {{count}} càmeres",
"successMultiWithRestart_one": "Configuració copiada a la càmera {{count}}. Reinicia Frigate per aplicar tots els canvis.",
"successMultiWithRestart_many": "Configuració copiada a {{count}} càmeres. Reinicia Frigate per aplicar tots els canvis.",
"successMultiWithRestart_other": "Configuració copiada a {{count}} càmeres. Reinicia la fragata per aplicar tots els canvis.",
"successMultiWithRestart_other": "Configuració copiada a {{count}} càmeres. Reinicia Frigate per aplicar tots els canvis.",
"partialFailure": "{{successCount}} seccions aplicades; «{{failedSection}}» ha fallat: {{errorMessage}}",
"partialFailureMulti": "S'ha copiat a {{successCount}} càmera(es); ha fallat {{failed}}: {{errorMessage}}",
"newCameraPartialFailure": "S'ha creat la càmera {{cameraName}} però no s'han pogut copiar alguns paràmetres: {{errorMessage}}",
@@ -1641,7 +1641,14 @@
"keyLabel": "Clau",
"valueLabel": "Valor",
"keyPlaceholder": "Nou valor",
"remove": "Elimina"
"remove": "Elimina",
"providerNameLabel": "Nom del proveïdor",
"providerNamePlaceholder": "p. ex., openai",
"variableNameLabel": "Nom de la variable",
"variableNamePlaceholder": ". ex., La_Meva_Variable",
"loggerNameLabel": "Nom del registrador",
"loggerNamePlaceholder": "p. ex., friagte.registre",
"keyPatternError": "Utilitza només lletres, números, guions i guions baixos (sense espais)"
},
"timezone": {
"defaultOption": "Utilitza la zona horària del navegador"
@@ -2096,7 +2103,8 @@
"autotrackingNoZones": "Autotraquejar requereix al menys una zona. Defineix una zona per aquesta cámera a Mascares/Zones, després usa'l com a requerit a la part inferior."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "No es recomanen arguments manuals d'acceleració de maquinari. Tret que existeixi un requisit específic, seleccioneu el predefinit que coincideixi amb el vostre maquinari."
"hwaccelManualNotRecommended": "No es recomanen arguments manuals d'acceleració de maquinari. Tret que existeixi un requisit específic, seleccioneu el predefinit que coincideixi amb el vostre maquinari.",
"inputsMissingGo2rtcStream": "Una entrada a sota apunta a un restream go2rtc que ja no existeix. Seleccioneu un restream existent o introduïu manualment l'URL de la càmera, en cas contrari aquesta càmera no es connectarà."
},
"model": {
"optimizedFor320": "Frigate està optimitzada per a un model 320x320, que és la millor opció per a la majoria de configuracions. Un model 640x640 és més lent i només ajuda en escenaris específics.",
+19 -1
View File
@@ -425,5 +425,23 @@
"chop": "Sekání",
"crack": "Prasknutí",
"chink": "Cinknutí",
"field_recording": "Nahrávka z terénu"
"field_recording": "Nahrávka z terénu",
"change_ringing": "Změnit vyzvánění",
"liquid": "Tekutina",
"splash": "Šplouchnutí",
"squish": "Zmáčknout",
"drip": "Kapat",
"pour": "Lít",
"trickle": "Stékat",
"fill": "Naplnit",
"stir": "Míchat",
"boiling": "Vařící",
"sonar": "Sonar",
"arrow": "Šíp",
"electronic_tuner": "Elektronický Ladič",
"bang": "Rána",
"slap": "Plácnout",
"smash": "Rozmlátit",
"bouncing": "Odrážející",
"scratch": "Škrábat"
}
+5 -1
View File
@@ -36,6 +36,9 @@
"ask_a": "¿Es este objeto un <code>{{label}}</code>?",
"ask_an": "¿Es este objeto un <code>{{label}}</code>?",
"ask_full": "¿Es este objeto un <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"toast": {
"error": "Error al enviarlo a Frigate+. Por favor, comprueba tu conexión a internet y prueba de nuevo."
}
}
},
@@ -68,7 +71,8 @@
"error": {
"failed": "No se pudo iniciar la exportación: {{error}}",
"noVaildTimeSelected": "No se seleccionó un rango de tiempo válido",
"endTimeMustAfterStartTime": "La hora de finalización debe ser posterior a la hora de inicio"
"endTimeMustAfterStartTime": "La hora de finalización debe ser posterior a la hora de inicio",
"noValidTimeSelected": "Rango de tiempo seleccionado no valido"
},
"success": "Exportación iniciada con éxito. Ver el archivo en la página exportaciones.",
"view": "Vista",
+65 -1
View File
@@ -273,5 +273,69 @@
"sailboat": "Purjekas",
"soundtrack_music": "Filmimuusika",
"jingle": "Kõlisemine/tilisemine",
"theme_music": "Tunnusmuusika"
"theme_music": "Tunnusmuusika",
"steel_guitar": "Steel Kitarr",
"tapping": "Koputamine",
"strum": "Klimberdus",
"drum_machine": "Trummimasin",
"drum": "Trumm",
"maraca": "Marakas",
"bowed_string_instrument": "Poogenkeelpill",
"singing_bowl": "Helikauss",
"wind_noise": "Tuulemüra",
"rustling_leaves": "Sahisevad lehed",
"waves": "Lained",
"steam": "Aur",
"ship": "Laev",
"motor_vehicle": "Mootorsõiduk",
"rowboat": "Sõudepaat",
"motorboat": "Mootorpaat",
"waterfall": "Kosk",
"ocean": "Ookean",
"rain_on_surface": "Vihm pinnal",
"stream": "Oja",
"fire": "Tuli",
"crackle": "Praksumine",
"car_alarm": "Auto alarm",
"truck": "Veoauto",
"police_car": "Politseiauto",
"ambulance": "Kiirabi",
"fire_engine": "Tuletõrjeauto",
"aircraft": "Lennuk",
"aircraft_engine": "Lennukimootor",
"jet_engine": "Reaktiivmootor",
"propeller": "Propeller",
"helicopter": "Helikopter",
"fixed-wing_aircraft": "Fikseeritud tiivaga õhusõiduk",
"train_horn": "Rongisignaal",
"railroad_car": "Kaubavagun",
"lawn_mower": "Muruniiduk",
"chainsaw": "mootorsaag",
"engine": "Mootor",
"knock": "Koputus",
"alarm": "Häire",
"siren": "Sireen",
"fire_alarm": "Tulekahjuhäire",
"telephone": "Telefon",
"telephone_bell_ringing": "Helisev telefon",
"ringtone": "Telefonihelin",
"smoke_detector": "Suitsuandur",
"foghorn": "Udupasun",
"whistle": "Vile",
"printer": "Printer",
"drill": "Puur",
"explosion": "Plahvatus",
"hammer": "Haamer",
"air_conditioning": "Õhukonditsioneer",
"gunshot": "Püssilask",
"glass": "Klaas",
"boom": "Pauk",
"fireworks": "Ilutulestik",
"static": "Staatiline",
"white_noise": "Valge müra",
"radio": "Raadio",
"television": "Televiisor",
"scream": "Karjumine",
"pour": "Valamine",
"drip": "Tilkumine"
}
+77 -5
View File
@@ -37,6 +37,9 @@
"ask_an": "Kas see objekt on <code>{{label}}</code>?",
"ask_full": "Kas see objekt on <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?",
"label": "Kinnita see silt Frigate+ teenuse jaoks"
},
"toast": {
"error": "Frigate+ teenusesse saatmine ebaõnnestus. Palun kontrolli oma võrguühendust ja proovi uuesti."
}
},
"submitToPlus": {
@@ -70,18 +73,79 @@
"success": "Eksportimise käivitamine õnnestus. Faili leiad eksportimise lehelt.",
"view": "Vaata",
"error": {
"failed": "Eksportimise käivitamine ei õnnestunud: {{error}}",
"failed": "Eksportimise järjekorda lisamine ei õnnestunud: {{error}}",
"endTimeMustAfterStartTime": "Ajavahemiku lõpp peab olema peale algust",
"noVaildTimeSelected": "Ühtegi kehtivat ajavahemikku pole valitud"
}
"noVaildTimeSelected": "Ühtegi kehtivat ajavahemikku pole valitud",
"noValidTimeSelected": "Ühtegi korrektset ajavahemikku pole valitud"
},
"queued": "Eksport on järjekorda lisatud. Vaata progressi eksportide lehelt.",
"batchSuccess_one": "Alustasin 1 ekspordiga. Avan juhtumi kohe.",
"batchSuccess_other": "Alustasin {{count}} ekspordiga. Avan juhtumi kohe.",
"batchPartial": "Alustasin {{successful}}/{{total}} ekspordiga. Ebaõnnestunud kaamerad: {{failedCameras}}",
"batchFailed": "{{total}} eksporti ebaõnnestus algatada. Ebaõnnestunud kaamerad: {{failedCameras}}",
"batchQueuedSuccess_one": "1 eksport järjekorda lisatud. Avan juhtumi kohe.",
"batchQueuedSuccess_other": "{{count}} eksporti järjekorda lisatud. Avan juhtumi kohe.",
"batchQueuedPartial": "{{successful}}/{{total}} ekspordist on järjekorda lisatud. Ebaõnnestunud kaamerad: {{failedCameras}}",
"batchQueueFailed": "{{total}} eksporti ebaõnnestus järjekorda lisada. Ebaõnnestunud kaamerad: {{failedCameras}}"
},
"fromTimeline": {
"saveExport": "Salvesta eksporditud sisu",
"previewExport": "Eksporditud sisu eelvaade"
"previewExport": "Eksporditud sisu eelvaade",
"queueingExport": "Ekspordi järjekorda lisamine...",
"useThisRange": "Kasuta seda vahemikku"
},
"case": {
"label": "Juhtum",
"placeholder": "Vali juhtum"
"placeholder": "Vali juhtum",
"newCaseOption": "Ava uus juhtum",
"newCaseNamePlaceholder": "Uue juhtumi nimi",
"newCaseDescriptionPlaceholder": "Juhtumi kirjeldus",
"nonAdminHelp": "Uus juhtum avatakse järnevatele eksportidele."
},
"queueing": "Ekspordi järjekorda lisamine...",
"tabs": {
"export": "Üksik kaamera",
"multiCamera": "Mitu kaamerat"
},
"multiCamera": {
"timeRange": "Ajavahemik",
"selectFromTimeline": "Vali ajajoonelt",
"cameraSelection": "Kaamerad",
"cameraSelectionHelp": "Selles ajavahemikus tuvastatud objektidega kaamerad on eelvalitud",
"searchOrSelectGroup": "Otsi või vali kaamera grupp...",
"selectAll": "Vali kõik kaamerad",
"clearSelection": "Tühista valik",
"selectWithActivity": "Jälgitud objektidega kaamerad",
"selectGroup": "Vali grupp",
"noMatchingCameras": "Ükski kaamera ei sobitunud otsinguga",
"selectedCount": "{{selected}} / {{total}} valitud",
"checkingActivity": "Kaamera aktiivsuse kontrollimine...",
"noCameras": "Ühtegi kaamerat pole saadaval",
"detectionCount_one": "1 jälgitav objekt",
"detectionCount_other": "{{count}} jälgitavat objekti",
"nameLabel": "Ekspordi nimi",
"namePlaceholder": "Valikuline baasnimi nendele eksportidele",
"queueingButton": "Ekspordi järjekorda lisamine...",
"exportButton_one": "Ekspordi 1 kaamera",
"exportButton_other": "Ekspordi {{count}} kaamerat"
},
"multi": {
"title_one": "Ekspordi 1 ülevaade",
"title_other": "Espordi {{count}} ülevaadet",
"description": "Ekspordi valitud ülevaated. Kõik ekspordid on grupeeritud ühte juhtumisse.",
"descriptionNoCase": "Ekspordi kõik valitud juhtumid.",
"caseNamePlaceholder": "Ülevaate eksport - {{date}}",
"exportButton_one": "Ekspordi 1 ülevaade",
"exportButton_other": "Ekspordi {{count}} ülevaadet",
"exportingButton": "Ekspordin...",
"toast": {
"started_one": "Alustasin 1 eksporti. Avan juhtumi kohe.",
"started_other": "Alustasin {{count}} ekspordiga. Avan juhtumi kohe.",
"startedNoCase_one": "Alustasin 1 ekspordiga.",
"startedNoCase_other": "Alustasin {{count}} ekspordiga.",
"partial": "Alustasin {{successful}}/{{total}} ekspordiga. Ebaõnnestusid: {{failedItems}}",
"failed": "{{total}} ekspordi algatamine ebaõnnestus. Ebaõnnestunud: {{failedItems}}"
}
}
},
"streaming": {
@@ -114,6 +178,14 @@
"success": "Selle ülevaadatava objektiga seotud videosisu on kustutatud.",
"error": "Kustutamine ei õnnestunud: {{error}}"
}
},
"shareTimestamp": {
"label": "Jaotise ajatempel",
"title": "Jaotise ajatempel",
"description": "Jaga praeguse esituskoha ajatempliga URL-i või vali kohandatud ajatempel. Arvesta, et see ei ole avalik jagamislink ja on kättesaadav ainult kasutajatele, kellel on ligipääs Frigate'ile ja sellele kaamerale.",
"custom": "Kohandatud ajatempel",
"button": "Jaga ajatempliga linki",
"shareTitle": "Frigate ülevaate ajatempel: {{camera}}"
}
},
"imagePicker": {
+177 -2
View File
@@ -12,11 +12,20 @@
"description": "Kasutusel"
},
"audio": {
"label": "Helisündmused"
"label": "Heli tuvastus",
"min_volume": {
"label": "Minimaalne helitase"
},
"filters": {
"label": "Audio filtrid"
}
},
"birdseye": {
"mode": {
"label": "Jälgimisrežiim"
},
"order": {
"label": "Positsioon"
}
},
"label": "Kaameraseadistus",
@@ -25,7 +34,8 @@
"threshold": {
"description": "Minimaalne sarnasuse punktiskoor (0-1), mis on vajalik selle päästiku käivitamiseks."
}
}
},
"label": "Semantiline otsing"
},
"lpr": {
"label": "Sõidukite numbrimärkide tuvastus",
@@ -34,6 +44,171 @@
"review": {
"genai": {
"description": "Kontrollib generatiivse tehisaru kasutamist kirjelduste ja kokkuvõtete koostamiseks ülevaatamisele kuuluvate objektide jaoks."
},
"alerts": {
"enabled": {
"label": "Luba häired"
}
}
},
"audio_transcription": {
"label": "Audio transkriptsioon",
"live_enabled": {
"label": "Reaalajas transkriptsioon"
},
"enabled": {
"label": "Luba heli üleskirjutamine tekstina"
}
},
"detect": {
"label": "Objekti tuvastus",
"enabled": {
"label": "Luba objektituvastus"
},
"height": {
"label": "Tuvastamise kõrgus"
},
"width": {
"label": "Tuvastamise laius"
},
"fps": {
"label": "Tuvastamise kaadrisagedus"
},
"stationary": {
"label": "Püsivate objektide sätted"
}
},
"face_recognition": {
"label": "Näotuvastus"
},
"ffmpeg": {
"path": {
"label": "FFmpeg asukoht"
},
"gpu": {
"label": "GPU indeks"
},
"inputs": {
"global_args": {
"label": "FFmpeg globaalsed argumendid"
}
}
},
"live": {
"label": "Reaalajas mahamängimine",
"height": {
"label": "Otseülekande kõrgus"
},
"quality": {
"label": "Otseülekande kvaliteet"
},
"streams": {
"label": "Otseülekande voo nimed"
}
},
"motion": {
"label": "Liikumistuvastus",
"frame_height": {
"label": "Kaadri kõrgus"
},
"enabled": {
"label": "Luba liikumistuvastus"
}
},
"objects": {
"label": "Objektid",
"filters": {
"min_area": {
"label": "Minimaalne objekti ala"
},
"max_area": {
"label": "Maksimaalne objekti ala"
}
},
"genai": {
"label": "GenAI objekti konfiguratsioon",
"required_zones": {
"label": "Nõutud tsoonid"
},
"debug_save_thumbnails": {
"label": "Salvesta pisipildid"
},
"enabled": {
"label": "Luba GenAI"
},
"use_snapshot": {
"label": "Kasuta hetktõmmiseid"
}
}
},
"mqtt": {
"label": "MQTT"
},
"notifications": {
"enabled": {
"label": "Luba teavitused"
},
"email": {
"label": "Teavituste email"
},
"label": "Teavitused"
},
"ui": {
"label": "Kaamera kasutajaliides"
},
"record": {
"label": "Salvestus",
"enabled": {
"label": "Luba salvestamine"
}
},
"snapshots": {
"enabled": {
"label": "Luba hetktõmmised"
}
},
"timestamp_style": {
"color": {
"red": {
"label": "Punane",
"description": "Punase komponent (0255) ajatempli värvi jaoks."
},
"green": {
"label": "Roheline",
"description": "Rohelise komponent (0255) ajatempli värvi jaoks."
},
"blue": {
"label": "Sinine",
"description": "Sinise komponent (0255) ajatempli värvi jaoks."
},
"label": "Ajatempli värv",
"description": "Ajatempli teksti RGB värviväärtused (kõik väärtused 0255)."
},
"thickness": {
"label": "Ajatempli paksus",
"description": "Ajatempli teksti joone paksus."
},
"effect": {
"label": "Ajatempli efekt",
"description": "Ajatempli teksti visuaalne efekt (puudub, ühtlane, vari)."
}
},
"onvif": {
"user": {
"label": "ONVIF kasutajanimi"
},
"password": {
"label": "ONVIF parool"
},
"port": {
"label": "ONVIF port"
},
"label": "ONVIF",
"host": {
"label": "ONVIF host"
}
},
"profiles": {
"label": "Profiilid"
}
}
+424 -2
View File
@@ -1,10 +1,31 @@
{
"audio": {
"label": "Helisündmused"
"label": "Heli tuvastus",
"min_volume": {
"label": "Minimaalne helitase"
},
"filters": {
"label": "Audio filtrid"
}
},
"birdseye": {
"mode": {
"label": "Jälgimisrežiim"
},
"order": {
"label": "Positsioon"
},
"height": {
"label": "Kõrgus"
},
"width": {
"label": "Laius"
},
"layout": {
"label": "Paigutus",
"scaling_factor": {
"label": "Skaleerimistegur"
}
}
},
"version": {
@@ -22,6 +43,15 @@
"threshold": {
"label": "Punktiskoori lävend",
"description": "Punktiskoori lävend, mida kasutatakse klassifitseerimise oleku muutmiseks."
},
"enabled": {
"label": "Luba mudel"
},
"name": {
"label": "Mudeli nimi"
},
"save_attempts": {
"label": "Salvestamiskatsed"
}
}
},
@@ -30,11 +60,25 @@
"threshold": {
"description": "Minimaalne sarnasuse punktiskoor (0-1), mis on vajalik selle päästiku käivitamiseks."
}
},
"label": "Semantiline otsing",
"model_size": {
"label": "Mudeli suurus"
},
"device": {
"label": "Seade"
}
},
"face_recognition": {
"unknown_score": {
"label": "Tundmatu punktiskoori lävend"
},
"label": "Näotuvastus",
"model_size": {
"label": "Mudeli suurus"
},
"device": {
"label": "Seade"
}
},
"lpr": {
@@ -42,15 +86,393 @@
"description": "Sõidukite numbrimärkide tuvastuse seadistus sisaldab tuvastuse lävendeid, vormindust ja teadaolevaid numbrimärke.",
"enabled": {
"description": "Lülita sõidukite numbrimärkide tuvastus kõikide kaamerate jaoks sisse; seda saad kaamerakohaselt ka sürjutada."
},
"model_size": {
"label": "Mudeli suurus"
},
"device": {
"label": "Seade"
}
},
"genai": {
"label": "Generatiivse tehisaru seadistus",
"description": "Seadistsued generatiivse tehisaru teenusepakkujate kasutamisel kirjelduste ja kokkuvõtete loomiseks ülevaatamisele kuuluvate objektide jaoks."
"description": "Seadistsued generatiivse tehisaru teenusepakkujate kasutamisel kirjelduste ja kokkuvõtete loomiseks ülevaatamisele kuuluvate objektide jaoks.",
"model": {
"label": "Mudel"
},
"roles": {
"label": "Rollid"
},
"api_key": {
"label": "API võti"
},
"base_url": {
"label": "Baas-URL"
}
},
"review": {
"genai": {
"description": "Kontrollib generatiivse tehisaru kasutamist kirjelduste ja kokkuvõtete koostamiseks ülevaatamisele kuuluvate objektide jaoks."
},
"alerts": {
"enabled": {
"label": "Luba häired",
"description": "Luba või keela kõigi kaamerate häirete genereerimine; seda saab kaamerati eraldi muuta."
}
}
},
"audio_transcription": {
"label": "Audio transkriptsioon",
"live_enabled": {
"label": "Reaalajas transkriptsioon"
},
"enabled": {
"label": "Luba heli üleskirjutamine tekstina",
"description": "Luba või keela automaatne heli üleskirjutamine tektina kõigi kaamerate jaoks; seda saad kaamerati eraldi muuta."
},
"language": {
"label": "Üleskirjutuse keel",
"description": "Üleskirjutuse/tõlkimise jaoks kasutatav keelekood (näiteks „en” inglise keele puhul). Toetatud keelekoodid leiad lehelt https://whisper-api.com/docs/languages/."
},
"device": {
"label": "Üleskirjutusseade"
},
"model_size": {
"label": "Mudeli suurus"
}
},
"detect": {
"label": "Objekti tuvastus",
"enabled": {
"label": "Luba objektituvastus"
},
"height": {
"label": "Tuvastamise kõrgus"
},
"width": {
"label": "Tuvastamise laius"
},
"fps": {
"label": "Tuvastamise kaadrisagedus"
},
"stationary": {
"label": "Püsivate objektide sätted"
}
},
"ffmpeg": {
"path": {
"label": "FFmpeg asukoht"
},
"gpu": {
"label": "GPU indeks"
},
"inputs": {
"global_args": {
"label": "FFmpeg globaalsed argumendid"
}
},
"label": "FFmpeg"
},
"live": {
"label": "Reaalajas mahamängimine",
"height": {
"label": "Otseülekande kõrgus"
},
"quality": {
"label": "Otseülekande kvaliteet"
},
"streams": {
"label": "Otseülekande voo nimed"
}
},
"motion": {
"label": "Liikumistuvastus",
"frame_height": {
"label": "Kaadri kõrgus"
},
"enabled": {
"label": "Luba liikumistuvastus"
}
},
"objects": {
"label": "Objektid",
"filters": {
"min_area": {
"label": "Minimaalne objekti ala"
},
"max_area": {
"label": "Maksimaalne objekti ala"
}
},
"genai": {
"label": "GenAI objekti konfiguratsioon",
"required_zones": {
"label": "Nõutud tsoonid"
},
"debug_save_thumbnails": {
"label": "Salvesta pisipildid"
},
"enabled": {
"label": "Luba GenAI"
},
"use_snapshot": {
"label": "Kasuta hetktõmmiseid"
}
}
},
"auth": {
"reset_admin_password": {
"label": "Lähtesta administraatori parool"
},
"cookie_name": {
"label": "JWT küpsise nimi"
},
"enabled": {
"label": "Luba autentimine"
},
"label": "Autentimine",
"session_length": {
"label": "Sessiooni pikkus"
}
},
"database": {
"label": "Andmebaas"
},
"mqtt": {
"label": "MQTT",
"enabled": {
"label": "Luba MQTT"
},
"user": {
"label": "MQTT kasutajanimi"
},
"tls_ca_certs": {
"label": "TLS CA sertifikaat"
},
"tls_client_cert": {
"label": "Kliendi sertifikaat"
},
"host": {
"label": "MQTT host",
"description": "MQTT maakleri hostinimi või IP-aadress."
},
"port": {
"label": "MQTT port"
},
"client_id": {
"label": "Kliendi ID"
},
"stats_interval": {
"label": "Statistika intervall"
},
"tls_client_key": {
"label": "Kliendi võti"
},
"qos": {
"label": "MQTT QoS"
}
},
"go2rtc": {
"label": "go2rtc"
},
"notifications": {
"enabled": {
"label": "Luba teavitused"
},
"email": {
"label": "Teavituste email"
},
"label": "Teavitused"
},
"networking": {
"ipv6": {
"label": "IPv6 sätted",
"enabled": {
"label": "Luba IPv6"
}
},
"label": "Võrguühendus",
"listen": {
"internal": {
"label": "Sisemine port"
},
"external": {
"label": "Välimine port"
}
}
},
"proxy": {
"label": "Vaheserver",
"logout_url": {
"label": "Väljalogimise url"
},
"default_role": {
"label": "Vaikimisi roll"
}
},
"telemetry": {
"stats": {
"label": "Süsteemi statistika",
"amd_gpu_stats": {
"label": "AMD GPU statistika"
},
"intel_gpu_stats": {
"label": "Intel GPU statistika"
},
"intel_gpu_device": {
"label": "Intel GPU seade"
},
"network_bandwidth": {
"label": "Võrgu ribalaius"
}
},
"label": "Telemeetria",
"network_interfaces": {
"label": "Võrguliides"
},
"version_check": {
"label": "Versiooni kontroll",
"description": "Luba väljaminev ühendus, et kontrollida uuema Frigate versooni olemasolu."
}
},
"tls": {
"label": "TLS",
"enabled": {
"label": "Luba TLS"
}
},
"ui": {
"timezone": {
"label": "ajavöönd"
},
"label": "Kasutajaliides",
"description": "Kasutajaliidese eelistused nagu ajavöönd, aja ja kuupäeva formaat ning ühikud.",
"unit_system": {
"label": "Ühikute süsteem"
}
},
"detectors": {
"label": "Detektori riistvara",
"cpu": {
"label": "CPU"
},
"deepstack": {
"label": "DeepStack"
},
"edgetpu": {
"label": "EdgeTPU"
},
"onnx": {
"label": "ONNX",
"device": {
"label": "Seadme tüüp"
}
},
"rknn": {
"label": "RKNN"
},
"openvino": {
"label": "OpenVINO"
},
"tensorrt": {
"label": "TensorRT"
},
"teflon_tfl": {
"label": "Teflon"
},
"synaptics": {
"label": "Synaptics"
},
"memryx": {
"device": {
"label": "Seadme asukoht"
},
"label": "MemryX"
},
"hailo8l": {
"label": "Hailo-8/Hailo-8L"
},
"zmq": {
"label": "ZMQ IPC"
},
"axengine": {
"label": "AXEngine NPU"
},
"degirum": {
"label": "DeGirum"
}
},
"logger": {
"label": "Logimine"
},
"model": {
"label": "Tuvastusmudel"
},
"record": {
"label": "Salvestus",
"enabled": {
"label": "Luba salvestamine",
"description": "Luba või keela salvestamine kõigi kaamerate jaoks; seda saab kaamerati eraldi muuta."
}
},
"snapshots": {
"enabled": {
"label": "Luba hetktõmmised",
"description": "Luba või keela kõigi kaamerate hetktõmmiste salvestamine; seda saab kaamerati eraldi muuta."
}
},
"timestamp_style": {
"color": {
"red": {
"label": "Punane",
"description": "Punase komponent (0255) ajatempli värvi jaoks."
},
"green": {
"label": "Roheline",
"description": "Rohelise komponent (0255) ajatempli värvi jaoks."
},
"blue": {
"label": "Sinine",
"description": "Sinise komponent (0255) ajatempli värvi jaoks."
},
"label": "Ajatempli värv",
"description": "Ajatempli teksti RGB värviväärtused (kõik väärtused 0255)."
},
"thickness": {
"label": "Ajatempli paksus",
"description": "Ajatempli teksti joone paksus."
},
"effect": {
"label": "Ajatempli efekt",
"description": "Ajatempli teksti visuaalne efekt (puudub, ühtlane, vari)."
}
},
"onvif": {
"user": {
"label": "ONVIF kasutajanimi"
},
"password": {
"label": "ONVIF parool"
},
"port": {
"label": "ONVIF port"
},
"label": "ONVIF",
"host": {
"label": "ONVIF host"
}
},
"camera_mqtt": {
"quality": {
"label": "JPEG kvaliteet",
"description": "MQTT-sse saadetud piltide JPEG-kvaliteet (0100)."
},
"enabled": {
"label": "Saada pilt"
},
"label": "MQTT"
},
"profiles": {
"label": "Profiilid"
}
}
+63 -1
View File
@@ -6,5 +6,67 @@
"error": "Midagi läks valesti. Palun proovi uuesti.",
"processing": "Töötlen…",
"toolsUsed": "Kasutatud: {{tools}}",
"similarity_score": "Sarnasus"
"similarity_score": "Sarnasus",
"showTools": "Näita tööriistu ({{count}})",
"hideTools": "Peida tööriistad",
"call": "Kutse",
"result": "Tulemus",
"arguments": "Argumendid:",
"response": "Vastus:",
"send": "Saada",
"new_chat": "Uus vestlus",
"settings": {
"title": "Vestluse sätted",
"show_stats": {
"title": "Näita statistikat",
"always": "Alati",
"desc": "Kuva vastuste genereerimise kiirus ja konteksti suurus.",
"while_generating": "Genereerimise ajal"
},
"auto_scroll": {
"title": "Automaatne kerimine",
"desc": "Jälgi uusi sõnumeid kohe, kui need saabuvad."
}
},
"stats": {
"context": "{{tokens}} tokenit",
"tokens_per_second": "{{rate}} t/s"
},
"starting_requests_prompts": {
"recap": "Mis juhtus kui ma olin ära?",
"watch_camera": "Jälgi ust ja anna mulle teada kui keegi tuleb",
"show_camera_status": "Milline on minu kaamerate praegune seis?",
"show_recent_events": "Näita mulle viimase tunni viimaseid sündmusi"
},
"starting_requests": {
"show_camera_status": "Näita kaamera olekut",
"show_recent_events": "Kuva hiljutised sündmused",
"recap": "Mis juhtus kui ma olin ära?",
"watch_camera": "Jälgi kaamerat aktiivsuse osas"
},
"suggested_requests": "Proovi küsida:",
"semantic_search_required": "Sarnaste objektide leidmiseks peab olema lubatud semantiline otsing.",
"no_similar_objects_found": "Sarnaseid objekte ei leitud.",
"quick_reply_when_else": "Millal seda veel nähti?",
"quick_reply_find_similar_text": "Leia sarnaseid vaatepilte.",
"quick_reply_tell_me_more_text": "Räägi mulle sellest lähemalt.",
"quick_reply_when_else_text": "Millal seda veel nähtud on?",
"attach_event_aria": "Lisa sündmus {{eventId}}",
"attachment_picker_paste_label": "Või kleebi sündmuse ID",
"attachment_picker_attach": "Lisa",
"attachment_picker_placeholder": "Lisa sündmus",
"quick_reply_find_similar": "Leia sarnaseid vaatlusi",
"quick_reply_tell_me_more": "Räägi mulle sellest lähemalt",
"attachment_chip_remove": "Eemalda manus",
"attachment_chip_label": "{{label}} kaameras {{camera}}",
"open_in_explore": "Ava uurimisvaates",
"anchor": "Viide",
"reasoning": {
"active": "Otsin põhjendust…",
"show": "Näita põhjendust",
"hide": "Peida põhjendus"
},
"thinking": {
"toggle": "Näita mõtlemise olekut või peida see"
}
}
@@ -43,5 +43,8 @@
},
"tooltip": {
"trainingInProgress": "Mudel on parasjagu õppimas"
},
"train": {
"titleShort": "Hiljutised"
}
}
+91 -7
View File
@@ -5,7 +5,8 @@
"noTrackedObjects": "Ühtegi jälgitavat objekti ei leidunud",
"itemMenu": {
"findSimilar": {
"aria": "Otsi sarnaseid jälgitavaid objekte"
"aria": "Otsi sarnaseid jälgitavaid objekte",
"label": "Leia sarnane"
},
"downloadSnapshot": {
"label": "Laadi hetkvõte alla",
@@ -14,6 +15,14 @@
"downloadCleanSnapshot": {
"label": "Laadi puhas hetkvõte alla",
"aria": "Laadi puhas hetkvõte alla"
},
"viewTrackingDetails": {
"label": "Vaata jälgimise üksikasju",
"aria": "Näita jälgimise üksikasju"
},
"downloadVideo": {
"label": "Laadi video alla",
"aria": "Laadi video alla"
}
},
"trackingDetails": {
@@ -21,11 +30,22 @@
"showAllZones": {
"title": "Näita kõiki tsoone",
"desc": "Kui objekt on sisenenud tsooni, siis alati näida tsooni märgistust."
},
"title": "Annotatsioonide seaded",
"offset": {
"desc": "Need andmed pärinevad teie kaamera tuvastusvoost, kuid on salvestusvoo piltide peal. On ebatõenäoline, et need kaks voogu on ideaalselt sünkroonis. Seetõttu ei joondu piirav kast ja kaader ideaalselt. Selle säte abil saad annotatsioone ajas edasi või tagasi nihutada, et need salvestatud kaadriga paremini joonduks.",
"millisecondsToOffset": "Millisekundid annotatsioonide tuvastuse nihutamiseks. <em>Vaikimisi: 0</em>",
"tips": "Vähendage väärtust, kui video taasesitus on kastidest ja teekonnapunktidest ees, ning suurendage väärtust, kui video taasesitus on neist maas. See väärtus võib olla negatiivne.",
"toast": {
"success": "Kaamera '{{camera}}' annotatsiooni nihe on konfiguratsioonifaili salvestatud."
},
"label": "Annotatsiooni nihe"
}
},
"lifecycleItemDesc": {
"attribute": {
"other": "{{label}} on tuvastatud kui {{attribute}}"
"other": "{{label}} on tuvastatud kui {{attribute}}",
"faceOrLicense_plate": "{{attribute}} tuvastatud objektil {{label}}"
},
"stationary": "{{label}} jäi paigale",
"active": "{{label}} muutus aktiivseks",
@@ -37,7 +57,8 @@
"area": "Ala",
"score": "Punktiskoor",
"computedScore": "Arvutatud punktiskoor",
"topScore": "Suuremad punktiskoorid"
"topScore": "Suuremad punktiskoorid",
"toggleAdvancedScores": "Täpsemate tulemuste sisse-/väljalülitamine"
},
"external": "{{label}} on tuvastatud",
"heard": "{{label}} on kuuldud",
@@ -50,7 +71,11 @@
"previous": "Eelmine slaid",
"next": "Järgmine slaid"
},
"count": "{{first}} / {{second}}"
"count": "{{first}} / {{second}}",
"adjustAnnotationSettings": "Korrigeeri annotatsioonide seadeid",
"scrollViewTips": "Klõpsake selle objekti elutsükli oluliste hetkede vaatamiseks.",
"autoTrackingTips": "Piirdekastide asukohad on automaatselt jälgivate kaamerate puhul ebatäpsed.",
"trackedPoint": "Jälgitav punkt"
},
"documentTitle": "Avasta - Frigate",
"generativeAI": "Generatiivne tehisaru",
@@ -64,7 +89,22 @@
},
"startingUp": "Käivitun…",
"estimatedTime": "Hinnanguliselt jäänud aega:",
"finishingShortly": "Lõpetan õige pea"
"finishingShortly": "Lõpetan õige pea",
"context": "Avastamist saab kasutada pärast seda, kui jälgitavate objektide manustamine on uuesti indekseerimise lõpetanud."
},
"title": "Avastamine pole saadaval",
"downloadingModels": {
"context": "Frigate laadib alla semantilise otsingu funktsiooni toetamiseks vajalikke manustamismudeleid. See võib võtta mitu minutit, olenevalt teie võrguühenduse kiirusest.",
"setup": {
"visionModel": "Nägemismudel",
"visionModelFeatureExtractor": "Nägemismudeli tunnuste eraldaja",
"textModel": "Tekstimudel",
"textTokenizer": "Teksti tokenisaator"
},
"tips": {
"context": "Pärast mudelite allalaadimist tuleks oma jälgitavate objektide manused uuesti indekseerida."
},
"error": "Tekkis viga. Kontrollige Frigate'i logisid."
}
},
"type": {
@@ -107,8 +147,52 @@
},
"recognizedLicensePlate": "Tuvastatud sõiduki numbrimärk",
"description": {
"aiTips": "Frigate ei küsi sinu generatiivse tehisaru teenusepakkujalt kirjeldust enne, kui jälgitava objekti elutsükkel on lõppenud."
"aiTips": "Frigate ei küsi sinu generatiivse tehisaru teenusepakkujalt kirjeldust enne, kui jälgitava objekti elutsükkel on lõppenud.",
"label": "Kirjeldus",
"placeholder": "Jälgitava objekti kirjeldus"
},
"label": "Silt",
"editSubLabel": {
"title": "Muuda alamsilti",
"desc": "Sisesta sildile '{{label}}' uus alamsilt",
"descNoLabel": "Sisesta sellele jälgitavale objektile uus alamsilt"
},
"camera": "Kaamera",
"zones": "Tsoonid",
"title": {
"label": "Pealkiri"
},
"button": {
"findSimilar": "Leia sarnane",
"regenerate": {
"title": "Taasloomine",
"label": "Jälgitava objekti kirjelduse uuesti genereerimine"
}
},
"topScore": {
"label": "Parim punktiskoor",
"info": "Kõrgeim skoor on jälgitava objekti kõrgeim mediaanskoor, seega võib see erineda otsingutulemuste pisipildil kuvatavast skoorist."
},
"objects": "Objektid",
"tips": {
"descriptionSaved": "Kirjeldus salvestati edukalt",
"saveDescriptionFailed": "Kirjelduse uuendamine ebaõnnestus: {{errorMessage}}"
},
"attributes": "Klassifikatsiooni atribuudid",
"estimatedSpeed": "Hinnanguline kiirus",
"editAttributes": {
"title": "Atribuutide muutmine",
"desc": "Valige selle sildi '{{label}}' jaoks klassifikatsiooniatribuudid"
}
},
"trackedObjectDetails": "Jälgitava objekti üksikasjad"
"trackedObjectDetails": "Jälgitava objekti üksikasjad",
"aiAnalysis": {
"title": "Tehisintellekti analüüs"
},
"concerns": {
"label": "Mured"
},
"objectLifecycle": {
"noImageFound": "Selle jälgitava objekti kohta ei leitud pilti."
}
}
+44 -2
View File
@@ -16,12 +16,15 @@
"downloadVideo": "Laadi video alla",
"editName": "Muuda nime",
"deleteExport": "Kustuta eksporditud sisu",
"assignToCase": "Lisa juhtumile"
"assignToCase": "Lisa juhtumile",
"removeFromCase": "Eemalda juhtumist"
},
"toast": {
"error": {
"renameExportFailed": "Eksporditud sisu nime muutmine ei õnnestunud: {{errorMessage}}",
"assignCaseFailed": "Juhtumiga seose uuendamine ei õnnestunud: {{errorMessage}}"
"assignCaseFailed": "Juhtumiga seose uuendamine ei õnnestunud: {{errorMessage}}",
"caseSaveFailed": "Juhtumi salvestamine ei õnnestunud: {{errorMessage}}",
"caseDeleteFailed": "Juhtumi kustutamine ei õnnestunud: {{errorMessage}}"
}
},
"headings": {
@@ -35,5 +38,44 @@
"nameLabel": "Juhtumi nimi",
"descriptionLabel": "Kirjeldus",
"description": "Vali olemasolev juhtum või lisa uus."
},
"toolbar": {
"newCase": "Uus juhtum",
"addExport": "Lisa eksportimiseks",
"editCase": "Muuda juhtumit",
"deleteCase": "Kustuta juhtum"
},
"deleteCase": {
"label": "Kustuta juhtum",
"desc": "Kas oled kindel, et soovid „{{caseName}}“ juhtumi kustutada?"
},
"caseCard": {
"emptyCase": "Eksportimise veel pole"
},
"jobCard": {
"defaultName": "Eksportimine kaamerast „{{camera}}“",
"queued": "Lisatud järjekorda",
"running": "Töös",
"preparing": "Ettevalmistamisel",
"copying": "Kopeerimisel",
"encoding": "Kodeerimisel",
"encodingRetry": "Kodeerimisel (uuesti)",
"finalizing": "Lõpetamisel"
},
"caseView": {
"noDescription": "Kirjeldust pole",
"createdAt": "Loodud {{value}}",
"exportCount_one": "1 eksportimine",
"exportCount_other": "{{count}} eksportimist",
"cameraCount_one": "1 kaamera",
"cameraCount_other": "{{count}} kaamerat",
"showMore": "Näita rohkem",
"showLess": "Näita vähem",
"emptyTitle": "See juhtum on tühi"
},
"caseEditor": {
"namePlaceholder": "Juhtumi nimi",
"editTitle": "Muuda juhtumit",
"createTitle": "Lisa juhtum"
}
}
+61 -8
View File
@@ -1,6 +1,11 @@
{
"button": {
"uploadImage": "Laadi pilt üles"
"uploadImage": "Laadi pilt üles",
"deleteFaceAttempts": "Kustuta näod",
"addFace": "Lisa nägu",
"renameFace": "Nimeta nägu ümber",
"deleteFace": "Kustuta nägu",
"reprocessFace": "Käivita näotuvastus uuesti"
},
"collections": "Kogumikud",
"description": {
@@ -11,28 +16,41 @@
},
"documentTitle": "Näoteek - Frigate",
"createFaceLibrary": {
"new": "Lisa uus nägu"
"new": "Lisa uus nägu",
"nextSteps": "Tugeva tuvastusaluse loomiseks:<li>Kasuta vahekaarti \"Hiljutised tuvastused\", et valida pilte ja treenida isikutuvastust.</li><li>Parima tulemuse saavutamiseks keskendu otsepiltidele; väldi nurga all olevaid nägusid treenimiseks.</li></ul>"
},
"deleteFaceLibrary": {
"title": "Kustuta nimi"
"title": "Kustuta nimi",
"desc": "Kas oled kindel, et soovid isiku '{{name}}' kollektsiooni kustutada? See kustutab jäädavalt kõik seotud näod."
},
"toast": {
"error": {
"addFaceLibraryFailed": "Näo sidumine nimega ei õnnestunud: {{errorMessage}}",
"updateFaceScoreFailed": "Näo punktiskoori uuendamine ei õnnestunud: {{errorMessage}}"
"updateFaceScoreFailed": "Näo punktiskoori uuendamine ei õnnestunud: {{errorMessage}}",
"uploadingImageFailed": "Pildi üleslaadimine ebaõnnestus: {{errorMessage}}",
"deleteFaceFailed": "Kustutamine ebaõnnestus: {{errorMessage}}",
"deleteNameFailed": "Nime kustutamine ebaõnnestus: {{errorMessage}}",
"renameFaceFailed": "Näo ümbernimetamine ebaõnnestus: {{errorMessage}}",
"trainFailed": "Treenimine ebaõnnestus: {{errorMessage}}",
"reclassifyFailed": "Näo ümberklassifitseerimine ebaõnnestus: {{errorMessage}}"
},
"success": {
"addFaceLibrary": "Lisamine Näoteeki õnnestus: {{name}}!",
"addFaceLibrary": "Lisamine nägude kogusse õnnestus: {{name}}!",
"deletedFace_one": "{{count}} näo kustutamine õnnestus.",
"deletedFace_other": "{{count}} näo kustutamine õnnestus.",
"deletedName_one": "{{count}} näo kustutamine õnnestus.",
"deletedName_other": "{{count}} näo kustutamine õnnestus.",
"updatedFaceScore": "Näo punktiskoori uuendamine õnnestus: {{name}} ({{score}})."
"updatedFaceScore": "Näo punktiskoori uuendamine õnnestus: {{name}} ({{score}}).",
"uploadedImage": "Pildi üleslaadimine õnnestus.",
"renamedFace": "Näo ümbernimetamine õnnestus, uus nimi on {{name}}",
"trainedFace": "Edukalt treenitud nägu.",
"reclassifiedFace": "Näo ümberklassifitseerimine õnnestus."
}
},
"deleteFaceAttempts": {
"desc_one": "Kas oled kindel, et soovid kustutada {{count}} näo? Seda tegevust ei saa tagasi pöörata.",
"desc_other": "Kas oled kindel, et soovid kustutada {{count}} nägu? Seda tegevust ei saa tagasi pöörata."
"desc_other": "Kas oled kindel, et soovid kustutada {{count}} nägu? Seda tegevust ei saa tagasi pöörata.",
"title": "Kustuta näod"
},
"details": {
"timestamp": "Ajatampel",
@@ -42,5 +60,40 @@
"uploadFaceImage": {
"title": "Laadi näopilt üles",
"desc": "Laadi üles pilt, et otsida sellelt nägusid ja lisada see {{pageToggle}}'i jaoks"
}
},
"steps": {
"faceName": "Lisa näole nimi",
"uploadFace": "Lae näopilt üles",
"nextSteps": "Järgmised sammud",
"description": {
"uploadFace": "Laadi üles pilt isikust '{{name}}', mis näitab tema nägu eestvaates. Ainult nägu ei pea pildilt välja lõikama."
}
},
"train": {
"title": "Hiljutised tuvastamised",
"titleShort": "Hiljutised",
"aria": "Vali hiljutised tuvastamised",
"empty": "Hiljutisi näotuvastuse katseid pole",
"emptyNoLibrary": {
"title": "Laadi üles nägu",
"description": "Näotuvastuse toimimiseks peate lisama vähemalt ühe näo kogusse."
}
},
"renameFace": {
"title": "Nimeta nägu ümber",
"desc": "Sisesta uus nimi isiku '{{name}}' jaoks"
},
"imageEntry": {
"validation": {
"selectImage": "Palun vali pildifail."
},
"dropActive": "Lohista pilt siia…",
"dropInstructions": "Lohistage või kleepige pilt siia või klõpsake valimiseks",
"maxSize": "Maksimum suurus: {{size}}MB"
},
"nofaces": "Nägusid pole saadaval",
"trainFaceAs": "Treeni nägu kui:",
"trainFace": "Treeni nägu",
"reclassifyFaceAs": "Liigita nägu ümber järgmiselt:",
"reclassifyFace": "Näo ümberklassifitseerimine"
}
+75 -1
View File
@@ -1,4 +1,78 @@
{
"documentTitle": "Liikumise tuvastus - Frigate",
"title": "Liikumise otsing"
"title": "Liikumise otsing",
"cancelSearch": "Tühista",
"startSearch": "Alusta otsingut",
"selectCamera": "Liikumisotsingut laaditakse",
"description": "Joonesta hulknurk, et määratleda huvipakkuv piirkond, ja määra ajavahemik, mille jooksul otsida liikumise muutusi selles piirkonnas.",
"searchStarted": "Otsing alustatud",
"searchCancelled": "Otsing tühistatud",
"searching": "Otsing on pooleli.",
"searchComplete": "Otsing lõpetatud",
"noResultsYet": "Käivita otsing valitud piirkonnas liikumise muutuste leidmiseks",
"noChangesFound": "Valitud piirkonnas ei tuvastatud pikslimuutusi",
"results": "Tulemused",
"polygonControls": {
"drawMode": "Joonista",
"moveMode": "Liiguta",
"reset": "Lähtesta hulknurk",
"undo": "Tühista viimane punkt",
"points_one": "{{count}} punkt",
"points_other": "{{count}} punkti"
},
"newSearch": "Uus otsing",
"clearResults": "Tühista tulemused",
"clearROI": "Tühista hulknurk",
"dialog": {
"cameraLabel": "Kaamera",
"title": "Liikumisotsing",
"previewAlt": "Kaamera '{{camera}}' eelvaade"
},
"timeRange": {
"title": "Otsinguvahemik",
"start": "Algusaeg",
"end": "Lõppaeg"
},
"settings": {
"title": "Otsinguseaded",
"parallelMode": "Paralleelrežiim",
"parallelModeDesc": "Skanni mitut salvestusvahemikku korraga (kiirem; kasutab rohkem dekodeerimisressursse)",
"threshold": "Tundlikkuse lävi",
"thresholdDesc": "Väiksemad väärtused tuvastavad väiksemaid muutusi (1255)",
"minArea": "Minimaalne muutusala",
"minAreaDesc": "Ühe liikuva piirkonna minimaalne suurus protsentides huvipakkuvast piirkonnast",
"maxResults": "Maksimaalselt tulemusi",
"maxResultsDesc": "Peata pärast nii paljude ajatemplite sobivust"
},
"errors": {
"noCamera": "Palun vali kaamera",
"noROI": "Palun joonistage huvipakkuv piirkond",
"noTimeRange": "Palun valige ajavahemik",
"invalidTimeRange": "Lõppaeg peab olema pärast algusaega",
"searchFailed": "Otsing ebaõnnestus: {{message}}",
"polygonTooSmall": "Hulknurgal peab olema vähemalt 3 punkti",
"unknown": "Tundmatu viga"
},
"changePercentage": "{{percentage}}% muutus",
"metrics": {
"title": "Otsingumõõdikud",
"segmentsScanned": "Skannitud segmente",
"segmentsProcessed": "Töödeldud",
"segmentsSkippedInactive": "Vahele jäetud (tegevust pole)",
"segmentsSkippedHeatmap": "Vahele jäetud (kattuvaid piirkondi pole)",
"fallbackFullRange": "Varurežiimis täisulatusega skaneerimine",
"framesDecoded": "Kaadreid dekodeeritud",
"wallTime": "Otsingu aeg",
"seconds": "{{seconds}}s",
"minutesSeconds": "{{minutes}}m {{seconds}}s",
"segmentErrors": "Segmendi vead",
"scanSummary": "{{segments}} segmenti · {{time}}"
},
"jumpToTime": "Hüppa sellele ajale",
"framesProcessed": "{{count}} kaadrit töödeldud",
"changesFound_one": "Tuvastatud {{count}} liikumine",
"changesFound_other": "Tuvastatud {{count}} liikumist",
"motionHeatmapLabel": "Liikumise soojakaart",
"showSegmentHeatmap": "Soojakaart",
"scanning": "Skannimine {{time}}"
}
+43 -2
View File
@@ -12,7 +12,48 @@
"selectFromTimeline": "Vali",
"starting": "Käivitan kordust…",
"startLabel": "Algus",
"endLabel": "Lõpp"
"endLabel": "Lõpp",
"title": "Alusta silumise taasesitust",
"description": "Looge ajutine taasesituskaamera, mis kordab ajaloolist salvestist objektide tuvastamise ja jälgimise probleemide silumiseks. Taasesituskaameral on sama tuvastusseadistus mis lähtekaameral. Valige algusaeg.",
"toast": {
"error": "Silumise taasesitus ebaõnnestus: {{error}}",
"alreadyActive": "Kordusseanss on juba aktiivne",
"stopError": "Silumise taasesituse peatamine ebaõnnestus: {{error}}",
"goToReplay": "Mine kordusesse"
}
},
"title": "Kordus veaotsinguks"
"title": "Kordus veaotsinguks",
"websocket_messages": "Sõnumid",
"description": "Mängi kaamera salvestisi veaotsinguks. Objektide loend näitab tuvastatud objektide ajalist viivitust ja vahekaart „Sõnumid” näitab Fregati sisemiste sõnumite voogu taasesituse materjalist.",
"page": {
"noSession": "Aktiivset silumis- ja taasesitusseanssi pole",
"noSessionDesc": "Alusta silumissalvestise taasesitust ajaloo vaates, klõpsates tööriistaribal nupul \"Toimingud\" ja valides silumissalvestise taasesituse.",
"goToRecordings": "Mine ajaloo vaatesse",
"preparingClip": "Klipi ettevalmistamine…",
"preparingClipDesc": "Frigate koondab valitud ajavahemiku salvestisi. Pikemate vahemike puhul võib see võtta kauem.",
"startingCamera": "Silumise taasesituse käivitamine…",
"startError": {
"title": "Silumise taasesituse käivitamine ebaõnnestus",
"back": "Tagasi ajaloo vaatesse"
},
"sourceCamera": "Lähtekaamera",
"replayCamera": "Taasesituse kaamera",
"initializingReplay": "Silumise taasesituse initsialiseerimine...",
"stoppingReplay": "Silumise taasesituse peatamine...",
"stopReplay": "Peata kordusesitus",
"confirmStop": {
"title": "Peata silumise kordusesitus?",
"description": "See peatab seansi ja kustutab kõik ajutised andmed. Kas oled kindel?",
"confirm": "Peata kordusesitus",
"cancel": "Tühista"
},
"activity": "Toimingud",
"objects": "Objekti loend",
"audioDetections": "Audio tuvastused",
"noActivity": "Ühtegi tegevust ei tuvastatud",
"activeTracking": "Aktiivne jälgimine",
"noActiveTracking": "Aktiivset jälgimist pole",
"configuration": "Seaded",
"configurationDesc": "Peenhäälesta liikumistuvastuse ja objektide jälgimise sätteid silumis- ja taasesituskaamera jaoks. Frigate'i konfiguratsiooni faili muudatusi ei salvestata."
}
}
+174 -21
View File
@@ -7,7 +7,28 @@
"connectionSettings": "Ühenduse seadistused",
"port": "Port",
"username": "Kasutajanimi",
"usernamePlaceholder": "Valikuline"
"usernamePlaceholder": "Valikuline",
"cameraName": "Kaamera nimi",
"cameraNamePlaceholder": "näiteks: eesmine_uks või Hoovi ülevaade",
"host": "Host/IP-aadress",
"cameraBrand": "Kaamera bränd",
"selectBrand": "Vali URL malli jaoks kaamera bränd",
"customUrl": "Kohandatud voo URL",
"brandInformation": "Brändi teave",
"brandUrlFormat": "Kaamerate puhul, mille RTSP URL-i vorming on järgmine: {{exampleUrl}}",
"selectTransport": "Valige transpordiprotokoll",
"description": "Sisestage oma kaamera andmed ja valige, kas soovite kaamerat tuvastada või valida tootja käsitsi.",
"onvifPort": "ONVIF port",
"probeMode": "Tuvasta kaamera",
"manualMode": "Manuaalne valik",
"errors": {
"nameRequired": "Kaamera nimi on kohustuslik",
"nameLength": "Kaamera nimi peab olema kuni 64 tähemärki pikk",
"invalidCharacters": "Kaamera nimi sisaldab sobimatuid märke",
"nameExists": "Kaamera nimi on juba olemas",
"brandOrCustomUrlRequired": "Valige kas kaamera bränd koos hosti/IP-aadressiga või valige „Muu” kohandatud URL-iga"
},
"detectionMethod": "Vootuvastus meetod"
},
"step3": {
"streamUrlPlaceholder": "rtsp://kasutajanimi:salasõna@host:port/asukoht",
@@ -17,17 +38,37 @@
"roles": "Rollid",
"roleLabels": {
"record": "Salvestamine",
"audio": "Heliriba"
"audio": "Heliriba",
"detect": "Objektituvastus"
},
"connected": "Ühendatud",
"featuresTitle": "Funktsionaalsused"
"featuresTitle": "Funktsionaalsused",
"selectStream": "Vali voog",
"selectQuality": "Valige kvaliteet",
"notConnected": "Pole ühendatud",
"testFailedTitle": "Test ebaõnnestus",
"testStream": "Testi ühendust",
"testSuccess": "Voo test edukas!",
"testFailed": "Voo test ebaõnnestus",
"selectResolution": "Vali resolutsioon",
"noStreamFound": "Voogu ei leitud",
"addAnotherStream": "Lisa järgmine voog",
"streamTitle": "Voog {{number}}",
"streamUrl": "Voo URL",
"addStream": "Lisa voog",
"description": "Seadista voogedastusrolle ja lisa oma kaamerale täiendavaid vooge.",
"streamsTitle": "Kaamera vood"
},
"steps": {
"probeOrSnapshot": "Võta proov või tee hetkvõte"
"probeOrSnapshot": "Võta proov või tee hetkvõte",
"nameAndConnection": "Nimi ja ühendus",
"streamConfiguration": "Voo seaded",
"validationAndTesting": "Valideerimine ja testimine"
},
"step2": {
"testing": {
"fetchingSnapshot": "Laadin kaamera hetkvõtet alla..."
"fetchingSnapshot": "Laadin kaamera hetkvõtet alla...",
"probingMetadata": "Tuvastan kaamera metaandmeid..."
},
"retry": "Proovi uuesti",
"manufacturer": "Tootja",
@@ -37,7 +78,30 @@
"presets": "Eelseadistused",
"useCandidate": "Kasuta",
"uriCopy": "Kopeeri",
"connected": "Ühendatud"
"connected": "Ühendatud",
"testSuccess": "Ühenduse test õnnestus!",
"testFailed": "Ühenduse test ebaõnnestus. Palun kontrollige sisestatud andmeid ja proovige uuesti.",
"testFailedTitle": "Test ebaõnnestus",
"streamDetails": "Voo üksikasjad",
"probing": "Tuvastan kaamerat...",
"ptzSupport": "PTZ tugi",
"testConnection": "Testi ühendust",
"toggleUriView": "Klõpsake täieliku URI vaate sisse/välja lülitamiseks",
"notConnected": "Pole ühendatud",
"errors": {
"hostRequired": "Hosti/IP-aadress on kohustuslik"
},
"candidateStreamTitle": "Kandidaat {{number}}",
"probeSuccessful": "Tuvastamine õnnestus",
"probeError": "Tuvastamise viga",
"probeNoSuccess": "Tuvastamine ebaõnnestus",
"deviceInfo": "Seadme info",
"autotrackingSupport": "Automaatse jälgimise tugi",
"uriCopied": "URI kopeeriti lõikelauale",
"rtspCandidates": "RTSP kandidaadid",
"probingDevice": "Tuvastan seadet...",
"description": "Tuvasta kaamera vooge või seadista käsitsi seaded vastavalt valitud tuvastusmeetodile.",
"probeFailed": "Kaamera tuvastamine ebaõnnestus: {{error}}"
},
"testResultLabels": {
"resolution": "Resolutsioon",
@@ -56,7 +120,17 @@
"roles": "Rollid",
"none": "Määramata",
"error": "Viga"
}
},
"commonErrors": {
"noUrl": "Palun sisestage kehtiv voogesituse URL",
"testFailed": "Voo test ebaõnnestus: {{error}}"
},
"save": {
"success": "Uue kaamera '{{cameraName}}' salvestamine õnnestus.",
"failure": "Viga kaamera '{{cameraName}}' salvestamisel."
},
"title": "Lisa kaamera",
"description": "Uue kaamera lisamiseks oma Frigate paigaldisesse järgige alltoodud samme."
},
"users": {
"updatePassword": "Lähtesta salasõna",
@@ -172,24 +246,32 @@
},
"documentTitle": {
"default": "Seadistused - Frigate",
"authentication": "Autentimise seadistused - Frigate",
"cameraReview": "Kaamerate kordusvaatuste seadistused - Frigate",
"general": "Profiili seadistused - Frigate",
"frigatePlus": "Frigate+ seadistused - Frigate",
"notifications": "Teavituste seadistused - Frigate",
"authentication": "Autentimise seaded - Frigate",
"cameraReview": "Kaamerate kordusvaatuste seaded - Frigate",
"general": "Profiili seaded - Frigate",
"frigatePlus": "Frigate+ seaded - Frigate",
"notifications": "Teavituste seaded - Frigate",
"cameraManagement": "Kaamerate haldus - Frigate",
"masksAndZones": "Maskide ja tsoonide haldus - Frigate",
"object": "Silumine ja veaotsing - Frigate"
"object": "Silumine ja veaotsing - Frigate",
"enrichments": "Rikastamise seaded - Frigate",
"motionTuner": "Liikumise häälestaja Frigate",
"globalConfig": "Globaalsed seaded Frigate",
"cameraConfig": "Kaamera seaded - Frigate",
"detectorsAndModel": "Detektorid ja mudel Frigate",
"maintenance": "Hooldus Frigate",
"profiles": "Profiilid - Frigate"
},
"general": {
"title": "Profiili seadistused",
"title": "Kasutajaliidese seadistused",
"cameraGroupStreaming": {
"clearAll": "Kustuta kõik voogedastuse seadistused"
},
"liveDashboard": {
"title": "Töölaud reaalajas",
"automaticLiveView": {
"label": "Automaatne otseülekande vaade"
"label": "Automaatne otseülekande vaade",
"desc": "Aktiveerib automaatselt kaamera reaalajas vaate, kui tuvastatakse tegevus. Selle valiku keelamisel uuendatakse kaamerapilti töölaual ainult üks kord minutis."
}
},
"calendar": {
@@ -335,7 +417,7 @@
},
"menu": {
"ui": "Kasutajaliides",
"cameraManagement": "Haldus",
"cameraManagement": "Kaamera haldus",
"masksAndZones": "Maskid ja tsoonid",
"triggers": "Päästikud",
"debug": "Silumine ja veaotsing",
@@ -373,7 +455,37 @@
"systemMqtt": "MQTT",
"systemGo2rtcStreams": "go2rtc voogedastus",
"integrationSemanticSearch": "Semantiline otsing",
"integrationGenerativeAi": "Generatiivne tehisaru"
"integrationGenerativeAi": "Generatiivne tehisaru",
"general": "Üldine",
"globalConfig": "Globaalsed seaded",
"system": "Süsteem",
"integrations": "Integratsioonid",
"cameras": "Kaamera seaded",
"integrationFaceRecognition": "Nöotuvastus",
"cameraDetect": "Objektituvastus",
"cameraFfmpeg": "Vood (FFmpeg)",
"cameraRecording": "Salvestus",
"cameraSnapshots": "Hetktõmmised",
"cameraMotion": "Liikumistuvastus",
"cameraObjects": "Objektid",
"cameraConfigReview": "Ülevaade",
"cameraAudioEvents": "audiotuvastus",
"cameraAudioTranscription": "Audio transkriptsioon",
"cameraNotifications": "Teated",
"cameraLivePlayback": "Otseülekanne",
"integrationAudioTranscription": "Audio transkriptsioon",
"integrationObjectClassification": "Objektide klassifitseerimine",
"cameraFaceRecognition": "Näotuvastus",
"cameraMqttConfig": "MQTT",
"cameraOnvif": "ONVIF",
"cameraUi": "Kaamera kasutajaliides",
"cameraTimestampStyle": "Ajatempli stiil",
"cameraMqtt": "Kaamera MQTT",
"maintenance": "Hooldus",
"mediaSync": "Meedia sünkroonimine",
"regionGrid": "Regioonide ruudustik",
"enrichments": "Andmete rikastamine",
"motionTuner": "Liikumistuvastuse seadistaja"
},
"dialog": {
"unsavedChanges": {
@@ -389,7 +501,11 @@
"semanticSearch": {
"reindexNow": {
"confirmButton": "Indekseeri uuesti",
"label": "Indekseeri uuesti kohe"
"label": "Indekseeri kohe uuesti",
"alreadyInProgress": "Ümberindekseerimine on juba käimas.",
"error": "Uuesti indekseerimise alustamine ebaõnnestus: {{errorMessage}}",
"success": "Ümberindekseerimine algas edukalt.",
"confirmTitle": "Kinnita uuesti indekseerimine"
},
"modelSize": {
"small": {
@@ -397,7 +513,9 @@
},
"large": {
"title": "suur"
}
},
"label": "Mudeli suurus",
"desc": "Semantilise otsingu manustamiseks kasutatava mudeli suurus."
},
"title": "Semantiline otsing"
},
@@ -408,14 +526,23 @@
},
"large": {
"title": "suur"
}
}
},
"label": "Mudeli suurus",
"desc": "Näotuvastuseks kasutatava mudeli suurus."
},
"title": "Näotuvastus"
},
"birdClassification": {
"title": "Lindude klassifikatsioon"
},
"licensePlateRecognition": {
"title": "Sõidukite numbrimärkide tuvastus"
},
"title": "Andmerikastuse seaded",
"restart_required": "Taaskäivitamine on vajalik (Andmerikastuse seadeid on muudetud)",
"toast": {
"success": "Andmerikastamise seaded on salvestatud. Muudatuste rakendamiseks taaskäivitage Frigate.",
"error": "Seadete muudatuste salvestamine ebaõnnestus: {{errorMessage}}"
}
},
"cameraReview": {
@@ -497,5 +624,31 @@
"lpr": {
"vehicleNotTracked": "Sõidukite numbrimärkide tuvastus eeldab, et auto või mootorratas on jälgitav. Lülita menüüst Objektid sell kaamera jaoks sisse valikud „auto“ või „mootorratas“."
}
},
"button": {
"overriddenGlobal": "Ülekirjutatud (Globaalne)",
"overriddenGlobalTooltip": "Käesolev kaamera kirjutab selles jaotises üle globaalsed seaded",
"overriddenGlobalHeading_one": "See kaamera sürjutab {{count}} üldise seadistuse välja:",
"overriddenGlobalHeading_other": "See kaamera sürjutab {{count}} üldise seadistuse välja:"
},
"saveAllPreview": {
"title": "Salvestatavad muudatused",
"triggerLabel": "Vaadake üle ootel olevad muudatused",
"empty": "Ootel muudatusi pole.",
"scope": {
"label": "Ulatus",
"global": "Globaalne",
"camera": "Kaamera: {{cameraName}}"
},
"profile": {
"label": "Profiil"
},
"field": {
"label": "Väli"
},
"value": {
"label": "Uus väärtus",
"reset": "Lähtesta"
}
}
}
+194 -4
View File
@@ -2,7 +2,14 @@
"documentTitle": {
"general": "Üldine statistika - Frigate",
"cameras": "Kaamerate statistika - Frigate",
"storage": "Andmeruumi statistika - Frigate"
"storage": "Andmeruumi statistika - Frigate",
"logs": {
"frigate": "Frigate logid - Frigate",
"go2rtc": "Go2RTC logid - Frigate",
"nginx": "Nginx logid - Frigate",
"websocket": "Sõnumite logid - Frigate"
},
"enrichments": "Rikastus statistika - Frigate"
},
"logs": {
"download": {
@@ -16,11 +23,29 @@
"websocket": {
"filter": {
"cameras_count_one": "{{count}} kaamera",
"cameras_count_other": "{{count}} kaamerat"
"cameras_count_other": "{{count}} kaamerat",
"camera": "Kaamera",
"all_cameras": "Kõik kaamerad",
"events": "Sündmused",
"reviews": "Ülevaated",
"system": "Süsteem",
"topics": "Teemad",
"all": "Kõik teemad",
"face_recognition": "Näotuvastus",
"classification": "Klassifikatsioon",
"camera_activity": "Kaamera aktiivsus",
"lpr": "Numbrimärgituvastus"
},
"empty": "Ühtegi sõnumit pole veel hõivatud",
"count_one": "{{count}} sõnum",
"count_other": "{{count}} sõnumit"
"count_other": "{{count}} sõnumit",
"pause": "Peata",
"resume": "Jätka",
"label": "Sõnumid",
"clear": "Tühista",
"expanded": {
"payload": "Last"
}
},
"type": {
"label": "Tüüp",
@@ -36,5 +61,170 @@
}
}
},
"title": "Süsteem"
"title": "Süsteem",
"enrichments": {
"embeddings": {
"object_description_events_per_second": "Objekti kirjeldus",
"face_recognition": "Näotuvastus",
"plate_recognition": "Numbrimärgi tuvastus",
"object_description": "Objekti kirjeldus",
"review_description_events_per_second": "Ülevaate kirjeldus",
"review_description": "Ülevaate kirjeldus",
"yolov9_plate_detection": "YOLOv9 numbrimärgi tuvastus",
"yolov9_plate_detection_speed": "YOLOv9 numbrimärgi tuvastuskiirus",
"plate_recognition_speed": "Numbrimärgituvastuse kiirus",
"face_recognition_speed": "Näotuvastuse kiirus"
},
"title": "Andmerikastused"
},
"cameras": {
"connectionQuality": {
"reconnectsLastHour": "Uuesti ühendumisi (viimase tunni jooksul)",
"stallsLastHour": "Seiskumisi (viimase tunni jooksul)",
"title": "Ühenduse kvaliteet",
"excellent": "Suurepärane",
"fair": "Rahuldav",
"poor": "Kehv",
"unusable": "Mittekasutatav",
"fps": "Kaadrisagedus",
"expectedFps": "Eeldatav kaadrisagedus (FPS)"
},
"label": {
"camera": "kaamera",
"detect": "tuvasta",
"skipped": "vahele jäetud",
"ffmpeg": "FFmpeg",
"cameraFfmpeg": "{{camName}} FFmpeg",
"cameraGpu": "{{camName}} GPU",
"cameraDetect": "{{camName}} tuvastus",
"overallFramesPerSecond": "kaadreid sekundis kokku",
"overallDetectionsPerSecond": "kogutuvastusi sekundis",
"overallSkippedDetectionsPerSecond": "vahelejäänud tuvastusi sekundis kokku",
"cameraFramesPerSecond": "{{camName}} kaadreid sekundis",
"cameraDetectionsPerSecond": "{{camName}} tuvastusi sekundis",
"cameraSkippedDetectionsPerSecond": "{{camName}} vahelejäänud tuvastusi sekundis",
"capture": "jäädvustamine"
},
"noCameras": {
"title": "Ühtegi kaamerat ei leitud"
},
"framesAndDetections": "Kaadreid / Tuvastusi",
"info": {
"keyframes": {
"recordDisabled": "Selle kaamera salvestamine on välja lülitatud.",
"segmentLength": "Salvestuse segmendi pikkus:",
"recordStream": "Salvestusvoog:",
"keyframeCount": "Vaadeldud võtmekaadrid:",
"observedDuration": "Vaadeldud kestus:"
},
"audio": "Audio:",
"error": "Viga: {{error}}",
"codec": "Koodek:",
"resolution": "Resolutsioon:",
"video": "Video:",
"aspectRatio": "kuvasuhe",
"unknown": "Tundmatu",
"fetching": "Kaameraandmete toomine",
"stream": "Voog {{idx}}",
"streamDataFromFFPROBE": "Vooandmed saadakse <code>ffprobe</code> abil.",
"fps": "Kaadrisagedus (FPS):"
},
"title": "Kaamerad",
"overview": "Ülevaade"
},
"lastRefreshed": "Viimati uuendatud: ",
"stats": {
"healthy": "Süsteem on töökorras",
"detectIsSlow": "{{detect}} on aeglane ({{speed}} ms)",
"detectIsVerySlow": "{{detect}} on väga aeglane ({{speed}} ms)",
"cameraIsOffline": "{{camera}} on ühenduseta"
},
"storage": {
"cameraStorage": {
"camera": "Kaamera",
"unused": {
"title": "Kasutamata",
"tips": "See väärtus ei pruugi Frigate'i jaoks saadaolevat vaba ruumi täpselt kajastada, kui teie draivil on lisaks Frigate'i salvestistele ka muid faile. Frigate ei jälgi salvestusruumi kasutamist väljaspool oma salvestisi."
},
"bandwidth": "Ribalaius",
"storageUsed": "Salvestusmaht",
"percentageOfTotalUsed": "protsent kogusummast",
"unusedStorageInformation": "Kasutamata salvestusmahu info",
"title": "Kaamera salvestusmaht"
},
"title": "Säilitus",
"overview": "Ülevaade",
"recordings": {
"title": "Salvestused",
"earliestRecording": "Varaseim saadaolev salvestis:"
},
"shm": {
"title": "SHM (jagatud mälu) eraldus",
"frameLifetime": {
"title": "Kaadri eluiga"
}
}
},
"metrics": "Süsteemi mõõdikud",
"general": {
"title": "Üldine",
"hardwareInfo": {
"gpuUsage": "GPU kasutus",
"gpuMemory": "GPU mälu",
"gpuInfo": {
"vainfoOutput": {
"title": "Vainfo väljund",
"processOutput": "Protsessi väljund:",
"processError": "Protsessi viga:",
"returnCode": "Tagastuskood: {{code}}"
},
"closeInfo": {
"label": "Sulge GPU info"
},
"copyInfo": {
"label": "Kopeeri GPU info"
},
"nvidiaSMIOutput": {
"title": "Nvidia SMI väljund",
"name": "Nimi: {{name}}",
"driver": "Draiver: {{driver}}",
"cudaComputerCapability": "CUDA arvutusvõimekus: {{cuda_compute}}",
"vbios": "VBios info: {{vbios}}"
},
"toast": {
"success": "GPU info kopeeriti lõikelauale"
}
},
"gpuDecoder": "GPU dekooder",
"gpuTemperature": "GPU temperatuur",
"gpuEncoder": "GPU kodeerija",
"gpuCompute": "GPU arvutus / kodeerimine",
"title": "Riistvara info",
"npuUsage": "NPU kasutus",
"npuMemory": "NPU mälu",
"npuTemperature": "NPU temperatuur",
"intelGpuWarning": {
"title": "Inteli GPU statistika hoiatus",
"message": "GPU statistika pole saadaval"
}
},
"otherProcesses": {
"series": {
"go2rtc": "go2rtc",
"recording": "salvestus",
"review_segment": "Segmendi ülevaade",
"audio_detector": "audio detektor"
},
"processCpuUsage": "Protsessi CPU kasutus",
"processMemoryUsage": "Protsessi mälukasutus"
},
"detector": {
"title": "Detektorid",
"memoryUsage": "Detektori mälukasutus",
"cpuUsage": "Detektori CPU kasutus",
"temperature": "Detektori temperatuur",
"inferenceSpeed": "Detektori järelduskiirus",
"cpuUsageInformation": "Protsessori võimsus, mida kasutatakse tuvastusmudelite sisend- ja väljundandmete ettevalmistamisel. See väärtus ei mõõda järelduste kasutamist isegi siis, kui kasutatakse graafikaprotsessorit või kiirendit."
}
}
}
+2 -1
View File
@@ -26,7 +26,8 @@
"max_speed": "Maksimi nopeus",
"recognized_license_plate": "Tunnistettu rekisterikilpi",
"has_clip": "Leike löytyy",
"has_snapshot": "Tilannekuva löytyy"
"has_snapshot": "Tilannekuva löytyy",
"attributes": "Muuttujat"
},
"searchType": {
"thumbnail": "Kuvake",
+3 -3
View File
@@ -16,7 +16,7 @@
"whoop": "Cri strident",
"sigh": "Soupir",
"singing": "Chant",
"choir": "Chorale",
"choir": "Chœur",
"yodeling": "Yodel",
"chant": "Chant",
"mantra": "Mantra",
@@ -33,7 +33,7 @@
"snoring": "Ronflement",
"gasp": "Souffle coupé",
"pant": "halètement",
"snort": "Ébrouement",
"snort": "Reniflement",
"camera": "Caméra",
"cough": "Toux",
"groan": "Gémissement",
@@ -104,7 +104,7 @@
"toothbrush": "Brosse à dents",
"sink": "Évier",
"scissors": "Ciseaux",
"humming": "Bourdonnement",
"humming": "Fredonnement",
"shuffle": "Pas traînants",
"footsteps": "Bruits de pas",
"hiccup": "Hoquet",
+9 -2
View File
@@ -67,7 +67,8 @@
"error": {
"failed": "Échec du démarrage de l'exportation : {{error}}",
"endTimeMustAfterStartTime": "L'heure de fin doit être postérieure à l'heure de début.",
"noVaildTimeSelected": "La plage horaire sélectionnée n'est pas valide."
"noVaildTimeSelected": "La plage horaire sélectionnée n'est pas valide.",
"noValidTimeSelected": "Interval de temps invalide"
},
"success": "Exportation démarrée avec succès. Consultez le fichier sur la page des exportations.",
"view": "Vue",
@@ -88,7 +89,9 @@
"export": "Exporter",
"fromTimeline": {
"saveExport": "Enregistrer l'exportation",
"previewExport": "Aperçu de l'exportation"
"previewExport": "Aperçu de l'exportation",
"queueingExport": "Traitement de l'export...",
"useThisRange": "Utiliser cet interval"
},
"case": {
"label": "Dossier",
@@ -195,6 +198,10 @@
"markAsReviewed": "Marquer comme traité",
"deleteNow": "Supprimer maintenant",
"markAsUnreviewed": "Marquer comme non traité"
},
"shareTimestamp": {
"label": "Partager cette date",
"title": "Partager cette date"
}
},
"imagePicker": {
+52 -5
View File
@@ -8,12 +8,59 @@
"sigh": "Suspiro",
"singing": "Cantando",
"motorcycle": "Motocicleta",
"bus": "Bus",
"bus": "Autobús",
"train": "Tren",
"boat": "Bote",
"boat": "Barco",
"bird": "Paxaro",
"cat": "Gato",
"bellow": "Abaixo",
"whoop": "Ei carballeira",
"whispering": "Murmurando"
"bellow": "Bramido",
"whoop": "Berro de alegría",
"whispering": "Susurro",
"laughter": "Risa",
"choir": "Coro",
"chant": "Canto",
"child_singing": "Neno Cantando",
"rapping": "Rapeando",
"horse": "Cabalo",
"pig": "Porco",
"goat": "Cabra",
"sheep": "Ovella",
"wild_animals": "Animais salvaxes",
"crow": "Corvo",
"dogs": "Cans",
"snicker": "Risa abafada",
"yodeling": "Iolando",
"humming": "Tarareo",
"groan": "Xemido",
"grunt": "Gruñido",
"synthetic_singing": "Canto Sintético",
"whistling": "Asubío",
"breathing": "Respiración",
"wheeze": "Sibilancia",
"snoring": "Ronquido",
"gasp": "Inspiración brusca",
"pant": "Respiración axitada",
"snort": "Bufido",
"cough": "Tose",
"throat_clearing": "Carraspeo",
"sneeze": "Espirro",
"sniff": "Cheirada",
"run": "Correr",
"shuffle": "Arrastre de pés",
"footsteps": "Pasos",
"hands": "Mans",
"dog": "Can",
"fart": "Peido",
"applause": "Aplauso",
"chatter": "Parloteo",
"crowd": "Multitude",
"children_playing": "Nenos Xogando",
"animal": "Animal",
"pets": "Mascotas",
"bark": "Ladrido",
"yip": "Gañido",
"howl": "Ouveo",
"clapping": "Aplausos",
"heartbeat": "Latexo do corazón",
"heart_murmur": "Sopro cardíaco"
}
+4 -1
View File
@@ -10,5 +10,8 @@
"untilRestart": "Ata o reinicio",
"ago": "Fai {{timeAgo}}"
},
"readTheDocumentation": "Ler a documentación"
"readTheDocumentation": "Ler a documentación",
"button": {
"save": "Gardar"
}
}
+9 -3
View File
@@ -3,9 +3,9 @@
"bicycle": "Bicicleta",
"airplane": "Avión",
"motorcycle": "Motocicleta",
"bus": "Bus",
"bus": "Autobús",
"train": "Tren",
"boat": "Bote",
"boat": "Barco",
"traffic_light": "Luces de tráfico",
"fire_hydrant": "Boca de incendio",
"street_sign": "Sinal de tráfico",
@@ -14,5 +14,11 @@
"bench": "Banco",
"bird": "Paxaro",
"cat": "Gato",
"car": "Coche"
"car": "Coche",
"horse": "Cabalo",
"goat": "Cabra",
"sheep": "Ovella",
"dog": "Can",
"animal": "Animal",
"bark": "Ladrido"
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"description": {
"addFace": "Navegar para engadir unha nova colección á Libraría de Caras.",
"addFace": "Engade unha nova colección á Biblioteca de rostros subindo a túa primeira imaxe.",
"placeholder": "Introduce un nome para esta colección",
"invalidName": "Nome non válido. Os nomes só poden incluír letras, números, espazos, apóstrofes, guións baixos e guións."
},
+1 -1
View File
@@ -2,7 +2,7 @@
"search": "Pesquisar",
"savedSearches": "Pesquisas gardadas",
"button": {
"save": "Gardar pesquisa",
"save": "Gardar procura",
"filterActive": "Filtros activos",
"clear": "Borrar pesquisa"
},
+1 -1
View File
@@ -3,7 +3,7 @@
"default": "Preferencias - Frigate",
"authentication": "Configuracións de Autenticación - Frigate",
"camera": "Configuracións da Cámara - Frigate",
"general": "Configuracións xerais - Frigate",
"general": "Configuracións UI - Frigate",
"notifications": "Configuración de Notificacións - Frigate",
"enrichments": "Configuración complementarias - Frigate",
"masksAndZones": "Editor de máscaras e zonas - Frigate"
+18 -1
View File
@@ -433,5 +433,22 @@
"trickle": "Csörgedezés",
"gush": "Folyás",
"stir": "Kavarás",
"thump": "Puffanás"
"thump": "Puffanás",
"arrow": "Nyíl",
"bouncing": "Pattog",
"vibration": "Vibrálás",
"inside": "Belül",
"outside": "Kívül",
"mains_hum": "Hálózati zaj",
"distortion": "Torzulás",
"throbbing": "Lüktetés",
"flap": "Csapkodás",
"scratch": "Kapar",
"scrape": "Karcolás",
"rub": "Dörzsölés",
"roll": "Gördül",
"crushing": "Összenyom",
"crumpling": "Gyűrődés",
"beep": "Sípolás",
"clang": "Csengés"
}
+8 -2
View File
@@ -24,6 +24,9 @@
},
"state": {
"submitted": "Terkirim"
},
"toast": {
"error": "Gagal submit ke Frigate+. Harap periksa koneksi jaringan Anda dan coba lagi."
}
}
},
@@ -57,7 +60,8 @@
"view": "Melihat",
"batchSuccess_other": "{{count}} Ekspor dimulai. Membuka kasusnya sekarang.",
"batchPartial": "Ekspor berhasil dimulai sebanyak {{successful}} dari total {{total}} ekspor. Kamera yang gagal: {{failedCameras}}",
"batchFailed": "Gagal memulai ekspor sebanyak {{total}}. Kamera yang gagal: {{failedCameras}}"
"batchFailed": "Gagal memulai ekspor sebanyak {{total}}. Kamera yang gagal: {{failedCameras}}",
"batchQueuedPartial": "Antrian ekspor berhasil sebanyak {{successful}} dari total {{total}} ekspor. Kamera yang gagal: {{failedCameras}}"
},
"case": {
"newCaseOption": "Membuat Kasus Baru",
@@ -87,7 +91,9 @@
"selectGroup": "Pilih grup",
"noMatchingCameras": "Tidak ada kamera yang sesuai dengan pencarian Anda",
"selectedCount": "{{terpilih}} / {{total}} terpilih",
"namePlaceholder": "Nama dasar opsional untuk ekspor ini"
"namePlaceholder": "Nama dasar opsional untuk ekspor ini",
"searchOrSelectGroup": "Cari, atau pilih grup kamera...",
"selectAll": "Pilih semua kamera"
},
"multi": {
"title_other": "Ekspor {{count}} Ulasan",
+4 -1
View File
@@ -67,7 +67,10 @@
"desc": "このオプションは、ライブストリームに色のアーティファクトが表示され、画像右側に斜めの線が出る場合にのみ有効にしてください。"
}
}
}
},
"showAll": "全てのカメラグループを表示",
"showLess": "表示を縮小",
"editGroups": "カメラグループを編集"
},
"debug": {
"options": {
+13 -2
View File
@@ -24,6 +24,9 @@
},
"state": {
"submitted": "送信済み"
},
"toast": {
"error": "Frigate+への送信に失敗しました。ネットワーク接続を確認して、もう一度お試しください。"
}
}
},
@@ -56,7 +59,8 @@
"error": {
"failed": "エクスポートキューの開始に失敗しました: {{error}}",
"endTimeMustAfterStartTime": "終了時間は開始時間より後である必要があります",
"noVaildTimeSelected": "有効な時間範囲が選択されていません"
"noVaildTimeSelected": "有効な時間範囲が選択されていません",
"noValidTimeSelected": "有効な時間範囲が選択されていません"
},
"view": "表示",
"queued": "エクスポートがキューに追加されました。進捗状況はエクスポートページで確認できます。",
@@ -85,7 +89,14 @@
"detectionCount_other": "{{count}} 追跡対象",
"nameLabel": "エクスポート名",
"namePlaceholder": "これらのエクスポート用オプションのベース名",
"exportButton_other": "{{count}} 台のカメラをエクスポート"
"exportButton_other": "{{count}} 台のカメラをエクスポート",
"searchOrSelectGroup": "検索するか、カメラグループを選択してください...",
"selectAll": "全てのカメラを選択",
"clearSelection": "選択を解除",
"selectWithActivity": "追跡対象のあるカメラ",
"selectGroup": "グループを選択",
"noMatchingCameras": "検索条件に一致するカメラはありません",
"selectedCount": "{{selected}} / {{total}} 個が選択されました"
},
"case": {
"newCaseOption": "新しいケースを作成",
+11 -4
View File
@@ -33,7 +33,7 @@
},
"listen": {
"label": "リスニングタイプ",
"description": "検対象の音声イベントの種類一覧(例:吠え声、火災報知器、悲鳴、会話、叫び声)。"
"description": "検対象の音声イベントの種類一覧(例:吠え声、火災報知器、会話、叫び声)。"
},
"enabled_in_config": {
"label": "元の音声状態",
@@ -192,11 +192,11 @@
"description": "このカメラの通知を有効化・制御する設定。"
},
"ffmpeg": {
"label": "FFmpeg",
"description": "FFmpeg の設定。バイナリパス、引数、ハードウェアアクセラレーション、ロールの出力引数を含みます。",
"label": "ストリーム(FFmpeg",
"description": "カメラストリームの入力およびFFmpegのオプション(バイナリパス、引数、ハードウェアアクセラレーション、ロールごとの出力引数など)。",
"path": {
"label": "FFmpeg パス",
"description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「5.0」または「7.0」)。"
"description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「7.0」または「8.0」)。"
},
"global_args": {
"label": "FFmpeg グローバル引数",
@@ -512,6 +512,9 @@
"max_concurrent": {
"label": "同時エクスポート数の上限",
"description": "同時に処理するエクスポートジョブの最大数。"
},
"chapters": {
"label": "エクスポートされた録画に埋め込むチャプターメタデータ"
}
},
"preview": {
@@ -866,6 +869,10 @@
"dashboard": {
"label": "UI に表示",
"description": "このカメラを Frigate UI 全体に表示するかを切り替えます。無効化した場合、再表示するには設定ファイルを手動編集する必要があります。"
},
"review": {
"label": "再生画面に表示",
"description": "このカメラを再生画面(再生ページおよびそのカメラフィルター、モーション再生、履歴表示)に表示するかどうかを切り替えます。"
}
},
"webui_url": {
+9 -2
View File
@@ -31,7 +31,7 @@
},
"listen": {
"label": "リスニングタイプ",
"description": "検対象の音声イベントの種類一覧(例:吠え声、火災報知器、悲鳴、会話、叫び声)。"
"description": "検対象の音声イベントの種類一覧(例:吠え声、火災報知器、会話、叫び声)。"
},
"enabled_in_config": {
"label": "元の音声状態",
@@ -715,7 +715,7 @@
"description": "FFmpeg の設定。バイナリパス、引数、ハードウェアアクセラレーション、ロール別の出力引数を含みます。",
"path": {
"label": "FFmpeg パス",
"description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「5.0」または「7.0」)。"
"description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「7.0」または「8.0」)。"
},
"global_args": {
"label": "FFmpeg グローバル引数",
@@ -1067,6 +1067,9 @@
"max_concurrent": {
"label": "同時エクスポート数の上限",
"description": "同時に処理するエクスポートジョブの最大数。"
},
"chapters": {
"label": "エクスポートされた録画に埋め込むチャプターメタデータ"
}
},
"preview": {
@@ -1554,6 +1557,10 @@
"dashboard": {
"label": "UI に表示",
"description": "このカメラを Frigate UI 全体に表示するかを切り替えます。無効化した場合、再表示するには設定ファイルを手動編集する必要があります。"
},
"review": {
"label": "再生画面に表示",
"description": "このカメラを再生画面(再生ページおよびそのカメラフィルター、モーション再生、履歴表示)に表示するかどうかを切り替えます。"
}
},
"onvif": {
@@ -147,7 +147,20 @@
"title": "分類モデルを編集",
"descriptionState": "この状態分類モデルのクラスを編集します。変更を反映するにはモデルの再学習が必要です。",
"descriptionObject": "このオブジェクト分類モデルのオブジェクトタイプおよび分類タイプを編集します。",
"stateClassesInfo": "注意: 状態クラスを変更すると、更新後のクラスでモデル再学習する必要があります。"
"stateClassesInfo": "モデルが更新されました。変更を反映させるには、モデル再学習を行ってください。",
"enabled": "有効",
"enabledDesc": "このモデルを実行します。無効にすると実行が停止し、分類が行われなくなります。",
"saveAttempts": "試行回数の保存",
"saveAttemptsDesc": "「最近の分類」UIに保持する分類試行画像の数です。",
"motion": "動き検知時に実行",
"motionDesc": "設定されたクロップ範囲内で動きが検知された際に、分類を実行します。",
"interval": "間隔",
"intervalDesc": "定期的な分類実行の間隔(秒)。空欄のままにすると、動きが検知された時のみ実行されます。",
"intervalPlaceholder": "間隔なし",
"errors": {
"saveAttemptsInvalid": "セーブ回数は0以上の整数でなければなりません",
"intervalInvalid": "「間隔」は0より大きい整数である必要があります"
}
},
"deleteDatasetImages": {
"title": "データセット画像を削除",
@@ -187,5 +200,6 @@
}
},
"reclassifyImageAs": "画像を次として再分類:",
"reclassifyImage": "画像を再分類"
"reclassifyImage": "画像を再分類",
"disabled": "無効"
}
+1 -1
View File
@@ -301,7 +301,7 @@
"toast": {
"success": "{{camera}} のアノテーションオフセットが設定ファイルに保存されました。"
},
"desc": "このデータはカメラの detect ストリーム から取得されていますが、表示される画像自体は record ストリーム のものです。そのため、2 つのストリームが完全に同期している可能性は低、バウンディングボックスと実際の映像が正確に一致しない場合があります。この設定を使用すると注釈(アノテーション)を 時間的に前後へオフセット することができ、録画映像との位置合わせをより正確に行ます。",
"desc": "このデータはカメラの「検出」フィードから取得されますが、「録画」フィードの画像に重ねて表示されます。2つのストリームが完全に同期している可能性は低いため、バウンディングボックスと映像が完全に一致しない場合があります。この設定を使用すると注釈を時間軸上で前後にずらすことができ、録画された映像との位置合わせをより正確に行うことができます。",
"tips": "映像の再生がバウンディングボックスや軌跡ポイントより先行している場合は値を小さくし、遅れている場合は値を大きくしてください。この値は負の値も指定できます。"
}
},
+39 -7
View File
@@ -69,7 +69,7 @@
"integrationObjectClassification": "オブジェクト分類",
"integrationAudioTranscription": "音声文字起こし",
"cameraDetect": "物体検知",
"cameraFfmpeg": "FFmpeg",
"cameraFfmpeg": "ストリーム(FFmpeg",
"cameraRecording": "録画",
"cameraSnapshots": "スナップショット",
"cameraMotion": "モーション検知",
@@ -662,7 +662,7 @@
},
"createUser": {
"title": "新規ユーザーを作成",
"desc": "新しいユーザーアカウントを追加し、Frigate UI へのアクセスロールを指定します。",
"desc": "新しいユーザーアカウントを追加し、Frigate UIの各エリアへのアクセス権限となる役割を指定します。",
"usernameOnlyInclude": "ユーザー名に使用できるのは英数字、.、_ のみです",
"confirmPassword": "パスワードを確認してください"
},
@@ -1292,12 +1292,16 @@
"details": {
"edit": "カメラ詳細を編集",
"title": "カメラ詳細を編集",
"description": "このカメラの表示名と外部 URL を更新します。Frigate UI 全体で使用されます。",
"description": "Frigate UI 全体で、このカメラに使用されている表示名、外部 URL、および公開設定を更新します。",
"friendlyNameLabel": "表示名",
"friendlyNameHelp": "Frigate UI 全体でこのカメラに表示される名前です。空欄にするとカメラ ID が使用されます。",
"webuiUrlLabel": "カメラ Web UI の URL",
"webuiUrlHelp": "デバッグビューからカメラの Web UI に直接アクセスするための URL です。空欄にするとリンクが無効になります。",
"webuiUrlInvalid": "有効な URL を入力してください (例: https://example.com)。"
"webuiUrlInvalid": "有効な URL を入力してください (例: https://example.com)。",
"dashboardLabel": "ライブダッシュボードに表示",
"dashboardHelp": "このカメラをライブダッシュボードに表示します。",
"reviewLabel": "レビューに表示",
"reviewHelp": "このカメラを、カメラフィルター、モーションレビュー、履歴ビューを含め、レビューに表示します。"
}
},
"cameraConfig": {
@@ -1633,7 +1637,14 @@
"keyLabel": "キー",
"valueLabel": "値",
"keyPlaceholder": "新しいキー",
"remove": "削除"
"remove": "削除",
"providerNameLabel": "プロバイダー名",
"providerNamePlaceholder": "例:openai",
"variableNameLabel": "変数名",
"variableNamePlaceholder": "例:MY_VARIABLE",
"loggerNameLabel": "ロガー名",
"loggerNamePlaceholder": "例:frigate.record",
"keyPatternError": "英字、数字、ハイフン、アンダースコアのみを使用してください(スペースは使用不可)"
},
"knownPlates": {
"namePlaceholder": "例: 妻の車",
@@ -1685,7 +1696,17 @@
}
},
"cameraInputs": {
"itemTitle": "ストリーム {{index}}"
"itemTitle": "ストリーム {{index}}",
"sourceMode": {
"restream": "リストリーム (go2rtc)",
"manual": "手動入力パス",
"go2rtcStreamLabel": "go2rtc ストリーム",
"go2rtcStreamPlaceholder": "go2rtc ストリームを選択",
"noGo2rtcStreams": "設定済みの go2rtc ストリームはありません",
"go2rtcStreamSearch": "ストリームを検索中...",
"availableStreams": "利用可能なストリーム",
"noMatchingStreams": "一致するストリームはありません"
}
},
"restartRequiredField": "再起動が必要",
"restartRequiredFooter": "設定が変更されました - 再起動が必要です",
@@ -2054,7 +2075,11 @@
"fpsGreaterThanFive": "検知 FPS を 5 より高く設定することは推奨されません。値を大きくしてもパフォーマンス上の問題を引き起こすだけで、メリットはありません。",
"disabled": "物体検知が無効化されています。スナップショット、レビュー項目、顔認識、ナンバープレート認識、生成AI などのエンリッチメントは機能しません。",
"resolutionShouldBeMultipleOfFour": "最良の結果を得るため、検知の幅と高さは 4 の倍数にしてください。他の偶数値でも動作しますが、検知ストリームに視覚的なノイズや軽微な歪みが生じる可能性があります。",
"aspectRatioMismatch": "入力した幅と高さは現在の検知解像度のアスペクト比と一致していません。映像が引き伸ばされたり歪んだりする可能性があります。"
"aspectRatioMismatch": "入力した幅と高さは現在の検知解像度のアスペクト比と一致していません。映像が引き伸ばされたり歪んだりする可能性があります。",
"maxFramesSet": "最大フレーム数を設定するとデフォルトの動作が上書きされ、静止物体の追跡が無効になります。これが必要な状況はごく稀ですので使用には注意が必要です。",
"squareResolution": "正方形の検出解像度は一般的ではありません。検出の幅と高さは、物体検出モデルの寸法ではなく、カメラのアスペクト比(例:16:9)に合わせる必要があります。アスペクト比が一致しないと、画像が引き伸ばされ、検出精度が低下する可能性があります。",
"resolutionHigh": "この検出解像度は推奨値よりも高く、検出精度が向上しないままリソース使用量が増加する可能性があります。ほとんどのカメラでは、1080p以下の検出解像度を推奨します。",
"globalResolutionMultipleCameras": "複数のカメラを設定する際は、グローバルな検出解像度が設定されます。すべてのカメラで解像度とアスペクト比が同一でない限り、各カメラのネイティブアスペクト比に合わせて、カメラごとに検出幅と検出高さを定義する必要があります。"
},
"objects": {
"genaiNoDescriptionsProvider": "説明を生成するには「descriptions」ロールを持つ生成AIプロバイダを設定する必要があります。"
@@ -2087,6 +2112,13 @@
},
"onvif": {
"autotrackingNoZones": "オートトラッキング機能を使用するには、少なくとも1つのゾーンが必要です。「マスク / ゾーン」でこのカメラ用のゾーンを定義し、以下でそれを必須ゾーンとして設定してください。"
},
"model": {
"optimizedFor320": "Frigateは320x320のモデルに最適化されており、これはほとんどのセットアップにおいて最適な選択です。640x640のモデルは処理速度が遅く、特定のシナリオでのみ有効です。",
"inputDimensionsNotDetectResolution": "モデルの入力幅と高さはオブジェクト検出モデルの入力寸法であり、カメラの検出解像度ではありません。これらは使用しているモデルの寸法と一致している必要があります。通常、320x320や640x640のような正方形のサイズになります。"
},
"ffmpeg": {
"hwaccelManualNotRecommended": "手動でのハードウェアアクセラレーション引数の指定は推奨されません。特定の要件がない限り、お使いのハードウェアに合ったプリセットを選択してください。"
}
}
}
+15
View File
@@ -174,6 +174,21 @@
"error": "エラー: {{error}}",
"tips": {
"title": "カメラプローブ情報"
},
"keyframes": {
"title": "キーフレームの分析",
"analyzing": "キーフレームを分析中... 残り {{seconds}} 秒",
"stillAnalyzing": "キーフレームの分析を継続中...",
"recordStream": "録画ストリーム:",
"keyframeCount": "検出されたキーフレーム:",
"observedDuration": "検出された再生時間:",
"gap": "キーフレームの間隔(最小/平均/最大):",
"segmentLength": "録画セグメントの長さ:",
"ok": "キーフレーム間隔は約 {{seconds}} 秒で、録画および再生に適しています。",
"warning": "キーフレームがまばら、または変動的(最長間隔 ~{{seconds}}秒)で、スマートコーデック(H.264+/H.265+)である可能性が高いです。これは推奨されません。",
"error": "キーフレーム間隔(約{{seconds}}秒)が録画セグメントの長さ({{segmentTime}}秒)を超えています。一部のセグメントにキーフレームが含まれない場合があり、再生に支障をきたす可能性があります。カメラでスマート/+コーデックを無効にするか、キーフレーム間隔を短縮してください。",
"unknown": "キーフレーム間隔を特定できませんでした。",
"recordDisabled": "このカメラでは録画が無効になっています。"
}
},
"framesAndDetections": "フレーム / 検知",
+15 -3
View File
@@ -68,8 +68,8 @@
"choir": "Koris",
"yodeling": "Jodelēšana",
"mantra": "Mantra",
"rapping": "Repot",
"whistling": "Svilpot",
"rapping": "Repošana",
"whistling": "Svilpošana",
"sniff": "Ošņāt",
"hands": "Rokas",
"animal": "Dzīvnieks",
@@ -122,5 +122,17 @@
"fireworks": "Uguņošana",
"glass": "Stikls",
"white_noise": "Baltais troksnis",
"radio": "Radio"
"radio": "Radio",
"chant": "Piedziedājums",
"synthetic_singing": "Sintētiskā dziedāšana",
"groan": "Vaidēšana",
"grunt": "Rukšķēšana",
"breathing": "Elpošana",
"wheeze": "Gārgšana",
"snoring": "Krākšana",
"gasp": "Elsošana",
"pant": "Elšana",
"snort": "Šņaukt",
"cough": "Klepus",
"throat_clearing": "Kakla tīrīšana"
}
@@ -64,7 +64,8 @@
"error": {
"failed": "Kunne ikke legge eksport i kø: {{error}}",
"noVaildTimeSelected": "Ingen gyldig tidsperiode valgt",
"endTimeMustAfterStartTime": "Sluttid må være etter starttid"
"endTimeMustAfterStartTime": "Sluttid må være etter starttid",
"noValidTimeSelected": "Ingen gyldig tidsperiode valgt"
},
"view": "Vis",
"queued": "Eksport lagt i kø. Se fremdrift på eksportsiden.",
+2 -2
View File
@@ -330,7 +330,7 @@
},
"model_type": {
"label": "Type objektdeteksjonsmodell",
"description": "Arkitekturtype for detektormodellen (ssd, yolox, yolonas) brukt av enkelte detektorer for optimalisering."
"description": "Arkitekturtype for detektormodellen (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) brukt av enkelte detektorer for optimalisering."
}
},
"model_path": {
@@ -503,7 +503,7 @@
},
"model_type": {
"label": "Type objektdeteksjonsmodell",
"description": "Arkitekturtype for detektormodellen (ssd, yolox, yolonas) brukt av enkelte detektorer for optimalisering."
"description": "Arkitekturtype for detektormodellen (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) brukt av enkelte detektorer for optimalisering."
}
},
"genai": {
@@ -188,7 +188,7 @@
"title": "Rediger klassifiseringsmodell",
"descriptionState": "Rediger klassene for denne tilstandsklassifiseringsmodellen. Endringer vil kreve at modellen trenes på nytt.",
"descriptionObject": "Rediger objekttypen og klassifiseringstypen for denne objektklassifiseringsmodellen.",
"stateClassesInfo": "Merk: Endring av tilstandsklasser krever at modellen trenes på nytt med de oppdaterte klassene."
"stateClassesInfo": "Modellen ble oppdatert. Tren modellen på nytt for at endringene i klassene skal bli iverksatt."
},
"none": "Ingen",
"reclassifyImageAs": "Reklassifiser bilde som:",
+4 -1
View File
@@ -1722,7 +1722,10 @@
"remove": "Fjern",
"keyPlaceholder": "Ny nøkkel",
"keyLabel": "Nøkkel",
"valueLabel": "Verdi"
"valueLabel": "Verdi",
"providerNamePlaceholder": "f.eks. openai",
"variableNameLabel": "Variabelnavn",
"variableNamePlaceholder": "f.eks MIN_VARIABEL"
},
"roleMap": {
"remove": "Fjern",
+11 -1
View File
@@ -34,6 +34,9 @@
"label": "Bevestig dit label voor Frigate Plus",
"ask_a": "Is dit object een <code>{{label}}</code>?",
"ask_full": "Is dit object een <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"toast": {
"error": "Gefaald bij Frigate+ in te dienen. Controleer je netwerkverbinding en probeer opnieuw."
}
}
},
@@ -104,7 +107,14 @@
"namePlaceholder": "Optionele basisnaam voor deze exporten",
"queueingButton": "Exporten in wachtrij plaatsen...",
"exportButton_one": "Export 1 Camera",
"exportButton_other": "{{count}} camera's exporteren"
"exportButton_other": "{{count}} camera's exporteren",
"searchOrSelectGroup": "Zoek of selecteer een cameragroep...",
"selectAll": "Selecteer alle camera's",
"clearSelection": "Wis selectie",
"selectWithActivity": "Camera's met gevolgde objecten",
"selectGroup": "Selecteer groep",
"noMatchingCameras": "Geen camera's komen overeen met je zoekopdracht",
"selectedCount": "{{selected}} / {{total}} geselecteerd"
},
"multi": {
"title_one": "Review 1 exporteren",
+5 -1
View File
@@ -36,6 +36,9 @@
"ask_an": "Czy ten obiekt to <code>{{label}}</code>?",
"ask_full": "Czy ten obiekt to <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?",
"label": "Potwierdź tę etykietę dla Frigate Plus"
},
"toast": {
"error": "Nie udało się przesłać do Frigate+. Sprawdź połączenie sieciowe i spróbuj ponownie."
}
}
},
@@ -70,7 +73,8 @@
"error": {
"failed": "Nie udało się zakolejkować eksportu: {{error}}",
"endTimeMustAfterStartTime": "Czas zakończenia musi być późniejszy niż czas rozpoczęcia",
"noVaildTimeSelected": "Nie wybrano prawidłowego zakresu czasu"
"noVaildTimeSelected": "Nie wybrano prawidłowego zakresu czasu",
"noValidTimeSelected": "Nie wybrano prawidłowego zakresu czasu"
},
"view": "Widok",
"queued": "Eksport dodany do kolejki. Postęp można sprawdzić na stronie eksportów.",
+10 -2
View File
@@ -192,7 +192,7 @@
},
"listen": {
"label": "Typy nasłuchu",
"description": "Lista typów zdarzeń audio do wykrywania (na przykład: szczekanie, alarm pożarowy, krzyk, mowa, wrzask)."
"description": "Lista typów zdarzeń audio do wykrywania (na przykład: szczekanie, alarm pożarowy, mowa, krzyk)."
},
"filters": {
"label": "Filtry audio",
@@ -322,7 +322,8 @@
},
"record": {
"description": "Domyślne argumenty wyjściowe dla strumieni z rolą zapisu."
}
},
"description": "Domyślne argumenty wyjściowe używane dla różnych ról FFmpeg, takich jak wykrywanie i nagrywanie."
},
"retry_interval": {
"label": "Czas ponownej próby FFmpeg",
@@ -335,6 +336,13 @@
"gpu": {
"label": "Indeks GPU",
"description": "Domyślny indeks karty graficznej używany do akceleracji sprzętowej, jeśli jest dostępna."
},
"description": "Wejścia strumienia kamery i opcje FFmpeg, w tym ścieżka do pliku binarnego, args, hwaccel oraz argumenty wyjściowe dla poszczególnych ról.",
"path": {
"description": "Ścieżka do pliku binarnego FFmpeg lub alias wersji („7.0” lub „8.0”)."
},
"global_args": {
"label": "Argumenty globalne FFmpeg"
}
}
}
+9 -2
View File
@@ -14,7 +14,7 @@
},
"listen": {
"label": "Typy nasłuchu",
"description": "Lista typów zdarzeń audio do wykrywania (na przykład: szczekanie, alarm pożarowy, krzyk, mowa, wrzask)."
"description": "Lista typów zdarzeń audio do wykrywania (na przykład: szczekanie, alarm pożarowy, mowa, krzyk)."
},
"filters": {
"label": "Filtry audio",
@@ -165,7 +165,8 @@
},
"record": {
"description": "Domyślne argumenty wyjściowe dla strumieni z rolą zapisu."
}
},
"description": "Domyślne argumenty wyjściowe używane dla różnych ról FFmpeg, takich jak wykrywanie i nagrywanie."
},
"retry_interval": {
"label": "Czas ponownej próby FFmpeg",
@@ -178,6 +179,12 @@
"gpu": {
"label": "Indeks GPU",
"description": "Domyślny indeks karty graficznej używany do akceleracji sprzętowej, jeśli jest dostępna."
},
"path": {
"description": "Ścieżka do pliku binarnego FFmpeg lub alias wersji („7.0” lub „8.0”)."
},
"global_args": {
"label": "Argumenty globalne FFmpeg"
}
}
}
@@ -19,8 +19,8 @@
"question": {
"label": "Confirmar esse rótulo para Frigate Plus",
"ask_a": "Este objeto é um <code>{{label}}</code>?",
"ask_an": "Este objeto é um<code>{{label}}</code>?",
"ask_full": "Este objeto é um<code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
"ask_an": "Este objeto é um <code>{{label}}</code>?",
"ask_full": "Este objeto é um <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"state": {
"submitted": "Enviado"
@@ -71,7 +71,10 @@
"batchQueueFailed": "Falha ao enfileirar {{total}} exportações. Câmeras com falha: {{failedCameras}}",
"batchPartial": "Iniciadas {{successful}} de {{total}} exportações. Câmeras com falha: {{failedCameras}}",
"batchFailed": "Falha ao iniciar {{total}} exportações. Câmeras com falha: {{failedCameras}}",
"queued": "Exportação na fila. Acompanhe o progresso na página de exportações."
"queued": "Exportação na fila. Acompanhe o progresso na página de exportações.",
"batchSuccess_one": "1 exportação iniciada. Abrindo o caso agora.",
"batchSuccess_many": "{{count}} exportações iniciadas. Abrindo o caso agora.",
"batchSuccess_other": "{{count}} exportações iniciadas. Abrindo o caso agora."
},
"fromTimeline": {
"saveExport": "Salvar Exportação",
@@ -132,7 +135,10 @@
"started_many": "Iniciadas {{count}} exportações. Abrindo o caso agora.",
"started_other": "",
"failed": "Falha ao iniciar {{total}} exportações. Falhas: {{failedItems}}",
"partial": "Iniciadas {{successful}} de {{total}} exportações. Falhas: {{failedItems}}"
"partial": "Iniciadas {{successful}} de {{total}} exportações. Falhas: {{failedItems}}",
"startedNoCase_one": "1 exportação iniciada.",
"startedNoCase_many": "{{count}} exportações iniciadas.",
"startedNoCase_other": "{{count}} exportações iniciadas."
}
}
},
+17 -2
View File
@@ -215,7 +215,8 @@
"label": "Birdseye",
"description": "Configurações para a visualização composta \"Birdseye\", que combina múltiplas transmissões de câmera em um único layout.",
"enabled": {
"label": "Ativar Birdseye"
"label": "Ativar Birdseye",
"description": "Habilita ou desabilita a função Birdseye."
}
},
"live": {
@@ -401,7 +402,9 @@
"enhancement": {
"label": "Nível de aprimoramento",
"description": "Nível de aprimoramento (0-10) a ser aplicado aos recortes da placa antes do OCR; valores mais altos nem sempre melhoram os resultados, e níveis acima de 5 podem funcionar apenas com placas noturnas, devendo ser utilizados com cautela."
}
},
"label": "Reconhecimento de placa veicular",
"description": "Configurações de reconhecimento de placa veicular, incluindo limites de detecção, formatação e placas conhecidas."
},
"record": {
"label": "Gravação",
@@ -539,6 +542,18 @@
"enabled": {
"label": "Ativar detecções",
"description": "Ative ou desative eventos de detecção para esta câmera."
},
"labels": {
"label": "Rótulos de detecção",
"description": "Lista de rótulos de objetos que são considerados eventos de detecção."
},
"required_zones": {
"label": "Zonas requeridas",
"description": "Zonas em que um objeto deve entrar para ser considerado detectado. Deixe em branco para permitir qualquer zona."
},
"cutoff_time": {
"label": "Tempo limite de detecção",
"description": "Segundos a esperar após o fim da atividade antes de encerrar a detecção."
}
}
}
+17 -2
View File
@@ -239,7 +239,8 @@
"label": "Birdseye",
"description": "Configurações para a visualização composta \"Birdseye\", que combina múltiplas transmissões de câmera em um único layout.",
"enabled": {
"label": "Ativar Birdseye"
"label": "Ativar Birdseye",
"description": "Habilita ou desabilita a função Birdseye."
}
},
"live": {
@@ -420,7 +421,9 @@
"enhancement": {
"label": "Nível de aprimoramento",
"description": "Nível de aprimoramento (0-10) a ser aplicado aos recortes da placa antes do OCR; valores mais altos nem sempre melhoram os resultados, e níveis acima de 5 podem funcionar apenas com placas noturnas, devendo ser utilizados com cautela."
}
},
"label": "Reconhecimento de placa veicular",
"description": "Configurações de reconhecimento de placa veicular, incluindo limites de detecção, formatação e placas conhecidas."
},
"record": {
"label": "Gravação",
@@ -553,6 +556,18 @@
"description": "Configurações que definem para quais objetos rastreados são geradas detecções (sem gerar alerta) e como essas detecções são retidas.",
"enabled": {
"label": "Ativar detecções"
},
"labels": {
"label": "Rótulos de detecção",
"description": "Lista de rótulos de objetos que são considerados eventos de detecção."
},
"required_zones": {
"label": "Zonas requeridas",
"description": "Zonas em que um objeto deve entrar para ser considerado detectado. Deixe em branco para permitir qualquer zona."
},
"cutoff_time": {
"label": "Tempo limite de detecção",
"description": "Segundos a esperar após o fim da atividade antes de encerrar a detecção."
}
}
}
@@ -12,12 +12,12 @@
},
"toast": {
"success": {
"deletedCategory_one": "Classe Apagada",
"deletedCategory_many": "Classes apagadas",
"deletedCategory_other": "",
"deletedImage_one": "Imagen Apagada",
"deletedImage_many": "Imagens Apagadas",
"deletedImage_other": "",
"deletedCategory_one": "{{count}} classe removida",
"deletedCategory_many": "{{count}} classes removidas",
"deletedCategory_other": "{{count}} classes removidas",
"deletedImage_one": "{{count}} imagem removida",
"deletedImage_many": "{{count}} imagens removidas",
"deletedImage_other": "{{count}} imagens removidas",
"categorizedImage": "Imagem Classificada com Sucesso",
"trainedModel": "Modelo treinado com sucesso.",
"trainingModel": "Treinamento do modelo iniciado com sucesso.",
+3 -3
View File
@@ -296,7 +296,7 @@
}
},
"motionMaskLabel": "Máscara de Movimento {{number}}",
"objectMaskLabel": "Máscara de Objeto {{number}} ({{label}})",
"objectMaskLabel": "Máscara de Objeto {{number}}",
"form": {
"zoneName": {
"error": {
@@ -437,7 +437,7 @@
"add": "Nova Máscara de Movimento",
"edit": "Editar Máscara de Movimento",
"context": {
"title": "Máscaras de movimento são usadas para prevenir tipos de movimento não desejados de ativarem uma detecção (exemplo: galhos de árvores, timestamps de câmeras). Máscaras de movimento devem ser usadas <em> com moderação </em>. Excesso de mascaramento tornará o rastreamento de objetos mais difícil.",
"title": "Máscaras de movimento são usadas para prevenir tipos de movimento não desejados de ativarem uma detecção (exemplo: galhos de árvores, timestamps de câmeras). Máscaras de movimento devem ser usadas <em>com moderação</em>. Excesso de mascaramento tornará o rastreamento de objetos mais difícil.",
"documentation": "Leia a documentação"
},
"point_one": "{{count}} ponto",
@@ -723,7 +723,7 @@
"title": "Configuração de Captura de Imagem",
"desc": "Envios ao Frigate+ requerem tanto a captura de imagem normais quanto a captura de imagem <code>clean_copy</code> estarem habilitadas na sua configuração.",
"documentation": "Leia a documentação",
"cleanCopyWarning": "Algumas câmeras possuem captura de imagem habilitada porém têm a cópia limpa desabilitada. Você precisa habilitar a <code>clean_copy</code> nas suas configurações de captura de imagem para poder submeter imagems dessa câmera ao Frigate+.",
"cleanCopyWarning": "Algumas câmeras estão com os snapshots desativados",
"table": {
"camera": "Câmera",
"snapshots": "Capturas de Imagem",
+1 -1
View File
@@ -3,7 +3,7 @@
"machine_gun": "Mitraliera",
"speech": "Vorbire",
"babbling": "Murmur",
"yell": "Striga",
"yell": "Strigăt",
"bellow": "Sub",
"dog": "Câine",
"horse": "Cal",
+13 -2
View File
@@ -32,6 +32,9 @@
"ask_a": "Este acest obiect un <code>{{label}}</code>?",
"ask_an": "Este acest obiect un <code>{{label}}</code>?",
"ask_full": "Este acest obiect un <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"toast": {
"error": "Trimiterea către Frigate+ a eșuat. Te rog să verifici conexiunea la rețea și să încerci din nou."
}
},
"submitToPlus": {
@@ -96,7 +99,8 @@
"error": {
"failed": "Nu s-a putut adăuga exportul în coadă: {{error}}",
"endTimeMustAfterStartTime": "Ora de sfârșit trebuie să fie după ora de început",
"noVaildTimeSelected": "Nu a fost selectat un interval de timp valid"
"noVaildTimeSelected": "Nu a fost selectat un interval de timp valid",
"noValidTimeSelected": "Niciun interval de timp valid selectat"
},
"view": "Vizualizează",
"queued": "Export pus la coadă. Vezi progresul pe pagina de exporturi.",
@@ -145,7 +149,14 @@
"queueingButton": "Se adaugă exporturile la coadă...",
"exportButton_one": "Exportă 1 cameră",
"exportButton_few": "Exportă {{count}} camere",
"exportButton_other": "Exportă {{count}} de camere"
"exportButton_other": "Exportă {{count}} de camere",
"searchOrSelectGroup": "Caută sau selectează un grup de camere...",
"selectAll": "Selectează toate camerele",
"clearSelection": "Șterge selecția",
"selectWithActivity": "Camere cu obiecte urmărite",
"selectGroup": "Selectează grupul",
"noMatchingCameras": "Nicio cameră nu corespunde căutării tale",
"selectedCount": "{{selected}} / {{total}} selectate"
},
"multi": {
"title_one": "Exportă o revizuire",
+5 -2
View File
@@ -371,7 +371,7 @@
"description": "Folosește snapshot-urile obiectelor în loc de miniaturi pentru GenAI."
},
"prompt": {
"label": "Prompt descriere",
"label": "Prompt de descriere",
"description": "Șablonul de prompt implicit pentru descrierile GenAI."
},
"object_prompts": {
@@ -493,6 +493,9 @@
"max_concurrent": {
"description": "Numărul maxim de sarcini de export de procesat în același timp.",
"label": "Număr maxim de exporturi simultane"
},
"chapters": {
"label": "Metadate de capitol de încorporat în înregistrările exportate"
}
},
"preview": {
@@ -768,7 +771,7 @@
"description": "Adresa de email folosită pentru notificări push sau cerută de anumiți furnizori de notificări."
},
"cooldown": {
"label": "Perioadă de răcire",
"label": "Perioadă de repaus",
"description": "Timpul de așteptare (secunde) între notificări pentru a evita spamarea destinatarilor."
},
"enabled_in_config": {
+8 -5
View File
@@ -217,7 +217,7 @@
},
"ffmpeg": {
"label": "FFmpeg",
"description": "Setări FFmpeg: cale binar, argumente, accelerare hardware și ieșiri per rol.",
"description": "Setări FFmpeg: inclusiv calea către binar, argumente, accelerare hardware și ieșiri per rol.",
"path": {
"label": "Cale FFmpeg",
"description": "Calea către binarul FFmpeg sau un alias de versiune (\"7.0\" sau \"8.0\")."
@@ -481,7 +481,7 @@
"description": "Folosește snapshot-urile obiectelor în loc de miniaturi pentru GenAI."
},
"prompt": {
"label": "Prompt descriere",
"label": "Prompt de descriere",
"description": "Șablonul de prompt implicit pentru descrierile GenAI."
},
"object_prompts": {
@@ -637,6 +637,9 @@
"max_concurrent": {
"description": "Numărul maxim de sarcini de export de procesat în același timp.",
"label": "Număr maxim de exporturi simultane"
},
"chapters": {
"label": "Metadate de capitol de încorporat în înregistrările exportate"
}
},
"preview": {
@@ -952,7 +955,7 @@
"description": "Adresa de email folosită pentru notificări push sau cerută de anumiți furnizori de notificări."
},
"cooldown": {
"label": "Perioadă de răcire",
"label": "Perioadă de repaus",
"description": "Timpul de așteptare (secunde) între notificări pentru a evita spamarea destinatarilor."
},
"enabled_in_config": {
@@ -2131,7 +2134,7 @@
},
"model_type": {
"label": "Tipul modelului de detecție a obiectelor",
"description": "Tipul arhitecturii modelului detectorului (ssd, yolox, yolonas) folosit de unii detectori pentru optimizare."
"description": "Tipul de arhitectură al modelului detectorului (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) utilizat de unele detectoare pentru optimizare."
}
},
"model_path": {
@@ -2180,7 +2183,7 @@
},
"model_type": {
"label": "Tip model detecție",
"description": "Arhitectura modelului (ssd, yolox, yolonas)."
"description": "Tipul de arhitectură al modelului detectorului (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) utilizat de unele detectoare pentru optimizare."
}
},
"genai": {
@@ -192,7 +192,20 @@
"title": "Editează modelul de clasificare",
"descriptionState": "Editează clasele pentru acest model de clasificare a stării. Modificările vor necesita reantrenarea modelului.",
"descriptionObject": "Editează tipul de obiect și tipul de clasificare pentru acest model de clasificare a obiectelor.",
"stateClassesInfo": "Notă: Modificarea claselor de stare necesită reantrenarea modelului cu clasele actualizate."
"stateClassesInfo": "Model actualizat. Reantrenea modelul pentru ca modificările claselor să aibă efect.",
"enabled": "Activat",
"enabledDesc": "Rulează acest model. Când este dezactivat, se oprește și nu mai clasifică.",
"saveAttempts": "Încercări de salvare",
"saveAttemptsDesc": "Numărul de imagini cu încercări de clasificare de păstrat pentru interfața de clasificări recente.",
"motion": "Rulează la mișcare",
"motionDesc": "Rulează clasificarea atunci când este detectată mișcare în decupajul configurat.",
"interval": "Interval",
"intervalDesc": "Secunde între rulările periodice de clasificare. Lasă necompletat pentru a rula doar la mișcare.",
"intervalPlaceholder": "Niciun interval",
"errors": {
"saveAttemptsInvalid": "Încercările de salvare trebuie să fie un număr întreg de 0 sau mai mare",
"intervalInvalid": "Intervalul trebuie să fie un număr întreg mai mare decât 0"
}
},
"tooltip": {
"trainingInProgress": "Modelul este în curs de antrenare",
@@ -202,5 +215,6 @@
},
"none": "Niciuna",
"reclassifyImageAs": "Reclasifică imaginea ca:",
"reclassifyImage": "Reclasifică imaginea"
"reclassifyImage": "Reclasifică imaginea",
"disabled": "Dezactivat"
}
+1 -1
View File
@@ -120,7 +120,7 @@
},
"editSubLabel": {
"title": "Editează subeticheta",
"desc": "Introdu o sub-etichetă nouă pentru acest {{label}}",
"desc": "Introdu o sub-etichetă nouă pentru acest/această {{label}}",
"descNoLabel": "Introduceți o nouă subetichetă pentru acest obiect urmărit"
},
"editLPR": {
+16 -4
View File
@@ -122,7 +122,7 @@
"desc": "Arată întotdeauna numele camerelor într-un tag (chip) în dashboard-ul live multi-cameră."
},
"liveFallbackTimeout": {
"label": "Timeout Rezecție Player Live",
"label": "Timp de expirare pentru player-ul live",
"desc": "Când stream-ul live de înaltă calitate nu este disponibil, comută pe modul de bandă redusă după acest număr de secunde. Implicit: 3."
}
},
@@ -1337,7 +1337,7 @@
"reviewHelp": "Arată această cameră în revizuiri, inclusiv filtrul de camere, revizuirea mișcărilor și vizualizarea istoricului."
},
"label": "Stare cameră",
"description": "Setează starea de funcționare pentru fiecare cameră.<br /><br /><strong>Pornit</strong>: stream-urile sunt procesate normal.<br /><strong>Oprit</strong>: pune temporar pe pauză procesarea. Nu se menține după repornirile Frigate.<br /><strong>Dezactivat</strong>: oprește procesarea și salvează modificarea în configurația ta. Este necesară o repornire pentru a reactiva o cameră dezactivată.<br /><br /><em>Notă: Dezactivarea nu afectează restream-urile go2rtc.</em><br /><br />Trage de mâner pentru a reordona camerele active așa cum apar în interfață, inclusiv în panoul Live și în meniurile drop-down de selecție a camerei.",
"description": "Setează starea de funcționare pentru fiecare cameră.<br /><br /><strong>Pornit</strong>: stream-urile sunt procesate normal.<br /><strong>Oprit</strong>: pune temporar pe pauză procesarea. Nu se menține după repornirile Frigate.<br /><strong>Dezactivat</strong>: oprește procesarea și salvează modificarea în configurația ta. Este necesară o repornire pentru a reactiva o cameră dezactivată.<br /><br /><em>Notă: Dezactivarea nu afectează restream-urile go2rtc.</em><br /><br />Trage pentru a reordona camerele active așa cum apar în interfață, inclusiv în panoul Live și în meniurile drop-down de selecție a camerei.",
"disabledSubheading": "Dezactivat în configurație",
"status": {
"on": "Pornit",
@@ -1643,7 +1643,14 @@
"keyLabel": "Cheie",
"valueLabel": "Valoare",
"keyPlaceholder": "Cheie nouă",
"remove": "Elimină"
"remove": "Elimină",
"providerNamePlaceholder": "de ex., openai",
"providerNameLabel": "Nume furnizor",
"variableNameLabel": "Nume variabilă",
"variableNamePlaceholder": "de ex., MY_VARIABLE",
"loggerNameLabel": "Nume logger",
"loggerNamePlaceholder": "de ex., frigate.record",
"keyPatternError": "Folosește doar litere, cifre, cratime și linii de subliniere (fără spații)"
},
"timezone": {
"defaultOption": "Folosește fusul orar al browserului"
@@ -2097,7 +2104,12 @@
"autotrackingNoZones": "Autotracking-ul necesită cel puțin o zonă. Definește o zonă pentru această cameră în Măști / Zone, apoi seteaz-o ca zonă obligatorie mai jos."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "Argumentele manuale pentru accelerarea hardware nu sunt recomandate. Dacă nu există o cerință specifică, selectează presetarea care se potrivește cu hardware-ul tău."
"hwaccelManualNotRecommended": "Argumentele manuale pentru accelerarea hardware nu sunt recomandate. Dacă nu există o cerință specifică, selectează presetarea care se potrivește cu hardware-ul tău.",
"inputsMissingGo2rtcStream": "Un câmp de mai jos indică o retransmisie go2rtc care nu mai există. Selectează o retransmisie existentă sau introdu manual URL-ul camerei, altfel această cameră nu se va putea conecta."
},
"model": {
"optimizedFor320": "Frigate este optimizat pentru un model de 320x320, care este cea mai bună alegere pentru majoritatea configurațiilor. Un model de 640x640 este mai lent și ajută doar în scenarii specifice.",
"inputDimensionsNotDetectResolution": "Lățimea și înălțimea de intrare ale modelului reprezintă dimensiunile de intrare ale modelului de detectare a obiectelor, nu rezoluția de detecție a camerei tale. Acestea ar trebui să se potrivească cu dimensiunile modelului pe care îl folosești — de obicei o dimensiune pătrată, cum ar fi 320x320 sau 640x640."
}
},
"birdseye": {
+24 -24
View File
@@ -1,9 +1,9 @@
{
"time": {
"untilForTime": "Do{{time}}",
"untilForTime": "Do {{time}}",
"untilForRestart": "Do reštartu Frigate.",
"untilRestart": "Do reštartu",
"ago": "{{timeAgo}} pred časom",
"ago": "pred {{timeAgo}}",
"justNow": "Práve teraz",
"today": "Dnes",
"yesterday": "Včera",
@@ -23,32 +23,32 @@
"am": "ráno",
"yr": "{{time}}r",
"pm": "popoludní",
"year_one": "{{time}}rok",
"year_few": "{{time}}rokov",
"year_other": "{{time}}rokov",
"year_one": "{{time}} rok",
"year_few": "{{time}} roky",
"year_other": "{{time}} rokov",
"mo": "{{time}}mes",
"month_one": "{{time}}mesiac",
"month_one": "{{time}} mesiac",
"month_few": "{{time}} mesiace",
"month_other": "{{time}} mesiaca",
"month_other": "{{time}} mesiacov",
"d": "{{time}}d",
"day_one": "{{time}}deň",
"day_few": "{{time}}dni",
"day_other": "{{time}}dni",
"day_one": "{{time}} deň",
"day_few": "{{time}} dni",
"day_other": "{{time}} dní",
"h": "{{time}}h",
"hour_one": "{{time}}hodina",
"hour_few": "{{time}}hodiny",
"hour_other": "{{time}}hodin",
"hour_one": "{{time}} hodina",
"hour_few": "{{time}} hodiny",
"hour_other": "{{time}} hodín",
"m": "{{time}} min",
"s": "{{time}}s",
"minute_one": "{{time}}minuta",
"minute_few": "{{time}}minuty",
"minute_other": "{{time}}minut",
"second_one": "{{time}}sekunda",
"second_few": "{{time}}sekundy",
"second_other": "{{time}}sekund",
"minute_one": "{{time}} minúta",
"minute_few": "{{time}} minúty",
"minute_other": "{{time}} minút",
"second_one": "{{time}} sekunda",
"second_few": "{{time}} sekundy",
"second_other": "{{time}} sekúnd",
"formattedTimestamp": {
"12hour": "Deň MMM, h:mm:ss aaa",
"24hour": "Deň MMM, HH:mm:ss"
"12hour": "d MMM, h:mm:ss aaa",
"24hour": "d MMM, HH:mm:ss"
},
"formattedTimestamp2": {
"12hour": "MM/dd h:mm:ssa",
@@ -219,9 +219,9 @@
"allCameras": "Všetky kamery",
"cameras": {
"title": "Kamery",
"count_one": "{{count}}kamera",
"count_few": "{{count}}kamery",
"count_other": "{{count}}kamier"
"count_one": "{{count}} kamera",
"count_few": "{{count}} kamery",
"count_other": "{{count}} kamier"
}
},
"export": "Exportovať",
+3 -3
View File
@@ -43,9 +43,9 @@
"title": "Čas ukončenia",
"label": "Vybrat čas ukončenia"
},
"lastHour_one": "Minulu hodinu",
"lastHour_few": "Minule{{count}}hodiny",
"lastHour_other": "Minulych{{count}}hodin"
"lastHour_one": "Posledná hodina",
"lastHour_few": "Posledné {{count}} hodiny",
"lastHour_other": "Posledných {{count}} hodín"
},
"name": {
"placeholder": "Pomenujte Export"
@@ -12,12 +12,12 @@
},
"toast": {
"success": {
"deletedCategory_one": "Vymazaná Trieda",
"deletedCategory_few": "",
"deletedCategory_other": "",
"deletedImage_one": "Vymazané Obrázky",
"deletedImage_few": "",
"deletedImage_other": "",
"deletedCategory_one": "Vymazaná {{count}} trieda",
"deletedCategory_few": "Vymazané {{count}} triedy",
"deletedCategory_other": "Vymazaných {{count}} tried",
"deletedImage_one": "Vymazaný {{count}} obrázok",
"deletedImage_few": "Vymazané {{count}} obrázky",
"deletedImage_other": "Vymazaných {{count}} obrázkov",
"categorizedImage": "Obrázok bol úspešne klasifikovaný",
"trainedModel": "Úspešne vyškolený model.",
"trainingModel": "Úspešne spustené trénovanie modelu.",
@@ -81,7 +81,7 @@
"buttonText": "Vytvorte objektový model"
},
"state": {
"title": "Žiadne modely klasifikácie štátov",
"title": "Žiadne modely klasifikácie stavov",
"description": "Vytvorte si vlastný model na monitorovanie a klasifikáciu zmien stavu v špecifických oblastiach kamery.",
"buttonText": "Vytvorte model stavu"
}
@@ -90,7 +90,7 @@
"title": "Vytvorte novú klasifikáciu",
"steps": {
"nameAndDefine": "Názov a definícia",
"stateArea": "Štátna oblasť",
"stateArea": "Oblasť stavu",
"chooseExamples": "Vyberte Príklady"
},
"step1": {
@@ -98,7 +98,7 @@
"name": "Meno",
"namePlaceholder": "Zadajte názov modelu...",
"type": "Typ",
"typeState": "štátu",
"typeState": "Stav",
"typeObject": "Objekt",
"objectLabel": "Označenie objektu",
"objectLabelPlaceholder": "Vyberte typ objektu...",
@@ -118,12 +118,12 @@
"nameOnlyNumbers": "Názov modelu nemôže obsahovať iba čísla",
"classRequired": "Vyžaduje sa aspoň 1 kurz",
"classesUnique": "Názvy tried musia byť jedinečné",
"stateRequiresTwoClasses": "Modely štátov vyžadujú aspoň 2 triedy",
"stateRequiresTwoClasses": "Stavové modely vyžadujú aspoň 2 triedy",
"objectLabelRequired": "Vyberte označenie objektu",
"objectTypeRequired": "Vyberte typ klasifikácie",
"noneNotAllowed": "Trieda 'none' nie je povolená"
},
"states": "Štátov"
"states": "Stavy"
},
"step2": {
"description": "Vyberte kamery a definujte oblasť, ktorú chcete pre každú kameru monitorovať. Model klasifikuje stav týchto oblastí.",
@@ -134,7 +134,7 @@
},
"step3": {
"selectImagesPrompt": "Vybrať všetky obrázky s: {{className}}",
"selectImagesDescription": "Kliknite na obrázky a vyberte ich. Po dokončení tejto hodiny kliknite na tlačidlo Pokračovať.",
"selectImagesDescription": "Kliknite na obrázky a vyberte ich. Po dokončení tejto triedy kliknite na tlačidlo Pokračovať.",
"generating": {
"title": "Generovanie vzorových obrázkov",
"description": "Frigate načítava reprezentatívne obrázky z vašich nahrávok. Môže to chvíľu trvať..."
@@ -155,9 +155,9 @@
"classifyFailed": "Nepodarilo sa klasifikovať obrázky: {{error}}"
},
"generateSuccess": "Vzorové obrázky boli úspešne vygenerované",
"allImagesRequired_one": "Uveďte všetky obrázky. {{count}} obrázok zostáva.",
"allImagesRequired_few": "Uveďte všetky obrázky. {{count}} obrázky zostávajú.",
"allImagesRequired_other": "Uveďte všetky obrázky. {{count}} obrázkov zostávajú.",
"allImagesRequired_one": "Klasifikujte všetky obrázky. Zostáva {{count}} obrázok.",
"allImagesRequired_few": "Klasifikujte všetky obrázky. Zostávajú {{count}} obrázky.",
"allImagesRequired_other": "Klasifikujte všetky obrázky. Zostáva {{count}} obrázkov.",
"modelCreated": "Model vytvorený úspešne. Použite aktuálne klasifikácie na pridanie obrázkov pre chýbajúce stavy a nasledne dajte trénovať model.",
"missingStatesWarning": {
"title": "Chýbajúce príklady stavov",
@@ -174,7 +174,7 @@
},
"menu": {
"objects": "Objekty",
"states": "Štátov"
"states": "Stavy"
},
"details": {
"scoreInfo": "Skóre predstavuje priemernú istotu klasifikácie naprieč všetkými detekciami tohoto objektu.",
+2 -2
View File
@@ -40,8 +40,8 @@
"detail": {
"noDataFound": "Žiadne podrobné údaje na kontrolu",
"aria": "Prepnúť zobrazenie detailov",
"trackedObject_one": "objekt",
"trackedObject_other": "objekty",
"trackedObject_one": "{{count}} objekt",
"trackedObject_other": "{{count}} objektov",
"noObjectDetailData": "Nie sú k dispozícii žiadne podrobné údaje o objekte.",
"label": "Detail",
"settings": "Nastavenia podrobného zobrazenia",
+11 -9
View File
@@ -18,12 +18,12 @@
"title": "Nahrať obrázok tváre",
"desc": "Nahrajte obrázok na skenovanie tvárí a zahrňte ho do {{pageToggle}}"
},
"collections": "Zbierky",
"collections": "Kolekcie",
"createFaceLibrary": {
"title": "Vytvoriť Zbierku",
"desc": "Vytvoriť novú zbierku",
"new": "Vytvoriť novú tvár",
"nextSteps": "Vybudovanie silného základu:<li>Použite kartu Nedávne rozpoznania na výber a trénovanie obrázkov pre každú rozpoznanú osobu.</li><li>Pre dosiahnutie najlepších výsledkov sa zamerajte na priame obrázky; vyhnite sa trénovaniu obrázkov, ktoré zachytávajú tváre pod uhlom.</li></ul>"
"nextSteps": "Vybudovanie silného základu:<li>Použite kartu Nedávno rozpoznané tváre na výber a trénovanie obrázkov pre každú rozpoznanú osobu.</li><li>Pre dosiahnutie najlepších výsledkov sa zamerajte na priame obrázky; vyhnite sa trénovaniu obrázkov, ktoré zachytávajú tváre pod uhlom.</li></ul>"
},
"steps": {
"faceName": "Zadajte Meno tváre",
@@ -34,8 +34,8 @@
}
},
"train": {
"title": "Nedávne uznania",
"aria": "Vyberte posledné rozpoznania",
"title": "Nedávno rozpoznané tváre",
"aria": "Vyberte nedávno rozpoznané tváre",
"empty": "Neexistujú žiadne predchádzajúce pokusy o rozpoznávanie tváre"
},
"selectItem": "Vyberte {{item}}",
@@ -85,9 +85,10 @@
"deletedName_one": "{{count}} tvár bola úspešne odstránená.",
"deletedName_few": "{{count}} tváre boli úspešne odstránené.",
"deletedName_other": "{{count}} tvárí bolo úspešne odstránených.",
"renamedFace": "Úspešne premenovaná tvár na {{name}}",
"trainedFace": "Úspešne natrénovaná tvár.",
"updatedFaceScore": "Úspešne aktualizované skóre tváre."
"renamedFace": "Tvár bola úspešne premenovaná na {{name}}.",
"trainedFace": "Tvár bola úspešne natrénovaná.",
"updatedFaceScore": "Skóre tváre bolo úspešne aktualizované na {{name}} ({{score}}).",
"reclassifiedFace": "Tvár bola úspešne preklasifikovaná."
},
"error": {
"uploadingImageFailed": "Nepodarilo sa nahrať obrázok: {{errorMessage}}",
@@ -95,8 +96,9 @@
"deleteFaceFailed": "Nepodarilo sa odstrániť: {{errorMessage}}",
"deleteNameFailed": "Nepodarilo sa odstrániť meno: {{errorMessage}}",
"renameFaceFailed": "Nepodarilo sa premenovať tvár: {{errorMessage}}",
"trainFailed": "Nepodarilo sa trénovať: {{errorMessage}}",
"updateFaceScoreFailed": "Nepodarilo sa aktualizovať skóre tváre: {{errorMessage}}"
"trainFailed": "Nepodarilo sa natrénovať tvár: {{errorMessage}}",
"updateFaceScoreFailed": "Nepodarilo sa aktualizovať skóre tváre: {{errorMessage}}",
"reclassifyFailed": "Nepodarilo sa preklasifikovať tvár: {{errorMessage}}"
}
}
}
+6 -6
View File
@@ -339,9 +339,9 @@
},
"add": "Pridať zónu",
"edit": "Upraviť zónu",
"point_one": "{{count}}bod",
"point_few": "{{count}}body",
"point_other": "{{count}}bodov"
"point_one": "{{count}} bod",
"point_few": "{{count}} body",
"point_other": "{{count}} bodov"
},
"motionMasks": {
"label": "Maska Detekcia pohybu",
@@ -380,8 +380,8 @@
"add": "Pridať Masku Objektu",
"edit": "Upraviť Masku Objektu",
"context": "Masky filtrovania objektov slúžia na odfiltrovanie falošných poplachov konkrétneho typu objektu na základe jeho umiestnenia.",
"point_one": "{{count}}bod",
"point_few": "{{count}}body",
"point_one": "{{count}} bod",
"point_few": "{{count}} body",
"point_other": "{{count}} bodov",
"clickDrawPolygon": "Kliknutím nakreslite polygón do obrázku.",
"objects": {
@@ -397,7 +397,7 @@
}
},
"motionMaskLabel": "Maska Detekcia pohybu {{number}}",
"objectMaskLabel": "Maska Objektu {{number}} {{label}}"
"objectMaskLabel": "Maska objektu {{number}}"
},
"motionDetectionTuner": {
"title": "Ladenie detekcie pohybu",
+21 -20
View File
@@ -3,7 +3,7 @@
"cameras": "Štatistiky kamier - Frigate",
"storage": "Štatistiky úložiska - Frigate",
"general": "Všeobecné štatistiky - Frigate",
"enrichments": "Štatistiky obohatenia - Frigate",
"enrichments": "Štatistiky AI funkcií - Frigate",
"logs": {
"frigate": "Protokoly Frigate - Frigate",
"go2rtc": "Protokoly Go2RTC - Frigate",
@@ -36,7 +36,7 @@
}
},
"general": {
"title": "Hlavný",
"title": "Všeobecné",
"detector": {
"title": "Detektory",
"inferenceSpeed": "Detekčná rýchlosť",
@@ -96,7 +96,7 @@
}
},
"storage": {
"title": "Skladovanie",
"title": "Úložisko",
"overview": "Prehľad",
"recordings": {
"title": "Nahrávky",
@@ -108,11 +108,11 @@
"warning": "Aktuálna veľkosť SHM {{total}}MB je príliš malá. Zvýšte ju aspoň na {{min_shm}}MB."
},
"cameraStorage": {
"title": "Úložisko kamery",
"title": "Úložisko kamier",
"camera": "Kamera",
"unusedStorageInformation": "Nepoužité informácie o úložisku",
"storageUsed": "Skladovanie",
"percentageOfTotalUsed": "Percento z celkového počtu",
"unusedStorageInformation": "Informácie o nevyužitom úložisku",
"storageUsed": "Úložisko",
"percentageOfTotalUsed": "Percento z celku",
"bandwidth": "Šírka pásma",
"unused": {
"title": "Nepoužité",
@@ -125,7 +125,7 @@
"overview": "Prehľad",
"info": {
"aspectRatio": "pomer strán",
"cameraProbeInfo": "{{camera}} Informácie o sonde kamery",
"cameraProbeInfo": "Údaje o kamere {{camera}}",
"streamDataFromFFPROBE": "Údaje zo streamu sa získavajú pomocou príkazu <code>ffprobe</code>.",
"fetching": "Načítavajú sa údaje z kamery",
"stream": "Stream {{idx}}",
@@ -137,32 +137,33 @@
"audio": "Zvuk:",
"error": "Chyba: {{error}}",
"tips": {
"title": "Informácie o kamerovej sonde"
"title": "Údaje o kamere"
}
},
"framesAndDetections": "Rámy / Detekcie",
"framesAndDetections": "Snímky / Detekcie",
"label": {
"camera": "kamera",
"detect": "odhaliť",
"detect": "detekcie",
"skipped": "preskočené",
"ffmpeg": "FFmpeg",
"capture": "zachyt",
"capture": "zachytávanie",
"cameraFfmpeg": "{{camName}} FFmpeg",
"cameraCapture": "zachytiť{{camName}}",
"cameraDetect": "Detekcia {{camName}}",
"cameraCapture": "{{camName}} zachytávanie",
"cameraDetect": "{{camName}} detekcie",
"overallFramesPerSecond": "celkový počet snímok za sekundu",
"overallDetectionsPerSecond": "celkový počet detekcií za sekundu",
"overallSkippedDetectionsPerSecond": "celkový počet vynechaných detekcií za sekundu",
"overallSkippedDetectionsPerSecond": "celkový počet preskočených detekcií za sekundu",
"cameraFramesPerSecond": "{{camName}} snímky za sekundu",
"cameraDetectionsPerSecond": "{{camName}}detekcie za sekundu",
"cameraSkippedDetectionsPerSecond": "{{camName}} vynechaných detekcií za sekundu"
"cameraDetectionsPerSecond": "{{camName}} detekcie za sekundu",
"cameraSkippedDetectionsPerSecond": "{{camName}} preskočené detekcie za sekundu",
"cameraGpu": "{{camName}} GPU"
},
"toast": {
"success": {
"copyToClipboard": "Dáta sondy boli skopírované do schránky."
"copyToClipboard": "Údaje o kamere boli skopírované do schránky."
},
"error": {
"unableToProbeCamera": "Nepodarilo sa overiť kameru: {{errorMessage}}"
"unableToProbeCamera": "Nepodarilo sa načítať údaje z kamery: {{errorMessage}}"
}
}
},
@@ -178,7 +179,7 @@
"shmTooLow": "Alokácia /dev/shm ({{total}} MB) by sa mala zvýšiť aspoň na {{min}} MB."
},
"enrichments": {
"title": "Obohatenia",
"title": "AI funkcie",
"infPerSecond": "Inferencie za sekundu",
"embeddings": {
"image_embedding": "Vkladanie obrázkov",
+5 -1
View File
@@ -75,5 +75,9 @@
"24hour": "MM-dd-yy-HH-mm-ss"
}
},
"readTheDocumentation": "Прочитајте документацију"
"readTheDocumentation": "Прочитајте документацију",
"menu": {
"system": "Систем",
"profiles": "Профили"
}
}
File diff suppressed because it is too large Load Diff
+166 -166
View File
@@ -7,131 +7,131 @@
"motorcycle": "Motorcykel",
"whispering": "Viskning",
"bus": "Buss",
"babbling": "Babblande",
"whoop": "Skrika",
"babbling": "Babbel",
"whoop": "Jubelrop",
"camera": "Kamera",
"laughter": "Skratt",
"snicker": "Fnittra",
"snicker": "Fnittrande",
"crying": "Gråt",
"choir": "Kör",
"singing": "Sjunger",
"singing": "Sång",
"yodeling": "Joddling",
"chant": "Sång",
"chant": "Mässande",
"mantra": "Mantra",
"synthetic_singing": "Syntetisk sång",
"rapping": "Rappar",
"groan": "Stöna",
"grunt": "Grymta",
"whistling": "Visslar",
"breathing": "Andas",
"rapping": "Rappning",
"groan": "Stönande",
"grunt": "Gruntande",
"whistling": "Vissling",
"breathing": "Andning",
"snoring": "Snarkning",
"gasp": "Flämtning",
"pant": "Flämta",
"cough": "Hosta",
"pant": "Flämtande",
"cough": "Hostning",
"throat_clearing": "Halsrensning",
"sneeze": "Nysa",
"run": "Spring",
"shuffle": "Blanda",
"sneeze": "Nysning",
"run": "Löpning",
"shuffle": "Släpande steg",
"footsteps": "Fotsteg",
"chewing": "Tugga",
"biting": "Biter",
"gargling": "Gurgling",
"chewing": "Tuggande",
"biting": "Bitande",
"gargling": "Gurglande",
"stomach_rumble": "Magljud",
"burping": "Rapning",
"hiccup": "Hicka",
"fart": "Fis",
"hands": "Händer",
"finger_snapping": "Knäppning med fingrar",
"clapping": "Klappar",
"clapping": "Handklappning",
"heartbeat": "Hjärtslag",
"heart_murmur": "Blåsljud i hjärtat",
"cheering": "Glädjande",
"cheering": "Jubel",
"applause": "Applåder",
"chatter": "Prat",
"crowd": "Folkmassa",
"animal": "Djur",
"yip": "Japp",
"yip": "Gällt skall",
"howl": "Tjut",
"bow_wow": "Bow Wow",
"bow_wow": "Hundskall",
"growling": "Morrande",
"whimper_dog": "Hund gnäll",
"whimper_dog": "Hundgnäll",
"cat": "Katt",
"meow": "Mjau",
"hiss": "Väsa",
"hiss": "Väsande",
"caterwaul": "Kattgräl",
"livestock": "Boskap",
"horse": "Häst",
"clip_clop": "Klipp Clop",
"neigh": "Gnägga",
"clip_clop": "Hovklapper",
"neigh": "Gnäggande",
"cattle": "Boskap",
"oink": "Oink",
"oink": "Nöffande",
"goat": "Get",
"bleat": "Bräka",
"bleat": "Bräkande",
"fowl": "Fjäderfä",
"cluck": "Kluck",
"cock_a_doodle_doo": "kukilikuk",
"turkey": "kalkon",
"gobble": "Gobble",
"cluck": "Kacklande",
"cock_a_doodle_doo": "Kuckeliku",
"turkey": "Kalkon",
"gobble": "Kalkonläte",
"duck": "Anka",
"quack": "Quack",
"quack": "Kvackande",
"goose": "Gås",
"honk": "Tuta",
"honk": "Tutande",
"wild_animals": "Vilda djur",
"roaring_cats": "Rytande katter",
"roar": "Rytande",
"bird": "Fågel",
"chirp": "Kvittra",
"squawk": "Skriande",
"chirp": "Kvittrande",
"squawk": "Skrän",
"pigeon": "Duva",
"caw": "Kraxa",
"caw": "Kraxande",
"owl": "Uggla",
"hoot": "Tuta",
"hoot": "Ugglehoande",
"dogs": "Hundar",
"rats": "Råttor",
"mouse": "Älg",
"mouse": "Mus",
"music": "Musik",
"sigh": "Suck",
"child_singing": "Barnsång",
"child_singing": "Barn som sjunger",
"sheep": "Får",
"wheeze": "Väsande",
"wheeze": "Väsande andning",
"dog": "Hund",
"sniff": "Sniffa",
"humming": "Hummar",
"sniff": "Sniffning",
"humming": "Nynnande",
"pets": "Husdjur",
"coo": "Kuttra",
"snort": "Fnysa",
"coo": "Kuttrande",
"snort": "Frustande",
"children_playing": "Barn som leker",
"bark": "Skall",
"purr": "Spinna",
"moo": "Muu",
"purr": "Spinnande",
"moo": "Råmande",
"cowbell": "Koskälla",
"pig": "Gris",
"chicken": "Kyckling",
"crow": "Kråka",
"frog": "Groda",
"patter": "Droppar",
"patter": "Smattrande",
"insect": "Insekt",
"cricket": "Syrsa",
"fly": "Fluga",
"buzz": "Surr",
"croak": "Kvack",
"rattle": "Skallra",
"croak": "Kväkande",
"rattle": "Skrammel",
"musical_instrument": "Musikinstrument",
"plucked_string_instrument": "Stränginstrument",
"plucked_string_instrument": "Knäppinstrument",
"guitar": "Gitarr",
"electric_guitar": "Elektrisk Gitarr",
"electric_guitar": "Elgitarr",
"bass_guitar": "Basgitarr",
"steel_guitar": "Stålgitarr",
"tapping": "Knackning",
"snake": "Orm",
"acoustic_guitar": "Aukustisk gitarr",
"acoustic_guitar": "Akustisk gitarr",
"mosquito": "Mygga",
"flapping_wings": "Vingslag",
"whale_vocalization": "Val-ljud",
"whale_vocalization": "Valläten",
"bass_drum": "Bastrumma",
"timpani": "Pukor",
"tabla": "Tabla",
"hi_hat": "Hi-Hat",
"hi_hat": "Hi-hat",
"wood_block": "Träblock",
"tambourine": "Tamburin",
"maraca": "Maracas",
@@ -142,16 +142,16 @@
"mandolin": "Mandolin",
"boat": "Båt",
"train": "Tåg",
"bowed_string_instrument": "stråkinstrument",
"bowed_string_instrument": "Stråkinstrument",
"banjo": "Banjo",
"sitar": "Sitar",
"clock": "Klocka",
"keyboard": "Tangentbord",
"vehicle": "Fordon",
"skateboard": "Skatebord",
"skateboard": "Skateboard",
"door": "Dörr",
"blender": "Blandare",
"sink": "Vask",
"sink": "Diskho",
"hair_dryer": "Hårfön",
"toothbrush": "Tandborste",
"scissors": "Sax",
@@ -164,22 +164,22 @@
"electronic_organ": "Elektronisk orgel",
"hammond_organ": "Hammondorgel",
"synthesizer": "Synthesizer",
"sampler": "Provtagare",
"sampler": "Sampler",
"harpsichord": "Cembalo",
"percussion": "Slagverk",
"drum_kit": "Trumset",
"drum_machine": "Trummaskin",
"drum": "Trumma",
"french_horn": "Franskt horn",
"french_horn": "Valthorn",
"trumpet": "Trumpet",
"flute": "Flöjt",
"gong": "Gonggong",
"gong": "Gong",
"tubular_bells": "Rörklockor",
"mallet_percussion": "Malletinstrument",
"mallet_percussion": "Klubbaslagverk",
"marimba": "Marimba",
"glockenspiel": "Klockspel",
"vibraphone": "Vibrafon",
"steelpan": "Stålpanna",
"steelpan": "Steelpan",
"orchestra": "Orkester",
"brass_instrument": "Bleckblåsinstrument",
"trombone": "Trombon",
@@ -194,23 +194,23 @@
"harp": "Harpa",
"bell": "Klocka",
"church_bell": "Kyrkklocka",
"jingle_bell": "Bjällerklang",
"jingle_bell": "Bjällra",
"bicycle_bell": "Cykelklocka",
"tuning_fork": "Stämgaffel",
"chime": "Klämta",
"chime": "Klockklang",
"wind_chime": "Vindspel",
"harmonica": "Munspel",
"accordion": "Dragspel",
"bagpipes": "Säckpipor",
"didgeridoo": "Didjeridu",
"theremin": "Teremin",
"singing_bowl": "Sjungande skål",
"scratching": "Repa",
"singing_bowl": "Klangskål",
"scratching": "Skrapande",
"pop_music": "Popmusik",
"hip_hop_music": "Hiphopmusik",
"beatboxing": "Beatboxning",
"rock_music": "Rockmusik",
"heavy_metal": "Heavy Metal musik",
"heavy_metal": "Heavy metal",
"punk_rock": "Punkrock",
"grunge": "Grunge",
"progressive_rock": "Progressiv rock",
@@ -219,22 +219,22 @@
"rhythm_and_blues": "Rytm och blues",
"soul_music": "Soulmusik",
"reggae": "Reggae",
"country": "Land",
"country": "Countrymusik",
"swing_music": "Swingmusik",
"bluegrass": "Bluegrass",
"funk": "Funk",
"folk_music": "Folkmusik",
"middle_eastern_music": "Mellanösternmusik",
"jazz": "Jazz",
"disco": "Disko",
"disco": "Disco",
"classical_music": "Klassisk musik",
"opera": "Opera",
"electronic_music": "Elektronisk musik",
"house_music": "Housemusik",
"techno": "Tekno",
"techno": "Techno",
"dubstep": "Dubstep",
"drum_and_bass": "Trumma och bas",
"electronica": "Elektronisk musik",
"drum_and_bass": "Drum and bass",
"electronica": "Electronica",
"electronic_dance_music": "Elektronisk dansmusik",
"ambient_music": "Ambientmusik",
"trance_music": "Trancemusik",
@@ -243,24 +243,24 @@
"flamenco": "Flamenco",
"blues": "Blues",
"music_for_children": "Musik för barn",
"new-age_music": "New Age-musik",
"new-age_music": "New age-musik",
"vocal_music": "Vokalmusik",
"a_capella": "A cappella",
"music_of_africa": "Afrikansk musik",
"afrobeat": "Afrobeat",
"christian_music": "Kristen musik",
"gospel_music": "Gospelmusik",
"music_of_asia": "Asiens musik",
"music_of_asia": "Asiatisk musik",
"carnatic_music": "Karnatisk musik",
"music_of_bollywood": "Bollywoods musik",
"music_of_bollywood": "Bollywoodmusik",
"ska": "Ska",
"traditional_music": "Traditionell musik",
"independent_music": "Oberoende musik",
"independent_music": "Indiemusik",
"song": "Låt",
"background_music": "Bakgrundsmusik",
"theme_music": "Temamusik",
"jingle": "Klingande",
"soundtrack_music": "Soundtrackmusik",
"jingle": "Jingel",
"soundtrack_music": "Filmmusik",
"lullaby": "Vaggvisa",
"video_game_music": "Videospelsmusik",
"christmas_music": "Julmusik",
@@ -268,7 +268,7 @@
"wedding_music": "Bröllopsmusik",
"happy_music": "Glad musik",
"sad_music": "Sorglig musik",
"tender_music": "Öm musik",
"tender_music": "Ljuv musik",
"exciting_music": "Spännande musik",
"angry_music": "Arg musik",
"scary_music": "Skräckmusik",
@@ -281,14 +281,14 @@
"rain": "Regn",
"raindrop": "Regndroppe",
"rain_on_surface": "Regn på ytan",
"stream": "Strömma",
"stream": "Bäck",
"waterfall": "Vattenfall",
"ocean": "Hav",
"waves": "Vågor",
"steam": "Ånga",
"gurgling": "Gurglande",
"fire": "Brand",
"crackle": "Spraka",
"fire": "Eld",
"crackle": "Sprakande",
"sailboat": "Segelbåt",
"rowboat": "Roddbåt",
"motorboat": "Motorbåt",
@@ -297,34 +297,34 @@
"power_windows": "Elfönster",
"skidding": "Slirning",
"tire_squeal": "Däckskrik",
"toot": "Tuta",
"toot": "Kort signal",
"car_alarm": "Billarm",
"car_passing_by": "Bil som passerar",
"race_car": "Racerbil",
"race_car": "Tävlingsbil",
"truck": "Lastbil",
"air_brake": "Luftbroms",
"air_horn": "Lufthorn",
"reversing_beeps": "Backningljud",
"air_brake": "Tryckluftsbroms",
"air_horn": "Tryckluftshorn",
"reversing_beeps": "Backningssignal",
"ice_cream_truck": "Glassbil",
"emergency_vehicle": "Akutbil",
"emergency_vehicle": "Utryckningsfordon",
"police_car": "Polisbil",
"ambulance": "Ambulans",
"fire_engine": "Brandbil",
"traffic_noise": "Trafikbuller",
"rail_transport": "Järnvägstransport",
"train_whistle": "Tågvissla",
"train_whistle": "Tågvissling",
"train_horn": "Tåghorn",
"railroad_car": "Järnvägsvagn",
"train_wheels_squealing": "Tåghjul skriker",
"train_wheels_squealing": "Gnisslande tåghjul",
"subway": "Tunnelbana",
"aircraft": "Flygplan",
"aircraft_engine": "Flygmotor",
"aircraft_engine": "Flygplansmotor",
"jet_engine": "Jetmotor",
"propeller": "Propeller",
"helicopter": "Helikopter",
"fixed-wing_aircraft": "Flygplan med fasta vingar",
"engine": "Motor",
"light_engine": "Ljusmotor",
"light_engine": "Lätt motor",
"lawn_mower": "Gräsklippare",
"chainsaw": "Motorsåg",
"doorbell": "Dörrklocka",
@@ -333,30 +333,30 @@
"alarm": "Larm",
"telephone": "Telefon",
"ringtone": "Ringsignal",
"dial_tone": "Rington",
"dial_tone": "Kopplingston",
"busy_signal": "Upptagetsignal",
"alarm_clock": "Alarmklocka",
"alarm_clock": "Väckarklocka",
"smoke_detector": "Brandvarnare",
"fire_alarm": "Brandlarm",
"dental_drill's_drill": "Tandläkarborr",
"medium_engine": "Medelstor motor",
"heavy_engine": "Tung motor",
"engine_knocking": "Motorknackning",
"engine_starting": "Motor startar",
"engine_starting": "Motorstart",
"idling": "Tomgång",
"accelerating": "Accelererar",
"accelerating": "Acceleration",
"ding-dong": "Ring-ring",
"sliding_door": "Skjutdörr",
"slam": "Smäll",
"knock": "Knack",
"tap": "Knacka",
"squeak": "Gnissla",
"tap": "Lätt knackning",
"squeak": "Gnissel",
"cupboard_open_or_close": "Skåp öppnas eller stängs",
"drawer_open_or_close": "Låda öppnas eller stängs",
"dishes": "Tallrikar",
"cutlery": "Bestick",
"chopping": "Hackning",
"frying": "Steka",
"frying": "Stekning",
"microwave_oven": "Mikrovågsugn",
"water_tap": "Vattenkran",
"bathtub": "Badkar",
@@ -366,22 +366,22 @@
"keys_jangling": "Nycklar som klirrar",
"coin": "Mynt",
"electric_shaver": "Elektrisk rakhyvel",
"shuffling_cards": "Blanda kort",
"typing": "Skrivar",
"shuffling_cards": "Kortblandning",
"typing": "Skrivande på tangentbord",
"typewriter": "Skrivmaskin",
"writing": "Skriva",
"telephone_bell_ringing": "Telefonen ringer",
"telephone_dialing": "Ljud för telefonuppringning",
"writing": "Skrivande",
"telephone_bell_ringing": "Telefonringning",
"telephone_dialing": "Telefonuppringning",
"siren": "Siren",
"civil_defense_siren": "Civilförsvarssiren",
"buzzer": "Summer",
"buzzer": "Summerljud",
"foghorn": "Mistlur",
"whistle": "Vissla",
"whistle": "Vissling",
"steam_whistle": "Ångvissla",
"mechanisms": "Mekanismer",
"ratchet": "Spärrhake",
"tick": "Tick",
"tick-tock": "Tick Tack",
"tick-tock": "Tick-tack",
"gears": "Kugghjul",
"pulleys": "Remskivor",
"sewing_machine": "Symaskin",
@@ -389,115 +389,115 @@
"mechanical_fan": "Mekanisk fläkt",
"air_conditioning": "Luftkonditionering",
"cash_register": "Kassaapparat",
"single-lens_reflex_camera": "Enkellinsreflexkamera",
"single-lens_reflex_camera": "Spegelreflexkamera",
"tools": "Verktyg",
"hammer": "Hammare",
"jackhammer": "Tryckluftsborr",
"jackhammer": "Bilningshammare",
"sawing": "Sågning",
"filing": "Filning",
"sanding": "Sandning",
"power_tool": "Elverktyg",
"drill": "Borra",
"drill": "Borrning",
"explosion": "Explosion",
"gunshot": "Skottlossning",
"machine_gun": "Kulspruta",
"fusillade": "Fusillad",
"artillery_fire": "Artillerieeld",
"cap_gun": "Kapsylpistol",
"gunshot": "Skott",
"machine_gun": "Kulspruteeld",
"fusillade": "Salva",
"artillery_fire": "Artillerield",
"cap_gun": "Knallpulverpistol",
"fireworks": "Fyrverkeri",
"firecracker": "Smällare",
"burst": "Brista",
"eruption": "Utbrott",
"burst": "Knall",
"eruption": "Vulkanutbrott",
"boom": "Pang",
"wood": "Trä",
"chop": "Hugga",
"splinter": "Flisa",
"crack": "Spricka",
"chop": "Huggande",
"splinter": "Splittring",
"crack": "Knak",
"glass": "Glas",
"chink": "Skaka",
"shatter": "Splittras",
"chink": "Klirr",
"shatter": "Krossat glas",
"silence": "Tystnad",
"sound_effect": "Ljudeffekt",
"environmental_noise": "Miljöbuller",
"static": "Statisk",
"static": "Statiskt brus",
"white_noise": "Vitt brus",
"pink_noise": "Rosa brus",
"television": "Tv",
"television": "TV",
"radio": "Radio",
"field_recording": "Fältinspelning",
"scream": "Skrika",
"sodeling": "dling",
"scream": "Skrik",
"sodeling": "Joddling",
"chird": "Ackord",
"change_ringing": "Ljud från myntväxling",
"change_ringing": "Växelringning",
"shofar": "Shofar",
"liquid": "Flytande",
"liquid": "Vätska",
"splash": "Stänk",
"slosh": "Plaska",
"squish": "Stryk",
"slosh": "Skvalp",
"squish": "Klafs",
"drip": "Dropp",
"pour": "Hälla",
"trickle": "Sippra",
"gush": "Välla",
"fill": "Fylla",
"spray": "Sprej",
"pump": "Pump",
"stir": "Rör",
"boiling": "Kokande",
"pour": "Hällande",
"trickle": "Rinnande",
"gush": "Forsande",
"fill": "Fyllning",
"spray": "Sprejning",
"pump": "Pumpning",
"stir": "Omrörning",
"boiling": "Kokning",
"sonar": "Ekolod",
"arrow": "Pil",
"whoosh": "Svischande",
"whoosh": "Svisch",
"thump": "Dunk",
"thunk": "Dunkande",
"electronic_tuner": "Elektronisk stämapparat",
"effects_unit": "Effektenhet",
"chorus_effect": "Chorus-effekt",
"chorus_effect": "Choruseffekt",
"basketball_bounce": "Basketbollstuds",
"bang": "Smäll",
"slap": "Slag",
"whack": "Slog",
"smash": "Smälla",
"breaking": "Brytning",
"whack": "Hårt slag",
"smash": "Krasch",
"breaking": "Något går sönder",
"bouncing": "Studsande",
"whip": "Piska",
"flap": "Flaxa",
"scratch": "Repa",
"scrape": "Skrapa",
"rub": "Gnugga",
"roll": "Rulla",
"crushing": "Krossa",
"crumpling": "Skrynkliga",
"whip": "Piskrapp",
"flap": "Flaxande",
"scratch": "Skrapande",
"scrape": "Skrapljud",
"rub": "Gnuggande",
"roll": "Rullande",
"crushing": "Krossning",
"crumpling": "Skrynkling",
"tearing": "Rivning",
"beep": "Pip",
"ping": "Ping",
"ding": "Ding",
"clang": "Klang",
"squeal": "Skrika",
"squeal": "Gällt skrik",
"creak": "Knarr",
"rustle": "Prassel",
"whir": "Surra",
"clatter": "Slammer",
"sizzle": "Fräsa vid matlagning",
"whir": "Surrande",
"clatter": "Skrammel",
"sizzle": "Fräsande",
"clicking": "Klickande",
"clickety_clack": "Klickigt klack",
"rumble": "Mullrande",
"clickety_clack": "Klapprande",
"rumble": "Muller",
"plop": "Plopp",
"hum": "Brum",
"zing": "Vinande",
"boing": "Pling",
"boing": "Fjädrande ljud",
"crunch": "Knastrande",
"sine_wave": "Sinusvåg",
"harmonic": "Harmonisk",
"harmonic": "Överton",
"chirp_tone": "Kvittringston",
"pulse": "Puls",
"inside": "Inuti",
"outside": "Utanför",
"reverberation": "Eko",
"inside": "Inomhus",
"outside": "Utomhus",
"reverberation": "Efterklang",
"echo": "Eko",
"noise": "Buller",
"mains_hum": "Huvudbrum",
"mains_hum": "Nätbrum",
"distortion": "Distorsion",
"sidetone": "Sidoton",
"sidetone": "Medhörning",
"cacophony": "Kakofoni",
"throbbing": "Bultande",
"throbbing": "Pulserande ljud",
"vibration": "Vibration"
}
+44 -44
View File
@@ -5,21 +5,21 @@
"untilRestart": "Tills omstart",
"ago": "{{timeAgo}} sedan",
"justNow": "Just nu",
"today": "Idag",
"yesterday": "Igår",
"today": "I dag",
"yesterday": "I går",
"last14": "Senaste 14 dagarna",
"thisMonth": "Denna månad",
"lastMonth": "Förra månaden",
"30minutes": "30 minuter",
"1hour": "1 timma",
"1hour": "1 timme",
"12hours": "12 timmar",
"pm": "pm",
"am": "am",
"yr": "{{time}}år",
"mo": "{{time}}må",
"yr": "{{time}} år",
"mo": "{{time}} n",
"month_one": "{{time}} månad",
"month_other": "{{time}} månader",
"d": "{{time}}d",
"d": "{{time}} d",
"last7": "Senaste 7 dagarna",
"5minutes": "5 minuter",
"last30": "Senaste 30 dagarna",
@@ -33,15 +33,15 @@
"second_other": "{{time}} sekunder",
"formattedTimestampMonthDayYear": {
"12hour": "d MMM, yyyy",
"24hour": "d MMM, yyy"
"24hour": "d MMM, yyyy"
},
"h": "{{time}}t",
"h": "{{time}} h",
"hour_one": "{{time}} timme",
"hour_other": "{{time}} timmar",
"m": "{{time}}m",
"m": "{{time}} min",
"minute_one": "{{time}} minut",
"minute_other": "{{time}} minuter",
"s": "{{time}}s",
"s": "{{time}} s",
"formattedTimestamp": {
"12hour": "d MMM, 'kl.' h:mm:ss a",
"24hour": "d MMM, HH:mm:ss"
@@ -63,7 +63,7 @@
"24hour": "d MMM, HH:mm"
},
"formattedTimestampMonthDayYearHourMinute": {
"12hour": "d MMM yyy, h:mm aaa",
"12hour": "d MMM yyyy, h:mm aaa",
"24hour": "d MMM yyyy, HH:mm"
},
"formattedTimestampMonthDay": "d MMM",
@@ -83,7 +83,7 @@
"enabled": "Aktiverad",
"enable": "Aktivera",
"disabled": "Inaktiverad",
"pictureInPicture": "Bild-i-Bild",
"pictureInPicture": "Bild-i-bild",
"twoWayTalk": "Tvåvägskommunikation",
"edit": "Redigera",
"copyCoordinates": "Kopiera koordinater",
@@ -102,9 +102,9 @@
"close": "Stäng",
"copy": "Kopiera",
"back": "Tillbaka",
"history": "Historia",
"history": "Historik",
"fullscreen": "Fullskärm",
"exitFullscreen": "Lämna Fullskärm",
"exitFullscreen": "Avsluta helskärm",
"cameraAudio": "Kameraljud",
"on": "PÅ",
"off": "AV",
@@ -114,14 +114,14 @@
"download": "Ladda ner",
"info": "Info",
"export": "Exportera",
"continue": "Fortsätta",
"continue": "Fortsätt",
"add": "Lägg till",
"applying": "Verkställer…",
"undo": "Ångra",
"copiedToClipboard": "Kopieras till urklipp",
"modified": "Modifiera",
"copiedToClipboard": "Kopierat till urklipp",
"modified": "Ändrad",
"overridden": "Åsidosatt",
"resetToGlobal": "Återställ till Global",
"resetToGlobal": "Återställ till globalt värde",
"resetToDefault": "Återställ till standard",
"saveAll": "Spara alla",
"savingAll": "Sparar alla…",
@@ -163,7 +163,7 @@
"label": "Använd systeminställningarna för språk"
},
"en": "English (Engelska)",
"ptBR": "Português brasileiro (Brasiliansk Portugisiska)",
"ptBR": "Português brasileiro (brasiliansk portugisiska)",
"ca": "Català (Katalanska)",
"sr": "Српски (Serbiska)",
"sl": "Slovenščina (Slovenska)",
@@ -180,7 +180,7 @@
"withSystem": {
"label": "Använd systeminställningarna för ljust eller mörkt läge"
},
"label": "Mörk Läge",
"label": "Mörkt läge",
"light": "Ljus",
"dark": "Mörk"
},
@@ -188,9 +188,9 @@
"label": "Tema",
"blue": "Blå",
"green": "Grön",
"nord": "North",
"nord": "Nord",
"default": "Standard",
"highcontrast": "Hög Kontrast",
"highcontrast": "Hög kontrast",
"red": "Röd"
},
"export": "Exportera",
@@ -198,32 +198,32 @@
"user": {
"title": "Användare",
"account": "Konto",
"current": "Nuvarande Användare: {{user}}",
"current": "Nuvarande användare: {{user}}",
"anonymous": "anonym",
"logout": "Logga ut",
"setPassword": "Sätt Lösenord"
"setPassword": "Ange lösenord"
},
"systemMetrics": "Systemstatus",
"configuration": "Konfiguration",
"explore": "Utforska",
"live": {
"cameras": {
"count_one": "{{count}} Kamera",
"count_other": "{{count}} Kameror",
"count_one": "{{count}} kamera",
"count_other": "{{count}} kameror",
"title": "Kameror"
},
"allCameras": "Alla kameror",
"title": "Live"
},
"system": "System",
"systemLogs": "Systemlogg",
"systemLogs": "Systemloggar",
"settings": "Inställningar",
"help": "Hjälp",
"documentation": {
"title": "Dokumentation",
"label": "Frigate-dokumentation"
},
"uiPlayground": "UI Testmiljö",
"uiPlayground": "Testmiljö för gränssnittet",
"restart": "Starta om Frigate",
"review": "Granska",
"languages": "Språk",
@@ -245,22 +245,22 @@
"title": "Föregående",
"label": "Gå till föregående sida"
},
"more": "Flera sidor",
"label": "paginering"
"more": "Fler sidor",
"label": "Sidnumrering"
},
"accessDenied": {
"title": "Åtkomst Förbjuden",
"title": "Åtkomst nekad",
"desc": "Du har inte rättigheter att visa den här sidan.",
"documentTitle": "Åtkomst Förbjuden - Frigate"
"documentTitle": "Åtkomst nekad Frigate"
},
"role": {
"admin": "Admin",
"admin": "Administratör",
"viewer": "Tittare",
"desc": "Administratörer har fullständig åtkomst till alla funktioner i Frigates gränssnitt. Tittare kan endast visa kameror, granska objekt och se historiskt videomaterial.",
"title": "Roll"
},
"notFound": {
"documentTitle": "Hittades Inte - Frigate",
"documentTitle": "Sidan hittades inte Frigate",
"desc": "Sidan hittades inte",
"title": "404"
},
@@ -282,7 +282,7 @@
"ID": "ID",
"none": "Ingen",
"all": "Alla",
"other": "Annat"
"other": "Övrigt"
},
"unit": {
"speed": {
@@ -294,18 +294,18 @@
"meters": "meter"
},
"data": {
"kbps": "kB/s",
"mbps": "MB/s",
"gbps": "GB/s",
"kbph": "kB/timme",
"mbph": "MB/timme",
"gbph": "GB/timme"
"kbps": "kbit/s",
"mbps": "Mbit/s",
"gbps": "Gbit/s",
"kbph": "kbit/timme",
"mbph": "Mbit/timme",
"gbph": "Gbit/timme"
}
},
"selectItem": "Välj {{item}}",
"readTheDocumentation": "Läs dokumentationen",
"information": {
"pixels": "{{area}}px"
"pixels": "{{area}} px"
},
"list": {
"two": "{{0}} och {{1}}",
@@ -316,9 +316,9 @@
"optional": "Valfritt",
"internalID": "Det interna ID som Frigate använder i konfigurationen och databasen"
},
"no_items": "Inga artiklar",
"no_items": "Inga objekt",
"validation_errors": "Valideringsfel",
"credentialField": {
"savedPlaceholder": "Sparad — lämna tomt för att hålla dig aktuell"
"savedPlaceholder": "Sparat lämna tomt för att behålla det aktuella värdet"
}
}
+2 -2
View File
@@ -8,8 +8,8 @@
"passwordRequired": "Lösenord är obligatoriskt",
"loginFailed": "Inloggning misslyckades",
"unknownError": "Okänt fel. Kontrollera loggarna.",
"webUnknownError": "Okänt fel. Kontrollera konsol loggarna.",
"rateLimit": "Överskriden anropsgräns. Försök igen senare."
"webUnknownError": "Okänt fel. Kontrollera konsolloggarna.",
"rateLimit": "För många anrop. Försök igen senare."
},
"firstTimeLogin": "Försöker du logga in för första gången? Inloggningsuppgifterna finns angivna i Frigate-loggarna."
}
+16 -16
View File
@@ -1,21 +1,21 @@
{
"group": {
"label": "Kameragrupper",
"add": "Lägg till Kameragrupp",
"edit": "Ändra Kameragrupp",
"add": "Lägg till kameragrupp",
"edit": "Redigera kameragrupp",
"delete": {
"label": "Radera kameragrupp",
"label": "Ta bort kameragrupp",
"confirm": {
"title": "Bekräfta borttagning",
"desc": "Är du säker på att du vill ta bort kameragruppen <em>{{name}}</em>?"
}
},
"success": "Kameragruppen ({{name}}) har sparats.",
"success": "Kameragruppen {{name}} har sparats.",
"name": {
"label": "Namn",
"placeholder": "Ange ett namn…",
"errorMessage": {
"mustLeastCharacters": "Gruppnamnet för kameror måste vara minst 2 tecken.",
"mustLeastCharacters": "Kameragruppens namn måste vara minst 2 tecken långt.",
"nameMustNotPeriod": "Kameragruppnamnet får inte innehålla en punkt.",
"invalid": "Ogiltigt kameragruppnamn.",
"exists": "Kameragruppnamnet finns redan."
@@ -24,10 +24,10 @@
"icon": "Ikon",
"camera": {
"setting": {
"label": "inställningar för kameraströmning",
"title": "{{cameraName}} Streaminginställningar",
"label": "Inställningar för kameraströmning",
"title": "Strömningsinställningar för {{cameraName}}",
"desc": "Ändra alternativen för livestreaming för den här kameragruppens instrumentpanel. <em>Dessa inställningar är enhets-/webbläsarspecifika.</em>",
"audioIsAvailable": "Ljud är tillgängligt för denna kameraström",
"audioIsAvailable": "Ljud är tillgängligt för den här kameraströmmen",
"audioIsUnavailable": "Ljud är inte tillgängligt för den här kameraströmmen",
"audio": {
"tips": {
@@ -39,7 +39,7 @@
"label": "Strömningsmetod",
"method": {
"smartStreaming": {
"desc": "Smart streaming uppdaterar kamerabilden en gång per minut när ingen detekterbar aktivitet sker för att spara bandbredd och resurser. När aktivitet detekteras växlar bilden sömlöst till en livestream.",
"desc": "Smart strömning uppdaterar kamerabilden en gång per minut när ingen detekterbar aktivitet förekommer, för att spara bandbredd och resurser. När aktivitet detekteras växlar bilden sömlöst till en liveström.",
"label": "Smart strömning (rekommenderas)"
},
"continuousStreaming": {
@@ -51,26 +51,26 @@
},
"noStreaming": {
"label": "Ingen strömning",
"desc": "Kamerabilderna uppdateras bara en gång per minut och ingen livestreaming kommer att ske."
"desc": "Kamerabilderna uppdateras bara en gång per minut och ingen liveström visas."
}
},
"placeholder": "Välj en strömningsmetod"
},
"stream": "Strömma",
"stream": "Ström",
"placeholder": "Välj en ström",
"compatibilityMode": {
"label": "Kompatibilitetsläge",
"desc": "Aktivera endast det här alternativet om kamerans livestream visar färgartefakter och har en diagonal linje på höger sida av bilden."
}
},
"birdseye": "Fågelöga"
"birdseye": "Fågelperspektiv"
},
"cameras": {
"desc": "Välj kameror för denna guppen.",
"desc": "Välj kameror för den här gruppen.",
"label": "Kameror"
},
"showAll": "Visa alla kameragrupper",
"showLess": "Visa mindre",
"showLess": "Visa färre",
"editGroups": "Redigera kameragrupper"
},
"debug": {
@@ -83,9 +83,9 @@
"boundingBox": "Avgränsningsruta",
"timestamp": "Tidsstämpel",
"zones": "Zoner",
"mask": "Maskera",
"mask": "Masker",
"motion": "Rörelse",
"regions": "Regioner",
"paths": "Vägar"
"paths": "Spår"
}
}
+54 -47
View File
@@ -17,32 +17,35 @@
},
"review": {
"question": {
"ask_a": "Är detta objektet en/ett <code>{{label}}</code>?",
"ask_a": "Är detta objekt en/ett <code>{{label}}</code>?",
"ask_an": "Är detta objekt en/ett <code>{{label}}</code>?",
"ask_full": "Är detta objektet en/ett <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?",
"label": "Bekräfta denna etikett för Frigate Plus"
"ask_full": "Är detta objekt en/ett <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?",
"label": "Bekräfta etiketten för Frigate+"
},
"state": {
"submitted": "Inskickad"
},
"toast": {
"error": "Det gick inte att skicka till Frigate+. Kontrollera nätverksanslutningen och försök igen."
}
}
},
"video": {
"viewInHistory": "Se i Historik"
"viewInHistory": "Visa i historiken"
}
},
"export": {
"time": {
"fromTimeline": "Välj från tidslinjen",
"lastHour_one": "Sista timma",
"lastHour_other": "Sista {{count}} timmar",
"lastHour_one": "Senaste timmen",
"lastHour_other": "Senaste {{count}} timmarna",
"start": {
"title": "Start Tid",
"label": "Välj Start Tid"
"title": "Starttid",
"label": "Välj starttid"
},
"end": {
"title": "Slut Tid",
"label": "Välj Sluttid"
"title": "Sluttid",
"label": "Välj sluttid"
},
"custom": "Anpassad"
},
@@ -50,89 +53,93 @@
"placeholder": "Ge exporten ett namn"
},
"select": "Välj",
"export": "Export",
"export": "Exportera",
"selectOrExport": "Välj eller exportera",
"toast": {
"success": "Exporten har startats. Visa filen på exportsidan.",
"success": "Exporten har startat. Visa filen på exportsidan.",
"error": {
"failed": "Misslyckades med att köa exporten: {{error}}",
"failed": "Det gick inte att köa exporten: {{error}}",
"endTimeMustAfterStartTime": "Sluttiden måste vara efter starttiden",
"noVaildTimeSelected": "Inget giltigt tidsintervall valt"
"noVaildTimeSelected": "Inget giltigt tidsintervall valt",
"noValidTimeSelected": "Inget giltigt tidsintervall valt"
},
"view": "Visa",
"queued": "Exporten är i kö. Se förloppet på exportsidan.",
"batchSuccess_one": "Startade 1 export. Öppnar ärendet nu.",
"batchSuccess_other": "Startade {{count}} exporter. Öppnar ärendet nu.",
"batchPartial": "Startade {{successful}} av {{total}} exporter. Misslyckade kameror: {{failedCameras}}",
"batchFailed": "Misslyckades med att starta export av {{total}}. Kameror som inte fungerade: {{failedCameras}}",
"batchFailed": "Det gick inte att starta {{total}} exporter. Berörda kameror: {{failedCameras}}",
"batchQueuedSuccess_one": "1 export har köats. Ärendet öppnas nu.",
"batchQueuedSuccess_other": "{{count}} exporter har köats. Öppnar ärendet nu.",
"batchQueuedPartial": "Köade {{successful}} av {{total}} exporter. Misslyckade kameror: {{failedCameras}}",
"batchQueueFailed": "Misslyckades med att köa {{total}} exporter. Felaktiga kameror: {{failedCameras}}"
"batchQueueFailed": "Det gick inte att köa {{total}} exporter. Berörda kameror: {{failedCameras}}"
},
"fromTimeline": {
"saveExport": "Spara export",
"previewExport": "Förhandsgranska export",
"queueingExport": "Export i kö...",
"queueingExport": "Köar export…",
"useThisRange": "Använd detta intervall"
},
"case": {
"newCaseOption": "Skapa nytt ärende",
"newCaseNamePlaceholder": "Nytt ärende namn",
"newCaseDescriptionPlaceholder": "Ärende beskrivning",
"newCaseNamePlaceholder": "Namn på nytt ärende",
"newCaseDescriptionPlaceholder": "Ärendebeskrivning",
"label": "Ärende",
"nonAdminHelp": "Ett nytt ärende kommer att skapas för dessa exporter.",
"placeholder": "Välj ett ärende"
},
"queueing": "Export i kö...",
"queueing": "Köar export…",
"tabs": {
"export": "Enskild kamera",
"multiCamera": "Flerkameror"
"multiCamera": "Flera kameror"
},
"multiCamera": {
"timeRange": "Tidsintervall",
"selectFromTimeline": "Välj från tidslinjen",
"cameraSelection": "Kameror",
"cameraSelectionHelp": "Kameror med spårade objekt inom detta tidsintervall är förvalda",
"checkingActivity": "Kontrollerar kameraaktivitet...",
"cameraSelectionHelp": "Kameror med spårade objekt inom tidsintervallet är förvalda.",
"checkingActivity": "Kontrollerar kameraaktivitet",
"noCameras": "Inga kameror tillgängliga",
"detectionCount_one": "1 spårat objekt",
"detectionCount_other": "{{count}} spårade objekt",
"nameLabel": "Exportnamn",
"namePlaceholder": "Valfritt basnamn för dessa exporter",
"queueingButton": "Köar exporter...",
"queueingButton": "Köar exporter",
"exportButton_one": "Exportera 1 kamera",
"exportButton_other": "Exportera {{count}} kameror",
"selectAll": "Välj alla kameror",
"selectWithActivity": "Kameror med spårade objekt",
"selectGroup": "Välj grupp",
"noMatchingCameras": "Ingen kamera matchar din sökning"
"noMatchingCameras": "Ingen kamera matchar din sökning",
"searchOrSelectGroup": "Sök eller välj en kameragrupp…",
"clearSelection": "Rensa val",
"selectedCount": "{{selected}} / {{total}} valda"
},
"multi": {
"title_one": "Exportera 1 recension",
"title_other": "Exportera {{count}} recensioner",
"description": "Exportera varje vald recension. Alla exporter grupperas under ett enda ärende.",
"descriptionNoCase": "Exportera varje vald recension.",
"caseNamePlaceholder": "Granska export - {{date}}",
"exportButton_one": "Exportera 1 recension",
"exportButton_other": "Exportera {{count}} recensioner",
"exportingButton": "Exporterar...",
"title_one": "Exportera 1 granskningsobjekt",
"title_other": "Exportera {{count}} granskningsobjekt",
"description": "Exportera varje valt granskningsobjekt. Alla exporter grupperas i ett enda ärende.",
"descriptionNoCase": "Exportera varje valt granskningsobjekt.",
"caseNamePlaceholder": "Granskningsexport {{date}}",
"exportButton_one": "Exportera 1 granskningsobjekt",
"exportButton_other": "Exportera {{count}} granskningsobjekt",
"exportingButton": "Exporterar",
"toast": {
"started_one": "Startade 1 export. Öppnar ärendet nu.",
"started_other": "Startade {{count}} exporter. Öppnar ärendet nu.",
"startedNoCase_one": "Startade 1 export.",
"startedNoCase_other": "Startade {{count}} exporter.",
"partial": "Startade {{successful}} av {{total}} exporter. Misslyckades: {{failedItems}}",
"failed": "Misslyckades med att starta exporten av {{total}}. Misslyckades: {{failedItems}}"
"partial": "Startade {{successful}} av {{total}} exporter. Följande misslyckades: {{failedItems}}",
"failed": "Det gick inte att starta {{total}} exporter. Följande misslyckades: {{failedItems}}"
}
}
},
"streaming": {
"label": "Videoström",
"restreaming": {
"disabled": "Omströmning är inte aktiverad för den här kameran.",
"disabled": "Vidareströmning är inte aktiverad för den här kameran.",
"desc": {
"title": "Konfigurera go2rtc för ytterligare livevisningsalternativ och ljud för den här kameran.",
"title": "Konfigurera go2rtc för fler alternativ för livevisning och ljud från den här kameran.",
"readTheDocumentation": "Läs dokumentationen"
}
},
@@ -140,31 +147,31 @@
"label": "Visa strömstatistik",
"desc": "Aktivera det här alternativet för att visa strömstatistik som ett överlägg över kameraflödet."
},
"debugView": "Felsöknings vy"
"debugView": "Felsökningsvy"
},
"search": {
"saveSearch": {
"overwrite": "{{searchName}} finns redan. Om du sparar skrivs det befintliga värdet över.",
"success": "Sökningen ({{searchName}}) har sparats.",
"success": "Sökningen {{searchName}} har sparats.",
"button": {
"save": {
"label": "Spara den här sökningen"
}
},
"label": "Spara Sökning",
"label": "Spara sökning",
"desc": "Ange ett namn för den här sparade sökningen.",
"placeholder": "Ange ett namn för din sökning"
}
},
"recording": {
"confirmDelete": {
"title": "Bekräfta radering",
"title": "Bekräfta borttagning",
"desc": {
"selected": "Är du säker på att du vill radera all inspelad video som är kopplad till det här granskningsobjektet?<br /><br />Håll ner <em>Shift</em>-tangenten för att hoppa över den här dialogrutan i framtiden."
"selected": "Är du säker på att du vill ta bort all inspelad video som är kopplad till det här granskningsobjektet?<br /><br />Håll ned <em>Skift</em>-tangenten för att hoppa över den här dialogrutan i framtiden."
},
"toast": {
"success": "Videoklipp som är kopplade till de valda granskningsobjekten har raderats.",
"error": "Misslyckades med att ta bort: {{error}}"
"error": "Det gick inte att ta bort: {{error}}"
}
},
"button": {
@@ -178,16 +185,16 @@
"title": "Dela tidsstämpel",
"description": "Dela en tidsstämplad URL för spelarens nuvarande position eller välj en anpassad tidsstämpel. Observera att detta inte är en offentlig delnings-URL och endast är tillgänglig för användare med åtkomst till Frigate och den här kameran.",
"custom": "Anpassad tidsstämpel",
"button": "Dela tidsstämpel-URL",
"shareTitle": "Frigate granskning tidsstämpel: {{camera}}"
"button": "Dela URL med tidsstämpel",
"shareTitle": "Tidsstämpel för Frigate-granskning: {{camera}}"
}
},
"imagePicker": {
"selectImage": "Välj miniatyrbilden för ett spårat objekt",
"search": {
"placeholder": "Sök efter etikett eller underetikett..."
"placeholder": "Sök efter etikett eller underetikett"
},
"noImages": "Inga miniatyrbilder hittades för den här kameran",
"unknownLabel": "Sparad triggerbild"
"unknownLabel": "Sparad utlösarbild"
}
}
+41 -41
View File
@@ -6,7 +6,7 @@
},
"label": "Etiketter",
"count": "{{count}} Etiketter",
"count_one": "{{count}} Etikett",
"count_one": "{{count}} etikett",
"count_other": "{{count}} etiketter"
},
"filter": "Filtrera",
@@ -19,7 +19,7 @@
},
"features": {
"hasSnapshot": "Har ögonblicksbild",
"hasVideoClip": "Har ett video klipp",
"hasVideoClip": "Har videoklipp",
"submittedToFrigatePlus": {
"label": "Skickat till Frigate+",
"tips": "Du måste först filtrera på spårade objekt som har en ögonblicksbild. <br /><br />Spårade objekt utan ögonblicksbild kan inte skickas till Frigate+."
@@ -27,19 +27,19 @@
"label": "Detaljer"
},
"sort": {
"dateAsc": "Datum (Stigande)",
"dateAsc": "Datum (stigande)",
"label": "Sortera",
"scoreAsc": "Objektpoäng (Stigande)",
"speedDesc": "Uppskattad Hastighet (Fallande)",
"scoreAsc": "Objektpoäng (stigande)",
"speedDesc": "Uppskattad hastighet (fallande)",
"relevance": "Relevans",
"dateDesc": "Datum (Fallande)",
"scoreDesc": "Objektpoäng (Fallande)",
"speedAsc": "Uppskattad Hastighet (Stigande)"
"dateDesc": "Datum (fallande)",
"scoreDesc": "Objektpoäng (fallande)",
"speedAsc": "Uppskattad hastighet (stigande)"
},
"cameras": {
"all": {
"short": "Kameror",
"title": "Alla Kameror"
"title": "Alla kameror"
},
"label": "Kamerafilter"
},
@@ -47,10 +47,10 @@
"settings": {
"title": "Inställningar",
"defaultView": {
"title": "Standard Vy",
"title": "Standardvy",
"summary": "Sammanfattning",
"desc": "När inga filter är valda, visa en översikt av de senaste spårade objekten per etikett eller visa ett ofiltrerat rutnät.",
"unfilteredGrid": "Ofiltrerat Rutnät"
"desc": "När inga filter är valda visas antingen en översikt över de senaste spårade objekten per etikett eller ett ofiltrerat rutnät.",
"unfilteredGrid": "Ofiltrerat rutnät"
},
"searchSource": {
"options": {
@@ -58,11 +58,11 @@
"thumbnailImage": "Miniatyrbild"
},
"label": "Sökkälla",
"desc": "Välj om du vill söka miniatyrbilderna eller beskrivningarna av de spårade objekten."
"desc": "Välj om sökningen ska göras i miniatyrbilder eller i beskrivningar av spårade objekt."
},
"gridColumns": {
"desc": "Välj antal kolumner i rutnätsvy.",
"title": "Kolumner i Rutnät"
"desc": "Välj antalet kolumner i rutnätsvyn.",
"title": "Kolumner i rutnätet"
}
},
"date": {
@@ -72,10 +72,10 @@
}
},
"review": {
"showReviewed": "Visa Kontrollerade"
"showReviewed": "Visa granskade"
},
"motion": {
"showMotionOnly": "Visa Endast Rörelse"
"showMotionOnly": "Visa endast rörelse"
},
"score": "Poäng",
"dates": {
@@ -83,56 +83,56 @@
"short": "Datum",
"title": "Alla datum"
},
"selectPreset": "Välj Förval…"
"selectPreset": "Välj förval…"
},
"recognizedLicensePlates": {
"noLicensePlatesFound": "Inga registreringsplåtar hittade.",
"selectPlatesFromList": "Välj en eller flera registreringsplåtar från listan.",
"title": "Igenkända Registreringsskyltar",
"loadFailed": "Misslyckades med att ladda igenkända registreringsskyltar.",
"placeholder": "Skriv för att söka registreringsskyltar…",
"loading": "Laddar igenkända registreringsskyltar…",
"noLicensePlatesFound": "Inga registreringsskyltar hittades.",
"selectPlatesFromList": "Välj en eller flera registreringsskyltar i listan.",
"title": "Igenkända registreringsskyltar",
"loadFailed": "Det gick inte att läsa in igenkända registreringsskyltar.",
"placeholder": "Skriv för att söka efter registreringsskyltar…",
"loading": "Läser in igenkända registreringsskyltar…",
"selectAll": "Välj alla",
"clearAll": "Rensa alla"
},
"more": "Fler filter",
"reset": {
"label": "Nollställ filter"
"label": "Återställ filtren"
},
"subLabels": {
"label": "Under kategori",
"all": "Alla under kategorier"
"label": "Underetiketter",
"all": "Alla underetiketter"
},
"estimatedSpeed": "Estimerad hastighet ({{unit}})",
"estimatedSpeed": "Uppskattad hastighet ({{unit}})",
"classes": {
"all": {
"title": "Alla Klasser"
"title": "Alla klasser"
},
"count_one": "{{count}} Klass",
"count_other": "{{count}} Klasser",
"count_one": "{{count}} klass",
"count_other": "{{count}} klasser",
"label": "Klasser"
},
"timeRange": "Tidsspann",
"timeRange": "Tidsintervall",
"logSettings": {
"loading": {
"title": "Laddar",
"desc": "När loggvyn är rullad till slutet, strömmas automatiskt nya loggar till vyn."
"desc": "När loggvyn har rullats till slutet strömmas nya loggar automatiskt till vyn."
},
"filterBySeverity": "Filtrera logg allvarlighetsgrad",
"disableLogStreaming": "Inaktivera strömning av logg",
"filterBySeverity": "Filtrera loggar efter allvarlighetsgrad",
"disableLogStreaming": "Inaktivera loggströmning",
"allLogs": "Alla loggar",
"label": "Filtrera loggnivå"
"label": "Filtrera efter loggnivå"
},
"trackedObjectDelete": {
"title": "Bekräfta Borttagning",
"title": "Bekräfta borttagning",
"toast": {
"success": "Spårade objekt borttagna.",
"error": "Misslyckades med att ta bort spårade objekt: {{errorMessage}}"
"success": "De spårade objekten har tagits bort.",
"error": "Det gick inte att ta bort spårade objekt: {{errorMessage}}"
},
"desc": "Borttagning av dessa {{objectLength}} spårade objekt tar bort ögonblicksbild, sparade inbäddningar, och tillhörande livscykelposter. Inspelat material av dessa spårade objekt i Historievyn kommer <em>INTE</em> att tas bort.<br /><br />Vill du verkligen fortsätta?<br /><br />Håll ner <em>Skift</em>-tangenten för att hoppa över denna dialog i framtiden."
"desc": "Om du tar bort dessa {{objectLength}} spårade objekt tas ögonblicksbilder, sparade inbäddningar och tillhörande livscykelposter bort. Inspelat material med objekten i historikvyn tas <em>INTE</em> bort.<br /><br />Vill du fortsätta?<br /><br />Håll ned <em>Skift</em>-tangenten för att hoppa över den här dialogrutan i framtiden."
},
"zoneMask": {
"filterBy": "Filtrera zonmaskering"
"filterBy": "Filtrera efter zonmask"
},
"attributes": {
"label": "Klassificeringsattribut",
+1 -1
View File
@@ -3,7 +3,7 @@
"downloadVideo": {
"label": "Ladda ner video",
"toast": {
"success": "Nedladdning påbörjad för granskningsobjekt."
"success": "Nedladdningen av granskningsobjektets video har startat."
}
}
}
+11 -11
View File
@@ -1,6 +1,6 @@
{
"noPreviewFound": "Ingen förhandsvisning hittad",
"noRecordingsFoundForThisTime": "Inga inspelningar hittade för denna tid",
"noRecordingsFoundForThisTime": "Inga inspelningar hittades vid den här tidpunkten",
"noPreviewFoundFor": "Ingen förhandsvisning hittad för {{cameraName}}",
"submitFrigatePlus": {
"title": "Skicka denna bild till Frigate+?",
@@ -9,8 +9,8 @@
},
"livePlayerRequiredIOSVersion": "iOS 17.1 eller senare krävs för den här typen av livestream.",
"streamOffline": {
"title": "Ström ej tillgänglig",
"desc": "Inga bildrutor har tagits emot från {{cameraName}}-strömmen <code>detect</code>, kontrollera felloggarna"
"title": "Strömmen är inte tillgänglig",
"desc": "Inga bildrutor har tagits emot från <code>detect</code>-strömmen för {{cameraName}}. Kontrollera felloggarna."
},
"stats": {
"streamType": {
@@ -25,28 +25,28 @@
"title": "Latens:",
"short": {
"title": "Latens",
"value": "{{seconds}} sek"
"value": "{{seconds}} s"
},
"value": "{{seconds}} sekunder"
},
"totalFrames": "Totala Bildrutor:",
"totalFrames": "Totalt antal bildrutor:",
"droppedFrames": {
"title": "Bortfallna bildrutor:",
"title": "Förlorade bildrutor:",
"short": {
"title": "Bortfallen",
"value": "{{droppedFrames}} Bildrutor"
"title": "Förlorade",
"value": "{{droppedFrames}} bildrutor"
}
},
"decodedFrames": "Avkodade bildrutor:",
"droppedFrameRate": "Frekvens för bortfallna bildrutor:"
"droppedFrameRate": "Andel förlorade bildrutor:"
},
"cameraDisabled": "Kameran är inaktiverad",
"toast": {
"error": {
"submitFrigatePlusFailed": "Bildruta har skickats till Frigate+ med misslyckat resultat"
"submitFrigatePlusFailed": "Det gick inte att skicka bildrutan till Frigate+"
},
"success": {
"submittedFrigatePlus": "Bildruta har skickats till Frigate+ med lyckat resultat"
"submittedFrigatePlus": "Bildrutan har skickats till Frigate+"
}
},
"cameraOff": "Kameran är avstängd"
+32 -7
View File
@@ -1,29 +1,54 @@
{
"label": "KameraKonfiguration",
"label": "Kamerakonfiguration",
"name": {
"label": "Kameranamn",
"description": "Kameranamn krävs"
},
"friendly_name": {
"label": "Visningsnamn",
"description": "Visningsnamn för kamera i Frigate UI"
"description": "Kamerans visningsnamn i Frigates gränssnitt"
},
"enabled": {
"label": "Aktiverad",
"description": "Aktiverad"
"description": "Anger om kameran är aktiverad"
},
"audio": {
"label": "Ljuddetektering",
"description": "Inställningar för ljudbaserad händelsedetektering för denna kamera.",
"description": "Inställningar för ljudbaserad händelsedetektering för den här kameran.",
"enabled": {
"label": "Aktivera ljuddetektering",
"description": "Aktivera eller avaktivera ljudbaserad detektering för denna kamera."
"description": "Aktivera eller inaktivera ljudbaserad detektering för den här kameran."
},
"max_not_heard": {
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar."
"description": "Antalet sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse avslutas.",
"label": "Maximal tid utan ljud"
},
"min_volume": {
"label": "Minsta ljudvolym"
"label": "Minsta ljudvolym",
"description": "Lägsta RMS-volym för ljuddetektering. Ett lägre värde ökar känsligheten (t.ex. 200 för hög, 500 för medelhög och 1 000 för låg känslighet)."
},
"listen": {
"label": "Ljudtyper att lyssna efter",
"description": "Lista över typer av ljudhändelser som ska detekteras (t.ex. hundskall, brandlarm, tal och skrik)."
},
"filters": {
"label": "Ljudfilter",
"description": "Filterinställningar för varje ljudtyp, till exempel en konfidenströskel som minskar antalet falska positiva resultat.",
"threshold": {
"label": "Lägsta konfidenströskel för ljud",
"description": "Lägsta konfidenströskel för att ljudhändelsen ska räknas."
}
},
"enabled_in_config": {
"label": "Ursprunglig ljudkonfiguration",
"description": "Anger om ljuddetektering ursprungligen var aktiverad i den statiska konfigurationsfilen."
},
"num_threads": {
"label": "Trådar för ljuddetektering",
"description": "Antal trådar som ska användas för bearbetning av ljuddetektering."
}
},
"audio_transcription": {
"label": "Ljudtranskription"
}
}
+28 -3
View File
@@ -1,6 +1,6 @@
{
"version": {
"label": "Nuvarande konfigurations version"
"label": "Nuvarande konfigurationsversion"
},
"audio": {
"label": "Ljuddetektering",
@@ -8,10 +8,35 @@
"label": "Aktivera ljuddetektering"
},
"max_not_heard": {
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar."
"description": "Antalet sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse avslutas.",
"label": "Maximal tid utan ljud"
},
"min_volume": {
"label": "Minsta ljudvolym"
"label": "Minsta ljudvolym",
"description": "Lägsta RMS-volym för ljuddetektering. Ett lägre värde ökar känsligheten (t.ex. 200 för hög, 500 för medelhög och 1 000 för låg känslighet)."
},
"listen": {
"label": "Ljudtyper att lyssna efter",
"description": "Lista över typer av ljudhändelser som ska detekteras (t.ex. hundskall, brandlarm, tal och skrik)."
},
"filters": {
"label": "Ljudfilter",
"description": "Filterinställningar för varje ljudtyp, till exempel en konfidenströskel som minskar antalet falska positiva resultat.",
"threshold": {
"label": "Lägsta konfidenströskel för ljud",
"description": "Lägsta konfidenströskel för att ljudhändelsen ska räknas."
}
},
"enabled_in_config": {
"label": "Ursprunglig ljudkonfiguration",
"description": "Anger om ljuddetektering ursprungligen var aktiverad i den statiska konfigurationsfilen."
},
"num_threads": {
"label": "Trådar för ljuddetektering",
"description": "Antal trådar som ska användas för bearbetning av ljuddetektering."
}
},
"audio_transcription": {
"label": "Ljudtranskription"
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"audio": {
"global": {
"sensitivity": "Global känslighet"
"sensitivity": "Global ljudkänslighet"
}
}
}
+1 -1
View File
@@ -1,3 +1,3 @@
{
"minimum": "Måste minst vara {{limit}}"
"minimum": "Värdet måste vara minst {{limit}}"
}
+10 -10
View File
@@ -7,7 +7,7 @@
"bus": "Buss",
"horse": "Häst",
"sheep": "Får",
"mouse": "Älg",
"mouse": "Mus",
"bark": "Skall",
"goat": "Get",
"animal": "Djur",
@@ -15,7 +15,7 @@
"cat": "Katt",
"bird": "Fågel",
"train": "Tåg",
"traffic_light": "Trafiklyse",
"traffic_light": "Trafikljus",
"stop_sign": "Stoppskylt",
"cow": "Ko",
"elephant": "Elefant",
@@ -30,7 +30,7 @@
"backpack": "Ryggsäck",
"umbrella": "Paraply",
"bench": "Bänk",
"wine_glass": "vinglas",
"wine_glass": "Vinglas",
"bottle": "Flaska",
"spoon": "Sked",
"orange": "Apelsin",
@@ -64,9 +64,9 @@
"kite": "Drake",
"baseball_bat": "Basebollträ",
"baseball_glove": "Baseballhandske",
"skateboard": "Skatebord",
"skateboard": "Skateboard",
"surfboard": "Surfbräda",
"tennis_racket": "Tennisrack",
"tennis_racket": "Tennisracket",
"pizza": "Pizza",
"donut": "Munk",
"cake": "Tårta",
@@ -76,7 +76,7 @@
"potted_plant": "Krukväxt",
"bed": "Säng",
"mirror": "Spegel",
"dining_table": "Vardagsrumsbord",
"dining_table": "Matbord",
"desk": "Skrivbord",
"toilet": "Toalett",
"tv": "TV",
@@ -85,16 +85,16 @@
"keyboard": "Tangentbord",
"cell_phone": "Mobiltelefon",
"microwave": "Mikrovågsugn",
"sink": "Vask",
"sink": "Diskho",
"vase": "Vas",
"scissors": "Sax",
"squirrel": "Ekorre",
"deer": "Rådjur",
"deer": "Hjort",
"fox": "Räv",
"rabbit": "Kanin",
"raccoon": "Tvättbjörn",
"robot_lawnmower": "Robotgräsklippare",
"on_demand": "På begäran",
"on_demand": "Vid behov",
"face": "Ansikte",
"package": "Paket",
"bbq_grill": "Grill",
@@ -113,7 +113,7 @@
"blender": "Blandare",
"book": "Bok",
"waste_bin": "Soptunna",
"license_plate": "Nummerplåt",
"license_plate": "Registreringsskylt",
"toothbrush": "Tandborste",
"ups": "UPS",
"teddy_bear": "Nallebjörn"

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