mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-05-03 06:50:58 +00:00
Compare commits
15 Commits
ee48d6782d
...
5af8fbac51
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5af8fbac51 | ||
|
|
b036eb612a | ||
|
|
8be82b63f4 | ||
|
|
1241e27aac | ||
|
|
02ee37ab55 | ||
|
|
e0f695d8b1 | ||
|
|
819e0a0bf9 | ||
|
|
2a3065eb67 | ||
|
|
db45dd3698 | ||
|
|
6136504128 | ||
|
|
47af0b63c5 | ||
|
|
8bfa4be42f | ||
|
|
b8af90331b | ||
|
|
95131541c5 | ||
|
|
a88760efa1 |
@ -10,7 +10,7 @@ echo "[INFO] Starting certsync..."
|
|||||||
|
|
||||||
lefile="/etc/letsencrypt/live/frigate/fullchain.pem"
|
lefile="/etc/letsencrypt/live/frigate/fullchain.pem"
|
||||||
|
|
||||||
tls_enabled=`python3 /usr/local/nginx/get_listen_settings.py | jq -r .enabled`
|
tls_enabled=`python3 /usr/local/nginx/get_listen_settings.py | jq -r .tls.enabled`
|
||||||
|
|
||||||
while true
|
while true
|
||||||
do
|
do
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
import multiprocessing as mp
|
import multiprocessing as mp
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
import threading
|
import threading
|
||||||
from multiprocessing import Queue
|
from multiprocessing import Queue
|
||||||
from multiprocessing.managers import DictProxy, SyncManager
|
from multiprocessing.managers import DictProxy, SyncManager
|
||||||
@ -16,11 +14,11 @@ from frigate.config.camera.updater import (
|
|||||||
CameraConfigUpdateEnum,
|
CameraConfigUpdateEnum,
|
||||||
CameraConfigUpdateSubscriber,
|
CameraConfigUpdateSubscriber,
|
||||||
)
|
)
|
||||||
from frigate.const import SHM_FRAMES_VAR
|
|
||||||
from frigate.models import Regions
|
from frigate.models import Regions
|
||||||
from frigate.util.builtin import empty_and_close_queue
|
from frigate.util.builtin import empty_and_close_queue
|
||||||
from frigate.util.image import SharedMemoryFrameManager, UntrackedSharedMemory
|
from frigate.util.image import SharedMemoryFrameManager, UntrackedSharedMemory
|
||||||
from frigate.util.object import get_camera_regions_grid
|
from frigate.util.object import get_camera_regions_grid
|
||||||
|
from frigate.util.services import calculate_shm_requirements
|
||||||
from frigate.video import CameraCapture, CameraTracker
|
from frigate.video import CameraCapture, CameraTracker
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -74,53 +72,25 @@ class CameraMaintainer(threading.Thread):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def __calculate_shm_frame_count(self) -> int:
|
def __calculate_shm_frame_count(self) -> int:
|
||||||
total_shm = round(shutil.disk_usage("/dev/shm").total / pow(2, 20), 1)
|
shm_stats = calculate_shm_requirements(self.config)
|
||||||
|
|
||||||
# required for log files + nginx cache
|
if not shm_stats:
|
||||||
min_req_shm = 40 + 10
|
# /dev/shm not available
|
||||||
|
|
||||||
if self.config.birdseye.restream:
|
|
||||||
min_req_shm += 8
|
|
||||||
|
|
||||||
available_shm = total_shm - min_req_shm
|
|
||||||
cam_total_frame_size = 0.0
|
|
||||||
|
|
||||||
for camera in self.config.cameras.values():
|
|
||||||
if (
|
|
||||||
camera.enabled_in_config
|
|
||||||
and camera.detect.width
|
|
||||||
and camera.detect.height
|
|
||||||
):
|
|
||||||
cam_total_frame_size += round(
|
|
||||||
(camera.detect.width * camera.detect.height * 1.5 + 270480)
|
|
||||||
/ 1048576,
|
|
||||||
1,
|
|
||||||
)
|
|
||||||
|
|
||||||
# leave room for 2 cameras that are added dynamically, if a user wants to add more cameras they may need to increase the SHM size and restart after adding them.
|
|
||||||
cam_total_frame_size += 2 * round(
|
|
||||||
(1280 * 720 * 1.5 + 270480) / 1048576,
|
|
||||||
1,
|
|
||||||
)
|
|
||||||
|
|
||||||
if cam_total_frame_size == 0.0:
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
shm_frame_count = min(
|
|
||||||
int(os.environ.get(SHM_FRAMES_VAR, "50")),
|
|
||||||
int(available_shm / (cam_total_frame_size)),
|
|
||||||
)
|
|
||||||
|
|
||||||
logger.debug(
|
logger.debug(
|
||||||
f"Calculated total camera size {available_shm} / {cam_total_frame_size} :: {shm_frame_count} frames for each camera in SHM"
|
f"Calculated total camera size {shm_stats['available']} / "
|
||||||
|
f"{shm_stats['camera_frame_size']} :: {shm_stats['shm_frame_count']} "
|
||||||
|
f"frames for each camera in SHM"
|
||||||
)
|
)
|
||||||
|
|
||||||
if shm_frame_count < 20:
|
if shm_stats["shm_frame_count"] < 20:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
f"The current SHM size of {total_shm}MB is too small, recommend increasing it to at least {round(min_req_shm + cam_total_frame_size * 20)}MB."
|
f"The current SHM size of {shm_stats['total']}MB is too small, "
|
||||||
|
f"recommend increasing it to at least {shm_stats['min_shm']}MB."
|
||||||
)
|
)
|
||||||
|
|
||||||
return shm_frame_count
|
return shm_stats["shm_frame_count"]
|
||||||
|
|
||||||
def __start_camera_processor(
|
def __start_camera_processor(
|
||||||
self, name: str, config: CameraConfig, runtime: bool = False
|
self, name: str, config: CameraConfig, runtime: bool = False
|
||||||
|
|||||||
@ -8,7 +8,6 @@ from json import JSONDecodeError
|
|||||||
from multiprocessing.managers import DictProxy
|
from multiprocessing.managers import DictProxy
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
import psutil
|
|
||||||
import requests
|
import requests
|
||||||
from requests.exceptions import RequestException
|
from requests.exceptions import RequestException
|
||||||
|
|
||||||
@ -18,9 +17,11 @@ from frigate.data_processing.types import DataProcessorMetrics
|
|||||||
from frigate.object_detection.base import ObjectDetectProcess
|
from frigate.object_detection.base import ObjectDetectProcess
|
||||||
from frigate.types import StatsTrackingTypes
|
from frigate.types import StatsTrackingTypes
|
||||||
from frigate.util.services import (
|
from frigate.util.services import (
|
||||||
|
calculate_shm_requirements,
|
||||||
get_amd_gpu_stats,
|
get_amd_gpu_stats,
|
||||||
get_bandwidth_stats,
|
get_bandwidth_stats,
|
||||||
get_cpu_stats,
|
get_cpu_stats,
|
||||||
|
get_fs_type,
|
||||||
get_intel_gpu_stats,
|
get_intel_gpu_stats,
|
||||||
get_jetson_stats,
|
get_jetson_stats,
|
||||||
get_nvidia_gpu_stats,
|
get_nvidia_gpu_stats,
|
||||||
@ -70,16 +71,6 @@ def stats_init(
|
|||||||
return stats_tracking
|
return stats_tracking
|
||||||
|
|
||||||
|
|
||||||
def get_fs_type(path: str) -> str:
|
|
||||||
bestMatch = ""
|
|
||||||
fsType = ""
|
|
||||||
for part in psutil.disk_partitions(all=True):
|
|
||||||
if path.startswith(part.mountpoint) and len(bestMatch) < len(part.mountpoint):
|
|
||||||
fsType = part.fstype
|
|
||||||
bestMatch = part.mountpoint
|
|
||||||
return fsType
|
|
||||||
|
|
||||||
|
|
||||||
def read_temperature(path: str) -> Optional[float]:
|
def read_temperature(path: str) -> Optional[float]:
|
||||||
if os.path.isfile(path):
|
if os.path.isfile(path):
|
||||||
with open(path) as f:
|
with open(path) as f:
|
||||||
@ -389,7 +380,7 @@ def stats_snapshot(
|
|||||||
"last_updated": int(time.time()),
|
"last_updated": int(time.time()),
|
||||||
}
|
}
|
||||||
|
|
||||||
for path in [RECORD_DIR, CLIPS_DIR, CACHE_DIR, "/dev/shm"]:
|
for path in [RECORD_DIR, CLIPS_DIR, CACHE_DIR]:
|
||||||
try:
|
try:
|
||||||
storage_stats = shutil.disk_usage(path)
|
storage_stats = shutil.disk_usage(path)
|
||||||
except (FileNotFoundError, OSError):
|
except (FileNotFoundError, OSError):
|
||||||
@ -403,6 +394,8 @@ def stats_snapshot(
|
|||||||
"mount_type": get_fs_type(path),
|
"mount_type": get_fs_type(path),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stats["service"]["storage"]["/dev/shm"] = calculate_shm_requirements(config)
|
||||||
|
|
||||||
stats["processes"] = {}
|
stats["processes"] = {}
|
||||||
for name, pid in stats_tracking["processes"].items():
|
for name, pid in stats_tracking["processes"].items():
|
||||||
stats["processes"][name] = {
|
stats["processes"][name] = {
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import resource
|
import resource
|
||||||
|
import shutil
|
||||||
import signal
|
import signal
|
||||||
import subprocess as sp
|
import subprocess as sp
|
||||||
import traceback
|
import traceback
|
||||||
@ -22,6 +23,7 @@ from frigate.const import (
|
|||||||
DRIVER_ENV_VAR,
|
DRIVER_ENV_VAR,
|
||||||
FFMPEG_HWACCEL_NVIDIA,
|
FFMPEG_HWACCEL_NVIDIA,
|
||||||
FFMPEG_HWACCEL_VAAPI,
|
FFMPEG_HWACCEL_VAAPI,
|
||||||
|
SHM_FRAMES_VAR,
|
||||||
)
|
)
|
||||||
from frigate.util.builtin import clean_camera_user_pass, escape_special_characters
|
from frigate.util.builtin import clean_camera_user_pass, escape_special_characters
|
||||||
|
|
||||||
@ -768,3 +770,65 @@ def set_file_limit() -> None:
|
|||||||
logger.debug(
|
logger.debug(
|
||||||
f"File limit set. New soft limit: {new_soft}, Hard limit remains: {current_hard}"
|
f"File limit set. New soft limit: {new_soft}, Hard limit remains: {current_hard}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_fs_type(path: str) -> str:
|
||||||
|
bestMatch = ""
|
||||||
|
fsType = ""
|
||||||
|
for part in psutil.disk_partitions(all=True):
|
||||||
|
if path.startswith(part.mountpoint) and len(bestMatch) < len(part.mountpoint):
|
||||||
|
fsType = part.fstype
|
||||||
|
bestMatch = part.mountpoint
|
||||||
|
return fsType
|
||||||
|
|
||||||
|
|
||||||
|
def calculate_shm_requirements(config) -> dict:
|
||||||
|
try:
|
||||||
|
storage_stats = shutil.disk_usage("/dev/shm")
|
||||||
|
except (FileNotFoundError, OSError):
|
||||||
|
return {}
|
||||||
|
|
||||||
|
total_mb = round(storage_stats.total / pow(2, 20), 1)
|
||||||
|
used_mb = round(storage_stats.used / pow(2, 20), 1)
|
||||||
|
free_mb = round(storage_stats.free / pow(2, 20), 1)
|
||||||
|
|
||||||
|
# required for log files + nginx cache
|
||||||
|
min_req_shm = 40 + 10
|
||||||
|
|
||||||
|
if config.birdseye.restream:
|
||||||
|
min_req_shm += 8
|
||||||
|
|
||||||
|
available_shm = total_mb - min_req_shm
|
||||||
|
cam_total_frame_size = 0.0
|
||||||
|
|
||||||
|
for camera in config.cameras.values():
|
||||||
|
if camera.enabled_in_config and camera.detect.width and camera.detect.height:
|
||||||
|
cam_total_frame_size += round(
|
||||||
|
(camera.detect.width * camera.detect.height * 1.5 + 270480) / 1048576,
|
||||||
|
1,
|
||||||
|
)
|
||||||
|
|
||||||
|
# leave room for 2 cameras that are added dynamically, if a user wants to add more cameras they may need to increase the SHM size and restart after adding them.
|
||||||
|
cam_total_frame_size += 2 * round(
|
||||||
|
(1280 * 720 * 1.5 + 270480) / 1048576,
|
||||||
|
1,
|
||||||
|
)
|
||||||
|
|
||||||
|
shm_frame_count = min(
|
||||||
|
int(os.environ.get(SHM_FRAMES_VAR, "50")),
|
||||||
|
int(available_shm / cam_total_frame_size),
|
||||||
|
)
|
||||||
|
|
||||||
|
# minimum required shm recommendation
|
||||||
|
min_shm = round(min_req_shm + cam_total_frame_size * 20)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"total": total_mb,
|
||||||
|
"used": used_mb,
|
||||||
|
"free": free_mb,
|
||||||
|
"mount_type": get_fs_type("/dev/shm"),
|
||||||
|
"available": round(available_shm, 1),
|
||||||
|
"camera_frame_size": cam_total_frame_size,
|
||||||
|
"shm_frame_count": shm_frame_count,
|
||||||
|
"min_shm": min_shm,
|
||||||
|
}
|
||||||
|
|||||||
@ -106,5 +106,7 @@
|
|||||||
},
|
},
|
||||||
"label": {
|
"label": {
|
||||||
"back": "Върни се"
|
"back": "Върни се"
|
||||||
}
|
},
|
||||||
|
"selectItem": "Избери {{item}}",
|
||||||
|
"readTheDocumentation": "Прочетете документацията"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -261,5 +261,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "Pàgina no trobada"
|
"desc": "Pàgina no trobada"
|
||||||
},
|
},
|
||||||
"selectItem": "Selecciona {{item}}"
|
"selectItem": "Selecciona {{item}}",
|
||||||
|
"readTheDocumentation": "Llegir la documentació"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -261,5 +261,7 @@
|
|||||||
"admin": "Správce",
|
"admin": "Správce",
|
||||||
"viewer": "Divák",
|
"viewer": "Divák",
|
||||||
"desc": "Správci mají plný přístup ke všem funkcím v uživatelském rozhraní Frigate. Diváci jsou omezeni na sledování kamer, položek přehledu a historických záznamů v UI."
|
"desc": "Správci mají plný přístup ke všem funkcím v uživatelském rozhraní Frigate. Diváci jsou omezeni na sledování kamer, položek přehledu a historických záznamů v UI."
|
||||||
}
|
},
|
||||||
|
"selectItem": "Vybrat {{item}}",
|
||||||
|
"readTheDocumentation": "Přečtěte si dokumentaci"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -254,5 +254,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "Side ikke fundet"
|
"desc": "Side ikke fundet"
|
||||||
},
|
},
|
||||||
"selectItem": "Vælg {{item}}"
|
"selectItem": "Vælg {{item}}",
|
||||||
|
"readTheDocumentation": "Læs dokumentationen"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -268,6 +268,7 @@
|
|||||||
"documentTitle": "Nicht gefunden - Frigate"
|
"documentTitle": "Nicht gefunden - Frigate"
|
||||||
},
|
},
|
||||||
"selectItem": "Wähle {{item}}",
|
"selectItem": "Wähle {{item}}",
|
||||||
|
"readTheDocumentation": "Dokumentation lesen",
|
||||||
"accessDenied": {
|
"accessDenied": {
|
||||||
"desc": "Du hast keine Berechtigung diese Seite anzuzeigen.",
|
"desc": "Du hast keine Berechtigung diese Seite anzuzeigen.",
|
||||||
"documentTitle": "Zugang verweigert - Frigate",
|
"documentTitle": "Zugang verweigert - Frigate",
|
||||||
|
|||||||
@ -34,5 +34,7 @@
|
|||||||
"markAsReviewed": "Als geprüft kennzeichnen",
|
"markAsReviewed": "Als geprüft kennzeichnen",
|
||||||
"selected_one": "{{count}} ausgewählt",
|
"selected_one": "{{count}} ausgewählt",
|
||||||
"selected_other": "{{count}} ausgewählt",
|
"selected_other": "{{count}} ausgewählt",
|
||||||
"detected": "erkannt"
|
"detected": "erkannt",
|
||||||
|
"suspiciousActivity": "Verdächtige Aktivität",
|
||||||
|
"threateningActivity": "Bedrohliche Aktivität"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,6 +69,9 @@
|
|||||||
},
|
},
|
||||||
"snapshotScore": {
|
"snapshotScore": {
|
||||||
"label": "Schnappschuss Bewertung"
|
"label": "Schnappschuss Bewertung"
|
||||||
|
},
|
||||||
|
"score": {
|
||||||
|
"label": "Ergebnis"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"documentTitle": "Erkunde - Frigate",
|
"documentTitle": "Erkunde - Frigate",
|
||||||
@ -213,5 +216,11 @@
|
|||||||
"fetchingTrackedObjectsFailed": "Fehler beim Abrufen von verfolgten Objekten: {{errorMessage}}",
|
"fetchingTrackedObjectsFailed": "Fehler beim Abrufen von verfolgten Objekten: {{errorMessage}}",
|
||||||
"trackedObjectsCount_one": "{{count}} verfolgtes Objekt ",
|
"trackedObjectsCount_one": "{{count}} verfolgtes Objekt ",
|
||||||
"trackedObjectsCount_other": "{{count}} verfolgte Objekte ",
|
"trackedObjectsCount_other": "{{count}} verfolgte Objekte ",
|
||||||
"exploreMore": "Erkunde mehr {{label}} Objekte"
|
"exploreMore": "Erkunde mehr {{label}} Objekte",
|
||||||
|
"aiAnalysis": {
|
||||||
|
"title": "KI-Analyse"
|
||||||
|
},
|
||||||
|
"concerns": {
|
||||||
|
"label": "Bedenken"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -46,7 +46,7 @@
|
|||||||
"train": {
|
"train": {
|
||||||
"title": "Trainiere",
|
"title": "Trainiere",
|
||||||
"aria": "Wähle Training",
|
"aria": "Wähle Training",
|
||||||
"empty": "Es gibt keine aktuellen Versuche zurGesichtserkennung"
|
"empty": "Es gibt keine aktuellen Versuche zur Gesichtserkennung"
|
||||||
},
|
},
|
||||||
"deleteFaceLibrary": {
|
"deleteFaceLibrary": {
|
||||||
"title": "Lösche Name",
|
"title": "Lösche Name",
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
"untilForTime": "Ως{{time}}",
|
"untilForTime": "Ως{{time}}",
|
||||||
"untilForRestart": "Μέχρι να γίνει επανεκίννηση του Frigate.",
|
"untilForRestart": "Μέχρι να γίνει επανεκίννηση του Frigate.",
|
||||||
"untilRestart": "Μέχρι να γίνει επανεκκίνηση",
|
"untilRestart": "Μέχρι να γίνει επανεκκίνηση",
|
||||||
"justNow": "Μόλις τώρα"
|
"justNow": "Μόλις τώρα",
|
||||||
|
"ago": "{{timeAgo}} Πριν"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"group": {
|
"group": {
|
||||||
"add": "Προσθήκη ομάδας καμερών",
|
"add": "Προσθήκη ομάδας καμερών",
|
||||||
"label": "Ομάδες καμερών"
|
"label": "Ομάδες καμερών",
|
||||||
|
"edit": "Επεξεργασία ομάδας καμερών",
|
||||||
|
"delete": {
|
||||||
|
"label": "Διαγραφή ομάδας κάμερας"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
{
|
{
|
||||||
"documentTitle": "Εξερευνήστε - Frigate"
|
"documentTitle": "Εξερευνήστε - Frigate",
|
||||||
|
"generativeAI": "Παραγωγική τεχνητή νοημοσύνη",
|
||||||
|
"exploreMore": "Εξερευνήστε περισσότερα αντικείμενα {{label}}",
|
||||||
|
"exploreIsUnavailable": {
|
||||||
|
"title": "Η εξερεύνηση δεν είναι διαθέσιμη"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"documentTitle": "Εξαγωγή - Frigate",
|
"documentTitle": "Εξαγωγή - Frigate",
|
||||||
"search": "Αναζήτηση",
|
"search": "Αναζήτηση",
|
||||||
"deleteExport": "Διαγραφή εξαγωγής"
|
"deleteExport": "Διαγραφή εξαγωγής",
|
||||||
|
"noExports": "Δεν βρέθηκαν εξαγωγές"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,5 +2,6 @@
|
|||||||
"documentTitle": "Ζωντανά - Frigate",
|
"documentTitle": "Ζωντανά - Frigate",
|
||||||
"twoWayTalk": {
|
"twoWayTalk": {
|
||||||
"enable": "Ενεργοποίηση αμφίδρομης επικοινωνίας"
|
"enable": "Ενεργοποίηση αμφίδρομης επικοινωνίας"
|
||||||
}
|
},
|
||||||
|
"documentTitle.withCamera": "{{camera}} - Live - Frigate"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,5 +3,6 @@
|
|||||||
"savedSearches": "Αποθηκευμένες Αναζητήσεις",
|
"savedSearches": "Αποθηκευμένες Αναζητήσεις",
|
||||||
"button": {
|
"button": {
|
||||||
"clear": "Εκαθάρηση αναζήτησης"
|
"clear": "Εκαθάρηση αναζήτησης"
|
||||||
}
|
},
|
||||||
|
"searchFor": "Αναζήτηση {{inputValue}}"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
{
|
{
|
||||||
"documentTitle": {
|
"documentTitle": {
|
||||||
"cameras": "Στατιστικά Καμερών - Frigate"
|
"cameras": "Στατιστικά Καμερών - Frigate",
|
||||||
|
"storage": "Στατιστικά αποθήκευσης - Frigate",
|
||||||
|
"general": "Γενικά στατιστικά στοιχεία - Frigate"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -262,5 +262,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "Page not found"
|
"desc": "Page not found"
|
||||||
},
|
},
|
||||||
"selectItem": "Select {{item}}"
|
"selectItem": "Select {{item}}",
|
||||||
|
"readTheDocumentation": "Read the documentation"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,8 +35,7 @@
|
|||||||
"audioIsUnavailable": "Audio is unavailable for this stream",
|
"audioIsUnavailable": "Audio is unavailable for this stream",
|
||||||
"audio": {
|
"audio": {
|
||||||
"tips": {
|
"tips": {
|
||||||
"title": "Audio must be output from your camera and configured in go2rtc for this stream.",
|
"title": "Audio must be output from your camera and configured in go2rtc for this stream."
|
||||||
"document": "Read the documentation "
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stream": "Stream",
|
"stream": "Stream",
|
||||||
|
|||||||
@ -69,8 +69,7 @@
|
|||||||
"restreaming": {
|
"restreaming": {
|
||||||
"disabled": "Restreaming is not enabled for this camera.",
|
"disabled": "Restreaming is not enabled for this camera.",
|
||||||
"desc": {
|
"desc": {
|
||||||
"title": "Set up go2rtc for additional live view options and audio for this camera.",
|
"title": "Set up go2rtc for additional live view options and audio for this camera."
|
||||||
"readTheDocumentation": "Read the documentation"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"showStats": {
|
"showStats": {
|
||||||
|
|||||||
@ -24,8 +24,7 @@
|
|||||||
"textTokenizer": "Text tokenizer"
|
"textTokenizer": "Text tokenizer"
|
||||||
},
|
},
|
||||||
"tips": {
|
"tips": {
|
||||||
"context": "You may want to reindex the embeddings of your tracked objects once the models are downloaded.",
|
"context": "You may want to reindex the embeddings of your tracked objects once the models are downloaded."
|
||||||
"documentation": "Read the documentation"
|
|
||||||
},
|
},
|
||||||
"error": "An error has occurred. Check Frigate logs."
|
"error": "An error has occurred. Check Frigate logs."
|
||||||
}
|
}
|
||||||
@ -73,7 +72,6 @@
|
|||||||
"offset": {
|
"offset": {
|
||||||
"label": "Annotation Offset",
|
"label": "Annotation Offset",
|
||||||
"desc": "This data comes from your camera's detect feed but is overlayed on images from the the record feed. It is unlikely that the two streams are perfectly in sync. As a result, the bounding box and the footage will not line up perfectly. However, the <code>annotation_offset</code> field can be used to adjust this.",
|
"desc": "This data comes from your camera's detect feed but is overlayed on images from the the record feed. It is unlikely that the two streams are perfectly in sync. As a result, the bounding box and the footage will not line up perfectly. However, the <code>annotation_offset</code> field can be used to adjust this.",
|
||||||
"documentation": "Read the documentation ",
|
|
||||||
"millisecondsToOffset": "Milliseconds to offset detect annotations by. <em>Default: 0</em>",
|
"millisecondsToOffset": "Milliseconds to offset detect annotations by. <em>Default: 0</em>",
|
||||||
"tips": "TIP: Imagine there is an event clip with a person walking from left to right. If the event timeline bounding box is consistently to the left of the person then the value should be decreased. Similarly, if a person is walking from left to right and the bounding box is consistently ahead of the person then the value should be increased.",
|
"tips": "TIP: Imagine there is an event clip with a person walking from left to right. If the event timeline bounding box is consistently to the left of the person then the value should be decreased. Similarly, if a person is walking from left to right and the bounding box is consistently ahead of the person then the value should be increased.",
|
||||||
"toast": {
|
"toast": {
|
||||||
|
|||||||
@ -71,7 +71,6 @@
|
|||||||
},
|
},
|
||||||
"nofaces": "No faces available",
|
"nofaces": "No faces available",
|
||||||
"pixels": "{{area}}px",
|
"pixels": "{{area}}px",
|
||||||
"readTheDocs": "Read the documentation",
|
|
||||||
"trainFaceAs": "Train Face as:",
|
"trainFaceAs": "Train Face as:",
|
||||||
"trainFace": "Train Face",
|
"trainFace": "Train Face",
|
||||||
"toast": {
|
"toast": {
|
||||||
|
|||||||
@ -119,15 +119,13 @@
|
|||||||
"title": "Stream",
|
"title": "Stream",
|
||||||
"audio": {
|
"audio": {
|
||||||
"tips": {
|
"tips": {
|
||||||
"title": "Audio must be output from your camera and configured in go2rtc for this stream.",
|
"title": "Audio must be output from your camera and configured in go2rtc for this stream."
|
||||||
"documentation": "Read the documentation "
|
|
||||||
},
|
},
|
||||||
"available": "Audio is available for this stream",
|
"available": "Audio is available for this stream",
|
||||||
"unavailable": "Audio is not available for this stream"
|
"unavailable": "Audio is not available for this stream"
|
||||||
},
|
},
|
||||||
"twoWayTalk": {
|
"twoWayTalk": {
|
||||||
"tips": "Your device must support the feature and WebRTC must be configured for two-way talk.",
|
"tips": "Your device must support the feature and WebRTC must be configured for two-way talk.",
|
||||||
"tips.documentation": "Read the documentation ",
|
|
||||||
"available": "Two-way talk is available for this stream",
|
"available": "Two-way talk is available for this stream",
|
||||||
"unavailable": "Two-way talk is unavailable for this stream"
|
"unavailable": "Two-way talk is unavailable for this stream"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -92,7 +92,6 @@
|
|||||||
"semanticSearch": {
|
"semanticSearch": {
|
||||||
"title": "Semantic Search",
|
"title": "Semantic Search",
|
||||||
"desc": "Semantic Search in Frigate allows you to find tracked objects within your review items using either the image itself, a user-defined text description, or an automatically generated one.",
|
"desc": "Semantic Search in Frigate allows you to find tracked objects within your review items using either the image itself, a user-defined text description, or an automatically generated one.",
|
||||||
"readTheDocumentation": "Read the Documentation",
|
|
||||||
"reindexNow": {
|
"reindexNow": {
|
||||||
"label": "Reindex Now",
|
"label": "Reindex Now",
|
||||||
"desc": "Reindexing will regenerate embeddings for all tracked object. This process runs in the background and may max out your CPU and take a fair amount of time depending on the number of tracked objects you have.",
|
"desc": "Reindexing will regenerate embeddings for all tracked object. This process runs in the background and may max out your CPU and take a fair amount of time depending on the number of tracked objects you have.",
|
||||||
@ -119,7 +118,6 @@
|
|||||||
"faceRecognition": {
|
"faceRecognition": {
|
||||||
"title": "Face Recognition",
|
"title": "Face Recognition",
|
||||||
"desc": "Face recognition allows people to be assigned names and when their face is recognized Frigate will assign the person's name as a sub label. This information is included in the UI, filters, as well as in notifications.",
|
"desc": "Face recognition allows people to be assigned names and when their face is recognized Frigate will assign the person's name as a sub label. This information is included in the UI, filters, as well as in notifications.",
|
||||||
"readTheDocumentation": "Read the Documentation",
|
|
||||||
"modelSize": {
|
"modelSize": {
|
||||||
"label": "Model Size",
|
"label": "Model Size",
|
||||||
"desc": "The size of the model used for face recognition.",
|
"desc": "The size of the model used for face recognition.",
|
||||||
@ -135,8 +133,7 @@
|
|||||||
},
|
},
|
||||||
"licensePlateRecognition": {
|
"licensePlateRecognition": {
|
||||||
"title": "License Plate Recognition",
|
"title": "License Plate Recognition",
|
||||||
"desc": "Frigate can recognize license plates on vehicles and automatically add the detected characters to the recognized_license_plate field or a known name as a sub_label to objects that are of type car. A common use case may be to read the license plates of cars pulling into a driveway or cars passing by on a street.",
|
"desc": "Frigate can recognize license plates on vehicles and automatically add the detected characters to the recognized_license_plate field or a known name as a sub_label to objects that are of type car. A common use case may be to read the license plates of cars pulling into a driveway or cars passing by on a street."
|
||||||
"readTheDocumentation": "Read the Documentation"
|
|
||||||
},
|
},
|
||||||
"restart_required": "Restart required (Enrichments settings changed)",
|
"restart_required": "Restart required (Enrichments settings changed)",
|
||||||
"toast": {
|
"toast": {
|
||||||
@ -167,7 +164,7 @@
|
|||||||
"reviewClassification": {
|
"reviewClassification": {
|
||||||
"title": "Review Classification",
|
"title": "Review Classification",
|
||||||
"desc": "Frigate categorizes review items as Alerts and Detections. By default, all <em>person</em> and <em>car</em> objects are considered Alerts. You can refine categorization of your review items by configuring required zones for them.",
|
"desc": "Frigate categorizes review items as Alerts and Detections. By default, all <em>person</em> and <em>car</em> objects are considered Alerts. You can refine categorization of your review items by configuring required zones for them.",
|
||||||
"readTheDocumentation": "Read the Documentation",
|
|
||||||
"noDefinedZones": "No zones are defined for this camera.",
|
"noDefinedZones": "No zones are defined for this camera.",
|
||||||
"objectAlertsTips": "All {{alertsLabels}} objects on {{cameraName}} will be shown as Alerts.",
|
"objectAlertsTips": "All {{alertsLabels}} objects on {{cameraName}} will be shown as Alerts.",
|
||||||
"zoneObjectAlertsTips": "All {{alertsLabels}} objects detected in {{zone}} on {{cameraName}} will be shown as Alerts.",
|
"zoneObjectAlertsTips": "All {{alertsLabels}} objects detected in {{zone}} on {{cameraName}} will be shown as Alerts.",
|
||||||
@ -313,7 +310,6 @@
|
|||||||
"speedEstimation": {
|
"speedEstimation": {
|
||||||
"title": "Speed Estimation",
|
"title": "Speed Estimation",
|
||||||
"desc": "Enable speed estimation for objects in this zone. The zone must have exactly 4 points.",
|
"desc": "Enable speed estimation for objects in this zone. The zone must have exactly 4 points.",
|
||||||
"docs": "Read the documentation",
|
|
||||||
"lineADistance": "Line A distance ({{unit}})",
|
"lineADistance": "Line A distance ({{unit}})",
|
||||||
"lineBDistance": "Line B distance ({{unit}})",
|
"lineBDistance": "Line B distance ({{unit}})",
|
||||||
"lineCDistance": "Line C distance ({{unit}})",
|
"lineCDistance": "Line C distance ({{unit}})",
|
||||||
@ -343,16 +339,14 @@
|
|||||||
"add": "New Motion Mask",
|
"add": "New Motion Mask",
|
||||||
"edit": "Edit Motion Mask",
|
"edit": "Edit Motion Mask",
|
||||||
"context": {
|
"context": {
|
||||||
"title": "Motion masks are used to prevent unwanted types of motion from triggering detection (example: tree branches, camera timestamps). Motion masks should be used <em>very sparingly</em>, over-masking will make it more difficult for objects to be tracked.",
|
"title": "Motion masks are used to prevent unwanted types of motion from triggering detection (example: tree branches, camera timestamps). Motion masks should be used <em>very sparingly</em>, over-masking will make it more difficult for objects to be tracked."
|
||||||
"documentation": "Read the documentation"
|
|
||||||
},
|
},
|
||||||
"point_one": "{{count}} point",
|
"point_one": "{{count}} point",
|
||||||
"point_other": "{{count}} points",
|
"point_other": "{{count}} points",
|
||||||
"clickDrawPolygon": "Click to draw a polygon on the image.",
|
"clickDrawPolygon": "Click to draw a polygon on the image.",
|
||||||
"polygonAreaTooLarge": {
|
"polygonAreaTooLarge": {
|
||||||
"title": "The motion mask is covering {{polygonArea}}% of the camera frame. Large motion masks are not recommended.",
|
"title": "The motion mask is covering {{polygonArea}}% of the camera frame. Large motion masks are not recommended.",
|
||||||
"tips": "Motion masks do not prevent objects from being detected. You should use a required zone instead.",
|
"tips": "Motion masks do not prevent objects from being detected. You should use a required zone instead."
|
||||||
"documentation": "Read the documentation"
|
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": {
|
"success": {
|
||||||
@ -456,7 +450,6 @@
|
|||||||
"title": "Object Shape Filter Drawing",
|
"title": "Object Shape Filter Drawing",
|
||||||
"desc": "Draw a rectangle on the image to view area and ratio details",
|
"desc": "Draw a rectangle on the image to view area and ratio details",
|
||||||
"tips": "Enable this option to draw a rectangle on the camera image to show its area and ratio. These values can then be used to set object shape filter parameters in your config.",
|
"tips": "Enable this option to draw a rectangle on the camera image to show its area and ratio. These values can then be used to set object shape filter parameters in your config.",
|
||||||
"document": "Read the documentation ",
|
|
||||||
"score": "Score",
|
"score": "Score",
|
||||||
"ratio": "Ratio",
|
"ratio": "Ratio",
|
||||||
"area": "Area"
|
"area": "Area"
|
||||||
@ -563,13 +556,11 @@
|
|||||||
"title": "Notifications",
|
"title": "Notifications",
|
||||||
"notificationSettings": {
|
"notificationSettings": {
|
||||||
"title": "Notification Settings",
|
"title": "Notification Settings",
|
||||||
"desc": "Frigate can natively send push notifications to your device when it is running in the browser or installed as a PWA.",
|
"desc": "Frigate can natively send push notifications to your device when it is running in the browser or installed as a PWA."
|
||||||
"documentation": "Read the Documentation"
|
|
||||||
},
|
},
|
||||||
"notificationUnavailable": {
|
"notificationUnavailable": {
|
||||||
"title": "Notifications Unavailable",
|
"title": "Notifications Unavailable",
|
||||||
"desc": "Web push notifications require a secure context (<code>https://…</code>). This is a browser limitation. Access Frigate securely to use notifications.",
|
"desc": "Web push notifications require a secure context (<code>https://…</code>). This is a browser limitation. Access Frigate securely to use notifications."
|
||||||
"documentation": "Read the Documentation"
|
|
||||||
},
|
},
|
||||||
"globalSettings": {
|
"globalSettings": {
|
||||||
"title": "Global Settings",
|
"title": "Global Settings",
|
||||||
@ -626,7 +617,6 @@
|
|||||||
"snapshotConfig": {
|
"snapshotConfig": {
|
||||||
"title": "Snapshot Configuration",
|
"title": "Snapshot Configuration",
|
||||||
"desc": "Submitting to Frigate+ requires both snapshots and <code>clean_copy</code> snapshots to be enabled in your config.",
|
"desc": "Submitting to Frigate+ requires both snapshots and <code>clean_copy</code> snapshots to be enabled in your config.",
|
||||||
"documentation": "Read the documentation",
|
|
||||||
"cleanCopyWarning": "Some cameras have snapshots enabled but have the clean copy disabled. You need to enable <code>clean_copy</code> in your snapshot config to be able to submit images from these cameras to Frigate+.",
|
"cleanCopyWarning": "Some cameras have snapshots enabled but have the clean copy disabled. You need to enable <code>clean_copy</code> in your snapshot config to be able to submit images from these cameras to Frigate+.",
|
||||||
"table": {
|
"table": {
|
||||||
"camera": "Camera",
|
"camera": "Camera",
|
||||||
|
|||||||
@ -91,6 +91,10 @@
|
|||||||
"tips": "This value represents the total storage used by the recordings in Frigate's database. Frigate does not track storage usage for all files on your disk.",
|
"tips": "This value represents the total storage used by the recordings in Frigate's database. Frigate does not track storage usage for all files on your disk.",
|
||||||
"earliestRecording": "Earliest recording available:"
|
"earliestRecording": "Earliest recording available:"
|
||||||
},
|
},
|
||||||
|
"shm": {
|
||||||
|
"title": "SHM (shared memory) allocation",
|
||||||
|
"warning": "The current SHM size of {{total}}MB is too small. Increase it to at least {{min_shm}}MB."
|
||||||
|
},
|
||||||
"cameraStorage": {
|
"cameraStorage": {
|
||||||
"title": "Camera Storage",
|
"title": "Camera Storage",
|
||||||
"camera": "Camera",
|
"camera": "Camera",
|
||||||
|
|||||||
@ -278,5 +278,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "Página no encontrada"
|
"desc": "Página no encontrada"
|
||||||
},
|
},
|
||||||
"selectItem": "Seleccionar {{item}}"
|
"selectItem": "Seleccionar {{item}}",
|
||||||
|
"readTheDocumentation": "Leer la documentación"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -168,5 +168,6 @@
|
|||||||
"length": {
|
"length": {
|
||||||
"feet": "jalka"
|
"feet": "jalka"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Lue dokumentaatio"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -262,6 +262,7 @@
|
|||||||
"desc": "Page non trouvée"
|
"desc": "Page non trouvée"
|
||||||
},
|
},
|
||||||
"selectItem": "Sélectionner {{item}}",
|
"selectItem": "Sélectionner {{item}}",
|
||||||
|
"readTheDocumentation": "Lire la documentation",
|
||||||
"accessDenied": {
|
"accessDenied": {
|
||||||
"title": "Accès refusé",
|
"title": "Accès refusé",
|
||||||
"documentTitle": "Accès refusé - Frigate",
|
"documentTitle": "Accès refusé - Frigate",
|
||||||
|
|||||||
@ -9,5 +9,6 @@
|
|||||||
"today": "Hoxe",
|
"today": "Hoxe",
|
||||||
"untilRestart": "Ata o reinicio",
|
"untilRestart": "Ata o reinicio",
|
||||||
"ago": "Fai {{timeAgo}}"
|
"ago": "Fai {{timeAgo}}"
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Ler a documentación"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -261,5 +261,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "דף לא נמצא"
|
"desc": "דף לא נמצא"
|
||||||
},
|
},
|
||||||
"selectItem": "בחירה:{{item}}"
|
"selectItem": "בחירה:{{item}}",
|
||||||
|
"readTheDocumentation": "קרא את התיעוד"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -262,5 +262,6 @@
|
|||||||
},
|
},
|
||||||
"label": {
|
"label": {
|
||||||
"back": "Vissza"
|
"back": "Vissza"
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Olvassa el a dokumentációt"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,5 +10,6 @@
|
|||||||
"last7": "7 hari terakhir",
|
"last7": "7 hari terakhir",
|
||||||
"last14": "14 hari terakhir",
|
"last14": "14 hari terakhir",
|
||||||
"last30": "30 hari terakhir"
|
"last30": "30 hari terakhir"
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Baca dokumentasi"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -279,5 +279,6 @@
|
|||||||
"title": "Salva"
|
"title": "Salva"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"selectItem": "Seleziona {{item}}"
|
"selectItem": "Seleziona {{item}}",
|
||||||
|
"readTheDocumentation": "Leggi la documentazione"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
"label": "Metodo di trasmissione",
|
"label": "Metodo di trasmissione",
|
||||||
"method": {
|
"method": {
|
||||||
"smartStreaming": {
|
"smartStreaming": {
|
||||||
"label": "Trasmissione intelligente (consigliato)",
|
"label": "Trasmissione intelligente (consigliata)",
|
||||||
"desc": "La trasmissione intelligente aggiorna l'immagine della telecamera una volta al minuto quando non si verifica alcuna attività rilevabile, per risparmiare larghezza di banda e risorse. Quando viene rilevata un'attività, l'immagine passa automaticamente alla trasmissione dal vivo."
|
"desc": "La trasmissione intelligente aggiorna l'immagine della telecamera una volta al minuto quando non si verifica alcuna attività rilevabile, per risparmiare larghezza di banda e risorse. Quando viene rilevata un'attività, l'immagine passa automaticamente alla trasmissione dal vivo."
|
||||||
},
|
},
|
||||||
"continuousStreaming": {
|
"continuousStreaming": {
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"alerts": "Avvisi",
|
"alerts": "Avvisi",
|
||||||
"detections": "Rilevamento",
|
"detections": "Rilevamenti",
|
||||||
"motion": {
|
"motion": {
|
||||||
"label": "Movimento",
|
"label": "Movimenti",
|
||||||
"only": "Solo movimento"
|
"only": "Solo movimenti"
|
||||||
},
|
},
|
||||||
"empty": {
|
"empty": {
|
||||||
"alert": "Non ci sono avvisi da rivedere",
|
"alert": "Non ci sono avvisi da rivedere",
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
"table": {
|
"table": {
|
||||||
"snapshots": "Istantanee",
|
"snapshots": "Istantanee",
|
||||||
"camera": "Telecamera",
|
"camera": "Telecamera",
|
||||||
"cleanCopySnapshots": "<code>clean_copy</code> Istantanee"
|
"cleanCopySnapshots": "Istantanee <code>clean_copy</code>"
|
||||||
},
|
},
|
||||||
"desc": "Per inviare a Frigate+ è necessario che nella configurazione siano abilitate sia le istantanee che le istantanee <code>clean_copy</code>.",
|
"desc": "Per inviare a Frigate+ è necessario che nella configurazione siano abilitate sia le istantanee che le istantanee <code>clean_copy</code>.",
|
||||||
"documentation": "Leggi la documentazione",
|
"documentation": "Leggi la documentazione",
|
||||||
@ -297,7 +297,7 @@
|
|||||||
"regardlessOfZoneObjectDetectionsTips": "Tutti gli oggetti {{detectionsLabels}} non categorizzati su {{cameraName}} verranno mostrati come Rilevamenti, indipendentemente dalla zona in cui si trovano."
|
"regardlessOfZoneObjectDetectionsTips": "Tutti gli oggetti {{detectionsLabels}} non categorizzati su {{cameraName}} verranno mostrati come Rilevamenti, indipendentemente dalla zona in cui si trovano."
|
||||||
},
|
},
|
||||||
"title": "Classificazione della revisione",
|
"title": "Classificazione della revisione",
|
||||||
"desc": "Frigate categorizza gli elementi di revisione come Avvisi e Rilevamenti. Per impostazione predefinita, tutti gli oggetti <em>persona</em> e <em>auto</em> sono considerati Avvisi. Puoi perfezionare la categorizzazione degli elementi di revisione configurando le zone desiderate.",
|
"desc": "Frigate categorizza gli elementi di revisione come Avvisi e Rilevamenti. Per impostazione predefinita, tutti gli oggetti <em>persona</em> e <em>automobile</em> sono considerati Avvisi. Puoi perfezionare la categorizzazione degli elementi di revisione configurando le zone desiderate.",
|
||||||
"objectAlertsTips": "Tutti gli oggetti {{alertsLabels}} su {{cameraName}} verranno mostrati come Avvisi.",
|
"objectAlertsTips": "Tutti gli oggetti {{alertsLabels}} su {{cameraName}} verranno mostrati come Avvisi.",
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "La configurazione della classificazione di revisione è stata salvata. Riavvia Frigate per applicare le modifiche."
|
"success": "La configurazione della classificazione di revisione è stata salvata. Riavvia Frigate per applicare le modifiche."
|
||||||
@ -310,7 +310,7 @@
|
|||||||
"unsavedChanges": "Impostazioni di classificazione delle revisioni non salvate per {{camera}}"
|
"unsavedChanges": "Impostazioni di classificazione delle revisioni non salvate per {{camera}}"
|
||||||
},
|
},
|
||||||
"streams": {
|
"streams": {
|
||||||
"desc": "Disattiva temporaneamente una telecamera fino al riavvio di Frigate. La disattivazione completa di una telecamera interrompe l'elaborazione dei flussi da parte di Frigate. Rilevamento, registrazione e correzioni non saranno disponibili.<br /> <em>Nota: questa operazione non disabilita le ritrasmissioni di go2rtc.</em>",
|
"desc": "Disattiva temporaneamente una telecamera fino al riavvio di Frigate. La disattivazione completa di una telecamera interrompe l'elaborazione dei flussi da parte di Frigate. Rilevamenti, registrazioni e correzioni non saranno disponibili.<br /> <em>Nota: questa operazione non disabilita le ritrasmissioni di go2rtc.</em>",
|
||||||
"title": "Flussi"
|
"title": "Flussi"
|
||||||
},
|
},
|
||||||
"title": "Impostazioni telecamera",
|
"title": "Impostazioni telecamera",
|
||||||
@ -470,7 +470,7 @@
|
|||||||
"general": {
|
"general": {
|
||||||
"liveDashboard": {
|
"liveDashboard": {
|
||||||
"automaticLiveView": {
|
"automaticLiveView": {
|
||||||
"desc": "Passa automaticamente alla visualizzazione dal vivodi una telecamera quando viene rilevata attività. Disattivando questa opzione, le immagini statiche della telecamera nella schermata dal vivo verranno aggiornate solo una volta al minuto.",
|
"desc": "Passa automaticamente alla visualizzazione dal vivo di una telecamera quando viene rilevata attività. Disattivando questa opzione, le immagini statiche della telecamera nella schermata dal vivo verranno aggiornate solo una volta al minuto.",
|
||||||
"label": "Visualizzazione automatica dal vivo"
|
"label": "Visualizzazione automatica dal vivo"
|
||||||
},
|
},
|
||||||
"playAlertVideos": {
|
"playAlertVideos": {
|
||||||
@ -718,7 +718,7 @@
|
|||||||
"title": "Classificazione degli uccelli"
|
"title": "Classificazione degli uccelli"
|
||||||
},
|
},
|
||||||
"licensePlateRecognition": {
|
"licensePlateRecognition": {
|
||||||
"desc": "Frigate può riconoscere le targhe dei veicoli e aggiungere automaticamente i caratteri rilevati al campo recognized_license_plate o un nome noto come sub_label agli oggetti di tipo \"car\". Un caso d'uso comune potrebbe essere la lettura delle targhe delle auto che entrano in un vialetto o che transitano lungo una strada.",
|
"desc": "Frigate può riconoscere le targhe dei veicoli e aggiungere automaticamente i caratteri rilevati al campo recognized_license_plate o un nome noto come sub_label agli oggetti di tipo automobile (car). Un caso d'uso comune potrebbe essere la lettura delle targhe delle auto che entrano in un vialetto o che transitano lungo una strada.",
|
||||||
"title": "Riconoscimento della targa",
|
"title": "Riconoscimento della targa",
|
||||||
"readTheDocumentation": "Leggi la documentazione"
|
"readTheDocumentation": "Leggi la documentazione"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -83,10 +83,10 @@
|
|||||||
},
|
},
|
||||||
"enrichments": {
|
"enrichments": {
|
||||||
"embeddings": {
|
"embeddings": {
|
||||||
"face_embedding_speed": "Velocità incorporazione volti",
|
"face_embedding_speed": "Velocità incorporamento volti",
|
||||||
"plate_recognition_speed": "Velocità riconoscimento targhe",
|
"plate_recognition_speed": "Velocità riconoscimento targhe",
|
||||||
"image_embedding_speed": "Velocità incorporazione immagini",
|
"image_embedding_speed": "Velocità incorporamento immagini",
|
||||||
"text_embedding_speed": "Velocità incorporazione testo",
|
"text_embedding_speed": "Velocità incorporamento testo",
|
||||||
"face_recognition_speed": "Velocità di riconoscimento facciale",
|
"face_recognition_speed": "Velocità di riconoscimento facciale",
|
||||||
"face_recognition": "Riconoscimento facciale",
|
"face_recognition": "Riconoscimento facciale",
|
||||||
"plate_recognition": "Riconoscimento delle targhe",
|
"plate_recognition": "Riconoscimento delle targhe",
|
||||||
@ -102,7 +102,7 @@
|
|||||||
"info": {
|
"info": {
|
||||||
"fetching": "Recupero dati della telecamera",
|
"fetching": "Recupero dati della telecamera",
|
||||||
"streamDataFromFFPROBE": "I dati del flusso vengono ottenuti con <code>ffprobe</code>.",
|
"streamDataFromFFPROBE": "I dati del flusso vengono ottenuti con <code>ffprobe</code>.",
|
||||||
"cameraProbeInfo": "Informazioni analisi telecamera {{camera}}",
|
"cameraProbeInfo": "Informazioni flussi telecamera {{camera}}",
|
||||||
"stream": "Flusso {{idx}}",
|
"stream": "Flusso {{idx}}",
|
||||||
"video": "Video:",
|
"video": "Video:",
|
||||||
"codec": "Codec:",
|
"codec": "Codec:",
|
||||||
@ -112,7 +112,7 @@
|
|||||||
"audio": "Audio:",
|
"audio": "Audio:",
|
||||||
"error": "Errore: {{error}}",
|
"error": "Errore: {{error}}",
|
||||||
"tips": {
|
"tips": {
|
||||||
"title": "Informazioni analisi telecamera"
|
"title": "Informazioni flussi telecamera"
|
||||||
},
|
},
|
||||||
"aspectRatio": "rapporto d'aspetto"
|
"aspectRatio": "rapporto d'aspetto"
|
||||||
},
|
},
|
||||||
@ -121,15 +121,15 @@
|
|||||||
"framesAndDetections": "Fotogrammi / Rilevamenti",
|
"framesAndDetections": "Fotogrammi / Rilevamenti",
|
||||||
"label": {
|
"label": {
|
||||||
"camera": "telecamera",
|
"camera": "telecamera",
|
||||||
"detect": "rileva",
|
"detect": "rilevamento",
|
||||||
"skipped": "saltato",
|
"skipped": "saltati",
|
||||||
"ffmpeg": "FFmpeg",
|
"ffmpeg": "FFmpeg",
|
||||||
"capture": "cattura",
|
"capture": "cattura",
|
||||||
"overallFramesPerSecond": "fotogrammi totali al secondo",
|
"overallFramesPerSecond": "fotogrammi totali al secondo",
|
||||||
"overallDetectionsPerSecond": "rilevamenti totali al secondo",
|
"overallDetectionsPerSecond": "rilevamenti totali al secondo",
|
||||||
"overallSkippedDetectionsPerSecond": "rilevamenti totali saltati al secondo",
|
"overallSkippedDetectionsPerSecond": "rilevamenti totali saltati al secondo",
|
||||||
"cameraCapture": "{{camName}} cattura",
|
"cameraCapture": "{{camName}} cattura",
|
||||||
"cameraDetect": "{{camName}} rileva",
|
"cameraDetect": "{{camName}} rilevamento",
|
||||||
"cameraFramesPerSecond": "{{camName}} fotogrammi al secondo",
|
"cameraFramesPerSecond": "{{camName}} fotogrammi al secondo",
|
||||||
"cameraDetectionsPerSecond": "{{camName}} rilevamenti al secondo",
|
"cameraDetectionsPerSecond": "{{camName}} rilevamenti al secondo",
|
||||||
"cameraSkippedDetectionsPerSecond": "{{camName}} rilevamenti saltati al secondo",
|
"cameraSkippedDetectionsPerSecond": "{{camName}} rilevamenti saltati al secondo",
|
||||||
@ -174,6 +174,11 @@
|
|||||||
"title": "Liberi",
|
"title": "Liberi",
|
||||||
"tips": "Questo valore potrebbe non rappresentare accuratamente lo spazio libero disponibile per Frigate se nel disco sono archiviati altri file oltre alle registrazioni di Frigate. Frigate non tiene traccia dell'utilizzo dello spazio di archiviazione al di fuori delle sue registrazioni."
|
"tips": "Questo valore potrebbe non rappresentare accuratamente lo spazio libero disponibile per Frigate se nel disco sono archiviati altri file oltre alle registrazioni di Frigate. Frigate non tiene traccia dell'utilizzo dello spazio di archiviazione al di fuori delle sue registrazioni."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"shm": {
|
||||||
|
"title": "Allocazione SHM (memoria condivisa)",
|
||||||
|
"warning": "La dimensione SHM attuale di {{total}} MB è troppo piccola. Aumentarla ad almeno {{min_shm}} MB.",
|
||||||
|
"readTheDocumentation": "Leggi la documentazione"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lastRefreshed": "Ultimo aggiornamento: "
|
"lastRefreshed": "Ultimo aggiornamento: "
|
||||||
|
|||||||
@ -3,5 +3,6 @@
|
|||||||
"untilForRestart": "Frigateが再起動するまで.",
|
"untilForRestart": "Frigateが再起動するまで.",
|
||||||
"untilRestart": "再起動まで",
|
"untilRestart": "再起動まで",
|
||||||
"untilForTime": "{{time}} まで"
|
"untilForTime": "{{time}} まで"
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "ドキュメントを読む"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1 +1,3 @@
|
|||||||
{}
|
{
|
||||||
|
"readTheDocumentation": "문서 읽기"
|
||||||
|
}
|
||||||
|
|||||||
@ -269,5 +269,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "Puslapis nerastas"
|
"desc": "Puslapis nerastas"
|
||||||
},
|
},
|
||||||
"selectItem": "Pasirinkti {{item}}"
|
"selectItem": "Pasirinkti {{item}}",
|
||||||
|
"readTheDocumentation": "Skaityti dokumentaciją"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -272,5 +272,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "Siden ble ikke funnet"
|
"desc": "Siden ble ikke funnet"
|
||||||
},
|
},
|
||||||
"selectItem": "Velg {{item}}"
|
"selectItem": "Velg {{item}}",
|
||||||
|
"readTheDocumentation": "Se dokumentasjonen"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -272,5 +272,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"documentTitle": "Niet gevonden - Frigate"
|
"documentTitle": "Niet gevonden - Frigate"
|
||||||
},
|
},
|
||||||
"selectItem": "Selecteer {{item}}"
|
"selectItem": "Selecteer {{item}}",
|
||||||
|
"readTheDocumentation": "Lees de documentatie"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -102,7 +102,12 @@
|
|||||||
"camera": "Camera",
|
"camera": "Camera",
|
||||||
"bandwidth": "Bandbreedte"
|
"bandwidth": "Bandbreedte"
|
||||||
},
|
},
|
||||||
"title": "Opslag"
|
"title": "Opslag",
|
||||||
|
"shm": {
|
||||||
|
"title": "SHM (gedeeld geheugen) toewijzing",
|
||||||
|
"warning": "De huidige SHM-grootte van {{total}} MB is te klein. Vergroot deze tot minimaal {{min_shm}} MB.",
|
||||||
|
"readTheDocumentation": "Lees de documentatie"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"cameras": {
|
"cameras": {
|
||||||
"title": "Cameras",
|
"title": "Cameras",
|
||||||
|
|||||||
@ -279,5 +279,6 @@
|
|||||||
},
|
},
|
||||||
"title": "Zapisz"
|
"title": "Zapisz"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Przeczytaj dokumentację"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -269,5 +269,7 @@
|
|||||||
"documentTitle": "Não Encontrado - Frigate",
|
"documentTitle": "Não Encontrado - Frigate",
|
||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "Página não encontrada"
|
"desc": "Página não encontrada"
|
||||||
}
|
},
|
||||||
|
"selectItem": "Selecionar {{item}}",
|
||||||
|
"readTheDocumentation": "Leia a documentação"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -279,5 +279,6 @@
|
|||||||
"desc": "Página não encontrada",
|
"desc": "Página não encontrada",
|
||||||
"title": "404"
|
"title": "404"
|
||||||
},
|
},
|
||||||
"selectItem": "Selecionar {{item}}"
|
"selectItem": "Selecionar {{item}}",
|
||||||
|
"readTheDocumentation": "Leia a documentação"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -269,5 +269,6 @@
|
|||||||
"documentTitle": "Nu a fost găsit - Frigate",
|
"documentTitle": "Nu a fost găsit - Frigate",
|
||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "Pagină negăsită"
|
"desc": "Pagină negăsită"
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Citește documentația"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,7 +77,12 @@
|
|||||||
},
|
},
|
||||||
"bandwidth": "Lățime de bandă"
|
"bandwidth": "Lățime de bandă"
|
||||||
},
|
},
|
||||||
"overview": "Prezentare generală"
|
"overview": "Prezentare generală",
|
||||||
|
"shm": {
|
||||||
|
"title": "Alocare SHM (memorie partajată)",
|
||||||
|
"warning": "Dimensiunea curentă a SHM de {{total}}MB este prea mică. Măriți-o la cel puțin {{min_shm}}MB.",
|
||||||
|
"readTheDocumentation": "Citește documentația"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"title": "Sistem",
|
"title": "Sistem",
|
||||||
"logs": {
|
"logs": {
|
||||||
|
|||||||
@ -279,5 +279,7 @@
|
|||||||
"admin": "Администратор",
|
"admin": "Администратор",
|
||||||
"viewer": "Наблюдатель",
|
"viewer": "Наблюдатель",
|
||||||
"desc": "Администраторы имеют полный доступ ко всем функциям в интерфейсе Frigate. Наблюдатели ограничены просмотром камер, элементов просмотра и архивных записей."
|
"desc": "Администраторы имеют полный доступ ко всем функциям в интерфейсе Frigate. Наблюдатели ограничены просмотром камер, элементов просмотра и архивных записей."
|
||||||
}
|
},
|
||||||
|
"selectItem": "Выбрать {{item}}",
|
||||||
|
"readTheDocumentation": "Читать документацию"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -85,5 +85,6 @@
|
|||||||
"speed": {
|
"speed": {
|
||||||
"mph": "mph"
|
"mph": "mph"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Prečítajte si dokumentáciu"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -269,5 +269,6 @@
|
|||||||
"documentTitle": "Ni Najdeno - Frigate",
|
"documentTitle": "Ni Najdeno - Frigate",
|
||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "Stran ni najdena"
|
"desc": "Stran ni najdena"
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Preberite dokumentacijo"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,5 +27,6 @@
|
|||||||
"year_few": "2,3,4,22,23,24,32,33,34,42,...",
|
"year_few": "2,3,4,22,23,24,32,33,34,42,...",
|
||||||
"year_other": "",
|
"year_other": "",
|
||||||
"mo": "{{time}}mes"
|
"mo": "{{time}}mes"
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Прочитајте документацију"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -253,5 +253,6 @@
|
|||||||
"meters": "meter"
|
"meters": "meter"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"selectItem": "Välj {{item}}"
|
"selectItem": "Välj {{item}}",
|
||||||
|
"readTheDocumentation": "Läs dokumentationen"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,8 +67,17 @@
|
|||||||
"streaming": {
|
"streaming": {
|
||||||
"label": "Videoström",
|
"label": "Videoström",
|
||||||
"restreaming": {
|
"restreaming": {
|
||||||
"disabled": "Omströmning är inte aktiverad för den här kameran."
|
"disabled": "Omströmning är inte aktiverad för den här kameran.",
|
||||||
}
|
"desc": {
|
||||||
|
"title": "Konfigurera go2rtc för ytterligare livevisningsalternativ och ljud för den här kameran.",
|
||||||
|
"readTheDocumentation": "Läs dokumentationen"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"showStats": {
|
||||||
|
"label": "Visa strömstatistik",
|
||||||
|
"desc": "Aktivera det här alternativet för att visa strömstatistik som ett överlägg över kameraflödet."
|
||||||
|
},
|
||||||
|
"debugView": "Felsöknings vy"
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"saveSearch": {
|
"saveSearch": {
|
||||||
@ -78,7 +87,10 @@
|
|||||||
"save": {
|
"save": {
|
||||||
"label": "Spara den här sökningen"
|
"label": "Spara den här sökningen"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"label": "Spara Sökning",
|
||||||
|
"desc": "Ange ett namn för den här sparade sökningen.",
|
||||||
|
"placeholder": "Ange ett namn för din sökning"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"recording": {
|
"recording": {
|
||||||
@ -99,6 +111,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imagePicker": {
|
"imagePicker": {
|
||||||
"selectImage": "Välj miniatyrbilden för ett spårat objekt"
|
"selectImage": "Välj miniatyrbilden för ett spårat objekt",
|
||||||
|
"search": {
|
||||||
|
"placeholder": "Sök efter etikett eller underetikett..."
|
||||||
|
},
|
||||||
|
"noImages": "Inga miniatyrbilder hittades för den här kameran"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,5 +34,7 @@
|
|||||||
"markTheseItemsAsReviewed": "Markera dessa objekt som granskade",
|
"markTheseItemsAsReviewed": "Markera dessa objekt som granskade",
|
||||||
"detected": "upptäckt",
|
"detected": "upptäckt",
|
||||||
"selected_one": "{{count}} valda",
|
"selected_one": "{{count}} valda",
|
||||||
"selected_other": "{{count}} valda"
|
"selected_other": "{{count}} valda",
|
||||||
|
"suspiciousActivity": "Misstänkt aktivitet",
|
||||||
|
"threateningActivity": "Hotande aktivitet"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,60 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"details": {
|
"details": {
|
||||||
"timestamp": "tidsstämpel"
|
"timestamp": "tidsstämpel",
|
||||||
|
"item": {
|
||||||
|
"title": "Granska objektinformation",
|
||||||
|
"desc": "Granska objektinformation",
|
||||||
|
"button": {
|
||||||
|
"share": "Dela den här recensionen",
|
||||||
|
"viewInExplore": "Visa i Utforska"
|
||||||
|
},
|
||||||
|
"tips": {
|
||||||
|
"mismatch_one": "{{count}} otillgängligt objekt upptäcktes och inkluderades i detta granskningsobjekt. Dessa objekt kvalificerade sig antingen inte som en varning eller detektering, eller så har de redan rensats/raderats.",
|
||||||
|
"mismatch_other": "{{count}} otillgängliga objekt upptäcktes och inkluderades i detta granskningsobjekt. Dessa objekt kvalificerade sig antingen inte som en varning eller upptäckt, eller så har de redan rensats/raderats.",
|
||||||
|
"hasMissingObjects": "Justera din konfiguration om du vill att Frigate ska spara spårade objekt för följande etiketter: <em>{{objects}}</em>"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"success": {
|
||||||
|
"regenerate": "En ny beskrivning har begärts från {{provider}}. Beroende på din leverantörs hastighet kan det ta lite tid att generera den nya beskrivningen.",
|
||||||
|
"updatedSublabel": "Underetiketten har uppdaterats.",
|
||||||
|
"updatedLPR": "Nummerplåt har uppdaterats.",
|
||||||
|
"audioTranscription": "Ljudtranskription har begärts."
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"regenerate": "Kunde inte ringa {{provider}} för en ny beskrivning: {{errorMessage}}",
|
||||||
|
"updatedSublabelFailed": "Misslyckades med att uppdatera underetiketten: {{errorMessage}}",
|
||||||
|
"audioTranscription": "Misslyckades med att begära ljudtranskription: {{errorMessage}}",
|
||||||
|
"updatedLPRFailed": "Misslyckades med att uppdatera nummerplåten: {{errorMessage}}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"label": "Märka",
|
||||||
|
"editSubLabel": {
|
||||||
|
"title": "Redigera underetikett",
|
||||||
|
"desc": "Ange en ny underetikett för denna {{label}}",
|
||||||
|
"descNoLabel": "Ange en ny underetikett för det här spårade objektet"
|
||||||
|
},
|
||||||
|
"editLPR": {
|
||||||
|
"title": "Redigera nummerplåt",
|
||||||
|
"desc": "Ange ett nytt nummerplåt för denna {{label}}",
|
||||||
|
"descNoLabel": "Ange ett nytt nummerplåt för detta spårade objekt"
|
||||||
|
},
|
||||||
|
"snapshotScore": {
|
||||||
|
"label": "Ögonblicksbildspoäng"
|
||||||
|
},
|
||||||
|
"topScore": {
|
||||||
|
"label": "Högsta poäng",
|
||||||
|
"info": "Topppoängen är den högsta medianpoängen för det spårade objektet, så denna kan skilja sig från poängen som visas på miniatyrbilden av sökresultatet."
|
||||||
|
},
|
||||||
|
"score": {
|
||||||
|
"label": "Poäng"
|
||||||
|
},
|
||||||
|
"recognizedLicensePlate": "Erkänd nummerplåt",
|
||||||
|
"estimatedSpeed": "Uppskattad hastighet",
|
||||||
|
"objects": "Objekt",
|
||||||
|
"camera": "Kamera",
|
||||||
|
"zones": "Zoner"
|
||||||
},
|
},
|
||||||
"exploreMore": "Utforska fler {{label}} objekt",
|
"exploreMore": "Utforska fler {{label}} objekt",
|
||||||
"type": {
|
"type": {
|
||||||
@ -54,7 +107,17 @@
|
|||||||
"zones": "Zoner",
|
"zones": "Zoner",
|
||||||
"ratio": "Proportion",
|
"ratio": "Proportion",
|
||||||
"area": "Område"
|
"area": "Område"
|
||||||
}
|
},
|
||||||
|
"visible": "{{label}} upptäckt",
|
||||||
|
"entered_zone": "{{label}} gick in i {{zones}}",
|
||||||
|
"active": "{{label}} blev aktiv",
|
||||||
|
"stationary": "{{label}} blev stationär",
|
||||||
|
"attribute": {
|
||||||
|
"faceOrLicense_plate": "{{attribute}} upptäckt för {{label}}",
|
||||||
|
"other": "{{label}} igenkänd som {{attribute}}"
|
||||||
|
},
|
||||||
|
"gone": "{{label}} vänster",
|
||||||
|
"heard": "{{label}} hört"
|
||||||
},
|
},
|
||||||
"annotationSettings": {
|
"annotationSettings": {
|
||||||
"title": "Annoteringsinställningar",
|
"title": "Annoteringsinställningar",
|
||||||
@ -66,8 +129,17 @@
|
|||||||
"label": "Annoteringsförskjutning",
|
"label": "Annoteringsförskjutning",
|
||||||
"desc": "Denna data kommer från din kameras detekteringsflöde men läggs ovanpå bilder från inspelningsflödet. Det är osannolikt att de två strömmarna är helt synkroniserade. Som ett resultat kommer avgränsningsramen och filmmaterialet inte att radas upp perfekt. Fältet <code>annotation_offset</code> kan dock användas för att justera detta.",
|
"desc": "Denna data kommer från din kameras detekteringsflöde men läggs ovanpå bilder från inspelningsflödet. Det är osannolikt att de två strömmarna är helt synkroniserade. Som ett resultat kommer avgränsningsramen och filmmaterialet inte att radas upp perfekt. Fältet <code>annotation_offset</code> kan dock användas för att justera detta.",
|
||||||
"documentation": "Läs dokumentationen ",
|
"documentation": "Läs dokumentationen ",
|
||||||
"millisecondsToOffset": "Millisekunder för att förskjuta detektera annoteringar med. <em>Standard: 0</em>"
|
"millisecondsToOffset": "Millisekunder för att förskjuta detektera annoteringar med. <em>Standard: 0</em>",
|
||||||
|
"tips": "TIPS: Föreställ dig ett händelseklipp med en person som går från vänster till höger. Om tidslinjens avgränsningsram konsekvent är till vänster om personen bör värdet minskas. På samma sätt, om en person går från vänster till höger och avgränsningsramen konsekvent är framför personen bör värdet ökas.",
|
||||||
|
"toast": {
|
||||||
|
"success": "Annoterings förskjutningen för {{camera}} har sparats i konfigurationsfilen. Starta om Frigate för att tillämpa dina ändringar."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"trackedPoint": "Spårad punkt",
|
||||||
|
"carousel": {
|
||||||
|
"previous": "Föregående bild",
|
||||||
|
"next": "Nästa bild"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,7 +53,10 @@
|
|||||||
"imageEntry": {
|
"imageEntry": {
|
||||||
"dropActive": "Släpp bilden här…",
|
"dropActive": "Släpp bilden här…",
|
||||||
"dropInstructions": "Dra och släpp en bild här, eller klicka för att välja",
|
"dropInstructions": "Dra och släpp en bild här, eller klicka för att välja",
|
||||||
"maxSize": "Maxstorlek: {{size}}MB"
|
"maxSize": "Maxstorlek: {{size}}MB",
|
||||||
|
"validation": {
|
||||||
|
"selectImage": "Välj en bildfil."
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"nofaces": "Inga ansikten tillgängliga",
|
"nofaces": "Inga ansikten tillgängliga",
|
||||||
"pixels": "{{area}}px",
|
"pixels": "{{area}}px",
|
||||||
@ -65,7 +68,33 @@
|
|||||||
"uploadedImage": "Bilden har laddats upp.",
|
"uploadedImage": "Bilden har laddats upp.",
|
||||||
"addFaceLibrary": "{{name}} har lagts till i ansiktsbiblioteket!",
|
"addFaceLibrary": "{{name}} har lagts till i ansiktsbiblioteket!",
|
||||||
"deletedFace_one": "{{count}} ansikte har raderats.",
|
"deletedFace_one": "{{count}} ansikte har raderats.",
|
||||||
"deletedFace_other": "{{count}} ansikten har raderats."
|
"deletedFace_other": "{{count}} ansikten har raderats.",
|
||||||
|
"deletedName_one": "{{count}} ansikte har raderats.",
|
||||||
|
"deletedName_other": "{{count}} ansikten har raderats.",
|
||||||
|
"renamedFace": "Ansiktet har bytt namn till {{name}}",
|
||||||
|
"trainedFace": "Ansikte är tränant.",
|
||||||
|
"updatedFaceScore": "Ansikts poängen har uppdaterats."
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"uploadingImageFailed": "Misslyckades med att ladda upp bilden: {{errorMessage}}",
|
||||||
|
"addFaceLibraryFailed": "Misslyckades med att ange ansiktsnamn: {{errorMessage}}",
|
||||||
|
"deleteFaceFailed": "Misslyckades med att ta bort: {{errorMessage}}",
|
||||||
|
"deleteNameFailed": "Misslyckades med att ta bort namnet: {{errorMessage}}",
|
||||||
|
"renameFaceFailed": "Misslyckades med att byta namn på ansikte: {{errorMessage}}",
|
||||||
|
"trainFailed": "Misslyckades med att träna: {{errorMessage}}",
|
||||||
|
"updateFaceScoreFailed": "Misslyckades med att uppdatera ansiktspoäng: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"renameFace": {
|
||||||
|
"title": "Byt namn på ansikte",
|
||||||
|
"desc": "Ange ett nytt namn för {{name}}"
|
||||||
|
},
|
||||||
|
"button": {
|
||||||
|
"deleteFaceAttempts": "Ta bort ansikten",
|
||||||
|
"addFace": "Lägg till ansikte",
|
||||||
|
"renameFace": "Byt namn på ansikte",
|
||||||
|
"deleteFace": "Ta bort ansikte",
|
||||||
|
"uploadImage": "Ladda upp bild",
|
||||||
|
"reprocessFace": "Återbearbeta ansiktet"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -106,7 +106,8 @@
|
|||||||
"objectDetection": "Objektsdetektering",
|
"objectDetection": "Objektsdetektering",
|
||||||
"recording": "Inspelning",
|
"recording": "Inspelning",
|
||||||
"snapshots": "Ögonblicksbilder",
|
"snapshots": "Ögonblicksbilder",
|
||||||
"autotracking": "Autospårning"
|
"autotracking": "Autospårning",
|
||||||
|
"transcription": "Ljudtranskription"
|
||||||
},
|
},
|
||||||
"effectiveRetainMode": {
|
"effectiveRetainMode": {
|
||||||
"modes": {
|
"modes": {
|
||||||
@ -162,5 +163,9 @@
|
|||||||
},
|
},
|
||||||
"history": {
|
"history": {
|
||||||
"label": "Visa historiskt videomaterial"
|
"label": "Visa historiskt videomaterial"
|
||||||
|
},
|
||||||
|
"transcription": {
|
||||||
|
"enable": "Aktivera live-ljudtranskription",
|
||||||
|
"disable": "Inaktivera live-ljudtranskription"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -88,8 +88,43 @@
|
|||||||
"error": "Misslyckades med att starta omindexering: {{errorMessage}}"
|
"error": "Misslyckades med att starta omindexering: {{errorMessage}}"
|
||||||
},
|
},
|
||||||
"modelSize": {
|
"modelSize": {
|
||||||
"label": "Modellstorlek"
|
"label": "Modellstorlek",
|
||||||
|
"desc": "Storleken på modellen som används för semantiska sökinbäddningar.",
|
||||||
|
"small": {
|
||||||
|
"title": "små",
|
||||||
|
"desc": "Att använda <em>small</em> använder en kvantiserad version av modellen som använder mindre RAM och körs snabbare på CPU med en mycket försumbar skillnad i inbäddningskvalitet."
|
||||||
|
},
|
||||||
|
"large": {
|
||||||
|
"title": "stor",
|
||||||
|
"desc": "Att använda <em>large</em> använder hela Jina-modellen och körs automatiskt på GPU:n om tillämpligt."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"faceRecognition": {
|
||||||
|
"desc": "Ansiktsigenkänning gör att personer kan tilldelas namn och när deras ansikte känns igen kommer Frigate att tilldela personens namn som en underetikett. Denna information finns i användargränssnittet, filter och i aviseringar.",
|
||||||
|
"readTheDocumentation": "Läs dokumentationen",
|
||||||
|
"modelSize": {
|
||||||
|
"label": "Modellstorlek",
|
||||||
|
"desc": "Storleken på modellen som används för ansiktsigenkänning.",
|
||||||
|
"small": {
|
||||||
|
"title": "små",
|
||||||
|
"desc": "Att använda <em>small</em> använder en FaceNet-modell för ansiktsinbäddning som körs effektivt på de flesta processorer."
|
||||||
|
},
|
||||||
|
"large": {
|
||||||
|
"title": "stor",
|
||||||
|
"desc": "Att använda <em>large</em> använder en ArcFace-modell för ansiktsinbäddning och körs automatiskt på GPU:n om tillämpligt."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Ansikts igenkänning"
|
||||||
|
},
|
||||||
|
"licensePlateRecognition": {
|
||||||
|
"title": "Nummerplåt Erkännande",
|
||||||
|
"desc": "Frigate kan känna igen nummerplåt på fordon och automatiskt lägga till de upptäckta tecknen i fältet recognized_license_plate eller ett känt namn som en underetikett till objekt av typen bil. Ett vanligt användningsfall kan vara att läsa nummerplåtor på bilar som kör in på en uppfart eller bilar som passerar på en gata.",
|
||||||
|
"readTheDocumentation": "Läs dokumentationen"
|
||||||
|
},
|
||||||
|
"restart_required": "Omstart krävs (berikningsinställningar har ändrats)",
|
||||||
|
"toast": {
|
||||||
|
"success": "Inställningarna för berikning har sparats. Starta om Frigate för att tillämpa dina ändringar."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
|
|||||||
@ -52,7 +52,11 @@
|
|||||||
"gpuDecoder": "GPU-avkodare",
|
"gpuDecoder": "GPU-avkodare",
|
||||||
"gpuInfo": {
|
"gpuInfo": {
|
||||||
"nvidiaSMIOutput": {
|
"nvidiaSMIOutput": {
|
||||||
"vbios": "VBios-information: {{vbios}}"
|
"vbios": "VBios-information: {{vbios}}",
|
||||||
|
"title": "Nvidia SMI utdata",
|
||||||
|
"name": "Namn: {{name}}",
|
||||||
|
"driver": "Drivrutin: {{driver}}",
|
||||||
|
"cudaComputerCapability": "CUDA beräknings kapacitet: {{cuda_compute}}"
|
||||||
},
|
},
|
||||||
"closeInfo": {
|
"closeInfo": {
|
||||||
"label": "Stäng GPU-info"
|
"label": "Stäng GPU-info"
|
||||||
@ -62,6 +66,12 @@
|
|||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Kopierade GPU-info till urklipp"
|
"success": "Kopierade GPU-info till urklipp"
|
||||||
|
},
|
||||||
|
"vainfoOutput": {
|
||||||
|
"title": "Vainfo resultat",
|
||||||
|
"returnCode": "Returkod: {{code}}",
|
||||||
|
"processOutput": "Bearbeta utdata:",
|
||||||
|
"processError": "Processfel:"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"npuUsage": "NPU-användning",
|
"npuUsage": "NPU-användning",
|
||||||
@ -81,22 +91,46 @@
|
|||||||
"unused": {
|
"unused": {
|
||||||
"title": "Oanvänt",
|
"title": "Oanvänt",
|
||||||
"tips": "Det här värdet kanske inte korrekt representerar det lediga utrymmet tillgängligt för Frigate om du har andra filer lagrade på din hårddisk utöver Frigates inspelningar. Frigate spårar inte lagringsanvändning utanför sina egna inspelningar."
|
"tips": "Det här värdet kanske inte korrekt representerar det lediga utrymmet tillgängligt för Frigate om du har andra filer lagrade på din hårddisk utöver Frigates inspelningar. Frigate spårar inte lagringsanvändning utanför sina egna inspelningar."
|
||||||
}
|
},
|
||||||
|
"title": "Kamera lagring",
|
||||||
|
"camera": "Kamera",
|
||||||
|
"unusedStorageInformation": "Information om oanvänd lagring"
|
||||||
},
|
},
|
||||||
"title": "Lagring",
|
"title": "Lagring",
|
||||||
"overview": "Översikt",
|
"overview": "Översikt",
|
||||||
"recordings": {
|
"recordings": {
|
||||||
"title": "Inspelningar"
|
"title": "Inspelningar",
|
||||||
|
"tips": "Detta värde representerar den totala lagringsmängden som används av inspelningarna i Frigates databas. Frigate spårar inte lagringsanvändningen för alla filer på din disk.",
|
||||||
|
"earliestRecording": "Tidigast tillgängliga inspelning:"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cameras": {
|
"cameras": {
|
||||||
"title": "Kameror",
|
"title": "Kameror",
|
||||||
"overview": "Översikt",
|
"overview": "Översikt",
|
||||||
"info": {
|
"info": {
|
||||||
"aspectRatio": "bildförhållande"
|
"aspectRatio": "bildförhållande",
|
||||||
|
"cameraProbeInfo": "{{camera}} Kamerasondinformation",
|
||||||
|
"streamDataFromFFPROBE": "Strömdata erhålls med <code>ffprobe</code>.",
|
||||||
|
"codec": "Codec:",
|
||||||
|
"resolution": "Upplösning:",
|
||||||
|
"fps": "FPS:",
|
||||||
|
"unknown": "Okänd",
|
||||||
|
"audio": "Audio:",
|
||||||
|
"error": "Fel: {{error}}",
|
||||||
|
"tips": {
|
||||||
|
"title": "Kamera sond information"
|
||||||
|
},
|
||||||
|
"fetching": "Hämtar kamera data",
|
||||||
|
"stream": "Ström {{idx}}",
|
||||||
|
"video": "Video:"
|
||||||
},
|
},
|
||||||
"label": {
|
"label": {
|
||||||
"detect": "detektera"
|
"detect": "detektera",
|
||||||
}
|
"camera": "kamera",
|
||||||
|
"skipped": "hoppade över",
|
||||||
|
"ffmpeg": "FFmpeg",
|
||||||
|
"capture": "spela in"
|
||||||
|
},
|
||||||
|
"framesAndDetections": "Ramar / Detektioner"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -246,5 +246,6 @@
|
|||||||
"feet": "ฟุต",
|
"feet": "ฟุต",
|
||||||
"meters": "เมตร"
|
"meters": "เมตร"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "อ่านเอกสาร"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -272,5 +272,6 @@
|
|||||||
"viewer": "Görüntüleyici",
|
"viewer": "Görüntüleyici",
|
||||||
"admin": "Yönetici",
|
"admin": "Yönetici",
|
||||||
"desc": "Yöneticiler Frigate arayüzündeki bütün özelliklere tam erişim sahibidir. Görüntüleyiciler ise yalnızca kameraları, eski görüntüleri ve inceleme öğelerini görüntülemekle sınırlıdır."
|
"desc": "Yöneticiler Frigate arayüzündeki bütün özelliklere tam erişim sahibidir. Görüntüleyiciler ise yalnızca kameraları, eski görüntüleri ve inceleme öğelerini görüntülemekle sınırlıdır."
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "Dökümantasyonu oku"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -270,5 +270,6 @@
|
|||||||
"desc": "Сторінка не знайдена",
|
"desc": "Сторінка не знайдена",
|
||||||
"title": "404"
|
"title": "404"
|
||||||
},
|
},
|
||||||
"selectItem": "Вибрати {{item}}"
|
"selectItem": "Вибрати {{item}}",
|
||||||
|
"readTheDocumentation": "Прочитати документацію"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -129,7 +129,12 @@
|
|||||||
"tips": "Це значення відображає загальний обсяг пам’яті, що використовується записами в базі даних Frigate. Frigate не відстежує використання пам’яті для всіх файлів на вашому диску.",
|
"tips": "Це значення відображає загальний обсяг пам’яті, що використовується записами в базі даних Frigate. Frigate не відстежує використання пам’яті для всіх файлів на вашому диску.",
|
||||||
"earliestRecording": "Найдавніший доступний запис:"
|
"earliestRecording": "Найдавніший доступний запис:"
|
||||||
},
|
},
|
||||||
"title": "Зберігання"
|
"title": "Зберігання",
|
||||||
|
"shm": {
|
||||||
|
"title": "Розподіл спільної пам'яті (SHM)",
|
||||||
|
"warning": "Поточний розмір SHM, що становить {{total}} МБ, замалий. Збільште його принаймні до {{min_shm}} МБ.",
|
||||||
|
"readTheDocumentation": "Прочитайте документацію"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"lastRefreshed": "Останнє оновлення: ",
|
"lastRefreshed": "Останнє оновлення: ",
|
||||||
"stats": {
|
"stats": {
|
||||||
|
|||||||
@ -34,5 +34,6 @@
|
|||||||
"month_other": "{{time}} مہینے",
|
"month_other": "{{time}} مہینے",
|
||||||
"hour_one": "{{time}} گھنٹہ",
|
"hour_one": "{{time}} گھنٹہ",
|
||||||
"hour_other": "{{time}} گھنٹے"
|
"hour_other": "{{time}} گھنٹے"
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "دستاویز پڑھیں"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -121,7 +121,15 @@
|
|||||||
},
|
},
|
||||||
"yue": "粵語 (Tiếng Quảng Đông)",
|
"yue": "粵語 (Tiếng Quảng Đông)",
|
||||||
"ca": "Català (Tiếng Catalan)",
|
"ca": "Català (Tiếng Catalan)",
|
||||||
"th": "ไทย (Tiếng Thái)"
|
"th": "ไทย (Tiếng Thái)",
|
||||||
|
"ptBR": "Português brasileiro (Brazilian Portuguese)",
|
||||||
|
"sr": "Српски (Serbian)",
|
||||||
|
"sl": "Slovenščina (Slovenian)",
|
||||||
|
"lt": "Lietuvių (Lithuanian)",
|
||||||
|
"bg": "Български (Bulgarian)",
|
||||||
|
"gl": "Galego (Galician)",
|
||||||
|
"id": "Bahasa Indonesia (Indonesian)",
|
||||||
|
"ur": "اردو (Urdu)"
|
||||||
},
|
},
|
||||||
"system": "Hệ thống",
|
"system": "Hệ thống",
|
||||||
"systemMetrics": "Thông số hệ thống",
|
"systemMetrics": "Thông số hệ thống",
|
||||||
@ -257,5 +265,6 @@
|
|||||||
"title": "Không tìm thấy",
|
"title": "Không tìm thấy",
|
||||||
"desc": "Trang bạn đang tìm không tồn tại"
|
"desc": "Trang bạn đang tìm không tồn tại"
|
||||||
},
|
},
|
||||||
"selectItem": "Chọn mục {{item}}"
|
"selectItem": "Chọn mục {{item}}",
|
||||||
|
"readTheDocumentation": "Đọc tài liệu"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -108,5 +108,12 @@
|
|||||||
"placeholder": "Nhập tên cho tìm kiếm của bạn",
|
"placeholder": "Nhập tên cho tìm kiếm của bạn",
|
||||||
"overwrite": "{{searchName}} đã tồn tại. Lưu sẽ ghi đè lên giá trị hiện có."
|
"overwrite": "{{searchName}} đã tồn tại. Lưu sẽ ghi đè lên giá trị hiện có."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"imagePicker": {
|
||||||
|
"selectImage": "Chọn hình thu nhỏ của đối tượng cần theo dõi",
|
||||||
|
"search": {
|
||||||
|
"placeholder": "Tìm theo nhãn hoặc nhãn phụ..."
|
||||||
|
},
|
||||||
|
"noImages": "Không tìm thấy hình thu nhỏ cho camera này"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,5 +122,13 @@
|
|||||||
"title": "Tất cả Khu vực",
|
"title": "Tất cả Khu vực",
|
||||||
"short": "Khu vực"
|
"short": "Khu vực"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"classes": {
|
||||||
|
"label": "Các nhãn nhận diện",
|
||||||
|
"all": {
|
||||||
|
"title": "Tất cả nhãn nhận diện"
|
||||||
|
},
|
||||||
|
"count_one": "{{count}} Nhãn nhận diện",
|
||||||
|
"count_other": "{{count}} Các nhãn nhận diện"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,5 +12,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"configEditor": "Trình chỉnh sửa cấu hình",
|
"configEditor": "Trình chỉnh sửa cấu hình",
|
||||||
"documentTitle": "Trình chỉnh sửa - Frigate"
|
"documentTitle": "Trình chỉnh sửa - Frigate",
|
||||||
|
"safeConfigEditor": "Chỉnh sửa cấu hình (Chế độ an toàn)",
|
||||||
|
"safeModeDescription": "Frigate đang ở chế độ an toàn do lỗi kiểm tra cấu hình."
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,5 +34,7 @@
|
|||||||
"button": "Các mục mới cần xem xét"
|
"button": "Các mục mới cần xem xét"
|
||||||
},
|
},
|
||||||
"markAsReviewed": "Đánh dấu là đã xem xét",
|
"markAsReviewed": "Đánh dấu là đã xem xét",
|
||||||
"markTheseItemsAsReviewed": "Đánh dấu các mục này là đã xem xét"
|
"markTheseItemsAsReviewed": "Đánh dấu các mục này là đã xem xét",
|
||||||
|
"suspiciousActivity": "Hoạt động đáng ngờ",
|
||||||
|
"threateningActivity": "Hoạt động đe dọa"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -60,12 +60,14 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"updatedSublabelFailed": "Không thể cập nhật nhãn phụ: {{errorMessage}}",
|
"updatedSublabelFailed": "Không thể cập nhật nhãn phụ: {{errorMessage}}",
|
||||||
"updatedLPRFailed": "Không thể cập nhật biển số xe: {{errorMessage}}",
|
"updatedLPRFailed": "Không thể cập nhật biển số xe: {{errorMessage}}",
|
||||||
"regenerate": "Không thể gọi {{provider}} để lấy mô tả mới: {{errorMessage}}"
|
"regenerate": "Không thể gọi {{provider}} để lấy mô tả mới: {{errorMessage}}",
|
||||||
|
"audioTranscription": "Không thể yêu cầu phiên âm: {{errorMessage}}"
|
||||||
},
|
},
|
||||||
"success": {
|
"success": {
|
||||||
"regenerate": "Một mô tả mới đã được yêu cầu từ {{provider}}. Tùy thuộc vào tốc độ của nhà cung cấp của bạn, mô tả mới có thể mất một chút thời gian để tạo lại.",
|
"regenerate": "Một mô tả mới đã được yêu cầu từ {{provider}}. Tùy thuộc vào tốc độ của nhà cung cấp của bạn, mô tả mới có thể mất một chút thời gian để tạo lại.",
|
||||||
"updatedLPR": "Cập nhật biển số xe thành công.",
|
"updatedLPR": "Cập nhật biển số xe thành công.",
|
||||||
"updatedSublabel": "Cập nhật nhãn phụ thành công."
|
"updatedSublabel": "Cập nhật nhãn phụ thành công.",
|
||||||
|
"audioTranscription": "Đã yêu cầu phiên âm thành công."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tips": {
|
"tips": {
|
||||||
@ -115,6 +117,9 @@
|
|||||||
"title": "Chỉnh sửa biển số xe",
|
"title": "Chỉnh sửa biển số xe",
|
||||||
"desc": "Nhập một giá trị biển số xe mới cho {{label}} này",
|
"desc": "Nhập một giá trị biển số xe mới cho {{label}} này",
|
||||||
"descNoLabel": "Nhập một giá trị biển số xe mới cho đối tượng được theo dõi này"
|
"descNoLabel": "Nhập một giá trị biển số xe mới cho đối tượng được theo dõi này"
|
||||||
|
},
|
||||||
|
"score": {
|
||||||
|
"label": "Điểm tin cậy"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"itemMenu": {
|
"itemMenu": {
|
||||||
@ -144,6 +149,14 @@
|
|||||||
},
|
},
|
||||||
"deleteTrackedObject": {
|
"deleteTrackedObject": {
|
||||||
"label": "Xóa đối tượng được theo dõi này"
|
"label": "Xóa đối tượng được theo dõi này"
|
||||||
|
},
|
||||||
|
"addTrigger": {
|
||||||
|
"label": "Thêm sự kiện kích hoạt",
|
||||||
|
"aria": "Thêm sự kiện kích hoạt cho đối tượng này."
|
||||||
|
},
|
||||||
|
"audioTranscription": {
|
||||||
|
"label": "Phiên âm",
|
||||||
|
"aria": "Yêu cầu phiên âm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"exploreIsUnavailable": {
|
"exploreIsUnavailable": {
|
||||||
@ -201,5 +214,11 @@
|
|||||||
"fetchingTrackedObjectsFailed": "Lỗi khi tìm nạp các đối tượng được theo dõi: {{errorMessage}}",
|
"fetchingTrackedObjectsFailed": "Lỗi khi tìm nạp các đối tượng được theo dõi: {{errorMessage}}",
|
||||||
"documentTitle": "Khám phá - Frigate",
|
"documentTitle": "Khám phá - Frigate",
|
||||||
"generativeAI": "AI Tạo sinh",
|
"generativeAI": "AI Tạo sinh",
|
||||||
"trackedObjectsCount_other": "{{count}} đối tượng được theo dõi "
|
"trackedObjectsCount_other": "{{count}} đối tượng được theo dõi ",
|
||||||
|
"aiAnalysis": {
|
||||||
|
"title": "Phân tích bằng AI"
|
||||||
|
},
|
||||||
|
"concerns": {
|
||||||
|
"label": "Mối lo ngại"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,7 +71,15 @@
|
|||||||
"label": "Di chuyển camera PTZ sang phải"
|
"label": "Di chuyển camera PTZ sang phải"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"presets": "Các thiết lập sẵn cho camera PTZ"
|
"presets": "Các thiết lập sẵn cho camera PTZ",
|
||||||
|
"focus": {
|
||||||
|
"in": {
|
||||||
|
"label": "Lấy nét gần (camera PTZ)"
|
||||||
|
},
|
||||||
|
"out": {
|
||||||
|
"label": "Lấy nét xa (camera PTZ)"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"manualRecording": {
|
"manualRecording": {
|
||||||
"playInBackground": {
|
"playInBackground": {
|
||||||
@ -142,7 +150,8 @@
|
|||||||
"recording": "Ghi hình",
|
"recording": "Ghi hình",
|
||||||
"snapshots": "Ảnh chụp",
|
"snapshots": "Ảnh chụp",
|
||||||
"audioDetection": "Phát hiện âm thanh",
|
"audioDetection": "Phát hiện âm thanh",
|
||||||
"autotracking": "Tự động theo dõi"
|
"autotracking": "Tự động theo dõi",
|
||||||
|
"transcription": "Phiên âm"
|
||||||
},
|
},
|
||||||
"history": {
|
"history": {
|
||||||
"label": "Hiện cảnh quay lịch sử"
|
"label": "Hiện cảnh quay lịch sử"
|
||||||
@ -154,5 +163,9 @@
|
|||||||
"active_objects": "Đối tượng hoạt động"
|
"active_objects": "Đối tượng hoạt động"
|
||||||
},
|
},
|
||||||
"notAllTips": "Cấu hình giữ lại ghi hình {{source}} của bạn được đặt là <code>mode: {{effectiveRetainMode}}</code>, vì vậy lần ghi hình theo yêu cầu này chỉ giữ lại các đoạn có {{effectiveRetainModeName}}."
|
"notAllTips": "Cấu hình giữ lại ghi hình {{source}} của bạn được đặt là <code>mode: {{effectiveRetainMode}}</code>, vì vậy lần ghi hình theo yêu cầu này chỉ giữ lại các đoạn có {{effectiveRetainModeName}}."
|
||||||
|
},
|
||||||
|
"transcription": {
|
||||||
|
"enable": "Bật phiên âm trực tiếp",
|
||||||
|
"disable": "Tắt phiên âm trực tiếp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -142,6 +142,43 @@
|
|||||||
"streams": {
|
"streams": {
|
||||||
"title": "Luồng phát",
|
"title": "Luồng phát",
|
||||||
"desc": "Tạm thời vô hiệu hóa một camera cho đến khi Frigate khởi động lại. Vô hiệu hóa một camera sẽ dừng hoàn toàn quá trình xử lý các luồng của camera này của Frigate. Việc phát hiện, ghi hình và gỡ lỗi sẽ không khả dụng.<br /> <em>Lưu ý: Điều này không vô hiệu hóa các luồng phát lại của go2rtc.</em>"
|
"desc": "Tạm thời vô hiệu hóa một camera cho đến khi Frigate khởi động lại. Vô hiệu hóa một camera sẽ dừng hoàn toàn quá trình xử lý các luồng của camera này của Frigate. Việc phát hiện, ghi hình và gỡ lỗi sẽ không khả dụng.<br /> <em>Lưu ý: Điều này không vô hiệu hóa các luồng phát lại của go2rtc.</em>"
|
||||||
|
},
|
||||||
|
"object_descriptions": {
|
||||||
|
"title": "Mô tả đối tượng bằng AI tạo sinh",
|
||||||
|
"desc": "Tạm thời bật/tắt mô tả đối tượng bằng AI tạo sinh cho camera này. Khi tắt, mô tả do AI tạo sinh sẽ không được yêu cầu cho các đối tượng được theo dõi trên camera này."
|
||||||
|
},
|
||||||
|
"review_descriptions": {
|
||||||
|
"title": "Mô tả đánh giá bằng AI tạo sinh",
|
||||||
|
"desc": "Tạm thời bật/tắt mô tả xem lại bằng AI tạo sinh cho camera này. Khi tắt, mô tả do AI tạo sinh sẽ không được yêu cầu cho các mục xem lại trên camera này."
|
||||||
|
},
|
||||||
|
"addCamera": "Thêm Camera mới",
|
||||||
|
"editCamera": "Chỉnh sửa Camera:",
|
||||||
|
"selectCamera": "Chọn Camera",
|
||||||
|
"backToSettings": "Quay lại cài đặt Camera",
|
||||||
|
"cameraConfig": {
|
||||||
|
"add": "Thêm Camera",
|
||||||
|
"edit": "Chỉnh sửa Camera",
|
||||||
|
"description": "Cấu hình Camera, bao gồm luồng đầu vào và vai trò.",
|
||||||
|
"name": "Tên Camera",
|
||||||
|
"nameRequired": "Yêu cầu nhập tên Camera",
|
||||||
|
"nameInvalid": "Tên Camera chỉ được chứa chữ cái, số, dấu gạch dưới hoặc dấu gạch ngang",
|
||||||
|
"namePlaceholder": "Ví dụ: front_door",
|
||||||
|
"enabled": "Bật",
|
||||||
|
"ffmpeg": {
|
||||||
|
"inputs": "Luồng đầu vào",
|
||||||
|
"path": "Đường dẫn luồng",
|
||||||
|
"pathRequired": "Yêu cầu nhập đường dẫn luồng",
|
||||||
|
"pathPlaceholder": "rtsp://...",
|
||||||
|
"roles": "Vai trò",
|
||||||
|
"rolesRequired": "Cần ít nhất một vai trò",
|
||||||
|
"rolesUnique": "Mỗi vai trò (âm thanh, phát hiện, ghi hình) chỉ có thể được gán cho một luồng duy nhất",
|
||||||
|
"addInput": "Thêm luồng đầu vào",
|
||||||
|
"removeInput": "Xóa luồng đầu vào",
|
||||||
|
"inputsRequired": "Cần ít nhất một luồng đầu vào"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"success": "Camera {{cameraName}} đã được lưu thành công"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"masksAndZones": {
|
"masksAndZones": {
|
||||||
@ -381,6 +418,11 @@
|
|||||||
"desc": "Hiển thị các hộp xung quanh các khu vực phát hiện có chuyển động",
|
"desc": "Hiển thị các hộp xung quanh các khu vực phát hiện có chuyển động",
|
||||||
"tips": "<p><strong>Hộp chuyển động</strong></p><br><p>Các hộp màu đỏ sẽ được chồng lên các khu vực của khung hình nơi chuyển động đang được phát hiện</p>",
|
"tips": "<p><strong>Hộp chuyển động</strong></p><br><p>Các hộp màu đỏ sẽ được chồng lên các khu vực của khung hình nơi chuyển động đang được phát hiện</p>",
|
||||||
"title": "Hộp chuyển động"
|
"title": "Hộp chuyển động"
|
||||||
|
},
|
||||||
|
"paths": {
|
||||||
|
"title": "Đường dẫn",
|
||||||
|
"desc": "Hiển thị các điểm quan trọng trên đường đi của đối tượng được theo dõi",
|
||||||
|
"tips": "<p><strong>Đường đi</strong></p><br><p>Đường thẳng và vòng tròn sẽ hiển thị các điểm quan trọng mà đối tượng được theo dõi đã di chuyển trong suốt quá trình theo dõi.</p>"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"users": {
|
"users": {
|
||||||
@ -612,5 +654,11 @@
|
|||||||
"cameraSetting": {
|
"cameraSetting": {
|
||||||
"camera": "Camera",
|
"camera": "Camera",
|
||||||
"noCamera": "Không có Camera"
|
"noCamera": "Không có Camera"
|
||||||
|
},
|
||||||
|
"triggers": {
|
||||||
|
"documentTitle": "Sự kiện kích hoạt",
|
||||||
|
"management": {
|
||||||
|
"title": "Quản lý sự kiện kích hoạt"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -248,5 +248,6 @@
|
|||||||
"documentTitle": "找不到頁面 - Frigate",
|
"documentTitle": "找不到頁面 - Frigate",
|
||||||
"desc": "找不到頁面",
|
"desc": "找不到頁面",
|
||||||
"title": "404"
|
"title": "404"
|
||||||
}
|
},
|
||||||
|
"readTheDocumentation": "閱讀文件"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -265,5 +265,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "页面未找到"
|
"desc": "页面未找到"
|
||||||
},
|
},
|
||||||
"selectItem": "选择 {{item}}"
|
"selectItem": "选择 {{item}}",
|
||||||
|
"readTheDocumentation": "阅读文档"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,5 +35,7 @@
|
|||||||
"selected": "已选择 {{count}} 个",
|
"selected": "已选择 {{count}} 个",
|
||||||
"selected_one": "已选择 {{count}} 个",
|
"selected_one": "已选择 {{count}} 个",
|
||||||
"selected_other": "已选择 {{count}} 个",
|
"selected_other": "已选择 {{count}} 个",
|
||||||
"detected": "已检测"
|
"detected": "已检测",
|
||||||
|
"suspiciousActivity": "可疑活动",
|
||||||
|
"threateningActivity": "威胁性活动"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -154,6 +154,9 @@
|
|||||||
"recognizedLicensePlate": "识别的车牌",
|
"recognizedLicensePlate": "识别的车牌",
|
||||||
"snapshotScore": {
|
"snapshotScore": {
|
||||||
"label": "快照得分"
|
"label": "快照得分"
|
||||||
|
},
|
||||||
|
"score": {
|
||||||
|
"label": "分值"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"itemMenu": {
|
"itemMenu": {
|
||||||
@ -211,5 +214,8 @@
|
|||||||
},
|
},
|
||||||
"tooltip": "与 {{type}} 匹配度为 {{confidence}}%"
|
"tooltip": "与 {{type}} 匹配度为 {{confidence}}%"
|
||||||
},
|
},
|
||||||
"exploreMore": "浏览更多的 {{label}}"
|
"exploreMore": "浏览更多的 {{label}}",
|
||||||
|
"aiAnalysis": {
|
||||||
|
"title": "AI分析"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,5 +39,25 @@
|
|||||||
"whoop": "大叫",
|
"whoop": "大叫",
|
||||||
"whispering": "講話",
|
"whispering": "講話",
|
||||||
"laughter": "笑聲",
|
"laughter": "笑聲",
|
||||||
"snicker": "竊笑"
|
"snicker": "竊笑",
|
||||||
|
"child_singing": "小孩歌聲",
|
||||||
|
"synthetic_singing": "合成音樂聲",
|
||||||
|
"rapping": "饒舌聲",
|
||||||
|
"humming": "哼歌聲",
|
||||||
|
"groan": "呻吟聲",
|
||||||
|
"grunt": "咕噥聲",
|
||||||
|
"whistling": "口哨聲",
|
||||||
|
"breathing": "呼吸聲",
|
||||||
|
"wheeze": "喘息聲",
|
||||||
|
"snoring": "打呼聲",
|
||||||
|
"gasp": "倒抽一口氣",
|
||||||
|
"pant": "喘氣聲",
|
||||||
|
"snort": "鼻息聲",
|
||||||
|
"cough": "咳嗽聲",
|
||||||
|
"throat_clearing": "清喉嚨聲",
|
||||||
|
"sneeze": "打噴嚏聲",
|
||||||
|
"sniff": "嗅聞聲",
|
||||||
|
"run": "跑步聲",
|
||||||
|
"shuffle": "拖著腳走路聲",
|
||||||
|
"footsteps": "腳步聲"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -247,5 +247,6 @@
|
|||||||
"title": "404",
|
"title": "404",
|
||||||
"desc": "找不到頁面"
|
"desc": "找不到頁面"
|
||||||
},
|
},
|
||||||
"selectItem": "選擇 {{item}}"
|
"selectItem": "選擇 {{item}}",
|
||||||
|
"readTheDocumentation": "閱讀文件"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,5 +122,13 @@
|
|||||||
"placeholder": "輸入以搜尋車牌…",
|
"placeholder": "輸入以搜尋車牌…",
|
||||||
"noLicensePlatesFound": "未找到車牌。",
|
"noLicensePlatesFound": "未找到車牌。",
|
||||||
"selectPlatesFromList": "從列表中選擇一個或多個車牌。"
|
"selectPlatesFromList": "從列表中選擇一個或多個車牌。"
|
||||||
|
},
|
||||||
|
"classes": {
|
||||||
|
"label": "類別",
|
||||||
|
"all": {
|
||||||
|
"title": "所有類別"
|
||||||
|
},
|
||||||
|
"count_one": "{{count}} 個類別",
|
||||||
|
"count_other": "{{count}} 個類別"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,5 +12,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"saveOnly": "僅保存",
|
"saveOnly": "僅保存",
|
||||||
"confirm": "是否不保存就離開?"
|
"confirm": "是否不保存就離開?",
|
||||||
|
"safeConfigEditor": "設定編輯器(安全模式)",
|
||||||
|
"safeModeDescription": "由於設定驗證有誤,Frigate 進入安全模式。"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,5 +34,7 @@
|
|||||||
"selected_one": "已選擇 {{count}} 個",
|
"selected_one": "已選擇 {{count}} 個",
|
||||||
"selected_other": "已選擇 {{count}} 個",
|
"selected_other": "已選擇 {{count}} 個",
|
||||||
"camera": "鏡頭",
|
"camera": "鏡頭",
|
||||||
"detected": "已偵測"
|
"detected": "已偵測",
|
||||||
|
"suspiciousActivity": "可疑的活動",
|
||||||
|
"threateningActivity": "有威脅性的活動"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,15 @@
|
|||||||
"label": "點擊畫面以置中 PTZ 鏡頭"
|
"label": "點擊畫面以置中 PTZ 鏡頭"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"presets": "PTZ 鏡頭預設"
|
"presets": "PTZ 鏡頭預設",
|
||||||
|
"focus": {
|
||||||
|
"in": {
|
||||||
|
"label": "聚焦 PTZ 鏡頭"
|
||||||
|
},
|
||||||
|
"out": {
|
||||||
|
"label": "離焦 PTZ 鏡頭"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"cameraAudio": {
|
"cameraAudio": {
|
||||||
"enable": "啟用鏡頭音訊",
|
"enable": "啟用鏡頭音訊",
|
||||||
@ -154,5 +162,9 @@
|
|||||||
"label": "編輯鏡頭群組"
|
"label": "編輯鏡頭群組"
|
||||||
},
|
},
|
||||||
"exitEdit": "結束編輯"
|
"exitEdit": "結束編輯"
|
||||||
|
},
|
||||||
|
"transcription": {
|
||||||
|
"enable": "啟用即時語音轉錄",
|
||||||
|
"disable": "停用即時語音轉錄"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,51 @@
|
|||||||
"automaticLiveView": {
|
"automaticLiveView": {
|
||||||
"label": "自動即時檢視",
|
"label": "自動即時檢視",
|
||||||
"desc": "在偵測到移動時自動切換至即時影像。停用此設定將使得在即時監控面板上的靜態畫面每分鐘更新一次。"
|
"desc": "在偵測到移動時自動切換至即時影像。停用此設定將使得在即時監控面板上的靜態畫面每分鐘更新一次。"
|
||||||
|
},
|
||||||
|
"playAlertVideos": {
|
||||||
|
"label": "播放警報影片",
|
||||||
|
"desc": "最近的警報影片預設會在即時監控面板中連續循環播放。取消這個選項,可以只顯示靜態的最近警報擷圖(僅套用於該裝置/瀏覽器)。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"storedLayouts": {
|
||||||
|
"title": "儲存的排版",
|
||||||
|
"desc": "在鏡頭群組內的鏡頭排版可以拖拉或縮放調整。這個排版設定儲存於目前瀏覽器的本機儲存空間。",
|
||||||
|
"clearAll": "清除所有排版"
|
||||||
|
},
|
||||||
|
"cameraGroupStreaming": {
|
||||||
|
"title": "鏡頭群組串流播放設定",
|
||||||
|
"desc": "每個鏡頭群組的串流播放設定都儲存在目前瀏覽器的本機儲存空間。",
|
||||||
|
"clearAll": "清除所有串流播放設定"
|
||||||
|
},
|
||||||
|
"recordingsViewer": {
|
||||||
|
"title": "錄影檢視器",
|
||||||
|
"defaultPlaybackRate": {
|
||||||
|
"label": "預設播放速度",
|
||||||
|
"desc": "錄影回放的預設播放速度。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calendar": {
|
||||||
|
"title": "月曆",
|
||||||
|
"firstWeekday": {
|
||||||
|
"label": "第一個工作天",
|
||||||
|
"desc": "在檢視月曆中,每個禮拜從禮拜幾開始。",
|
||||||
|
"sunday": "禮拜天",
|
||||||
|
"monday": "禮拜一"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"success": {
|
||||||
|
"clearStoredLayout": "清除 {{cameraName}} 儲存的排版",
|
||||||
|
"clearStreamingSettings": "清除所有鏡頭群組的串流播放設定。"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"clearStoredLayoutFailed": "清除儲存的排版設定失敗: {{errorMessage}}",
|
||||||
|
"clearStreamingSettingsFailed": "清除串流播放設定失敗: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"enrichments": {
|
||||||
|
"title": "強化設定",
|
||||||
|
"unsavedChanges": "尚未儲存的強化設定變更"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -187,9 +187,7 @@ export function AnnotationSettingsPane({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t(
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
"objectLifecycle.annotationSettings.offset.documentation",
|
|
||||||
)}
|
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -161,7 +161,7 @@ export default function CreateFaceWizardDialog({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("readTheDocs")}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -228,9 +228,7 @@ export function CameraStreamingDialog({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("streaming.restreaming.desc.readTheDocumentation", {
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
ns: "components/dialog",
|
|
||||||
})}
|
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -289,7 +287,7 @@ export function CameraStreamingDialog({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("group.camera.setting.audio.tips.document")}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -257,7 +257,7 @@ export default function MotionMaskEditPane({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("masksAndZones.motionMasks.context.documentation")}{" "}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -303,7 +303,7 @@ export default function MotionMaskEditPane({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="my-3 block"
|
className="my-3 block"
|
||||||
>
|
>
|
||||||
{t("masksAndZones.motionMasks.polygonAreaTooLarge.documentation")}{" "}
|
{t("readTheDocumentation", { ns: "common" })}{" "}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -687,7 +687,7 @@ export default function ZoneEditPane({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("masksAndZones.zones.speedEstimation.docs")}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -482,9 +482,7 @@ export default function Explore() {
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t(
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
"exploreIsUnavailable.downloadingModels.tips.documentation",
|
|
||||||
)}{" "}
|
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -79,6 +79,7 @@ export type StorageStats = {
|
|||||||
total: number;
|
total: number;
|
||||||
used: number;
|
used: number;
|
||||||
mount_type: string;
|
mount_type: string;
|
||||||
|
min_shm?: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PotentialProblem = {
|
export type PotentialProblem = {
|
||||||
|
|||||||
@ -1379,12 +1379,7 @@ function FrigateCameraFeatures({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t(
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
"streaming.restreaming.desc.readTheDocumentation",
|
|
||||||
{
|
|
||||||
ns: "components/dialog",
|
|
||||||
},
|
|
||||||
)}
|
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -1457,7 +1452,9 @@ function FrigateCameraFeatures({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("stream.audio.tips.documentation")}
|
{t("readTheDocumentation", {
|
||||||
|
ns: "common",
|
||||||
|
})}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -1500,9 +1497,9 @@ function FrigateCameraFeatures({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t(
|
{t("readTheDocumentation", {
|
||||||
"stream.twoWayTalk.tips.documentation",
|
ns: "common",
|
||||||
)}
|
})}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -1717,9 +1714,7 @@ function FrigateCameraFeatures({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("streaming.restreaming.desc.readTheDocumentation", {
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
ns: "components/dialog",
|
|
||||||
})}
|
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -1788,7 +1783,7 @@ function FrigateCameraFeatures({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("stream.audio.tips.documentation")}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -1831,7 +1826,7 @@ function FrigateCameraFeatures({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("stream.twoWayTalk.tips.documentation")}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -508,9 +508,7 @@ export default function CameraSettingsView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
<Trans ns="views/settings">
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
camera.reviewClassification.readTheDocumentation
|
|
||||||
</Trans>{" "}
|
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -263,7 +263,7 @@ export default function EnrichmentsSettingsView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("enrichments.semanticSearch.readTheDocumentation")}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -409,7 +409,7 @@ export default function EnrichmentsSettingsView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("enrichments.faceRecognition.readTheDocumentation")}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -512,9 +512,7 @@ export default function EnrichmentsSettingsView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t(
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
"enrichments.licensePlateRecognition.readTheDocumentation",
|
|
||||||
)}
|
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -558,7 +556,7 @@ export default function EnrichmentsSettingsView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("enrichments.semanticSearch.readTheDocumentation")}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -458,7 +458,7 @@ export default function FrigatePlusSettingsView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("frigatePlus.snapshotConfig.documentation")}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -506,7 +506,7 @@ export default function MasksAndZonesView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("masksAndZones.zones.desc.documentation")}{" "}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -574,9 +574,7 @@ export default function MasksAndZonesView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t(
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
"masksAndZones.motionMasks.desc.documentation",
|
|
||||||
)}{" "}
|
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -646,9 +644,7 @@ export default function MasksAndZonesView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t(
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
"masksAndZones.objectMasks.desc.documentation",
|
|
||||||
)}{" "}
|
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -205,7 +205,7 @@ export default function MotionTunerView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("motionDetectionTuner.desc.documentation")}{" "}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -341,7 +341,7 @@ export default function NotificationView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("notification.notificationSettings.documentation")}{" "}
|
{t("readTheDocumentation", { ns: "common" })}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -363,7 +363,7 @@ export default function NotificationView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("notification.notificationUnavailable.documentation")}{" "}
|
{t("readTheDocumentation", { ns: "common" })}{" "}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -396,7 +396,7 @@ export default function NotificationView({
|
|||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="inline"
|
className="inline"
|
||||||
>
|
>
|
||||||
{t("notification.notificationSettings.documentation")}{" "}
|
{t("readTheDocumentation", { ns: "common" })}{" "}
|
||||||
<LuExternalLink className="ml-2 inline-flex size-3" />
|
<LuExternalLink className="ml-2 inline-flex size-3" />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user