Compare commits

..
Author SHA1 Message Date
Hosted WeblateandGuoQing Liu 3a0c4c593a 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/config-cameras/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/zh_Hans/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
2026-07-11 07:54:23 +02:00
Hosted WeblateandDalibor Radovanović b1fb109094 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-11 07:54:23 +02:00
Hosted WeblateandFelix Boström 327a15b317 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: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/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/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
2026-07-11 07:54:22 +02:00
Hosted WeblateandMark Holtkamp 7366488ff5 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-11 07:54:22 +02:00
Hosted WeblateandEduardo Pastor Fernández aebafb3ef3 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-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-explore
Translation: Frigate NVR/views-settings
2026-07-11 07:54:22 +02:00
Hosted Weblateandlukasig 15f49d6171 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/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-settings/ro/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/views-settings
2026-07-11 07:54:22 +02:00
5a0ea5907e 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-11 07:54:22 +02:00
Hosted WeblateandRinaldo Pitzer Júnior c7e68a9546 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-11 07:54:22 +02:00
43 changed files with 3546 additions and 372 deletions
+4 -4
View File
@@ -72,10 +72,10 @@ Variables prefixed with `FRIGATE_` can be referenced in config fields that suppo
Navigate to <NavPath path="Settings > System > Environment variables" /> to add or edit environment variables.
| Field | Description |
| ----------------- | --------------------------------------------------------- |
| **Variable name** | The environment variable name (e.g., `FRIGATE_MQTT_USER`) |
| **Value** | The value for the variable |
| Field | Description |
| --------- | --------------------------------------------------------- |
| **Key** | The environment variable name (e.g., `FRIGATE_MQTT_USER`) |
| **Value** | The value for the variable |
Variables defined here can be referenced elsewhere in your configuration using the `{FRIGATE_VARIABLE_NAME}` syntax.
+18 -35
View File
@@ -200,9 +200,6 @@ class EmbeddingMaintainer(threading.Thread):
)
for model_config in self.config.classification.custom.values():
if not model_config.enabled:
continue
self.realtime_processors.append(
CustomStateClassificationProcessor(
self.config, model_config, self.requestor, self.metrics
@@ -335,25 +332,6 @@ class EmbeddingMaintainer(threading.Thread):
for processor in self.post_processors:
processor.update_config(topic, payload)
def _remove_custom_classification_processor(self, model_name: str) -> None:
"""Shut down and drop any running processor for a custom model."""
remaining = []
for processor in self.realtime_processors:
if (
isinstance(
processor,
(
CustomStateClassificationProcessor,
CustomObjectClassificationProcessor,
),
)
and processor.model_config.name == model_name
):
processor.shutdown()
else:
remaining.append(processor)
self.realtime_processors = remaining
def _handle_custom_classification_update(
self, topic: str, model_config: Any
) -> None:
@@ -361,7 +339,23 @@ class EmbeddingMaintainer(threading.Thread):
model_name = topic.split("/")[-1]
if model_config is None:
self._remove_custom_classification_processor(model_name)
remaining = []
for processor in self.realtime_processors:
if (
isinstance(
processor,
(
CustomStateClassificationProcessor,
CustomObjectClassificationProcessor,
),
)
and processor.model_config.name == model_name
):
processor.shutdown()
else:
remaining.append(processor)
self.realtime_processors = remaining
logger.info(
f"Successfully removed classification processor for model: {model_name}"
)
@@ -369,13 +363,6 @@ class EmbeddingMaintainer(threading.Thread):
self.config.classification.custom[model_name] = model_config
# A disabled model must not run; tear down any existing processor and
# do not register a new one.
if not model_config.enabled:
self._remove_custom_classification_processor(model_name)
logger.info(f"Disabled classification processor for model: {model_name}")
return
# Check if processor already exists
for processor in self.realtime_processors:
if isinstance(
@@ -715,11 +702,7 @@ class EmbeddingMaintainer(threading.Thread):
and "license_plate" not in camera_config.objects.track
)
has_enabled_custom = any(
c.enabled for c in self.config.classification.custom.values()
)
if not dedicated_lpr_enabled and not has_enabled_custom:
if not dedicated_lpr_enabled and len(self.config.classification.custom) == 0:
# no active features that use this data
return
-106
View File
@@ -1,106 +0,0 @@
"""Tests that disabled custom classification models are not registered or run."""
import sys
import unittest
from unittest.mock import MagicMock
# Mock TFLite before importing the maintainer / classification modules
_MOCK_MODULES = [
"tflite_runtime",
"tflite_runtime.interpreter",
"ai_edge_litert",
"ai_edge_litert.interpreter",
]
for mod in _MOCK_MODULES:
if mod not in sys.modules:
sys.modules[mod] = MagicMock()
from frigate.data_processing.real_time.custom_classification import ( # noqa: E402
CustomObjectClassificationProcessor,
)
from frigate.embeddings.maintainer import EmbeddingMaintainer # noqa: E402
class TestCustomClassificationEnabledGating(unittest.TestCase):
"""A model with enabled: false must not keep a processor registered."""
def _make_maintainer(self) -> EmbeddingMaintainer:
# Bypass the heavy __init__; only the attributes touched by the
# config update path are needed for these tests.
maintainer = EmbeddingMaintainer.__new__(EmbeddingMaintainer)
maintainer.realtime_processors = []
maintainer.config = MagicMock()
maintainer.config.classification.custom = {}
maintainer.requestor = MagicMock()
maintainer.metrics = MagicMock()
maintainer.event_metadata_publisher = MagicMock()
return maintainer
def _make_model_config(self, name: str, enabled: bool) -> MagicMock:
model_config = MagicMock()
model_config.name = name
model_config.enabled = enabled
model_config.state_config = None
return model_config
def _make_processor(self, name: str) -> MagicMock:
processor = MagicMock(spec=CustomObjectClassificationProcessor)
processor.model_config = MagicMock()
processor.model_config.name = name
return processor
def test_disabled_update_tears_down_existing_processor(self):
"""Toggling a running model to disabled shuts down and drops its processor."""
maintainer = self._make_maintainer()
processor = self._make_processor("atli")
maintainer.realtime_processors = [processor]
maintainer._handle_custom_classification_update(
"config/classification/custom/atli",
self._make_model_config("atli", enabled=False),
)
processor.shutdown.assert_called_once()
self.assertEqual(maintainer.realtime_processors, [])
def test_disabled_update_does_not_register_processor(self):
"""A disabled model that has no processor is never registered."""
maintainer = self._make_maintainer()
maintainer._handle_custom_classification_update(
"config/classification/custom/atli",
self._make_model_config("atli", enabled=False),
)
self.assertEqual(maintainer.realtime_processors, [])
def test_disabled_update_leaves_other_processors_untouched(self):
"""Disabling one model must not affect other running processors."""
maintainer = self._make_maintainer()
other = self._make_processor("simbi")
maintainer.realtime_processors = [other]
maintainer._handle_custom_classification_update(
"config/classification/custom/atli",
self._make_model_config("atli", enabled=False),
)
other.shutdown.assert_not_called()
self.assertEqual(maintainer.realtime_processors, [other])
def test_removed_model_tears_down_processor(self):
"""A None payload (model deleted) still shuts down its processor."""
maintainer = self._make_maintainer()
processor = self._make_processor("atli")
maintainer.realtime_processors = [processor]
maintainer._handle_custom_classification_update(
"config/classification/custom/atli", None
)
processor.shutdown.assert_called_once()
self.assertEqual(maintainer.realtime_processors, [])
if __name__ == "__main__":
unittest.main()
+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": {
+3
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": {
+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": {
+3 -3
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}}",
+1 -8
View File
@@ -1490,14 +1490,7 @@
"keyLabel": "Key",
"valueLabel": "Value",
"keyPlaceholder": "New key",
"remove": "Remove",
"providerNameLabel": "Provider name",
"providerNamePlaceholder": "e.g., openai",
"variableNameLabel": "Variable name",
"variableNamePlaceholder": "e.g., MY_VARIABLE",
"loggerNameLabel": "Logger name",
"loggerNamePlaceholder": "e.g., frigate.record",
"keyPatternError": "Use only letters, numbers, hyphens, and underscores (no spaces)"
"remove": "Remove"
},
"knownPlates": {
"namePlaceholder": "e.g., Wife's Car",
+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 (0–255) ajatempli värvi jaoks."
},
"green": {
"label": "Roheline",
"description": "Rohelise komponent (0–255) ajatempli värvi jaoks."
},
"blue": {
"label": "Sinine",
"description": "Sinise komponent (0–255) ajatempli värvi jaoks."
},
"label": "Ajatempli värv",
"description": "Ajatempli teksti RGB värviväärtused (kõik väärtused 0–255)."
},
"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 (0–255) ajatempli värvi jaoks."
},
"green": {
"label": "Roheline",
"description": "Rohelise komponent (0–255) ajatempli värvi jaoks."
},
"blue": {
"label": "Sinine",
"description": "Sinise komponent (0–255) ajatempli värvi jaoks."
},
"label": "Ajatempli värv",
"description": "Ajatempli teksti RGB värviväärtused (kõik väärtused 0–255)."
},
"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 (0–100)."
},
"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 (1–255)",
"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."
}
}
}
+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",
@@ -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",
+11 -1
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": {
@@ -145,7 +148,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",
@@ -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": {
+3
View File
@@ -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": {
@@ -2098,6 +2098,10 @@
},
"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."
},
"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": {
+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
+7 -1
View File
@@ -24,6 +24,9 @@
},
"state": {
"submitted": "Inskickad"
},
"toast": {
"error": "Misslyckades att skicka till Frigate+. Kontrollera din nätverksanslutning och försök igen."
}
}
},
@@ -106,7 +109,10 @@
"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",
+27 -2
View File
@@ -20,10 +20,35 @@
"description": "Aktivera eller avaktivera ljudbaserad detektering för denna kamera."
},
"max_not_heard": {
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar."
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar.",
"label": "Avbryt paus"
},
"min_volume": {
"label": "Minsta ljudvolym"
"label": "Minsta ljudvolym",
"description": "Lägsta RMS volym för ljuddetektion; lägre värde ökar känslighet (t.e.x. 200 högt, 500 medium, 1000 lågt)."
},
"listen": {
"label": "Lyssningstyper",
"description": "Lista på typer av ljudevent att detektera (till exempel: skälla, brandlarm, tal, skrik)."
},
"filters": {
"label": "Ljudfilter",
"description": "Filterinställningar per ljudtyp, till exempel konfidinströskel som används för att minska falska positiva resultat.",
"threshold": {
"label": "Lägsta ljud-konfidinströskel",
"description": "Lägsta konfidinströskel för att ljudhändelsen ska räknas."
}
},
"enabled_in_config": {
"label": "Ursprungligt ljudtillstånd",
"description": "Indikerar om ljuddetektion ursprungligen var aktiverat i den statiska konfigurationsfilen."
},
"num_threads": {
"label": "Detekteringstrådar",
"description": "Antal trådar att använda för bearbetning av ljuddetektering."
}
},
"audio_transcription": {
"label": "Ljudtranskribering"
}
}
+27 -2
View File
@@ -8,10 +8,35 @@
"label": "Aktivera ljuddetektering"
},
"max_not_heard": {
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar."
"description": "Antal sekunder utan den konfigurerade ljudtypen innan en ljudbaserad händelse slutar.",
"label": "Avbryt paus"
},
"min_volume": {
"label": "Minsta ljudvolym"
"label": "Minsta ljudvolym",
"description": "Lägsta RMS volym för ljuddetektion; lägre värde ökar känslighet (t.e.x. 200 högt, 500 medium, 1000 lågt)."
},
"listen": {
"label": "Lyssningstyper",
"description": "Lista på typer av ljudevent att detektera (till exempel: skälla, brandlarm, tal, skrik)."
},
"filters": {
"label": "Ljudfilter",
"description": "Filterinställningar per ljudtyp, till exempel konfidinströskel som används för att minska falska positiva resultat.",
"threshold": {
"label": "Lägsta ljud-konfidinströskel",
"description": "Lägsta konfidinströskel för att ljudhändelsen ska räknas."
}
},
"enabled_in_config": {
"label": "Ursprungligt ljudtillstånd",
"description": "Indikerar om ljuddetektion ursprungligen var aktiverat i den statiska konfigurationsfilen."
},
"num_threads": {
"label": "Detekteringstrådar",
"description": "Antal trådar att använda för bearbetning av ljuddetektering."
}
},
"audio_transcription": {
"label": "Ljudtranskribering"
}
}
+5 -5
View File
@@ -452,15 +452,15 @@
},
"continuous": {
"label": "持续保留",
"description": "无论是否有追踪目标或动作,保留录像的天数。如果只想保留警报和检测的录像,请设置为 0。",
"description": "无论是否有追踪目标或画面变动,保留录像的天数。如果只想保留警报和检测的录制,请设置为 0。",
"days": {
"label": "保留天数",
"description": "保留录像的天数。"
}
},
"motion": {
"label": "动作保留",
"description": "无论是否有追踪目标,由动作触发的录像保留天数。如果只想保留警报和检测的录像,请设置为 0。",
"label": "画面变动录制保留",
"description": "无论是否有追踪目标,只要画面变动触发保存的录制保留天数。如果只想保留警报和检测的录制,请设置为 0。",
"days": {
"label": "保留天数",
"description": "保留录像的天数。"
@@ -486,7 +486,7 @@
},
"mode": {
"label": "保留模式",
"description": "保留模式:all(保存所有片段)、motion(保存有动作的片段)或 active_objects(保存有活动目标的片段)。"
"description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或 活动目标(保存有活动目标的片段)。"
}
}
},
@@ -510,7 +510,7 @@
},
"mode": {
"label": "保留模式",
"description": "保留模式:all(保存所有片段)、motion(保存有动作的片段)或 active_objects(保存有活动目标的片段)。"
"description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或 活动目标(保存有活动目标的片段)。"
}
}
},
+9 -9
View File
@@ -1507,10 +1507,10 @@
},
"motion": {
"label": "画面变动检测",
"description": "应用于摄像头的默认动作检测设置,除非按摄像头覆盖。",
"description": "默认情况下,画面变动检测配置统一应用于各摄像头,除非对特定摄像头单独进行自定义。",
"enabled": {
"label": "开启画面变动检测",
"description": "为所有摄像头启用或禁用动作检测;可按摄像头覆盖。"
"description": "为所有摄像头启用或禁用画面变动检测。可以给指定摄像头单独覆盖此设置。"
},
"threshold": {
"label": "画面变动阈值",
@@ -1706,15 +1706,15 @@
},
"continuous": {
"label": "持续保留",
"description": "无论是否有追踪目标或动作,保留录像的天数。如果只想保留警报和检测的录像,请设置为 0。",
"description": "无论是否有追踪目标或画面变动,保留录像的天数。如果只想保留警报和检测的录制,请设置为 0。",
"days": {
"label": "保留天数",
"description": "保留录像的天数。"
}
},
"motion": {
"label": "动作保留",
"description": "无论是否有追踪目标,由动作触发的录像保留天数。如果只想保留警报和检测的录像,请设置为 0。",
"label": "画面变动录制保留",
"description": "无论是否有追踪目标,只要画面变动触发保存的录制保留天数。如果只想保留警报和检测的录制,请设置为 0。",
"days": {
"label": "保留天数",
"description": "保留录像的天数。"
@@ -1740,7 +1740,7 @@
},
"mode": {
"label": "保留模式",
"description": "保留模式:all(保存所有片段)、motion(保存有动作的片段)或 active_objects(保存有活动目标的片段)。"
"description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或 活动目标(保存有活动目标的片段)。"
}
}
},
@@ -1764,7 +1764,7 @@
},
"mode": {
"label": "保留模式",
"description": "保留模式:all(保存所有片段)、motion(保存有动作的片段)或 active_objects(保存有活动目标的片段)。"
"description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或 活动目标(保存有活动目标的片段)。"
}
}
},
@@ -2030,8 +2030,8 @@
}
},
"motion": {
"label": "动作时运行",
"description": "启用后,当在指定裁剪区域内检测到动作时运行分类。"
"label": "画面变动时运行",
"description": "启用后,当在指定裁剪区域内检测到画面变动时进行分类。"
},
"interval": {
"label": "分类间隔",
@@ -7,13 +7,7 @@ const environmentVars: SectionConfigOverrides = {
advancedFields: [],
uiSchema: {
additionalProperties: {
"ui:options": {
size: "lg",
additionalPropertyKeyLabel:
"configForm.additionalProperties.variableNameLabel",
additionalPropertyKeyPlaceholder:
"configForm.additionalProperties.variableNamePlaceholder",
},
"ui:options": { size: "lg" },
},
},
},
@@ -9,15 +9,7 @@ const genai: SectionConfigOverrides = {
uiSchema: {
"ui:options": { disableNestedCard: true },
"*": {
"ui:options": {
disableNestedCard: true,
additionalPropertyKeyLabel:
"configForm.additionalProperties.providerNameLabel",
additionalPropertyKeyPlaceholder:
"configForm.additionalProperties.providerNamePlaceholder",
additionalPropertyKeyPattern: "^[a-zA-Z0-9_-]+$",
preventKeyRename: true,
},
"ui:options": { disableNestedCard: true },
"ui:order": [
"provider",
"api_key",
@@ -12,13 +12,7 @@ const logger: SectionConfigOverrides = {
},
logs: {
additionalProperties: {
"ui:options": {
enumI18nPrefix: "logger.logLevel",
additionalPropertyKeyLabel:
"configForm.additionalProperties.loggerNameLabel",
additionalPropertyKeyPlaceholder:
"configForm.additionalProperties.loggerNamePlaceholder",
},
"ui:options": { enumI18nPrefix: "logger.logLevel" },
},
},
},
@@ -6,14 +6,12 @@ import {
StrictRJSFSchema,
WrapIfAdditionalTemplateProps,
} from "@rjsf/utils";
import { useEffect, useMemo, useState, type FocusEvent } from "react";
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
import { Label } from "@/components/ui/label";
import { cn } from "@/lib/utils";
import { useTranslation } from "react-i18next";
import { LuTrash2 } from "react-icons/lu";
import type { ConfigFormContext } from "@/types/configForm";
export function WrapIfAdditionalTemplate<
T = unknown,
@@ -32,7 +30,6 @@ export function WrapIfAdditionalTemplate<
onKeyRenameBlur,
readonly,
required,
registry,
schema,
uiSchema,
} = props;
@@ -41,55 +38,6 @@ export function WrapIfAdditionalTemplate<
const additional = ADDITIONAL_PROPERTY_FLAG in schema;
const uiOptions = getUiOptions(uiSchema);
const keyIsReadonly = uiOptions.additionalPropertyKeyReadonly === true;
const keyLabelKey =
typeof uiOptions.additionalPropertyKeyLabel === "string"
? uiOptions.additionalPropertyKeyLabel
: undefined;
const keyPlaceholderKey =
typeof uiOptions.additionalPropertyKeyPlaceholder === "string"
? uiOptions.additionalPropertyKeyPlaceholder
: undefined;
const keyPattern =
typeof uiOptions.additionalPropertyKeyPattern === "string"
? uiOptions.additionalPropertyKeyPattern
: undefined;
const preventKeyRename = uiOptions.preventKeyRename === true;
const formContext = registry?.formContext as ConfigFormContext | undefined;
// optionally, lock the key once it's been saved
const baseline = formContext?.baselineFormData;
const keyLocked =
preventKeyRename &&
typeof label === "string" &&
!!baseline &&
Object.prototype.hasOwnProperty.call(baseline, label);
// controlled key value so we can validate live and block invalid renames.
const [keyValue, setKeyValue] = useState<string>(label ?? "");
useEffect(() => {
setKeyValue(label ?? "");
}, [label]);
const keyRegex = useMemo(
() => (keyPattern ? new RegExp(keyPattern) : undefined),
[keyPattern],
);
const keyError = useMemo(() => {
if (!keyRegex || keyLocked) return null;
if (!keyRegex.test(keyValue)) {
return t("configForm.additionalProperties.keyPatternError", {
ns: "views/settings",
defaultValue:
"Use only letters, numbers, hyphens, and underscores (no spaces)",
});
}
return null;
}, [keyRegex, keyLocked, keyValue, t]);
if (!additional) {
return (
<div className={classNames} style={style}>
@@ -99,26 +47,20 @@ export function WrapIfAdditionalTemplate<
}
const keyId = `${id}-key`;
const keyLabel = keyLabelKey
? t(keyLabelKey, { ns: "views/settings" })
: t("configForm.additionalProperties.keyLabel", { ns: "views/settings" });
const keyLabel = t("configForm.additionalProperties.keyLabel", {
ns: "views/settings",
});
const valueLabel = t("configForm.additionalProperties.valueLabel", {
ns: "views/settings",
});
const keyPlaceholder = keyPlaceholderKey
? t(keyPlaceholderKey, { ns: "views/settings" })
: t("configForm.additionalProperties.keyPlaceholder", {
ns: "views/settings",
});
const keyPlaceholder = t("configForm.additionalProperties.keyPlaceholder", {
ns: "views/settings",
});
const removeLabel = t("configForm.additionalProperties.remove", {
ns: "views/settings",
});
const commitKeyRename = (e: FocusEvent<HTMLInputElement>) => {
if (readonly) return;
if (keyError) return;
onKeyRenameBlur?.(e);
};
const uiOptions = getUiOptions(uiSchema);
const keyIsReadonly = uiOptions.additionalPropertyKeyReadonly === true;
return (
<div
@@ -128,30 +70,23 @@ export function WrapIfAdditionalTemplate<
{!keyIsReadonly && (
<div className="col-span-12 space-y-2 md:col-span-2">
{displayLabel && <Label htmlFor={keyId}>{keyLabel}</Label>}
{keyLocked ? (
{keyIsReadonly ? (
<div
id={keyId}
className="flex items-center break-all text-sm text-primary-variant"
className="flex items-center text-sm text-muted-foreground"
>
{label}
</div>
) : (
<>
<Input
id={keyId}
name={keyId}
required={required}
value={keyValue}
placeholder={keyPlaceholder}
disabled={disabled || readonly}
onChange={(e) => setKeyValue(e.target.value)}
onBlur={!readonly ? commitKeyRename : undefined}
aria-invalid={keyError ? true : undefined}
/>
{keyError && (
<p className="text-xs text-destructive">{keyError}</p>
)}
</>
<Input
id={keyId}
name={keyId}
required={required}
defaultValue={label}
placeholder={keyPlaceholder}
disabled={disabled || readonly}
onBlur={!readonly ? onKeyRenameBlur : undefined}
/>
)}
</div>
)}