mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-08-04 13:47:37 +02:00
sync upstream dev back to PR-memryx
This commit is contained in:
commit
7e3ba9a418
@ -6,7 +6,7 @@ import numpy as np
|
||||
|
||||
import frigate.util as util
|
||||
from frigate.config import DetectorTypeEnum
|
||||
from frigate.object_detection import (
|
||||
from frigate.object_detection.base import (
|
||||
ObjectDetectProcess,
|
||||
RemoteObjectDetector,
|
||||
load_labels,
|
||||
|
@ -312,13 +312,13 @@ model:
|
||||
|
||||
Note that the labelmap uses a subset of the complete COCO label set that has only 80 objects.
|
||||
|
||||
#### YOLOv9
|
||||
#### YOLO (v3, v4, v7, v9)
|
||||
|
||||
[YOLOv9](https://github.com/WongKinYiu/yolov9) models are supported, but not included by default.
|
||||
YOLOv3, YOLOv4, YOLOv7, and [YOLOv9](https://github.com/WongKinYiu/yolov9) models are supported, but not included by default.
|
||||
|
||||
:::tip
|
||||
|
||||
The YOLOv9 detector has been designed to support YOLOv9 models, but may support other YOLO model architectures as well.
|
||||
The YOLO detector has been designed to support YOLOv3, YOLOv4, YOLOv7, and YOLOv9 models, but may support other YOLO model architectures as well.
|
||||
|
||||
:::
|
||||
|
||||
@ -331,12 +331,12 @@ detectors:
|
||||
device: GPU
|
||||
|
||||
model:
|
||||
model_type: yolov9
|
||||
width: 640 # <--- should match the imgsize set during model export
|
||||
height: 640 # <--- should match the imgsize set during model export
|
||||
model_type: yolo-generic
|
||||
width: 320 # <--- should match the imgsize set during model export
|
||||
height: 320 # <--- should match the imgsize set during model export
|
||||
input_tensor: nchw
|
||||
input_dtype: float
|
||||
path: /config/model_cache/yolov9-t.onnx
|
||||
path: /config/model_cache/yolo.onnx
|
||||
labelmap_path: /labelmap/coco-80.txt
|
||||
```
|
||||
|
||||
@ -653,13 +653,13 @@ model:
|
||||
labelmap_path: /labelmap/coco-80.txt
|
||||
```
|
||||
|
||||
#### YOLOv9
|
||||
#### YOLO (v3, v4, v7, v9)
|
||||
|
||||
[YOLOv9](https://github.com/WongKinYiu/yolov9) models are supported, but not included by default.
|
||||
YOLOv3, YOLOv4, YOLOv7, and [YOLOv9](https://github.com/WongKinYiu/yolov9) models are supported, but not included by default.
|
||||
|
||||
:::tip
|
||||
|
||||
The YOLOv9 detector has been designed to support YOLOv9 models, but may support other YOLO model architectures as well.
|
||||
The YOLO detector has been designed to support YOLOv3, YOLOv4, YOLOv7, and YOLOv9 models, but may support other YOLO model architectures as well.
|
||||
|
||||
:::
|
||||
|
||||
@ -671,12 +671,12 @@ detectors:
|
||||
type: onnx
|
||||
|
||||
model:
|
||||
model_type: yolov9
|
||||
width: 640 # <--- should match the imgsize set during model export
|
||||
height: 640 # <--- should match the imgsize set during model export
|
||||
model_type: yolo-generic
|
||||
width: 320 # <--- should match the imgsize set during model export
|
||||
height: 320 # <--- should match the imgsize set during model export
|
||||
input_tensor: nchw
|
||||
input_dtype: float
|
||||
path: /config/model_cache/yolov9-t.onnx
|
||||
path: /config/model_cache/yolo.onnx
|
||||
labelmap_path: /labelmap/coco-80.txt
|
||||
```
|
||||
|
||||
@ -684,7 +684,7 @@ Note that the labelmap uses a subset of the complete COCO label set that has onl
|
||||
|
||||
#### RF-DETR
|
||||
|
||||
[RF-DETR](https://github.com/roboflow/rf-detr) is a DETR based model. The ONNX exported models are supported, but not included by default. See [the models section](#downloading-rf-detr-model) for more informatoin on downloading the RF-DETR model for use in Frigate.
|
||||
[RF-DETR](https://github.com/roboflow/rf-detr) is a DETR based model. The ONNX exported models are supported, but not included by default. See [the models section](#downloading-rf-detr-model) for more information on downloading the RF-DETR model for use in Frigate.
|
||||
|
||||
After placing the downloaded onnx model in your `config/model_cache` folder, you can use the following configuration:
|
||||
|
||||
@ -959,3 +959,27 @@ The pre-trained YOLO-NAS weights from DeciAI are subject to their license and ca
|
||||
:::
|
||||
|
||||
The input image size in this notebook is set to 320x320. This results in lower CPU usage and faster inference times without impacting performance in most cases due to the way Frigate crops video frames to areas of interest before running detection. The notebook and config can be updated to 640x640 if desired.
|
||||
|
||||
### Downloading YOLO Models
|
||||
|
||||
#### YOLOv3, YOLOv4, and YOLOv7
|
||||
|
||||
To export as ONNX:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/NateMeyer/tensorrt_demos
|
||||
cd tensorrt_demos/yolo
|
||||
./download_yolo.sh
|
||||
python3 yolo_to_onnx.py -m yolov7-320
|
||||
```
|
||||
|
||||
#### YOLOv9
|
||||
|
||||
YOLOv9 models can be exported using the below code or they [can be downloaded from hugging face](https://huggingface.co/Xenova/yolov9-onnx/tree/main)
|
||||
|
||||
```sh
|
||||
git clone https://github.com/WongKinYiu/yolov9
|
||||
cd yolov9
|
||||
wget -O yolov9-t.pt "https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-t-converted.pt"
|
||||
python3 export.py --weights ./yolov9-t-converted.pt --imgsz 320 --simplify
|
||||
```
|
||||
|
@ -55,7 +55,7 @@ from frigate.models import (
|
||||
Timeline,
|
||||
User,
|
||||
)
|
||||
from frigate.object_detection import ObjectDetectProcess
|
||||
from frigate.object_detection.base import ObjectDetectProcess
|
||||
from frigate.output.output import output_frames
|
||||
from frigate.ptz.autotrack import PtzAutoTrackerThread
|
||||
from frigate.ptz.onvif import OnvifController
|
||||
|
@ -25,6 +25,8 @@ class PixelFormatEnum(str, Enum):
|
||||
class InputTensorEnum(str, Enum):
|
||||
nchw = "nchw"
|
||||
nhwc = "nhwc"
|
||||
hwnc = "hwnc"
|
||||
hwcn = "hwcn"
|
||||
|
||||
|
||||
class InputDTypeEnum(str, Enum):
|
||||
|
@ -1,6 +1,5 @@
|
||||
import logging
|
||||
import os
|
||||
import queue
|
||||
import subprocess
|
||||
import threading
|
||||
import urllib.request
|
||||
@ -28,37 +27,11 @@ from frigate.detectors.detection_api import DetectionApi
|
||||
from frigate.detectors.detector_config import (
|
||||
BaseDetectorConfig,
|
||||
)
|
||||
from frigate.object_detection.util import RequestStore, ResponseStore
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# ----------------- ResponseStore Class ----------------- #
|
||||
class ResponseStore:
|
||||
"""
|
||||
A thread-safe hash-based response store that maps request IDs
|
||||
to their results. Threads can wait on the condition variable until
|
||||
their request's result appears.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.responses = {} # Maps request_id -> (original_input, infer_results)
|
||||
self.lock = threading.Lock()
|
||||
self.cond = threading.Condition(self.lock)
|
||||
|
||||
def put(self, request_id, response):
|
||||
with self.cond:
|
||||
self.responses[request_id] = response
|
||||
self.cond.notify_all()
|
||||
|
||||
def get(self, request_id, timeout=None):
|
||||
with self.cond:
|
||||
if not self.cond.wait_for(
|
||||
lambda: request_id in self.responses, timeout=timeout
|
||||
):
|
||||
raise TimeoutError(f"Timeout waiting for response {request_id}")
|
||||
return self.responses.pop(request_id)
|
||||
|
||||
|
||||
# ----------------- Utility Functions ----------------- #
|
||||
|
||||
|
||||
@ -122,14 +95,14 @@ class HailoAsyncInference:
|
||||
def __init__(
|
||||
self,
|
||||
hef_path: str,
|
||||
input_queue: queue.Queue,
|
||||
input_store: RequestStore,
|
||||
output_store: ResponseStore,
|
||||
batch_size: int = 1,
|
||||
input_type: Optional[str] = None,
|
||||
output_type: Optional[Dict[str, str]] = None,
|
||||
send_original_frame: bool = False,
|
||||
) -> None:
|
||||
self.input_queue = input_queue
|
||||
self.input_store = input_store
|
||||
self.output_store = output_store
|
||||
|
||||
params = VDevice.create_params()
|
||||
@ -204,9 +177,11 @@ class HailoAsyncInference:
|
||||
def run(self) -> None:
|
||||
with self.infer_model.configure() as configured_infer_model:
|
||||
while True:
|
||||
batch_data = self.input_queue.get()
|
||||
batch_data = self.input_store.get()
|
||||
|
||||
if batch_data is None:
|
||||
break
|
||||
|
||||
request_id, frame_data = batch_data
|
||||
preprocessed_batch = [frame_data]
|
||||
request_ids = [request_id]
|
||||
@ -274,16 +249,14 @@ class HailoDetector(DetectionApi):
|
||||
self.working_model_path = self.check_and_prepare()
|
||||
|
||||
self.batch_size = 1
|
||||
self.input_queue = queue.Queue()
|
||||
self.input_store = RequestStore()
|
||||
self.response_store = ResponseStore()
|
||||
self.request_counter = 0
|
||||
self.request_counter_lock = threading.Lock()
|
||||
|
||||
try:
|
||||
logger.debug(f"[INIT] Loading HEF model from {self.working_model_path}")
|
||||
self.inference_engine = HailoAsyncInference(
|
||||
self.working_model_path,
|
||||
self.input_queue,
|
||||
self.input_store,
|
||||
self.response_store,
|
||||
self.batch_size,
|
||||
)
|
||||
@ -364,26 +337,16 @@ class HailoDetector(DetectionApi):
|
||||
raise FileNotFoundError(f"Model file not found at: {self.model_path}")
|
||||
return cached_model_path
|
||||
|
||||
def _get_request_id(self) -> int:
|
||||
with self.request_counter_lock:
|
||||
request_id = self.request_counter
|
||||
self.request_counter += 1
|
||||
if self.request_counter > 1000000:
|
||||
self.request_counter = 0
|
||||
return request_id
|
||||
|
||||
def detect_raw(self, tensor_input):
|
||||
request_id = self._get_request_id()
|
||||
|
||||
tensor_input = self.preprocess(tensor_input)
|
||||
|
||||
if isinstance(tensor_input, np.ndarray) and len(tensor_input.shape) == 3:
|
||||
tensor_input = np.expand_dims(tensor_input, axis=0)
|
||||
|
||||
self.input_queue.put((request_id, tensor_input))
|
||||
request_id = self.input_store.put(tensor_input)
|
||||
|
||||
try:
|
||||
original_input, infer_results = self.response_store.get(
|
||||
request_id, timeout=10.0
|
||||
)
|
||||
_, infer_results = self.response_store.get(request_id, timeout=10.0)
|
||||
except TimeoutError:
|
||||
logger.error(
|
||||
f"Timeout waiting for inference results for request {request_id}"
|
||||
|
@ -13,7 +13,7 @@ from frigate.util.model import (
|
||||
get_ort_providers,
|
||||
post_process_dfine,
|
||||
post_process_rfdetr,
|
||||
post_process_yolov9,
|
||||
post_process_yolo,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -97,12 +97,8 @@ class ONNXDetector(DetectionApi):
|
||||
x_max / self.w,
|
||||
]
|
||||
return detections
|
||||
elif (
|
||||
self.onnx_model_type == ModelTypeEnum.yolov9
|
||||
or self.onnx_model_type == ModelTypeEnum.yologeneric
|
||||
):
|
||||
predictions: np.ndarray = tensor_output[0]
|
||||
return post_process_yolov9(predictions, self.w, self.h)
|
||||
elif self.onnx_model_type == ModelTypeEnum.yologeneric:
|
||||
return post_process_yolo(tensor_output, self.w, self.h)
|
||||
else:
|
||||
raise Exception(
|
||||
f"{self.onnx_model_type} is currently not supported for onnx. See the docs for more info on supported models."
|
||||
|
@ -13,7 +13,7 @@ from frigate.detectors.detector_config import BaseDetectorConfig, ModelTypeEnum
|
||||
from frigate.util.model import (
|
||||
post_process_dfine,
|
||||
post_process_rfdetr,
|
||||
post_process_yolov9,
|
||||
post_process_yolo,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -33,7 +33,6 @@ class OvDetector(DetectionApi):
|
||||
ModelTypeEnum.rfdetr,
|
||||
ModelTypeEnum.ssd,
|
||||
ModelTypeEnum.yolonas,
|
||||
ModelTypeEnum.yolov9,
|
||||
ModelTypeEnum.yologeneric,
|
||||
ModelTypeEnum.yolox,
|
||||
]
|
||||
@ -232,12 +231,13 @@ class OvDetector(DetectionApi):
|
||||
x_max / self.w,
|
||||
]
|
||||
return detections
|
||||
elif (
|
||||
self.ov_model_type == ModelTypeEnum.yolov9
|
||||
or self.ov_model_type == ModelTypeEnum.yologeneric
|
||||
):
|
||||
out_tensor = infer_request.get_output_tensor(0).data
|
||||
return post_process_yolov9(out_tensor, self.w, self.h)
|
||||
elif self.ov_model_type == ModelTypeEnum.yologeneric:
|
||||
out_tensor = []
|
||||
|
||||
for item in infer_request.output_tensors:
|
||||
out_tensor.append(item.data)
|
||||
|
||||
return post_process_yolo(out_tensor, self.w, self.h)
|
||||
elif self.ov_model_type == ModelTypeEnum.yolox:
|
||||
out_tensor = infer_request.get_output_tensor()
|
||||
# [x, y, h, w, box_score, class_no_1, ..., class_no_80],
|
||||
|
@ -29,7 +29,7 @@ from frigate.const import (
|
||||
)
|
||||
from frigate.ffmpeg_presets import parse_preset_input
|
||||
from frigate.log import LogPipe
|
||||
from frigate.object_detection import load_labels
|
||||
from frigate.object_detection.base import load_labels
|
||||
from frigate.util.builtin import get_ffmpeg_arg_list
|
||||
from frigate.video import start_or_restart_ffmpeg, stop_ffmpeg
|
||||
|
||||
|
@ -16,12 +16,13 @@ from frigate.detectors import create_detector
|
||||
from frigate.detectors.detector_config import (
|
||||
BaseDetectorConfig,
|
||||
InputDTypeEnum,
|
||||
InputTensorEnum,
|
||||
)
|
||||
from frigate.util.builtin import EventsPerSecond, load_labels
|
||||
from frigate.util.image import SharedMemoryFrameManager, UntrackedSharedMemory
|
||||
from frigate.util.services import listen
|
||||
|
||||
from .util import tensor_transform
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -31,14 +32,6 @@ class ObjectDetector(ABC):
|
||||
pass
|
||||
|
||||
|
||||
def tensor_transform(desired_shape: InputTensorEnum):
|
||||
# Currently this function only supports BHWC permutations
|
||||
if desired_shape == InputTensorEnum.nhwc:
|
||||
return None
|
||||
elif desired_shape == InputTensorEnum.nchw:
|
||||
return (0, 3, 1, 2)
|
||||
|
||||
|
||||
class LocalObjectDetector(ObjectDetector):
|
||||
def __init__(
|
||||
self,
|
77
frigate/object_detection/util.py
Normal file
77
frigate/object_detection/util.py
Normal file
@ -0,0 +1,77 @@
|
||||
"""Object detection utilities."""
|
||||
|
||||
import queue
|
||||
import threading
|
||||
|
||||
from numpy import ndarray
|
||||
|
||||
from frigate.detectors.detector_config import InputTensorEnum
|
||||
|
||||
|
||||
class RequestStore:
|
||||
"""
|
||||
A thread-safe hash-based response store that handles creating requests.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.request_counter = 0
|
||||
self.request_counter_lock = threading.Lock()
|
||||
self.input_queue = queue.Queue()
|
||||
|
||||
def __get_request_id(self) -> int:
|
||||
with self.request_counter_lock:
|
||||
request_id = self.request_counter
|
||||
self.request_counter += 1
|
||||
if self.request_counter > 1000000:
|
||||
self.request_counter = 0
|
||||
return request_id
|
||||
|
||||
def put(self, tensor_input: ndarray) -> int:
|
||||
request_id = self.__get_request_id()
|
||||
self.input_queue.get((request_id, tensor_input))
|
||||
return request_id
|
||||
|
||||
def get(self) -> tuple[int, ndarray] | None:
|
||||
try:
|
||||
return self.input_queue.get_nowait()
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
class ResponseStore:
|
||||
"""
|
||||
A thread-safe hash-based response store that maps request IDs
|
||||
to their results. Threads can wait on the condition variable until
|
||||
their request's result appears.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.responses = {} # Maps request_id -> (original_input, infer_results)
|
||||
self.lock = threading.Lock()
|
||||
self.cond = threading.Condition(self.lock)
|
||||
|
||||
def put(self, request_id: int, response: ndarray):
|
||||
with self.cond:
|
||||
self.responses[request_id] = response
|
||||
self.cond.notify_all()
|
||||
|
||||
def get(self, request_id: int, timeout=None) -> ndarray:
|
||||
with self.cond:
|
||||
if not self.cond.wait_for(
|
||||
lambda: request_id in self.responses, timeout=timeout
|
||||
):
|
||||
raise TimeoutError(f"Timeout waiting for response {request_id}")
|
||||
|
||||
return self.responses.pop(request_id)
|
||||
|
||||
|
||||
def tensor_transform(desired_shape: InputTensorEnum):
|
||||
# Currently this function only supports BHWC permutations
|
||||
if desired_shape == InputTensorEnum.nhwc:
|
||||
return None
|
||||
elif desired_shape == InputTensorEnum.nchw:
|
||||
return (0, 3, 1, 2)
|
||||
elif desired_shape == InputTensorEnum.hwnc:
|
||||
return (1, 2, 0, 3)
|
||||
elif desired_shape == InputTensorEnum.hwcn:
|
||||
return (1, 2, 3, 0)
|
@ -15,7 +15,7 @@ from frigate.camera import CameraMetrics
|
||||
from frigate.config import FrigateConfig
|
||||
from frigate.const import CACHE_DIR, CLIPS_DIR, RECORD_DIR
|
||||
from frigate.data_processing.types import DataProcessorMetrics
|
||||
from frigate.object_detection import ObjectDetectProcess
|
||||
from frigate.object_detection.base import ObjectDetectProcess
|
||||
from frigate.types import StatsTrackingTypes
|
||||
from frigate.util.services import (
|
||||
get_amd_gpu_stats,
|
||||
|
@ -5,7 +5,7 @@ import numpy as np
|
||||
from pydantic import parse_obj_as
|
||||
|
||||
import frigate.detectors as detectors
|
||||
import frigate.object_detection
|
||||
import frigate.object_detection.base
|
||||
from frigate.config import DetectorConfig, ModelConfig
|
||||
from frigate.detectors import DetectorTypeEnum
|
||||
from frigate.detectors.detector_config import InputTensorEnum
|
||||
@ -23,7 +23,7 @@ class TestLocalObjectDetector(unittest.TestCase):
|
||||
DetectorConfig, ({"type": det_type, "model": {}})
|
||||
)
|
||||
test_cfg.model.path = "/test/modelpath"
|
||||
test_obj = frigate.object_detection.LocalObjectDetector(
|
||||
test_obj = frigate.object_detection.base.LocalObjectDetector(
|
||||
detector_config=test_cfg
|
||||
)
|
||||
|
||||
@ -43,7 +43,7 @@ class TestLocalObjectDetector(unittest.TestCase):
|
||||
|
||||
TEST_DATA = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
TEST_DETECT_RESULT = np.ndarray([1, 2, 4, 8, 16, 32])
|
||||
test_obj_detect = frigate.object_detection.LocalObjectDetector(
|
||||
test_obj_detect = frigate.object_detection.base.LocalObjectDetector(
|
||||
detector_config=parse_obj_as(DetectorConfig, {"type": "cpu", "model": {}})
|
||||
)
|
||||
|
||||
@ -70,7 +70,7 @@ class TestLocalObjectDetector(unittest.TestCase):
|
||||
test_cfg = parse_obj_as(DetectorConfig, {"type": "cpu", "model": {}})
|
||||
test_cfg.model.input_tensor = InputTensorEnum.nchw
|
||||
|
||||
test_obj_detect = frigate.object_detection.LocalObjectDetector(
|
||||
test_obj_detect = frigate.object_detection.base.LocalObjectDetector(
|
||||
detector_config=test_cfg
|
||||
)
|
||||
|
||||
@ -91,7 +91,7 @@ class TestLocalObjectDetector(unittest.TestCase):
|
||||
"frigate.detectors.api_types",
|
||||
{det_type: Mock() for det_type in DetectorTypeEnum},
|
||||
)
|
||||
@patch("frigate.object_detection.load_labels")
|
||||
@patch("frigate.object_detection.base.load_labels")
|
||||
def test_detect_given_tensor_input_should_return_lfiltered_detections(
|
||||
self, mock_load_labels
|
||||
):
|
||||
@ -118,7 +118,7 @@ class TestLocalObjectDetector(unittest.TestCase):
|
||||
|
||||
test_cfg = parse_obj_as(DetectorConfig, {"type": "cpu", "model": {}})
|
||||
test_cfg.model = ModelConfig()
|
||||
test_obj_detect = frigate.object_detection.LocalObjectDetector(
|
||||
test_obj_detect = frigate.object_detection.base.LocalObjectDetector(
|
||||
detector_config=test_cfg,
|
||||
labels=TEST_LABEL_FILE,
|
||||
)
|
||||
|
@ -3,7 +3,7 @@ from typing import TypedDict
|
||||
|
||||
from frigate.camera import CameraMetrics
|
||||
from frigate.data_processing.types import DataProcessorMetrics
|
||||
from frigate.object_detection import ObjectDetectProcess
|
||||
from frigate.object_detection.base import ObjectDetectProcess
|
||||
|
||||
|
||||
class StatsTrackingTypes(TypedDict):
|
||||
|
@ -99,7 +99,94 @@ def post_process_rfdetr(tensor_output: list[np.ndarray, np.ndarray]) -> np.ndarr
|
||||
return detections
|
||||
|
||||
|
||||
def post_process_yolov9(predictions: np.ndarray, width, height) -> np.ndarray:
|
||||
def __post_process_multipart_yolo(
|
||||
output_list,
|
||||
width,
|
||||
height,
|
||||
):
|
||||
anchors = [
|
||||
[(12, 16), (19, 36), (40, 28)],
|
||||
[(36, 75), (76, 55), (72, 146)],
|
||||
[(142, 110), (192, 243), (459, 401)],
|
||||
]
|
||||
|
||||
stride_map = {0: 8, 1: 16, 2: 32}
|
||||
|
||||
all_boxes = []
|
||||
all_scores = []
|
||||
all_class_ids = []
|
||||
|
||||
for i, output in enumerate(output_list):
|
||||
bs, _, ny, nx = output.shape
|
||||
stride = stride_map[i]
|
||||
anchor_set = anchors[i]
|
||||
|
||||
num_anchors = len(anchor_set)
|
||||
output = output.reshape(bs, num_anchors, 85, ny, nx)
|
||||
output = output.transpose(0, 1, 3, 4, 2)
|
||||
output = output[0]
|
||||
|
||||
for a_idx, (anchor_w, anchor_h) in enumerate(anchor_set):
|
||||
for y in range(ny):
|
||||
for x in range(nx):
|
||||
pred = output[a_idx, y, x]
|
||||
class_probs = pred[5:]
|
||||
class_id = np.argmax(class_probs)
|
||||
class_conf = class_probs[class_id]
|
||||
conf = class_conf * pred[4]
|
||||
|
||||
if conf < 0.4:
|
||||
continue
|
||||
|
||||
dx = pred[0]
|
||||
dy = pred[1]
|
||||
dw = pred[2]
|
||||
dh = pred[3]
|
||||
|
||||
bx = ((dx * 2.0 - 0.5) + x) * stride
|
||||
by = ((dy * 2.0 - 0.5) + y) * stride
|
||||
bw = ((dw * 2.0) ** 2) * anchor_w
|
||||
bh = ((dh * 2.0) ** 2) * anchor_h
|
||||
|
||||
x1 = max(0, bx - bw / 2) / width
|
||||
y1 = max(0, by - bh / 2) / height
|
||||
x2 = min(width, bx + bw / 2) / width
|
||||
y2 = min(height, by + bh / 2) / height
|
||||
|
||||
all_boxes.append([x1, y1, x2, y2])
|
||||
all_scores.append(conf)
|
||||
all_class_ids.append(class_id)
|
||||
|
||||
formatted_boxes = [
|
||||
[
|
||||
int(x1 * width),
|
||||
int(y1 * height),
|
||||
int((x2 - x1) * width),
|
||||
int((y2 - y1) * height),
|
||||
]
|
||||
for x1, y1, x2, y2 in all_boxes
|
||||
]
|
||||
|
||||
indices = cv2.dnn.NMSBoxes(
|
||||
bboxes=formatted_boxes,
|
||||
scores=all_scores,
|
||||
score_threshold=0.4,
|
||||
nms_threshold=0.4,
|
||||
)
|
||||
|
||||
results = np.zeros((20, 6), np.float32)
|
||||
|
||||
if len(indices) > 0:
|
||||
for i, idx in enumerate(indices.flatten()[:20]):
|
||||
class_id = all_class_ids[idx]
|
||||
conf = all_scores[idx]
|
||||
x1, y1, x2, y2 = all_boxes[idx]
|
||||
results[i] = [class_id, conf, y1, x1, y2, x2]
|
||||
|
||||
return np.array(results, dtype=np.float32)
|
||||
|
||||
|
||||
def __post_process_nms_yolo(predictions: np.ndarray, width, height) -> np.ndarray:
|
||||
predictions = np.squeeze(predictions).T
|
||||
scores = np.max(predictions[:, 4:], axis=1)
|
||||
predictions = predictions[scores > 0.4, :]
|
||||
@ -131,6 +218,13 @@ def post_process_yolov9(predictions: np.ndarray, width, height) -> np.ndarray:
|
||||
return detections
|
||||
|
||||
|
||||
def post_process_yolo(output: list[np.ndarray], width: int, height: int) -> np.ndarray:
|
||||
if len(output) > 1:
|
||||
return __post_process_multipart_yolo(output, width, height)
|
||||
else:
|
||||
return __post_process_nms_yolo(output[0], width, height)
|
||||
|
||||
|
||||
### ONNX Utilities
|
||||
|
||||
|
||||
|
@ -24,7 +24,7 @@ from frigate.const import (
|
||||
from frigate.log import LogPipe
|
||||
from frigate.motion import MotionDetector
|
||||
from frigate.motion.improved_motion import ImprovedMotionDetector
|
||||
from frigate.object_detection import RemoteObjectDetector
|
||||
from frigate.object_detection.base import RemoteObjectDetector
|
||||
from frigate.ptz.autotrack import ptz_moving_at_frame_time
|
||||
from frigate.track import ObjectTracker
|
||||
from frigate.track.norfair_tracker import NorfairTracker
|
||||
|
@ -4,7 +4,7 @@ import threading
|
||||
import time
|
||||
from multiprocessing.synchronize import Event as MpEvent
|
||||
|
||||
from frigate.object_detection import ObjectDetectProcess
|
||||
from frigate.object_detection.base import ObjectDetectProcess
|
||||
from frigate.util.services import restart_frigate
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -14,7 +14,7 @@ sys.path.append("/workspace/frigate")
|
||||
|
||||
from frigate.config import FrigateConfig # noqa: E402
|
||||
from frigate.motion import MotionDetector # noqa: E402
|
||||
from frigate.object_detection import LocalObjectDetector # noqa: E402
|
||||
from frigate.object_detection.base import LocalObjectDetector # noqa: E402
|
||||
from frigate.track.centroid_tracker import CentroidTracker # noqa: E402
|
||||
from frigate.track.object_processing import CameraState # noqa: E402
|
||||
from frigate.util import ( # noqa: E402
|
||||
|
1
web/public/locales/ab/audio.json
Normal file
1
web/public/locales/ab/audio.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/common.json
Normal file
1
web/public/locales/ab/common.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/components/auth.json
Normal file
1
web/public/locales/ab/components/auth.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/components/camera.json
Normal file
1
web/public/locales/ab/components/camera.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/components/dialog.json
Normal file
1
web/public/locales/ab/components/dialog.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/components/filter.json
Normal file
1
web/public/locales/ab/components/filter.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/components/icons.json
Normal file
1
web/public/locales/ab/components/icons.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/components/input.json
Normal file
1
web/public/locales/ab/components/input.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/components/player.json
Normal file
1
web/public/locales/ab/components/player.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/objects.json
Normal file
1
web/public/locales/ab/objects.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/configEditor.json
Normal file
1
web/public/locales/ab/views/configEditor.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/events.json
Normal file
1
web/public/locales/ab/views/events.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/explore.json
Normal file
1
web/public/locales/ab/views/explore.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/exports.json
Normal file
1
web/public/locales/ab/views/exports.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/faceLibrary.json
Normal file
1
web/public/locales/ab/views/faceLibrary.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/live.json
Normal file
1
web/public/locales/ab/views/live.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/recording.json
Normal file
1
web/public/locales/ab/views/recording.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/search.json
Normal file
1
web/public/locales/ab/views/search.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/settings.json
Normal file
1
web/public/locales/ab/views/settings.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/ab/views/system.json
Normal file
1
web/public/locales/ab/views/system.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
@ -5,5 +5,307 @@
|
||||
"babbling": "Blábolení",
|
||||
"bellow": "Řev",
|
||||
"whoop": "Výskání",
|
||||
"whispering": "Šeptání"
|
||||
"whispering": "Šeptání",
|
||||
"snicker": "Chichotání",
|
||||
"crying": "Pláč",
|
||||
"sigh": "Povzdech",
|
||||
"singing": "Zpěv",
|
||||
"choir": "Sbor",
|
||||
"yodeling": "Jódlování",
|
||||
"synthetic_singing": "Umělý zpěv",
|
||||
"humming": "Bzukot",
|
||||
"groan": "Sténání",
|
||||
"whistling": "Pískot",
|
||||
"breathing": "Dech",
|
||||
"wheeze": "Sípání",
|
||||
"snoring": "Chrapot",
|
||||
"snort": "Funění",
|
||||
"cough": "Kašel",
|
||||
"throat_clearing": "Odkašlávání",
|
||||
"sneeze": "Kýchání",
|
||||
"footsteps": "Kroky",
|
||||
"chewing": "Žvýkání",
|
||||
"biting": "Kousání",
|
||||
"burping": "Krkání",
|
||||
"hiccup": "Škytání",
|
||||
"fart": "Prdění",
|
||||
"hands": "Ruce",
|
||||
"finger_snapping": "Luskání prstem",
|
||||
"clapping": "Tleskání",
|
||||
"heartbeat": "Tluk srdce",
|
||||
"cheering": "Jásání",
|
||||
"applause": "Potlesk",
|
||||
"chatter": "Klábosení",
|
||||
"crowd": "Dav",
|
||||
"children_playing": "Hrající si děti",
|
||||
"bark": "Štěkot",
|
||||
"howl": "Vytí",
|
||||
"growling": "Vrkot",
|
||||
"whimper_dog": "Psí kníkot",
|
||||
"cat": "Kočka",
|
||||
"purr": "Předení",
|
||||
"meow": "Mňouk",
|
||||
"hiss": "Sykot",
|
||||
"livestock": "Hospodářská zvířata",
|
||||
"horse": "Kůň",
|
||||
"neigh": "Řehtání",
|
||||
"cattle": "Dobytek",
|
||||
"moo": "Bučení",
|
||||
"cowbell": "Kravský zvonec",
|
||||
"pig": "Prase",
|
||||
"oink": "Chrochtání",
|
||||
"fowl": "Drůbež",
|
||||
"chicken": "Slepice",
|
||||
"cluck": "Kvokání",
|
||||
"cock_a_doodle_doo": "Kykyryký",
|
||||
"turkey": "Krocan",
|
||||
"gobble": "Hudrování",
|
||||
"duck": "Kachna",
|
||||
"quack": "Kvákání",
|
||||
"goose": "Husa",
|
||||
"honk": "Kejhání",
|
||||
"wild_animals": "Divoká zvířata",
|
||||
"roaring_cats": "Řvoucí kočky",
|
||||
"roar": "Řev",
|
||||
"bird": "Pták",
|
||||
"chirp": "Cvrlikání",
|
||||
"pigeon": "Holub",
|
||||
"coo": "Vrkání",
|
||||
"squawk": "Skřekání",
|
||||
"crow": "Vrána",
|
||||
"caw": "Krákání",
|
||||
"hoot": "Houkání",
|
||||
"flapping_wings": "Mávání křídel",
|
||||
"dogs": "Psi",
|
||||
"mouse": "Myš",
|
||||
"insect": "Hmyz",
|
||||
"fly": "Moucha",
|
||||
"buzz": "Bzučení",
|
||||
"frog": "Žába",
|
||||
"snake": "Had",
|
||||
"croak": "Kvákání žáby",
|
||||
"rattle": "Chrastění",
|
||||
"whale_vocalization": "Velrybí zpěv",
|
||||
"music": "Hudba",
|
||||
"guitar": "Kytara",
|
||||
"bass_guitar": "Basová kytara",
|
||||
"steel_guitar": "Ocelová kytara",
|
||||
"tapping": "Ťukání",
|
||||
"banjo": "Banjo",
|
||||
"sitar": "Sitar",
|
||||
"mandolin": "Mandolína",
|
||||
"zither": "Citera",
|
||||
"ukulele": "Ukulele",
|
||||
"keyboard": "Klávesnice",
|
||||
"electric_piano": "Elektrický klavír",
|
||||
"electronic_organ": "Elektronické varhany",
|
||||
"hammond_organ": "Hammondovy varhany",
|
||||
"synthesizer": "Syntezátor",
|
||||
"sampler": "Sampler",
|
||||
"harpsichord": "Cembalo",
|
||||
"percussion": "Perkuse",
|
||||
"drum_kit": "Bubny",
|
||||
"drum_machine": "Bicí automat",
|
||||
"drum": "Buben",
|
||||
"snare_drum": "Malý buben",
|
||||
"rimshot": "Rána na obruč",
|
||||
"drum_roll": "Víření",
|
||||
"timpani": "Tympány",
|
||||
"tabla": "Tabla",
|
||||
"cymbal": "Činel",
|
||||
"hi_hat": "Hi-hat",
|
||||
"wood_block": "Dřevěný blok",
|
||||
"tambourine": "Tamburína",
|
||||
"maraca": "Maraka",
|
||||
"gong": "Gong",
|
||||
"marimba": "Marimba",
|
||||
"vibraphone": "Vibrafon",
|
||||
"steelpan": "Ocelový buben",
|
||||
"orchestra": "Orchestr",
|
||||
"brass_instrument": "Žesťový nástroj",
|
||||
"french_horn": "Lesní roh",
|
||||
"trumpet": "Trubka",
|
||||
"trombone": "Trombón",
|
||||
"violin": "Housle",
|
||||
"saxophone": "Saxofon",
|
||||
"church_bell": "Kostelní zvon",
|
||||
"bicycle_bell": "Cyklistický zvonek",
|
||||
"tuning_fork": "Ladička",
|
||||
"chime": "Zvonění",
|
||||
"harmonica": "Harmonika",
|
||||
"accordion": "Akordeon",
|
||||
"bagpipes": "Dudy",
|
||||
"didgeridoo": "Didžeridu",
|
||||
"theremin": "Theremin",
|
||||
"scratching": "Škrábání",
|
||||
"pop_music": "Popová muzika",
|
||||
"hip_hop_music": "Hip-hopová muzika",
|
||||
"rock_music": "Rocková muzika",
|
||||
"heavy_metal": "Heavy metal",
|
||||
"music_for_children": "Hudba pro děti",
|
||||
"song": "Píseň",
|
||||
"thunderstorm": "Bouře",
|
||||
"wind": "Vítr",
|
||||
"rustling_leaves": "Šustění listů",
|
||||
"wind_noise": "Zvuk větru",
|
||||
"thunder": "Hrom",
|
||||
"water": "Voda",
|
||||
"rain": "Déšť",
|
||||
"raindrop": "Dešťové kapky",
|
||||
"stream": "Potok",
|
||||
"waterfall": "Vodopád",
|
||||
"ocean": "Moře",
|
||||
"waves": "Vlny",
|
||||
"steam": "Pára",
|
||||
"fire": "Oheň",
|
||||
"crackle": "Praskání",
|
||||
"vehicle": "Vozidlo",
|
||||
"sailboat": "Plachetnice",
|
||||
"boat": "Člun",
|
||||
"ship": "Loď",
|
||||
"rowboat": "Loďka",
|
||||
"motorboat": "Motorový člun",
|
||||
"motor_vehicle": "Motorové vozidlo",
|
||||
"car": "Auto",
|
||||
"laughter": "Smích",
|
||||
"sniff": "Čichání",
|
||||
"stomach_rumble": "Kručení v břiše",
|
||||
"gargling": "Kloktání",
|
||||
"dog": "Pes",
|
||||
"run": "Běh",
|
||||
"cricket": "Cvrček",
|
||||
"glockenspiel": "Zvonkohra",
|
||||
"cello": "Cello",
|
||||
"pets": "Domácí mazlíčci",
|
||||
"opera": "Opera",
|
||||
"harp": "Harfa",
|
||||
"animal": "Zvíře",
|
||||
"electric_guitar": "Elektrická kytara",
|
||||
"piano": "Klavír",
|
||||
"goat": "Koza",
|
||||
"bleat": "Mečení",
|
||||
"sheep": "Ovce",
|
||||
"owl": "Sova",
|
||||
"musical_instrument": "Hudební nástroj",
|
||||
"organ": "Varhany",
|
||||
"rats": "Krysy",
|
||||
"mosquito": "Komár",
|
||||
"strum": "Brnkání",
|
||||
"tubular_bells": "Trubicové zvony",
|
||||
"acoustic_guitar": "Akustická kytara",
|
||||
"bass_drum": "Basový buben",
|
||||
"jazz": "Jazz",
|
||||
"flute": "Flétna",
|
||||
"clarinet": "Klarinet",
|
||||
"bell": "Zvon",
|
||||
"techno": "Techno",
|
||||
"electronic_music": "Elektronická muzika",
|
||||
"car_alarm": "Autoalarm",
|
||||
"power_windows": "Elektrická okénka",
|
||||
"skidding": "Smyk",
|
||||
"tire_squeal": "Kvílení pneumatik",
|
||||
"car_passing_by": "Projíždějící auto",
|
||||
"air_brake": "Vzduchové brzdy",
|
||||
"air_horn": "Vzduchový klakson",
|
||||
"bus": "Autobus",
|
||||
"police_car": "Policejní auto",
|
||||
"ambulance": "Záchranka",
|
||||
"fire_engine": "Hasiči",
|
||||
"motorcycle": "Motorka",
|
||||
"rail_transport": "Železnice",
|
||||
"train": "Vlak",
|
||||
"train_horn": "Troubení vlaku",
|
||||
"railroad_car": "Železniční vagon",
|
||||
"subway": "Metro",
|
||||
"aircraft": "Letadlo",
|
||||
"aircraft_engine": "Motor letadla",
|
||||
"bicycle": "Cyklistické kolo",
|
||||
"jet_engine": "Tryskový motor",
|
||||
"propeller": "Vrtule",
|
||||
"helicopter": "Helikoptéra",
|
||||
"dental_drill's_drill": "Zubní vrtačka",
|
||||
"lawn_mower": "Sekačka",
|
||||
"chainsaw": "Motorová pila",
|
||||
"idling": "Bežící motor",
|
||||
"accelerating": "Přidávání plynu",
|
||||
"door": "Dveře",
|
||||
"doorbell": "Zvonek",
|
||||
"sliding_door": "Posuvné dveře",
|
||||
"slam": "Bouchnutí",
|
||||
"knock": "Klepání",
|
||||
"dishes": "Nádobí",
|
||||
"cutlery": "Příbory",
|
||||
"chopping": "Krájení",
|
||||
"bathtub": "Vana",
|
||||
"hair_dryer": "Fén",
|
||||
"toilet_flush": "Spláchnutí záchodu",
|
||||
"toothbrush": "Zubní kartáček",
|
||||
"electric_toothbrush": "Elektrický zubní kartáček",
|
||||
"vacuum_cleaner": "Vysavač",
|
||||
"zipper": "Zip",
|
||||
"keys_jangling": "Cinkání klíčů",
|
||||
"coin": "Mince",
|
||||
"scissors": "Nůžky",
|
||||
"electric_shaver": "Elektrický holící strojek",
|
||||
"typing": "",
|
||||
"typewriter": "Psací stroj",
|
||||
"computer_keyboard": "Počítačová klávesnice",
|
||||
"writing": "Psaní",
|
||||
"alarm": "Alarm",
|
||||
"telephone": "Telefon",
|
||||
"telephone_bell_ringing": "Zvonění telefonu",
|
||||
"telephone_dialing": "Vytáčení",
|
||||
"alarm_clock": "Budík",
|
||||
"siren": "Siréna",
|
||||
"smoke_detector": "Detektor kouře",
|
||||
"fire_alarm": "Požární alarm",
|
||||
"foghorn": "Mlhovka",
|
||||
"whistle": "Píšťalka",
|
||||
"mechanisms": "Mechanismy",
|
||||
"clock": "Hodiny",
|
||||
"tick-tock": "Ťikťak",
|
||||
"tick": "Ťik",
|
||||
"sewing_machine": "Šicí stroj",
|
||||
"air_conditioning": "Klimatizace",
|
||||
"cash_register": "Kasa",
|
||||
"printer": "Tiskárna",
|
||||
"camera": "Kamera",
|
||||
"tools": "Nářadí",
|
||||
"hammer": "Kladivo",
|
||||
"jackhammer": "Zbíječka",
|
||||
"sawing": "Řezání",
|
||||
"power_tool": "Elektrické nářadí",
|
||||
"drill": "Vrtačka",
|
||||
"explosion": "Výbuch",
|
||||
"gunshot": "Výstřel",
|
||||
"fireworks": "Ohňostroj",
|
||||
"firecracker": "Petarda",
|
||||
"eruption": "Erupce",
|
||||
"boom": "Třesk",
|
||||
"wood": "Dřevo",
|
||||
"splinter": "Tříska",
|
||||
"glass": "Sklo",
|
||||
"shatter": "Roztříštění",
|
||||
"silence": "Ticho",
|
||||
"sound_effect": "Zvukový efekt",
|
||||
"environmental_noise": "Okolní hluk",
|
||||
"white_noise": "Bilý šum",
|
||||
"radio": "Rádio",
|
||||
"scream": "Výkřik",
|
||||
"microwave_oven": "Mikrovlnka",
|
||||
"race_car": "Závodní auto",
|
||||
"ding-dong": "Cink",
|
||||
"water_tap": "Vodovodní kohoutek",
|
||||
"sink": "Dřez",
|
||||
"pink_noise": "Růžový šum",
|
||||
"frying": "Smažení",
|
||||
"television": "Televize",
|
||||
"blender": "Mixér",
|
||||
"train_whistle": "Houkání vlaku",
|
||||
"engine": "Motor",
|
||||
"engine_starting": "Startující motor",
|
||||
"truck": "Nákladní auto",
|
||||
"static": "Šum",
|
||||
"engine_knocking": "Klepání v motoru",
|
||||
"skateboard": "Skateboard"
|
||||
}
|
||||
|
@ -1,5 +1,15 @@
|
||||
{
|
||||
"form": {
|
||||
"user": "Uživatelské jméno"
|
||||
"user": "Uživatelské jméno",
|
||||
"password": "Heslo",
|
||||
"login": "Přihlášení",
|
||||
"errors": {
|
||||
"usernameRequired": "Uživatelské jméno je povinné",
|
||||
"passwordRequired": "Heslo je povinné",
|
||||
"loginFailed": "Přihlášení se nezdařilo",
|
||||
"unknownError": "Neznámá chyba. Zkontrolujte logy.",
|
||||
"webUnknownError": "Neznámá chuba. Zkontrolujte logy konzoly.",
|
||||
"rateLimit": "Limit požadavků překročen. Zkuste to znovu později."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,3 @@
|
||||
{}
|
||||
{
|
||||
"filter": "Filtrovat"
|
||||
}
|
||||
|
@ -1 +1,8 @@
|
||||
{}
|
||||
{
|
||||
"iconPicker": {
|
||||
"selectIcon": "Zvolte ikonu",
|
||||
"search": {
|
||||
"placeholder": "Hledejte ikonu...."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,10 @@
|
||||
{}
|
||||
{
|
||||
"button": {
|
||||
"downloadVideo": {
|
||||
"label": "Stáhnout video",
|
||||
"toast": {
|
||||
"success": "Vaše video se stahuje."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,51 @@
|
||||
{}
|
||||
{
|
||||
"noRecordingsFoundForThisTime": "V tomto období nebyly nalezeny žádné záznamy",
|
||||
"noPreviewFound": "Náhled nenalezen",
|
||||
"noPreviewFoundFor": "Náhled nenalezen pro {{cameraName}}",
|
||||
"submitFrigatePlus": {
|
||||
"title": "Odeslat tento snímek do služby Frigate+?",
|
||||
"submit": "Odeslat"
|
||||
},
|
||||
"livePlayerRequiredIOSVersion": "Pro tento typ živého přenosu je vyžadován systém iOS 17.1 nebo novější.",
|
||||
"streamOffline": {
|
||||
"title": "Přenos je offline",
|
||||
"desc": "Žádné snímky nebyly zaznamenány na {{cameraName}} <code>detect</code>přenosu, zkontrolujte logy chyb"
|
||||
},
|
||||
"cameraDisabled": "Kamera je zakázaná",
|
||||
"stats": {
|
||||
"streamType": {
|
||||
"title": "Typ přenosu:",
|
||||
"short": "Typ"
|
||||
},
|
||||
"bandwidth": {
|
||||
"title": "Šířka pásma:",
|
||||
"short": "Šířka pásma"
|
||||
},
|
||||
"latency": {
|
||||
"title": "Latence:",
|
||||
"value": "{{seconds}} sekund",
|
||||
"short": {
|
||||
"title": "Latence",
|
||||
"value": "{{seconds}} sek."
|
||||
}
|
||||
},
|
||||
"totalFrames": "Celkový počet snímků:",
|
||||
"droppedFrames": {
|
||||
"title": "Ztracené snímky:",
|
||||
"short": {
|
||||
"title": "Ztracené",
|
||||
"value": "{{droppedFrames}} snímků"
|
||||
}
|
||||
},
|
||||
"decodedFrames": "Dekódované snímky:",
|
||||
"droppedFrameRate": "Frekvence ztracených snímků:"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"submittedFrigatePlus": "Snimek byl úspěšně odeslán službě Frigate+"
|
||||
},
|
||||
"error": {
|
||||
"submitFrigatePlusFailed": "Nepodařilo se odeslat snímek službě Frigate+"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,28 @@
|
||||
{
|
||||
"person": "Osoba"
|
||||
"person": "Osoba",
|
||||
"dog": "Pes",
|
||||
"cat": "Kočka",
|
||||
"horse": "Kůň",
|
||||
"bird": "Pták",
|
||||
"boat": "Člun",
|
||||
"car": "Auto",
|
||||
"sheep": "Ovce",
|
||||
"mouse": "Myš",
|
||||
"keyboard": "Klávesnice",
|
||||
"animal": "Zvíře",
|
||||
"vehicle": "Vozidlo",
|
||||
"bark": "Štěkot",
|
||||
"goat": "Koza",
|
||||
"bus": "Autobus",
|
||||
"motorcycle": "Motorka",
|
||||
"train": "Vlak",
|
||||
"bicycle": "Cyklistické kolo",
|
||||
"door": "Dveře",
|
||||
"blender": "Mixér",
|
||||
"sink": "Dřez",
|
||||
"scissors": "Nůžky",
|
||||
"clock": "Hodiny",
|
||||
"toothbrush": "Zubní kartáček",
|
||||
"hair_dryer": "Fén",
|
||||
"skateboard": "Skateboard"
|
||||
}
|
||||
|
@ -1 +1,15 @@
|
||||
{}
|
||||
{
|
||||
"documentTitle": "Editor konfigurace - Frigate",
|
||||
"configEditor": "Editor konfigurace",
|
||||
"copyConfig": "Kopírovat konfiguraci",
|
||||
"saveAndRestart": "Uložit a restartovat",
|
||||
"saveOnly": "Jen uložit",
|
||||
"toast": {
|
||||
"success": {
|
||||
"copyToClipboard": "Konfigurace byla zkopírovaná do schránky."
|
||||
},
|
||||
"error": {
|
||||
"savingError": "Chyba ukládání konfigurace"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,35 @@
|
||||
{}
|
||||
{
|
||||
"alerts": "Výstrahy",
|
||||
"detections": "Detekce",
|
||||
"motion": {
|
||||
"label": "Pohyb",
|
||||
"only": "Jen pohyb"
|
||||
},
|
||||
"allCameras": "Všechny kamery",
|
||||
"empty": {
|
||||
"alert": "Nejsou žádné výstrahy na kontrolu",
|
||||
"detection": "Nejsou žádné detekce na kontrolu",
|
||||
"motion": "Nenalezena žádná data o pohybu"
|
||||
},
|
||||
"timeline": "Časová osa",
|
||||
"timeline.aria": "Zvolit časovou osu",
|
||||
"events": {
|
||||
"label": "Události",
|
||||
"aria": "Zvolit události",
|
||||
"noFoundForTimePeriod": "Pro toto období nebyly nalezeny žádné události."
|
||||
},
|
||||
"documentTitle": "Kontrola - Frigate",
|
||||
"camera": "Kamera",
|
||||
"calendarFilter": {
|
||||
"last24Hours": "Posledních 24 hodin"
|
||||
},
|
||||
"markAsReviewed": "Označit jako zkontrolované",
|
||||
"markTheseItemsAsReviewed": "Označit tyto položky jako zkontrolované",
|
||||
"newReviewItems": {
|
||||
"label": "Zobrazit nové položky na kontrolu",
|
||||
"button": "Nové položky na kontrolu"
|
||||
},
|
||||
"recordings": {
|
||||
"documentTitle": "Záznamy - Frigate"
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,17 @@
|
||||
{}
|
||||
{
|
||||
"search": "Hledat",
|
||||
"documentTitle": "Exportovat - Frigate",
|
||||
"noExports": "Žádné exporty nenalezeny",
|
||||
"deleteExport": "Smazat export",
|
||||
"deleteExport.desc": "Opravdu chcete smazat {{exportName}}?",
|
||||
"editExport": {
|
||||
"title": "Přejmenovat export",
|
||||
"desc": "Zadejte nové jméno pro tento export.",
|
||||
"saveExport": "Uložit export"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "Nepodařilo se přejmenovat export: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,12 @@
|
||||
{}
|
||||
{
|
||||
"export": "Exportovat",
|
||||
"calendar": "Kalendář",
|
||||
"filter": "Filtrovat",
|
||||
"filters": "Filtry",
|
||||
"toast": {
|
||||
"error": {
|
||||
"endTimeMustAfterStartTime": "Čas konce musí být po čase začátku",
|
||||
"noValidTimeSelected": "Nebylo zvoleno platné časové období"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,3 @@
|
||||
{}
|
||||
{
|
||||
"search": "Hledat"
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"speech": "Rede",
|
||||
"speech": "Sprache",
|
||||
"babbling": "Plappern",
|
||||
"laughter": "Gelächter",
|
||||
"bellow": "Gebrüll",
|
||||
@ -102,7 +102,7 @@
|
||||
"snake": "Schlange",
|
||||
"hammond_organ": "Hammondorgel",
|
||||
"synthesizer": "Synthesizer",
|
||||
"sampler": "Sampler",
|
||||
"sampler": "Probennehmer",
|
||||
"drum_kit": "Schlagzeug",
|
||||
"drum_machine": "Trommelsynthesizer",
|
||||
"snare_drum": "Kleine Trommel",
|
||||
@ -262,7 +262,7 @@
|
||||
"sailboat": "Segelboot",
|
||||
"ship": "Schiff",
|
||||
"motor_vehicle": "Kraftfahrzeug",
|
||||
"toot": "Hupen",
|
||||
"toot": "tuten",
|
||||
"car_alarm": "Autoalarm",
|
||||
"power_windows": "Elektrische Fensterheber",
|
||||
"tire_squeal": "Reifenquietschen",
|
||||
|
@ -10,13 +10,17 @@
|
||||
"5minutes": "5 Minuten",
|
||||
"12hours": "12 Stunden",
|
||||
"24hours": "24 Stunden",
|
||||
"month": "{{time}} Monate",
|
||||
"month_one": "{{time}} Monat",
|
||||
"month_other": "{{time}} Monate",
|
||||
"d": "{{time}} Tag",
|
||||
"day": "{{time}} Tage",
|
||||
"day_one": "{{time}} Tag",
|
||||
"day_other": "{{time}} Tage",
|
||||
"m": "{{time}} Minute",
|
||||
"minute": "{{time}} Minuten",
|
||||
"minute_one": "{{time}} Minute",
|
||||
"minute_other": "{{time}} Minuten",
|
||||
"s": "{{time}} Sekunde",
|
||||
"second": "{{time}} Sekunden",
|
||||
"second_one": "{{time}} Sekunde",
|
||||
"second_other": "{{time}} Sekunden",
|
||||
"formattedTimestamp2": {
|
||||
"24hour": "%d %b %H:%M:%S",
|
||||
"12hour": "%d-%m %H:%M:%S"
|
||||
@ -25,8 +29,10 @@
|
||||
"10minutes": "10 Minuten",
|
||||
"thisMonth": "Dieser Monat",
|
||||
"yr": "{{time}}Jahr",
|
||||
"year": "{{time}}Jahre",
|
||||
"hour": "{{time}} Stunden",
|
||||
"year_one": "{{time}}Jahr",
|
||||
"year_other": "{{time}}Jahre",
|
||||
"hour_one": "{{time}} Stunde",
|
||||
"hour_other": "{{time}} Stunden",
|
||||
"last14": "Letzte 14 Tage",
|
||||
"30minutes": "30 Minuten",
|
||||
"1hour": "1 Stunde",
|
||||
@ -54,14 +60,14 @@
|
||||
},
|
||||
"button": {
|
||||
"save": "Speichern",
|
||||
"delete": "Löschen",
|
||||
"delete": "Entfernen",
|
||||
"apply": "Anwenden",
|
||||
"enabled": "Aktiviert",
|
||||
"enable": "Aktivieren",
|
||||
"disabled": "deaktiviert",
|
||||
"disable": "deaktivieren",
|
||||
"saving": "Speichere...",
|
||||
"close": "Schliessen",
|
||||
"close": "Schließen",
|
||||
"back": "Zurück",
|
||||
"history": "Historie",
|
||||
"cameraAudio": "Kamera Ton",
|
||||
@ -86,7 +92,7 @@
|
||||
"cancel": "Abbrechen",
|
||||
"pictureInPicture": "Bild in Bild",
|
||||
"on": "AN",
|
||||
"suspended": "ausgesetzt",
|
||||
"suspended": "Pausierte",
|
||||
"unsuspended": "fortsetzen"
|
||||
},
|
||||
"label": {
|
||||
@ -100,7 +106,33 @@
|
||||
"label": "Sprache der Systemeinstellungen verwenden"
|
||||
},
|
||||
"en": "Englisch",
|
||||
"zhCN": "简体中文 (Vereinfachtes Chinesisch)"
|
||||
"zhCN": "简体中文 (Vereinfachtes Chinesisch)",
|
||||
"fr": "Französisch",
|
||||
"es": "Spanisch",
|
||||
"ar": "Arabisch",
|
||||
"pt": "Portugiesisch",
|
||||
"de": "Deutsch",
|
||||
"it": "Italienisch",
|
||||
"nl": "Niederländisch",
|
||||
"sv": "Schwedisch",
|
||||
"cs": "Tschechisch",
|
||||
"ko": "Koreanisch",
|
||||
"pl": "Polnisch",
|
||||
"el": "Griechisch",
|
||||
"ro": "Rumänisch",
|
||||
"hu": "Ungarisch",
|
||||
"fi": "Finnisch",
|
||||
"ru": "Russisch",
|
||||
"ja": "Japanisch",
|
||||
"tr": "Türkisch",
|
||||
"da": "Dänisch",
|
||||
"hi": "Hindi",
|
||||
"nb": "Norwegisch",
|
||||
"vi": "Vietnamesisch",
|
||||
"fa": "Persisch",
|
||||
"uk": "Ukrainisch",
|
||||
"he": "Hebräisch",
|
||||
"sk": "Slowakisch"
|
||||
},
|
||||
"appearance": "Erscheinung",
|
||||
"theme": {
|
||||
@ -129,7 +161,7 @@
|
||||
"review": "Überprüfen",
|
||||
"restart": "Frigate neu starten",
|
||||
"darkMode": {
|
||||
"light": "Licht",
|
||||
"light": "Hell",
|
||||
"label": "Dunkler Modus",
|
||||
"dark": "Dunkel",
|
||||
"withSystem": {
|
||||
|
@ -1,11 +1,12 @@
|
||||
{
|
||||
"restart": {
|
||||
"title": "Möchten Sie Frigate wirklich neu starten?",
|
||||
"title": "Sind Sie sicher, dass Sie Frigate neustarten wollen?",
|
||||
"restarting": {
|
||||
"title": "Frigate startet neu",
|
||||
"content": "Diese Seite wird in {{countdown}} Sekunde(n) aktualisiert."
|
||||
"content": "Diese Seite wird in {{countdown}} Sekunde(n) aktualisiert.",
|
||||
"button": "Neuladen erzwingen"
|
||||
},
|
||||
"button": "Neustart"
|
||||
"button": "Neustarten"
|
||||
},
|
||||
"explore": {
|
||||
"plus": {
|
||||
@ -13,12 +14,100 @@
|
||||
"true": {
|
||||
"label": "Bestätigen Sie das Label für Frigate Plus",
|
||||
"true_one": "Das ist ein/eine {{label}}",
|
||||
"true_other": ""
|
||||
"true_other": "Dies sind {{label}}"
|
||||
},
|
||||
"state": {
|
||||
"submitted": "Übermittelt"
|
||||
},
|
||||
"false": {
|
||||
"false_one": "Das ist kein(e) {{label}}",
|
||||
"false_other": "Das sind kein(e) {{label}}",
|
||||
"label": "Bestätige dieses Label nicht für Frigate Plus"
|
||||
}
|
||||
},
|
||||
"submitToPlus": {
|
||||
"label": "An Frigate+ übermitteln"
|
||||
"label": "An Frigate+ übermitteln",
|
||||
"desc": "Objekte an Orten die du vermeiden möchtest, sind keine Fehlalarme. Wenn du sie als Fehlalarme meldest, verwirrst du das Modell."
|
||||
}
|
||||
},
|
||||
"video": {
|
||||
"viewInHistory": "Im Verlauf ansehen"
|
||||
}
|
||||
},
|
||||
"export": {
|
||||
"time": {
|
||||
"fromTimeline": "Aus der Zeitleiste auswählen",
|
||||
"start": {
|
||||
"title": "Startzeit",
|
||||
"label": "Startzeit auswählen"
|
||||
},
|
||||
"end": {
|
||||
"label": "Endzeit auswählen",
|
||||
"title": "Endzeit"
|
||||
},
|
||||
"lastHour_one": "Letzte Stunde",
|
||||
"lastHour_other": "Letzte {{count}} Stunden",
|
||||
"custom": "Benutzerdefiniert"
|
||||
},
|
||||
"name": {
|
||||
"placeholder": "Export benennen"
|
||||
},
|
||||
"select": "Auswählen",
|
||||
"selectOrExport": "Auswählen oder Exportieren",
|
||||
"toast": {
|
||||
"error": {
|
||||
"endTimeMustAfterStartTime": "Die Endzeit darf nicht vor der Startzeit liegen",
|
||||
"failed": "Fehler beim Starten des Exports: {{error}}",
|
||||
"noVaildTimeSelected": "Kein gültiger Zeitraum ausgewählt"
|
||||
},
|
||||
"success": "Export erfolgreich gestartet. Die Datei befindet sich im Ordner /exports."
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Export speichern",
|
||||
"previewExport": "Exportvorschau"
|
||||
},
|
||||
"export": "Exportieren"
|
||||
},
|
||||
"streaming": {
|
||||
"restreaming": {
|
||||
"disabled": "Für diese Kamera ist das Restreaming nicht aktiviert.",
|
||||
"desc": {
|
||||
"readTheDocumentation": "Weitere Informationen in der Dokumentation ",
|
||||
"title": "Konfiguriere go2rtc, um erweiterte Live-Ansichtsoptionen und Audio für diese Kamera zu nutzen."
|
||||
}
|
||||
},
|
||||
"showStats": {
|
||||
"label": "Stream-Statistiken anzeigen",
|
||||
"desc": "Stream-Statistiken werden bei aktivierter Option als Overlay im Kamera-Feed eingeblendet."
|
||||
},
|
||||
"debugView": "Debug-Ansicht",
|
||||
"label": "Stream"
|
||||
},
|
||||
"search": {
|
||||
"saveSearch": {
|
||||
"label": "Suche speichern",
|
||||
"desc": "Gib einen Namen für diese gespeicherte Suche an.",
|
||||
"placeholder": "Gib einen Namen für die Suche ein",
|
||||
"overwrite": "{{searchName}} existiert bereits. Beim Speichern wird der vorhandene Wert überschrieben.",
|
||||
"button": {
|
||||
"save": {
|
||||
"label": "Diese Suche speichern"
|
||||
}
|
||||
},
|
||||
"success": "Die Suche {{searchName}} wurde gespeichert."
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"confirmDelete": {
|
||||
"title": "Bestätige Löschung",
|
||||
"desc": {
|
||||
"selected": "Bist du sicher, dass du alle aufgezeichneten Videos, die mit diesem Beitrag verbunden sind, löschen möchtest?<br /><br />Halte <em>Shift</em>-Taste gedrückt, um diesen Dialog in Zukunft zu umgehen."
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"export": "Exportieren",
|
||||
"markAsReviewed": "Als geprüft markieren",
|
||||
"deleteNow": "Jetzt löschen"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,104 @@
|
||||
{
|
||||
"filter": "Filter"
|
||||
"filter": "Filter",
|
||||
"labels": {
|
||||
"all": {
|
||||
"short": "Labels",
|
||||
"title": "Alle Labels"
|
||||
},
|
||||
"label": "Labels",
|
||||
"count_one": "{{count}} Label",
|
||||
"count_other": "{{count}} Labels"
|
||||
},
|
||||
"zones": {
|
||||
"all": {
|
||||
"title": "Alle Zonen",
|
||||
"short": "Zonen"
|
||||
},
|
||||
"label": "Zonen"
|
||||
},
|
||||
"dates": {
|
||||
"all": {
|
||||
"title": "Alle Zeiträume",
|
||||
"short": "Daten"
|
||||
}
|
||||
},
|
||||
"reset": {
|
||||
"label": "Filter auf Standardwerte zurücksetzen"
|
||||
},
|
||||
"more": "Mehr Filter",
|
||||
"timeRange": "Zeitraum",
|
||||
"subLabels": {
|
||||
"all": "Alle Unterkategorien",
|
||||
"label": "Unterkategorie"
|
||||
},
|
||||
"features": {
|
||||
"label": "Eigenschaften",
|
||||
"hasSnapshot": "Hat einen Schnappschuss",
|
||||
"hasVideoClip": "Hat einen Video-Clip",
|
||||
"submittedToFrigatePlus": {
|
||||
"label": "Eingereicht bei Frigate+",
|
||||
"tips": "Du musst zuerst nach deine erkannten Objekten, die einen Schnappschuss haben, filtern. <br /><br /> Erkante Objekte ohne Schnappschuss können nicht zu Frigate+ übermittelt werden."
|
||||
}
|
||||
},
|
||||
"score": "Ergebnis",
|
||||
"estimatedSpeed": "Geschätzte Geschwindigkeit ({{unit}})",
|
||||
"sort": {
|
||||
"label": "Sortieren",
|
||||
"dateAsc": "Datum (Aufsteigend)",
|
||||
"dateDesc": "Datum (Absteigend)",
|
||||
"scoreAsc": "Objekt Wertung (Aufsteigend)",
|
||||
"scoreDesc": "Objekt Wertung (Absteigend)",
|
||||
"speedAsc": "Geschätzte Geschwindigkeit (Aufsteigend)",
|
||||
"relevance": "Relevanz",
|
||||
"speedDesc": "Geschätzte Geschwindigkeit (absteigend)"
|
||||
},
|
||||
"cameras": {
|
||||
"all": {
|
||||
"title": "Alle Kameras",
|
||||
"short": "Kameras"
|
||||
},
|
||||
"label": "Kamera Filter"
|
||||
},
|
||||
"motion": {
|
||||
"showMotionOnly": "Zeige nur Bewegung"
|
||||
},
|
||||
"review": {
|
||||
"showReviewed": "Geprüfte anzeigen"
|
||||
},
|
||||
"explore": {
|
||||
"settings": {
|
||||
"defaultView": {
|
||||
"title": "Standardansicht",
|
||||
"desc": "Wenn keine Filter ausgewählt sind, wird eine Zusammenfassung der zuletzt verfolgten Objekte pro Kategorie oder ein ungefiltertes Raster angezeigt.",
|
||||
"summary": "Zusammenfassung",
|
||||
"unfilteredGrid": "Ungefiltertes Raster"
|
||||
},
|
||||
"title": "Einstellungen",
|
||||
"gridColumns": {
|
||||
"title": "Rasterspalten",
|
||||
"desc": "Wähle die Anzahl der Spalten in der Rasteransicht."
|
||||
},
|
||||
"searchSource": {
|
||||
"options": {
|
||||
"description": "Beschreibung",
|
||||
"thumbnailImage": "Vorschaubild"
|
||||
},
|
||||
"label": "Quelle der Suche",
|
||||
"desc": "Wähle, ob die Miniaturansichten oder die Beschreibungen der erkannten Objekte durchsucht werden sollen."
|
||||
}
|
||||
},
|
||||
"date": {
|
||||
"selectDateBy": {
|
||||
"label": "Wähle ein Datum zum Filtern"
|
||||
}
|
||||
}
|
||||
},
|
||||
"logSettings": {
|
||||
"label": "Log-Ebene filtern",
|
||||
"filterBySeverity": "Protokolle nach Schweregrad filtern",
|
||||
"loading": {
|
||||
"title": "Lade",
|
||||
"desc": "Wenn das Protokollfenster nach unten gescrollt wird, werden neue Protokolle automatisch geladen, sobald sie hinzugefügt werden."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,67 @@
|
||||
"timestamp": "Zeitstempel",
|
||||
"item": {
|
||||
"title": "Item-Details begutachten",
|
||||
"desc": "Item-Details begutachten"
|
||||
"desc": "Item-Details begutachten",
|
||||
"button": {
|
||||
"share": "Diese Aufnahme teilen",
|
||||
"viewInExplore": "Ansicht in Erkunden"
|
||||
},
|
||||
"tips": {
|
||||
"hasMissingObjects": "Passe die Konfiguration an, so dass Frigate verfolgte Objekte für die folgenden Kategorien speichert: <em>{{objects}}</em>",
|
||||
"mismatch_one": "{{count}} nicht verfügbares Objekt wurde entdeckt und in diese Überprüfung einbezogen. Dieses Objekt hat sich entweder nicht für einen Alarm oder eine Erkennung qualifiziert oder wurde bereits bereinigt/gelöscht.",
|
||||
"mismatch_other": "{{count}} nicht verfügbare Objekte wurden entdeckt und in diese Überprüfung einbezogen. Diese Objekte haben sich entweder nicht für einen Alarm oder eine Erkennung qualifiziert oder wurden bereits bereinigt/gelöscht."
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"updatedSublabel": "Unterkategorie erfolgreich aktualisiert.",
|
||||
"updatedLPR": "Nummernschild erfolgreich aktualisiert.",
|
||||
"regenerate": "Eine neue Beschreibung wurde von {{provider}} angefordert. Je nach Geschwindigkeit des Anbieters kann es einige Zeit dauern, bis die neue Beschreibung generiert ist."
|
||||
},
|
||||
"error": {
|
||||
"regenerate": "Der Aufruf von {{provider}} für eine neue Beschreibung ist fehlgeschlagen: {{errorMessage}}",
|
||||
"updatedSublabelFailed": "Untekategorie konnte nicht aktualisiert werden: {{errorMessage}}",
|
||||
"updatedLPRFailed": "Aktualisierung des Kennzeichens fehlgeschlagen: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"label": "Label",
|
||||
"zones": "Zonen",
|
||||
"editSubLabel": {
|
||||
"title": "Unterkategorie bearbeiten",
|
||||
"desc": "Geben Sie eine neue Unterkategorie für dieses {{label}} ein",
|
||||
"descNoLabel": "Geben Sie eine neue Unterkategorie für dieses verfolgte Objekt ein"
|
||||
},
|
||||
"editLPR": {
|
||||
"title": "Kennzeichen bearbeiten",
|
||||
"desc": "Gib einen neuen Kennzeichenwert für dieses {{label}} ein",
|
||||
"descNoLabel": "Gib einen neuen Kennzeichenwert für dieses verfolgte Objekt ein"
|
||||
},
|
||||
"topScore": {
|
||||
"label": "Beste Ergebnisse",
|
||||
"info": "Die höchste Punktzahl ist der höchste Medianwert für das verfolgte Objekt und kann daher von der auf der Miniaturansicht des Suchergebnisses angezeigten Punktzahl abweichen."
|
||||
},
|
||||
"recognizedLicensePlate": "Erkanntes Kennzeichen",
|
||||
"estimatedSpeed": "Geschätzte Geschwindigkeit",
|
||||
"objects": "Objekte",
|
||||
"camera": "Kamera",
|
||||
"button": {
|
||||
"findSimilar": "Finde ähnliche",
|
||||
"regenerate": {
|
||||
"title": "Erneuern",
|
||||
"label": "Beschreibung des verfolgten Objekts neu generieren"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"label": "Beschreibung",
|
||||
"placeholder": "Beschreibund des verfolgten Objekts",
|
||||
"aiTips": "Frigate wird erst dann eine Beschreibung vom generativen KI-Anbieter anfordern, wenn der Lebenszyklus des verfolgten Objekts beendet ist."
|
||||
},
|
||||
"expandRegenerationMenu": "Erneuerungsmenü erweitern",
|
||||
"regenerateFromSnapshot": "Aus Snapshot neu generieren",
|
||||
"regenerateFromThumbnails": "Aus Vorschaubild neu generieren",
|
||||
"tips": {
|
||||
"descriptionSaved": "Erfolgreich gespeicherte Beschreibung",
|
||||
"saveDescriptionFailed": "Die Aktualisierung der Beschreibung ist fehlgeschlagen: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"documentTitle": "Erkunden - Frigate",
|
||||
@ -56,10 +116,14 @@
|
||||
"annotationSettings": {
|
||||
"offset": {
|
||||
"documentation": "Lesen Sie die Dokumentation ",
|
||||
"label": "Anmerkungen Versatz"
|
||||
"label": "Anmerkungen Versatz",
|
||||
"desc": "Diese Daten stammen aus dem Erkennungs-Feed der Kamera, werden aber mit Bildern aus dem Aufnahme-Feed überlagert. Es ist unwahrscheinlich, dass die beiden Streams perfekt synchronisiert sind. Daher stimmen die Bounding Box und das Filmmaterial nicht perfekt überein. Das Feld <code>annotation_offset</code> kann jedoch verwendet werden, um dies anzupassen.",
|
||||
"millisecondsToOffset": "Millisekunden, um die die Benachrichtigung zu Erkennungen verschoben werden soll. <em>Standard: 0</em>",
|
||||
"tips": "TIPP: Stelle dir einen Ereignisclip vor, in dem eine Person von links nach rechts läuft. Wenn die Bounding Box der Ereigniszeitleiste durchgehend links von der Person liegt, sollte der Wert verringert werden. Ähnlich verhält es sich, wenn eine Person von links nach rechts geht und die Bounding Box durchgängig vor der Person liegt, dann sollte der Wert erhöht werden."
|
||||
},
|
||||
"showAllZones": {
|
||||
"title": "Zeige alle Zonen"
|
||||
"title": "Zeige alle Zonen",
|
||||
"desc": "Immer Zonen auf Rahmen anzeigen, in die Objekte eingetreten sind."
|
||||
},
|
||||
"title": "Anmerkungseinstellungen"
|
||||
},
|
||||
@ -68,12 +132,61 @@
|
||||
"carousel": {
|
||||
"next": "Nächste Anzeige",
|
||||
"previous": "Vorherige Anzeige"
|
||||
}
|
||||
},
|
||||
"scrollViewTips": "Scrolle um die wichtigsten Momente dieses Objekts anzuzeigen.",
|
||||
"autoTrackingTips": "Die Positionen der Bounding Box sind bei Kameras mit automatischer Verfolgung ungenau."
|
||||
},
|
||||
"type": {
|
||||
"details": "Details",
|
||||
"video": "Video",
|
||||
"object_lifecycle": "Objekt-Lebenszyklus",
|
||||
"snapshot": "Snapshot"
|
||||
}
|
||||
},
|
||||
"itemMenu": {
|
||||
"downloadSnapshot": {
|
||||
"label": "Schnappschuss herunterladen",
|
||||
"aria": "Schnappschuss herunterladen"
|
||||
},
|
||||
"downloadVideo": {
|
||||
"label": "Video herunterladen",
|
||||
"aria": "Video herunterladen"
|
||||
},
|
||||
"viewObjectLifecycle": {
|
||||
"label": "Lebenszyklus von Objekten anzeigen",
|
||||
"aria": "Den Lebenszyklus des Objekts anzeigen"
|
||||
},
|
||||
"findSimilar": {
|
||||
"label": "Ähnliches finden",
|
||||
"aria": "Ähnliche verfolgte Objekte finden"
|
||||
},
|
||||
"submitToPlus": {
|
||||
"label": "Bei Frigate+ einreichen",
|
||||
"aria": "Bei Frigate+ einreichen"
|
||||
},
|
||||
"viewInHistory": {
|
||||
"label": "Ansicht im Verlauf",
|
||||
"aria": "Ansicht im Verlauf"
|
||||
},
|
||||
"deleteTrackedObject": {
|
||||
"label": "Dieses verfolgte Objekt löschen"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"confirmDelete": {
|
||||
"title": "Löschen bestätigen",
|
||||
"desc": "Beim Löschen dieses verfolgten Objekts werden der Schnappschuss, alle gespeicherten Einbettungen und alle zugehörigen Objektlebenszykluseinträge entfernt. Aufgezeichnetes Filmmaterial dieses verfolgten Objekts in der Verlaufsansicht wird <em>NICHT</em> gelöscht. <br /><br />Sind Sie sicher, dass Sie fortfahren möchten?"
|
||||
}
|
||||
},
|
||||
"searchResult": {
|
||||
"deleteTrackedObject": {
|
||||
"toast": {
|
||||
"success": "Verfolgtes Objekt erfolgreich gelöscht.",
|
||||
"error": "Das verfolgte Objekt konnte nicht gelöscht werden: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noTrackedObjects": "Keine verfolgten Objekte gefunden",
|
||||
"fetchingTrackedObjectsFailed": "Fehler beim Abrufen von verfolgten Objekten: {{errorMessage}}",
|
||||
"trackedObjectsCount_one": "{{count}} verfolgtes Objekt ",
|
||||
"trackedObjectsCount_other": "{{count}} verfolgte Objekte "
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
"desc": "Gib einen neuen Namen für diesen Export an.",
|
||||
"saveExport": "Export speichern"
|
||||
},
|
||||
"documentTitle": "Export - Frigate",
|
||||
"documentTitle": "Exportieren - Frigate",
|
||||
"deleteExport.desc": "Soll {{exportName}} wirklich gelöscht werden?",
|
||||
"search": "Suche",
|
||||
"noExports": "Keine Exporte gefunden",
|
||||
|
@ -17,8 +17,55 @@
|
||||
"createFaceLibrary": {
|
||||
"title": "Kollektion erstellen",
|
||||
"new": "Lege ein neues Gesicht an",
|
||||
"desc": "Erstelle eine neue Kollektion"
|
||||
"desc": "Erstelle eine neue Kollektion",
|
||||
"nextSteps": "Um eine solide Grundlage zu bilden: <li> Benutze den Trainieren Tab, um Bilder für jede erkannte Person auszuwählen und zu trainieren.</li> <li>Konzentriere dich für gute Ergebnisse auf Frontalfotos; vermeide Bilder zu Trainingszwecken, bei denen Gesichter aus einem Winkel erfasst wurden.</li></ul>"
|
||||
},
|
||||
"documentTitle": "Gesichtsbibliothek - Frigate",
|
||||
"selectItem": "Wähle {{item}}"
|
||||
"selectItem": "Wähle {{item}}",
|
||||
"selectFace": "Wähle Gesicht",
|
||||
"imageEntry": {
|
||||
"dropActive": "Ziehe das Bild hierher ...",
|
||||
"dropInstructions": "Ziehe ein Bild hier her oder klicke um eines auszuwählen",
|
||||
"maxSize": "Maximale Größe: {{size}} MB",
|
||||
"validation": {
|
||||
"selectImage": "Bitte wähle ein Bild aus."
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"addFace": "Gesicht hinzufügen",
|
||||
"uploadImage": "Bild hochladen",
|
||||
"deleteFaceAttempts": "Lösche Gesichtsversuche",
|
||||
"reprocessFace": "Gesichter erneut verarbeiten"
|
||||
},
|
||||
"train": {
|
||||
"title": "Trainiere",
|
||||
"aria": "Wähle Training"
|
||||
},
|
||||
"deleteFaceLibrary": {
|
||||
"title": "Lösche Name",
|
||||
"desc": "Möchtest du die Sammlung {{name}} löschen? Alle zugehörigen Gesichter werden gelöscht."
|
||||
},
|
||||
"readTheDocs": "Lies die Dokumentation",
|
||||
"trainFaceAs": "Trainiere Gesicht als:",
|
||||
"trainFace": "Trainiere Gesicht",
|
||||
"toast": {
|
||||
"success": {
|
||||
"uploadedImage": "Das Bild wurde erfolgreich hochgeladen.",
|
||||
"deletedFace_one": "Erfolgreich {{count}} Gesicht gelöscht.",
|
||||
"deletedFace_other": "Erfolgreich {{count}} Gesichter gelöscht.",
|
||||
"deletedName_one": "{{count}} Gesicht wurde erfolgreich gelöscht.",
|
||||
"deletedName_other": "{{count}} Gesichter wurden erfolgreich gelöscht.",
|
||||
"addFaceLibrary": "{{name}} wurde erfolgreich in die Gesichtsbibliothek aufgenommen!",
|
||||
"trainedFace": "Gesicht erfolgreich trainiert.",
|
||||
"updatedFaceScore": "Gesichtsbewertung erfolgreich aktualisiert."
|
||||
},
|
||||
"error": {
|
||||
"deleteFaceFailed": "Das Löschen ist fehlgeschlagen: {{errorMessage}}",
|
||||
"uploadingImageFailed": "Bild kann nicht hochgeladen werden: {{errorMessage}}",
|
||||
"addFaceLibraryFailed": "Der Gesichtsname konnte nicht gesetzt werden: {{errorMessage}}",
|
||||
"trainFailed": "Ausbildung fehlgeschlagen: {{errorMessage}}",
|
||||
"updateFaceScoreFailed": "Aktualisierung der Gesichtsbewertung fehlgeschlagen: {{errorMessage}}",
|
||||
"deleteNameFailed": "Name kann nicht gelöscht werden: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,158 @@
|
||||
{}
|
||||
{
|
||||
"lowBandwidthMode": "Modus für geringe Bandbreite",
|
||||
"twoWayTalk": {
|
||||
"enable": "Gegensprechfunktion aktivieren",
|
||||
"disable": "Gegensprechfunktion ausschalten"
|
||||
},
|
||||
"cameraAudio": {
|
||||
"enable": "Kamera-Audio aktivieren",
|
||||
"disable": "Kamera-Audio deaktivieren"
|
||||
},
|
||||
"ptz": {
|
||||
"move": {
|
||||
"clickMove": {
|
||||
"disable": "Bewegen per Klick deaktivieren",
|
||||
"enable": "Bewegen per Klick aktivieren",
|
||||
"label": "Zum Zentrieren der Kamera ins Bild klicken"
|
||||
},
|
||||
"up": {
|
||||
"label": "PTZ-Kamera nach oben bewegen"
|
||||
},
|
||||
"left": {
|
||||
"label": "PTZ-Kamera nach links bewegen"
|
||||
},
|
||||
"down": {
|
||||
"label": "PTZ-Kamera nach unten bewegen"
|
||||
},
|
||||
"right": {
|
||||
"label": "PTZ-Kamera nach rechts bewegen"
|
||||
}
|
||||
},
|
||||
"zoom": {
|
||||
"in": {
|
||||
"label": "PTZ-Kamera vergrößern"
|
||||
},
|
||||
"out": {
|
||||
"label": "PTZ-Kamera herauszoomen"
|
||||
}
|
||||
},
|
||||
"presets": "PTZ-Kameravoreinstellungen",
|
||||
"frame": {
|
||||
"center": {
|
||||
"label": "Klicken Sie in den Rahmen, um die PTZ-Kamera zu zentrieren"
|
||||
}
|
||||
}
|
||||
},
|
||||
"documentTitle": "Live - Frigate",
|
||||
"documentTitle.withCamera": "{{camera}} - Live - Frigate",
|
||||
"muteCameras": {
|
||||
"disable": "Stumm aller Kameras aufheben",
|
||||
"enable": "Alle Kameras auf stumm"
|
||||
},
|
||||
"recording": {
|
||||
"disable": "Aufzeichnung deaktivieren",
|
||||
"enable": "Aufzeichnung aktivieren"
|
||||
},
|
||||
"snapshots": {
|
||||
"enable": "Snapshots aktivieren",
|
||||
"disable": "Snapshots deaktivieren"
|
||||
},
|
||||
"autotracking": {
|
||||
"disable": "Autotracking deaktivieren",
|
||||
"enable": "Autotracking aktivieren"
|
||||
},
|
||||
"streamStats": {
|
||||
"enable": "Stream Statistiken anzeigen",
|
||||
"disable": "Stream-Statistiken ausblenden"
|
||||
},
|
||||
"manualRecording": {
|
||||
"title": "On-Demand Aufzeichnung",
|
||||
"showStats": {
|
||||
"label": "Statistiken anzeigen",
|
||||
"desc": "Aktivieren Sie diese Option, um Stream-Statistiken als Overlay über dem Kamera-Feed anzuzeigen."
|
||||
},
|
||||
"started": "Manuelle On-Demand Aufzeichnung gestartet.",
|
||||
"failedToStart": "Manuelle On-Demand Aufzeichnung konnte nicht gestartet werden.",
|
||||
"recordDisabledTips": "Da die Aufzeichnung in der Konfiguration für diese Kamera deaktiviert oder eingeschränkt ist, wird nur ein Schnappschuss gespeichert.",
|
||||
"end": "On-Demand Aufzeichnung beenden",
|
||||
"ended": "Manuelle On-Demand Aufzeichnung beendet.",
|
||||
"playInBackground": {
|
||||
"desc": "Aktivieren Sie diese Option, um das Streaming fortzusetzen, wenn der Player ausgeblendet ist.",
|
||||
"label": "Im Hintergrund abspielen"
|
||||
},
|
||||
"tips": "Starten Sie ein manuelles Ereignis basierend auf den Aufzeichnung Aufbewahrungseinstellungen dieser Kamera.",
|
||||
"debugView": "Debug-Ansicht",
|
||||
"start": "On-Demand Aufzeichnung starten",
|
||||
"failedToEnd": "Die manuelle On-Demand Aufzeichnung konnte nicht beendet werden."
|
||||
},
|
||||
"streamingSettings": "Streaming Einstellungen",
|
||||
"notifications": "Benachrichtigungen",
|
||||
"stream": {
|
||||
"audio": {
|
||||
"available": "Für diesen Stream ist Audio verfügbar",
|
||||
"tips": {
|
||||
"title": "Der Ton muss von Ihrer Kamera ausgegeben und für diesen Stream in go2rtc konfiguriert werden.",
|
||||
"documentation": "Dokumentation lesen "
|
||||
},
|
||||
"unavailable": "Für diesen Stream ist kein Audio verfügbar"
|
||||
},
|
||||
"twoWayTalk": {
|
||||
"tips": "Ihr Gerät muss die Funktion unterstützen und WebRTC muss für die bidirektionale Kommunikation konfiguriert sein.",
|
||||
"tips.documentation": "Dokumentation lesen ",
|
||||
"available": "Für diesen Stream ist eine Zwei-Wege-Sprechfunktion verfügbar",
|
||||
"unavailable": "Für diesen Stream ist keine Zwei-Wege-Kommunikation möglich."
|
||||
},
|
||||
"lowBandwidth": {
|
||||
"tips": "Die Live-Ansicht befindet sich aufgrund von Puffer- oder Stream-Fehlern im Modus mit geringer Bandbreite.",
|
||||
"resetStream": "Stream zurücksetzen"
|
||||
},
|
||||
"title": "Strom",
|
||||
"playInBackground": {
|
||||
"tips": "Aktivieren Sie diese Option, um das Streaming fortzusetzen, wenn der Player ausgeblendet ist.",
|
||||
"label": "Im Hintergrund abspielen"
|
||||
}
|
||||
},
|
||||
"effectiveRetainMode": {
|
||||
"modes": {
|
||||
"motion": "Bewegung",
|
||||
"active_objects": "Aktive Objekte",
|
||||
"all": "Alle"
|
||||
},
|
||||
"notAllTips": "Dein Konfiguration zur Aufzeichnungsaufbewahrung von {{source}} ist eingestellt auf<code> -Modus:{{effectiveRetainMode}}</code> , daher werden in dieser On-Demand Aufzeichnung nur Segmente gespeichert mit{{effectiveRetainModeName}} ."
|
||||
},
|
||||
"editLayout": {
|
||||
"group": {
|
||||
"label": "Kameragruppe bearbeiten"
|
||||
},
|
||||
"exitEdit": "Bearbeitung beenden",
|
||||
"label": "Layout bearbeiten"
|
||||
},
|
||||
"camera": {
|
||||
"enable": "Kamera aktivieren",
|
||||
"disable": "Kamera deaktivieren"
|
||||
},
|
||||
"audioDetect": {
|
||||
"enable": "Audioerkennung aktivieren",
|
||||
"disable": "Audioerkennung deaktivieren"
|
||||
},
|
||||
"detect": {
|
||||
"enable": "Erkennung aktivieren",
|
||||
"disable": "Erkennung deaktivieren"
|
||||
},
|
||||
"cameraSettings": {
|
||||
"objectDetection": "Objekterkennung",
|
||||
"recording": "Aufnahme",
|
||||
"snapshots": "Schnappschüsse",
|
||||
"cameraEnabled": "Kamera aktiviert",
|
||||
"autotracking": "Autotracking",
|
||||
"audioDetection": "Audioerkennung",
|
||||
"title": "{{camera}} Einstellungen"
|
||||
},
|
||||
"history": {
|
||||
"label": "Historisches Filmmaterial zeigen"
|
||||
},
|
||||
"audio": "Audio",
|
||||
"suspend": {
|
||||
"forTime": "Aussetzen für: "
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
"savedSearches": "Gespeicherte Suchen",
|
||||
"searchFor": "Suche nach {{inputValue}}",
|
||||
"button": {
|
||||
"save": "Suche sichern",
|
||||
"save": "Suche speichern",
|
||||
"filterActive": "Filter aktiv",
|
||||
"delete": "Gespeicherte Suche löschen",
|
||||
"filterInformation": "Information filtern",
|
||||
|
@ -1 +1,96 @@
|
||||
{}
|
||||
{
|
||||
"documentTitle": {
|
||||
"default": "Einstellungen - Frigate",
|
||||
"authentication": "Authentifizierungseinstellungen",
|
||||
"camera": "Kameraeinstellungen",
|
||||
"masksAndZones": "Masken und Zonen bearbeiten",
|
||||
"object": "Objekt Einstellungen - Frigate",
|
||||
"general": "Allgemeine Einstellungen - Frigate",
|
||||
"frigatePlus": "Frigate+ Einstellungen",
|
||||
"classification": "Klassifizierungseinstellungen - Frigate",
|
||||
"motionTuner": "Bewegungsanpassung – Frigate"
|
||||
},
|
||||
"menu": {
|
||||
"ui": "Benutzeroberfläche",
|
||||
"cameras": "Kameraeinstellungen",
|
||||
"classification": "Klassifizierung",
|
||||
"masksAndZones": "Maskierungen / Zonen",
|
||||
"motionTuner": "Bewegungsempflindlichkeit einstellen",
|
||||
"debug": "Fehlerbehebung",
|
||||
"frigateplus": "Frigate+",
|
||||
"users": "Benutzer",
|
||||
"notifications": "Benachrichtigungen"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
"title": "Du hast nicht gespeicherte Änderungen.",
|
||||
"desc": "Möchtest Du deine Änderungen speichern, bevor du fortfährst?"
|
||||
}
|
||||
},
|
||||
"cameraSetting": {
|
||||
"camera": "Kamera",
|
||||
"noCamera": "Keine Kamera"
|
||||
},
|
||||
"general": {
|
||||
"title": "Allgemeine Einstellungen",
|
||||
"liveDashboard": {
|
||||
"title": "Live Übersicht",
|
||||
"playAlertVideos": {
|
||||
"label": "Spiele Videos mit Alarmierung",
|
||||
"desc": "Standardmäßig werden die letzten Warnmeldungen auf dem Live-Dashboard als kurze Videoschleifen abgespielt. Deaktiviere diese Option, um nur ein statisches Bild der letzten Warnungen auf diesem Gerät/Browser anzuzeigen."
|
||||
},
|
||||
"automaticLiveView": {
|
||||
"desc": "Wechsle automatisch zur Live Ansicht der Kamera, wenn einen Aktivität erkannt wurde. Wenn du diese Option deaktivierst, werden die statischen Kamerabilder auf der Liveübersicht nur einmal pro Minute aktualisiert.",
|
||||
"label": "Automatische Live Ansicht"
|
||||
}
|
||||
},
|
||||
"storedLayouts": {
|
||||
"title": "Gespeicherte Ansichten",
|
||||
"clearAll": "Lösche alle Ansichten",
|
||||
"desc": "Das Layout der Kameras in einer Kameragruppe kann verschoben/geändert werden. Die Positionen werden im lokalen Cache des Browsers gespeichert."
|
||||
},
|
||||
"cameraGroupStreaming": {
|
||||
"title": "Einstellungen für Kamera-Gruppen-Streaming",
|
||||
"clearAll": "Alle Streamingeinstellungen löschen",
|
||||
"desc": "Die Streaming-Einstellungen für jede Kameragruppe werden im lokalen Cache des Browsers gespeichert."
|
||||
},
|
||||
"recordingsViewer": {
|
||||
"title": "Aufzeichnungsbetrachter",
|
||||
"defaultPlaybackRate": {
|
||||
"desc": "Standard-Wiedergabegeschwindigkeit für die Wiedergabe von Aufnahmen.",
|
||||
"label": "Standard-Wiedergabegeschwindigkeit"
|
||||
}
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Kalender",
|
||||
"firstWeekday": {
|
||||
"label": "Erster Wochentag",
|
||||
"desc": "Der Tag, an dem die Wochen des Review Kalenders beginnen.",
|
||||
"sunday": "Sonntag",
|
||||
"monday": "Montag"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"clearStoredLayout": "Gespeichertes Layout für {{cameraName}} gelöscht",
|
||||
"clearStreamingSettings": "Streaming Einstellungen aller Kameragruppen bereinigt."
|
||||
},
|
||||
"error": {
|
||||
"clearStoredLayoutFailed": "Das gespeicherte Layout konnte nicht gelöscht werden: {{errorMessage}}",
|
||||
"clearStreamingSettingsFailed": "Die Streaming-Einstellungen konnten nicht gelöscht werden: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"classification": {
|
||||
"title": "Klassifizierungseinstellungen",
|
||||
"semanticSearch": {
|
||||
"title": "Semantische Suche",
|
||||
"desc": "Die semantische Suche in Frigate ermöglicht es, verfolgte Objekte innerhalb der Überprüfungselemente zu finden, indem entweder das Bild selbst, eine benutzerdefinierte Textbeschreibung oder eine automatisch generierte Beschreibung verwendet wird.",
|
||||
"readTheDocumentation": "Lesen Sie die Dokumentation."
|
||||
},
|
||||
"birdClassification": {
|
||||
"desc": "Die Vogelklassifizierung identifiziert bekannte Vögel mithilfe eines quantisierten Tensorflow-Modells. Wenn ein bekannter Vogel erkannt wird, wird sein allgemeiner Name als sub_label hinzugefügt. Diese Informationen sind in der Benutzeroberfläche, in Filtern und in Benachrichtigungen enthalten.",
|
||||
"title": "Vogel-Klassifizierung"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1,101 @@
|
||||
{}
|
||||
{
|
||||
"general": {
|
||||
"hardwareInfo": {
|
||||
"gpuInfo": {
|
||||
"vainfoOutput": {
|
||||
"title": "Ergebnis der Vainfo-Abfrage",
|
||||
"returnCode": "Rückgabecode: {{code}}",
|
||||
"processError": "Prozess Fehler:",
|
||||
"processOutput": "Prozess-Output:"
|
||||
},
|
||||
"nvidiaSMIOutput": {
|
||||
"title": "Nvidia SMI Ausgabe",
|
||||
"cudaComputerCapability": "CUDA Rechenleistung:{{cuda_compute}}",
|
||||
"name": "Name: {{name}}",
|
||||
"driver": "Treiber: {{driver}}",
|
||||
"vbios": "VBios Info: {{vbios}}"
|
||||
},
|
||||
"closeInfo": {
|
||||
"label": "Schhließe GPU Info"
|
||||
},
|
||||
"copyInfo": {
|
||||
"label": "Kopiere GPU Info"
|
||||
},
|
||||
"toast": {
|
||||
"success": "GPU-Infos in die Zwischenablage kopiert"
|
||||
}
|
||||
},
|
||||
"title": "Hardwareinformationen",
|
||||
"gpuUsage": "GPU Auslastung",
|
||||
"gpuMemory": "Grafikspeicher",
|
||||
"gpuDecoder": "GPU Decoder",
|
||||
"gpuEncoder": "GPU Encoder"
|
||||
},
|
||||
"title": "Allgemein",
|
||||
"detector": {
|
||||
"title": "Detektoren",
|
||||
"cpuUsage": "CPU-Auslastung des Detektors",
|
||||
"memoryUsage": "Arbeitsspeichernutzung des Detektors",
|
||||
"inferenceSpeed": "Detektoren Inferenzgeschwindigkeit"
|
||||
},
|
||||
"otherProcesses": {
|
||||
"title": "Andere Prozesse",
|
||||
"processCpuUsage": "CPU Auslastung für Prozess",
|
||||
"processMemoryUsage": "Prozessspeicherauslastung"
|
||||
}
|
||||
},
|
||||
"documentTitle": {
|
||||
"cameras": "Kamerastatistiken – Frigate",
|
||||
"storage": "Speicherstatistiken - Frigate",
|
||||
"general": "Allgemeine Statistiken - Frigate",
|
||||
"logs": {
|
||||
"frigate": "Frigate Protokolle – Frigate",
|
||||
"go2rtc": "Go2RTC Protokolle - Frigate",
|
||||
"nginx": "Nginx Protokolle - Frigate"
|
||||
},
|
||||
"enrichments": "Erweiterte Statistiken - Frigate"
|
||||
},
|
||||
"title": "System",
|
||||
"logs": {
|
||||
"download": {
|
||||
"label": "Protokolldateien herunterladen"
|
||||
},
|
||||
"copy": {
|
||||
"success": "Protokolle in die Zwischenablage kopiert",
|
||||
"label": "In die Zwischenablage kopieren",
|
||||
"error": "Protokolle konnten nicht in die Zwischenablage kopiert werden"
|
||||
},
|
||||
"type": {
|
||||
"message": "Nachricht",
|
||||
"timestamp": "Zeitstempel",
|
||||
"label": "Art",
|
||||
"tag": "Tag"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"fetchingLogsFailed": "Fehler beim Abrufen der Protokolle: {{errorMessage}}",
|
||||
"whileStreamingLogs": "Beim Übertragen der Protokolle ist ein Fehler aufgetreten: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"tips": "Protokolle werden in Echtzeit vom Server übertragen"
|
||||
},
|
||||
"metrics": "Systemmetriken",
|
||||
"storage": {
|
||||
"recordings": {
|
||||
"earliestRecording": "Älteste verfügbare Aufzeichnung:",
|
||||
"title": "Aufnahmen",
|
||||
"tips": "Dieser Wert gibt den Gesamtspeicherplatz an, den die Aufzeichnungen in der Datenbank von Frigate belegen. Frigate erfasst nicht die Speichernutzung für alle Dateien auf Ihrer Festplatte."
|
||||
},
|
||||
"cameraStorage": {
|
||||
"camera": "Kamera",
|
||||
"title": "Kamera Speicher"
|
||||
},
|
||||
"title": "Speicher",
|
||||
"overview": "Übersicht"
|
||||
},
|
||||
"cameras": {
|
||||
"info": {
|
||||
"stream": "Stream {{idx}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -112,6 +112,9 @@
|
||||
"desc": "Enter a new license plate value for this {{label}}",
|
||||
"descNoLabel": "Enter a new license plate value for this tracked object"
|
||||
},
|
||||
"snapshotScore": {
|
||||
"label": "Snapshot Score"
|
||||
},
|
||||
"topScore": {
|
||||
"label": "Top Score",
|
||||
"info": "The top score is the highest median score for the tracked object, so this may differ from the score shown on the search result thumbnail."
|
||||
|
@ -7,7 +7,9 @@
|
||||
"12hour": "%b %-d %Y, %I:%M %p",
|
||||
"24hour": "%b %-d %Y, %H:%M"
|
||||
},
|
||||
"second": "{{time}} segundos",
|
||||
"second_one": "{{time}} segundo",
|
||||
"second_many": "{{time}} segundos",
|
||||
"second_other": "{{time}} segundos",
|
||||
"formattedTimestampOnlyMonthAndDay": "%b %-d",
|
||||
"formattedTimestampExcludeSeconds": {
|
||||
"24hour": "%b %-d, %H:%M",
|
||||
@ -17,7 +19,9 @@
|
||||
"24hour": "%b %-d, %H:%M:%S",
|
||||
"12hour": "%b %-d, %I:%M:%S %p"
|
||||
},
|
||||
"day": "{{time}} días",
|
||||
"day_one": "{{time}} día",
|
||||
"day_many": "{{time}} días",
|
||||
"day_other": "{{time}} días",
|
||||
"untilForTime": "Hasta {{time}}",
|
||||
"untilForRestart": "Hasta que Frigate se reinicie.",
|
||||
"untilRestart": "Hasta que se reinicie",
|
||||
@ -36,21 +40,29 @@
|
||||
"12hours": "12 horas",
|
||||
"24hours": "24 horas",
|
||||
"pm": "pm",
|
||||
"year": "{{time}} años",
|
||||
"year_one": "{{time}} año",
|
||||
"year_many": "{{time}} años",
|
||||
"year_other": "{{time}} años",
|
||||
"mo": "{{time}}mes",
|
||||
"month": "{{time}} meses",
|
||||
"h": "{{time}}hora",
|
||||
"m": "{{time}}minuto",
|
||||
"minute": "{{time}} minutos",
|
||||
"s": "{{time}}segundo",
|
||||
"month_one": "{{time}} mes",
|
||||
"month_many": "{{time}} meses",
|
||||
"month_other": "{{time}} meses",
|
||||
"h": "{{time}}h",
|
||||
"m": "{{time}}m",
|
||||
"minute_one": "{{time}} minuto",
|
||||
"minute_many": "{{time}} minutos",
|
||||
"minute_other": "{{time}} minutos",
|
||||
"s": "{{time}}s",
|
||||
"formattedTimestamp2": {
|
||||
"12hour": "%m/%d %I:%M:%S%P",
|
||||
"24hour": "%d %b %H:%M:%S"
|
||||
},
|
||||
"5minutes": "5 minutos",
|
||||
"am": "am",
|
||||
"d": "{{time}}día",
|
||||
"hour": "{{time}} horas"
|
||||
"d": "{{time}}d",
|
||||
"hour_one": "{{time}} hora",
|
||||
"hour_many": "{{time}} horas",
|
||||
"hour_other": "{{time}} horas"
|
||||
},
|
||||
"menu": {
|
||||
"settings": "Ajustes",
|
||||
@ -71,11 +83,37 @@
|
||||
"configurationEditor": "Editor de configuración",
|
||||
"languages": "Idiomas",
|
||||
"language": {
|
||||
"en": "Inglés",
|
||||
"en": "English (Inglés)",
|
||||
"zhCN": "简体中文 (Chino simplificado)",
|
||||
"withSystem": {
|
||||
"label": "Usar los ajustes del sistema para el idioma"
|
||||
}
|
||||
},
|
||||
"ru": "Русский (Ruso)",
|
||||
"de": "Deutsch (Alemán)",
|
||||
"ja": "日本語 (Japonés)",
|
||||
"tr": "Türkçe (Turco)",
|
||||
"sv": "Svenska (Sueco)",
|
||||
"nb": "Norsk Bokmål (Noruego Bokmål)",
|
||||
"ko": "한국어 (Coreano)",
|
||||
"vi": "Tiếng Việt (Vietnamita)",
|
||||
"fa": "فارسی (Persa)",
|
||||
"pl": "Polski (Polaco)",
|
||||
"uk": "Українська (Ucraniano)",
|
||||
"he": "עברית (Hebreo)",
|
||||
"el": "Ελληνικά (Griego)",
|
||||
"ro": "Română (Rumano)",
|
||||
"hu": "Magyar (Húngaro)",
|
||||
"fi": "Suomi (Finlandés)",
|
||||
"it": "Italian (Italiano)",
|
||||
"da": "Dansk (Danés)",
|
||||
"sk": "Slovenčina (Eslovaco)",
|
||||
"hi": "हिन्दी (Hindi)",
|
||||
"es": "Español",
|
||||
"ar": "العربية (Árabe)",
|
||||
"pt": "Português (Portugues)",
|
||||
"cs": "Čeština (Checo)",
|
||||
"nl": "Nederlands (Neerlandés)",
|
||||
"fr": "Français (Frances)"
|
||||
},
|
||||
"appearance": "Apariencia",
|
||||
"darkMode": {
|
||||
|
@ -6,7 +6,9 @@
|
||||
"title": "Todas las etiquetas"
|
||||
},
|
||||
"count": "{{count}} Etiquetas",
|
||||
"label": "Etiquetas"
|
||||
"label": "Etiquetas",
|
||||
"count_one": "{{count}} Etiqueta",
|
||||
"count_other": "{{count}} Etiquetas"
|
||||
},
|
||||
"zones": {
|
||||
"all": {
|
||||
|
@ -40,11 +40,13 @@
|
||||
"toast": {
|
||||
"success": {
|
||||
"updatedSublabel": "Subetiqueta actualizada con éxito.",
|
||||
"regenerate": "Se ha solicitado una nueva descripción a {{provider}}. Dependiendo de la velocidad de tu proveedor, la nueva descripción puede tardar algún tiempo en regenerarse."
|
||||
"regenerate": "Se ha solicitado una nueva descripción a {{provider}}. Dependiendo de la velocidad de tu proveedor, la nueva descripción puede tardar algún tiempo en regenerarse.",
|
||||
"updatedLPR": "Matrícula actualizada con éxito."
|
||||
},
|
||||
"error": {
|
||||
"regenerate": "No se pudo llamar a {{provider}} para una nueva descripción: {{errorMessage}}",
|
||||
"updatedSublabelFailed": "No se pudo actualizar la subetiqueta: {{errorMessage}}"
|
||||
"updatedSublabelFailed": "No se pudo actualizar la subetiqueta: {{errorMessage}}",
|
||||
"updatedLPRFailed": "No se pudo actualizar la matrícula: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"tips": {
|
||||
@ -86,7 +88,13 @@
|
||||
},
|
||||
"objects": "Objetos",
|
||||
"estimatedSpeed": "Velocidad estimada",
|
||||
"camera": "Cámara"
|
||||
"camera": "Cámara",
|
||||
"editLPR": {
|
||||
"title": "Editar matrícula",
|
||||
"desc": "Introduce un nuevo valor de matrícula para este {{label}}",
|
||||
"descNoLabel": "Introduce un nuevo valor de matrícula para este objeto rastreado"
|
||||
},
|
||||
"recognizedLicensePlate": "Matrícula Reconocida"
|
||||
},
|
||||
"documentTitle": "Explorar - Frigate",
|
||||
"trackedObjectDetails": "Detalles del objeto rastreado",
|
||||
@ -180,5 +188,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"trackedObjectsCount": "{{count}} objetos rastreados "
|
||||
"trackedObjectsCount_one": "{{count}} objeto rastreado ",
|
||||
"trackedObjectsCount_many": "{{count}} objetos rastreados ",
|
||||
"trackedObjectsCount_other": "{{count}} objetos rastreados "
|
||||
}
|
||||
|
@ -135,6 +135,10 @@
|
||||
"toast": {
|
||||
"success": "Los ajustes de clasificación han sido guardados. Reinicia Frigate para aplicar tus cambios.",
|
||||
"error": "No se pudieron guardar los cambios de configuración: {{errorMessage}}"
|
||||
},
|
||||
"birdClassification": {
|
||||
"title": "Clasificación de Aves",
|
||||
"desc": "La clasificación de aves identifica aves conocidas utilizando un modelo de TensorFlow cuantizado. Cuando se reconoce una ave conocida, su nombre común se añadirá como una subetiqueta. Esta información se incluye en la interfaz de usuario, en los filtros y en las notificaciones."
|
||||
}
|
||||
},
|
||||
"camera": {
|
||||
|
5
web/public/locales/fi/audio.json
Normal file
5
web/public/locales/fi/audio.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"speech": "Puhe",
|
||||
"yell": "Huutaa",
|
||||
"babbling": "Pulina"
|
||||
}
|
1
web/public/locales/fi/common.json
Normal file
1
web/public/locales/fi/common.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/components/auth.json
Normal file
1
web/public/locales/fi/components/auth.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/components/camera.json
Normal file
1
web/public/locales/fi/components/camera.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/components/dialog.json
Normal file
1
web/public/locales/fi/components/dialog.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/components/filter.json
Normal file
1
web/public/locales/fi/components/filter.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/components/icons.json
Normal file
1
web/public/locales/fi/components/icons.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/components/input.json
Normal file
1
web/public/locales/fi/components/input.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/components/player.json
Normal file
1
web/public/locales/fi/components/player.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/objects.json
Normal file
1
web/public/locales/fi/objects.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/views/configEditor.json
Normal file
1
web/public/locales/fi/views/configEditor.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/views/events.json
Normal file
1
web/public/locales/fi/views/events.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/views/explore.json
Normal file
1
web/public/locales/fi/views/explore.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/views/exports.json
Normal file
1
web/public/locales/fi/views/exports.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/views/faceLibrary.json
Normal file
1
web/public/locales/fi/views/faceLibrary.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/views/live.json
Normal file
1
web/public/locales/fi/views/live.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/views/recording.json
Normal file
1
web/public/locales/fi/views/recording.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
web/public/locales/fi/views/search.json
Normal file
1
web/public/locales/fi/views/search.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
232
web/public/locales/fi/views/settings.json
Normal file
232
web/public/locales/fi/views/settings.json
Normal file
@ -0,0 +1,232 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"camera": "Kamera-asetukset - Frigate",
|
||||
"classification": "Klassifiointiasetukset - Frigate",
|
||||
"masksAndZones": "Maski ja aluemuokkain - Frigate",
|
||||
"motionTuner": "Liikesäädin - Frigate",
|
||||
"default": "Asetukset - Frigate",
|
||||
"general": "Yleiset asetukset - Frigate",
|
||||
"frigatePlus": "Frigate+ asetukset - Frigate",
|
||||
"object": "Objektiasetukset - Frigate",
|
||||
"authentication": "Autentikointiuasetukset - Frigate"
|
||||
},
|
||||
"menu": {
|
||||
"ui": "Käyttöliittymä",
|
||||
"cameras": "Kameroiden asetukset",
|
||||
"users": "Käyttäjät",
|
||||
"classification": "Klassifiointi",
|
||||
"frigateplus": "Frigate+",
|
||||
"masksAndZones": "Maskit / alueet",
|
||||
"debug": "Debuggaus",
|
||||
"motionTuner": "Liikesäädin",
|
||||
"notifications": "Ilmoitukset"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
"desc": "Haluatko tallentaa muutokset ennen jatkamista?",
|
||||
"title": "Et ole tallentanut muutoksia."
|
||||
}
|
||||
},
|
||||
"cameraSetting": {
|
||||
"camera": "Kamera",
|
||||
"noCamera": "Ei kameraa"
|
||||
},
|
||||
"general": {
|
||||
"title": "Yleiset asetukset",
|
||||
"liveDashboard": {
|
||||
"automaticLiveView": {
|
||||
"label": "Automaattinen reaaliaika-näkymä",
|
||||
"desc": "Vaihda automaattisesti reaaliaikaiseen kameranäkymään kun liikettä on huomattu. Mikäli asetus on kytketty pois päivittyy reaaliaikaisen kojelaudan kuva vain kerran minuutissa."
|
||||
},
|
||||
"title": "Reaaliaikainen kojelauta",
|
||||
"playAlertVideos": {
|
||||
"label": "Näytä hälyytysvideot",
|
||||
"desc": "Vakiona viimeaikaiset hälytykset pyörivät pieninä luuppaavina videoina reaaliaikaisella kojelaudalla. Ota tämä asetus pois päältä näyttääksesi vain staattisen kuvan viimeaikaisista hälytyksistä tässä laitteessa/selaimessa."
|
||||
}
|
||||
},
|
||||
"storedLayouts": {
|
||||
"title": "Tallennetut sijoittelut",
|
||||
"desc": "Kameroiden sijoittelua kameraryhmissä voidaan raahata tai niiden kokoa muuttaa. Sijainnit tallennetaan selaimen paikalliseen muistiin.",
|
||||
"clearAll": "Tyhjennä kaikki sijoittelut"
|
||||
},
|
||||
"cameraGroupStreaming": {
|
||||
"title": "Kameraryhmän striimauksen asetukset",
|
||||
"desc": "Striimauksen asetukset jokaiselle kameraryhmälle tallennetaan selaimesi paikalliseen muistiin.",
|
||||
"clearAll": "Tyhjennä kaikkai striimauksen asetukset"
|
||||
},
|
||||
"recordingsViewer": {
|
||||
"title": "Tallennusten näyttäjä",
|
||||
"defaultPlaybackRate": {
|
||||
"label": "Toiston vakionopeus",
|
||||
"desc": "Toiston vakionopeus tallennusten näytölle."
|
||||
}
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Kalenteri",
|
||||
"firstWeekday": {
|
||||
"label": "Viikon ensimmäinen päivä",
|
||||
"desc": "Päivä josta kertauskalenterin viikot alkaa.",
|
||||
"sunday": "sunnuntai",
|
||||
"monday": "maanantai"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"clearStoredLayout": "Tyhjennä tallennetut sijoittelut kameralle nimeltä {{cameraName}}",
|
||||
"clearStreamingSettings": "Tyhjennä striimausasetukset kaikista kameraryhmistä."
|
||||
},
|
||||
"error": {
|
||||
"clearStoredLayoutFailed": "Sijoittelujen tyhjentäminen ei onnistunut: {{errorMessage}}",
|
||||
"clearStreamingSettingsFailed": "Striimausasetusten tyhjentäminen ei onnistunut: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"classification": {
|
||||
"title": "Klassifiointiasetukset",
|
||||
"semanticSearch": {
|
||||
"reindexNow": {
|
||||
"label": "Uudelleen indeksoi nyt",
|
||||
"confirmDesc": "Oletko varma että haluat indeksoida uudelleen kaikki seurattujen kohteiden upotukset? Tämä prosessi toimii taustalla ja saattaa maksimoida prosessorin käytön sekä viedä runsaasti aikaa. Voit seurata prosessin etenemistä tarkastelu -sivulta.",
|
||||
"desc": "Indeksoinnin luominen uudelleen jälleenrakentaa upotukset kaikkiin seurattuihin kohteisiin. Tämä prosessi toimii taustalla ja saattaa maksimoida prosessorin käytön sekä viedä reilusti aikaa riippuen paljonko seurattavia kohteita sinulla on.",
|
||||
"confirmButton": "Indeksoi uudelleen",
|
||||
"success": "Uudelleen indeksointi aloitettiin onnistuneesti.",
|
||||
"alreadyInProgress": "Uudelleen indeksointi on jo käynnissä.",
|
||||
"error": "Uudelleen indeksointia ei voitu aloittaa: {{errorMessage}}",
|
||||
"confirmTitle": "Vahvista uudelleen indeksointi"
|
||||
},
|
||||
"modelSize": {
|
||||
"label": "Mallin koko",
|
||||
"small": {
|
||||
"desc": "Valitessa <em>pieni</em> käytetään kvantisoitunutta versiota mallista joka käyttää vähemmän muistia sekä prosesoria upotuksen laatueron ollessa lähes olematon.",
|
||||
"title": "pieni"
|
||||
},
|
||||
"large": {
|
||||
"desc": "Valittaessa <em>suuri</em> käytettään täyttä Jina-mallia joka ajetaan automaattisesti grafiikkaytimellä mikäli mahdollista.",
|
||||
"title": "suuri"
|
||||
},
|
||||
"desc": "Semanttisen haun upotuksiin käytetyn mallin koko."
|
||||
},
|
||||
"title": "Semanttinen haku",
|
||||
"readTheDocumentation": "Lue dokumentaatio",
|
||||
"desc": "Frigaten semanttisen haun kanssa voit hakea seurattuja kohteita esikatseluista joko kuvasta itsestään, käyttäjän määrittelemän teksti-kuvauksen perusteella tai automaattisesti generoidun kuvauksen kanssa."
|
||||
},
|
||||
"faceRecognition": {
|
||||
"title": "Kasvojentunnistus",
|
||||
"readTheDocumentation": "Lue dokumentaatio",
|
||||
"modelSize": {
|
||||
"label": "Mallin koko",
|
||||
"desc": "Kasvojentunnistukseen käytetyn mallin koko.",
|
||||
"small": {
|
||||
"title": "pieni",
|
||||
"desc": "Valitessa <em>pieni</em> FaceNet käyttää kasvojen upotukseen mallia joka toimii tehokkaasti suurimmalla osalla prosessoreista."
|
||||
},
|
||||
"large": {
|
||||
"title": "suuri",
|
||||
"desc": "Valitessa <em>suuri</em> käytetään ArcFace mallia kasvojen upotukseen joka ajetaan automaattisesti grafiikkaprosessorilla mikäli mahdollista."
|
||||
}
|
||||
},
|
||||
"desc": "Kasvojentunnistus sallii nimien antamisen ihmisille ja kun heidän kasvonsa tunnistetaan Frigate antaa henkilölle nimen ala-viittenä. Tämä tieto sisällytetään käyttöliittymään, filttereihin sekä ilmoituksiin."
|
||||
},
|
||||
"licensePlateRecognition": {
|
||||
"title": "Rekisterikilven tunnistus",
|
||||
"desc": "Frigate voi tunnistaa ajoneuvojen rekisterikilpiä ja lisätä tunnistetut kirjaimet automaattisesti recognized_license_plate -kenttään tai tunnettu nimi sub_label kohteisiin joiden tyyppi on ajoneuvo. Yleinen käyttökohde on lukea pihatielle ajavien tai kadulla ohiajavien ajoneuvojen rekisterikilvet.",
|
||||
"readTheDocumentation": "Lue dokumentaatio"
|
||||
},
|
||||
"toast": {
|
||||
"success": "Klassifiointiasetukset on tallennettu. Käynnistä Frigate uudelleen saadaksesi ne käyttöön.",
|
||||
"error": "Konfiguraatio muutoksia ei voitu tallentaa: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"camera": {
|
||||
"title": "Kamera-asetukset",
|
||||
"streams": {
|
||||
"title": "Striimit",
|
||||
"desc": "Kameran poiskytkeminen lopettaa kameran videostriimien käsittelyn. Havainnot, tallennus ja debuggaus ovat pois käytöstä.<br /><em>Huom: tämä ei poista käytöstä go2rtc uusinta striimejä.</em>"
|
||||
},
|
||||
"review": {
|
||||
"title": "Katselu",
|
||||
"desc": "Kytke päälle/pois hälytykset ja tunnistus tälle kameralle. Kun ne ovat pois päältä, uusia katseltavia tapahtumia ei luoda.",
|
||||
"alerts": "Hälytykset ",
|
||||
"detections": "Tunnistukset "
|
||||
},
|
||||
"reviewClassification": {
|
||||
"title": "Katseluiden klassifiointi",
|
||||
"readTheDocumentation": "Lue dokumentaatio",
|
||||
"noDefinedZones": "Tälle kameralle ei ole määritelty alueita.",
|
||||
"objectAlertsTips": "Kaikki {{alertsLabels}} objektit lähteelle {{cameraName}} näytetään Hälytyksinä.",
|
||||
"zoneObjectAlertsTips": "Kaikki {{alertsLabels}} objektit jotka tunnistetaan alueella {{zone}} lähteessä {{cameraName}} näytetään Hälytyksinä.",
|
||||
"objectDetectionsTips": "Kaikki {{detectionsLabels}} objektit joita ei ole kategorisoitu lähteessä {{cameraName}} näytetään Tunnistuksina niiden alueesta huolimatta.",
|
||||
"zoneObjectDetectionsTips": {
|
||||
"text": "Kaikki {{detectionsLabels}} objektit joita ei ole kategorisoitu alueella {{zone}} lähteessä {{cameraName}} näytetään Tunnistuksina.",
|
||||
"notSelectDetections": "Kaikki {{detectionsLabels}} objektit jotka tunnistetaan alueella {{zone}} lähteessä {{cameraName}}, joita ei ole kategorisoitu Hälytyksiksi näytetään Tunnistuksina niiden alueesta huolimatta.",
|
||||
"regardlessOfZoneObjectDetectionsTips": "Kaikki {{detectionsLabels}} objektit joita ei ole kategorisoitu lähteessä {{cameraName}} näytetään Tunnistuksina niiden alueesta huolimatta."
|
||||
},
|
||||
"selectAlertsZones": "Valitse alueet Hälytystä varten",
|
||||
"desc": "Frigate kategorisoi tahtumia Hälytyksiksi ja Tunnistuksiksi. Vakiona kaikki <em>henkilö</em> sekä <em>ajoneuvo</em> objektit käsitellään Hälytyksinä. Voit kategorisoida uudelleen katseltavat tapahtumat antamalla niille vaaditut alueet.",
|
||||
"limitDetections": "Rajoita tunnistukset tiettyihin alueisiin",
|
||||
"selectDetectionsZones": "Valitse alueet Tunnistusta varten"
|
||||
}
|
||||
},
|
||||
"masksAndZones": {
|
||||
"filter": {
|
||||
"all": "Kaikki maskit ja alueet"
|
||||
},
|
||||
"form": {
|
||||
"polygonDrawing": {
|
||||
"delete": {
|
||||
"desc": "Oletko varma että haluat poistaa {{type}}<em>{{name}}</em>?",
|
||||
"success": "{{name}} on poistettu.",
|
||||
"title": "Varmista poistaminen"
|
||||
},
|
||||
"error": {
|
||||
"mustBeFinished": "Polygonien piirron pitää olla valmis ennen tallennusta."
|
||||
},
|
||||
"removeLastPoint": "Poista edellinen piste",
|
||||
"snapPoints": {
|
||||
"true": "Napsauta pisteet",
|
||||
"false": "Älä napsauta pisteitä"
|
||||
},
|
||||
"reset": {
|
||||
"label": "Poista kaikki pisteet"
|
||||
}
|
||||
},
|
||||
"zoneName": {
|
||||
"error": {
|
||||
"mustBeAtLeastTwoCharacters": "Alueen nimen tulee olla vähintään 2 merkin pituinen.",
|
||||
"alreadyExists": "Tämän niminen alue on jo olemassa.",
|
||||
"mustNotContainPeriod": "Alueen nimessä ei saa olla pisteitä.",
|
||||
"hasIllegalCharacter": "Alueen nimessä on kiellettyjä merkkejä.",
|
||||
"mustNotBeSameWithCamera": "Alueen nimi ei saa olla sama kuin kameran nimi."
|
||||
}
|
||||
},
|
||||
"distance": {
|
||||
"error": {
|
||||
"text": "Välimatkan tulee olla suurempi tai yhtä suuri kuin 0.1.",
|
||||
"mustBeFilled": "Kaikki välimatka -kentät tulee olla täytetty jotta nopeusarviota voidaan käyttää."
|
||||
}
|
||||
},
|
||||
"inertia": {
|
||||
"error": {
|
||||
"mustBeAboveZero": "Inertian tulee olla yli 0."
|
||||
}
|
||||
},
|
||||
"loiteringTime": {
|
||||
"error": {
|
||||
"mustBeGreaterOrEqualZero": "Oleiluaika tulee olla suurempi tai yhtä suuri kuin 0."
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": {
|
||||
"label": "Alueet",
|
||||
"documentTitle": "Muokkaa alueita - Frigate"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"copyCoordinatesFailed": "Koordinaattien kopioiminen leikepöydälle epäonnistui."
|
||||
},
|
||||
"success": {
|
||||
"copyCoordinates": "{{polyName}} - koordinaatit kopioitu leikepöydälle."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
1
web/public/locales/fi/views/system.json
Normal file
1
web/public/locales/fi/views/system.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
"speech": "Voic",
|
||||
"babbling": "Babillages",
|
||||
"speech": "Voix",
|
||||
"babbling": "Balbutiements",
|
||||
"yell": "Cri",
|
||||
"bicycle": "Vélo",
|
||||
"car": "Voiture",
|
||||
"bellow": "Beuglement",
|
||||
"bellow": "En dessous",
|
||||
"whispering": "Chuchotements",
|
||||
"laughter": "Rires",
|
||||
"snicker": "Ricanement",
|
||||
@ -26,5 +26,91 @@
|
||||
"synthetic_singing": "Chant synthétique",
|
||||
"rapping": "Rap",
|
||||
"horse": "Cheval",
|
||||
"dog": "Chien"
|
||||
"dog": "Chien",
|
||||
"sheep": "Mouton",
|
||||
"whistling": "Sifflement",
|
||||
"breathing": "Respiration",
|
||||
"snoring": "Ronflement",
|
||||
"gasp": "Souffle",
|
||||
"pant": "halètement",
|
||||
"snort": "Reniflement",
|
||||
"camera": "Caméra",
|
||||
"cough": "Toussotement",
|
||||
"groan": "Gémissement",
|
||||
"grunt": "Grognement",
|
||||
"throat_clearing": "Éclaircissement de la gorge",
|
||||
"wheeze": "Respiration bruyante",
|
||||
"sneeze": "Éternuement",
|
||||
"sniff": "Reniflement",
|
||||
"chewing": "Mastication",
|
||||
"gargling": "Gargarisme",
|
||||
"ambulance": "Ambulance",
|
||||
"police_car": "Voiture de police",
|
||||
"emergency_vehicle": "Véhicule d'urgence",
|
||||
"subway": "Métro",
|
||||
"fire_alarm": "Alarme Incendie",
|
||||
"smoke_detector": "Détecteur de Fumée",
|
||||
"siren": "Sirène",
|
||||
"pulleys": "Poulies",
|
||||
"gears": "Engrenages",
|
||||
"clock": "Horloge",
|
||||
"ratchet": "Cliquet",
|
||||
"mechanisms": "Mécanismes",
|
||||
"steam_whistle": "Sifflet à vapeur",
|
||||
"whistle": "Sifflet",
|
||||
"foghorn": "Corne de brume",
|
||||
"tools": "Outils",
|
||||
"printer": "Imprimante",
|
||||
"air_conditioning": "Climatisation",
|
||||
"mechanical_fan": "Ventilateur mécanique",
|
||||
"sewing_machine": "Machine à coudre",
|
||||
"wood": "Bois",
|
||||
"fireworks": "Feux d'artifice",
|
||||
"glass": "Verre",
|
||||
"television": "Télévision",
|
||||
"sound_effect": "Effet sonore",
|
||||
"burping": "Rots",
|
||||
"fart": "Pet",
|
||||
"crowd": "Foule",
|
||||
"children_playing": "Enfants en train de jouer",
|
||||
"animal": "Animal",
|
||||
"bark": "Aboiement",
|
||||
"pig": "Cochon",
|
||||
"goat": "Chèvre",
|
||||
"chicken": "Poulet",
|
||||
"turkey": "Dinde",
|
||||
"duck": "Canard",
|
||||
"goose": "Dindon",
|
||||
"wild_animals": "Animaux Sauvages",
|
||||
"crow": "Corbeau",
|
||||
"dogs": "Chiens",
|
||||
"mouse": "Souris",
|
||||
"insect": "Insecte",
|
||||
"cricket": "Grillon",
|
||||
"mosquito": "Moustique",
|
||||
"fly": "Mouche",
|
||||
"frog": "Grenouille",
|
||||
"snake": "Serpent",
|
||||
"music": "Musique",
|
||||
"guitar": "Guitare",
|
||||
"electric_guitar": "Guitare électrique",
|
||||
"keyboard": "Clavier",
|
||||
"piano": "Piano",
|
||||
"vehicle": "Véhicule",
|
||||
"skateboard": "Skateboard",
|
||||
"door": "Porte",
|
||||
"blender": "Mixer",
|
||||
"hair_dryer": "Sèche cheveux",
|
||||
"toothbrush": "Brosse à dents",
|
||||
"sink": "Lavabo",
|
||||
"scissors": "Paire de ciseaux",
|
||||
"humming": "Bourdonnement",
|
||||
"shuffle": "Mélanger",
|
||||
"footsteps": "Pas",
|
||||
"hiccup": "Hoquet",
|
||||
"finger_snapping": "Claquement de doigts",
|
||||
"clapping": "Claquements",
|
||||
"applause": "Applaudissement",
|
||||
"heartbeat": "Battements de coeur",
|
||||
"cheering": "Applaudissement"
|
||||
}
|
||||
|
@ -22,24 +22,53 @@
|
||||
"pm": "PM",
|
||||
"am": "AM",
|
||||
"yr": "{{time}}a",
|
||||
"year": "{{time}} années",
|
||||
"year_one": "{{time}} année",
|
||||
"year_many": "{{time}} années",
|
||||
"year_other": "{{time}} années",
|
||||
"mo": "{{time}}m",
|
||||
"month": "{{time}} mois",
|
||||
"month_one": "{{time}} mois",
|
||||
"month_many": "{{time}} mois",
|
||||
"month_other": "{{time}} mois",
|
||||
"s": "{{time}}s",
|
||||
"second": "{{time}} secondes",
|
||||
"second_one": "{{time}} seconde",
|
||||
"second_many": "{{time}} secondes",
|
||||
"second_other": "{{time}} secondes",
|
||||
"m": "{{time}}m",
|
||||
"hour": "{{time}} heures",
|
||||
"hour_one": "{{time}} heure",
|
||||
"hour_many": "{{time}} heures",
|
||||
"hour_other": "{{time}} heures",
|
||||
"24hours": "24 heures",
|
||||
"minute": "{{time}} minutes",
|
||||
"minute_one": "{{time}} minute",
|
||||
"minute_many": "{{time}} minutes",
|
||||
"minute_other": "{{time}} minutes",
|
||||
"d": "{{time}}j",
|
||||
"day": "{{time}} jours",
|
||||
"1hour": "1 heure"
|
||||
"day_one": "{{time}} jour",
|
||||
"day_many": "{{time}} jours",
|
||||
"day_other": "{{time}} jours",
|
||||
"1hour": "1 heure",
|
||||
"formattedTimestamp": {
|
||||
"12hour": "%b %-d, %I:%M:%S %p",
|
||||
"24hour": "%d %b, %H:%M:%S"
|
||||
},
|
||||
"formattedTimestampWithYear": {
|
||||
"24hour": "%b %-d %Y, %H:%M",
|
||||
"12hour": "%b %-d %Y, %I:%M %p"
|
||||
},
|
||||
"formattedTimestampOnlyMonthAndDay": "%b %-d",
|
||||
"formattedTimestampExcludeSeconds": {
|
||||
"12hour": "%b %-d, %I:%M %p",
|
||||
"24hour": "%b %-d, %H:%M"
|
||||
},
|
||||
"formattedTimestamp2": {
|
||||
"12hour": "%m/%d %I:%M:%S%P",
|
||||
"24hour": "%d %b %H:%M:%S"
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"apply": "Appliquer",
|
||||
"reset": "Réinitialiser",
|
||||
"disabled": "Désactivé",
|
||||
"save": "Sauvegarder",
|
||||
"save": "Enregistrer",
|
||||
"saving": "Sauvegarde ...",
|
||||
"close": "Fermer",
|
||||
"copy": "Copier",
|
||||
@ -54,7 +83,7 @@
|
||||
"yes": "Oui",
|
||||
"no": "Non",
|
||||
"unsuspended": "Ré-activer",
|
||||
"play": "Play",
|
||||
"play": "Lire",
|
||||
"unselect": "Désélectionner",
|
||||
"suspended": "Suspendu",
|
||||
"enable": "Activer",
|
||||
@ -75,7 +104,37 @@
|
||||
"menu": {
|
||||
"configuration": "Configuration",
|
||||
"language": {
|
||||
"en": "Anglais"
|
||||
"en": "Anglais",
|
||||
"withSystem": {
|
||||
"label": "Utiliser les paramètres système pour la langue"
|
||||
},
|
||||
"zhCN": "简体中文 (Chinois simplifié)",
|
||||
"hi": "हिन्दी (Hindi)",
|
||||
"fr": "Français (Français)",
|
||||
"ja": "日本語 (Japanonais)",
|
||||
"tr": "Türkçe (Turc)",
|
||||
"it": "Italiano (Italien)",
|
||||
"nl": "Nederlands (Néerlandais)",
|
||||
"sv": "Svenska (Suédois)",
|
||||
"cs": "Čeština (Tchèque)",
|
||||
"nb": "Norsk Bokmål (Bokmål Norvégien)",
|
||||
"ko": "한국어 (Coréen)",
|
||||
"fa": "فارسی (Perse)",
|
||||
"pl": "Polski (Polonais)",
|
||||
"el": "Ελληνικά (Grec)",
|
||||
"ro": "Română (Roumain)",
|
||||
"hu": "Magyar (Hongrois)",
|
||||
"he": "עברית (Hebreu)",
|
||||
"ru": "Русский (Russe)",
|
||||
"de": "Deutsch (Allemand)",
|
||||
"es": "Español (Espagnol)",
|
||||
"ar": "العربية (Arabe)",
|
||||
"da": "Dansk (Danois)",
|
||||
"fi": "Suomi (Finlandais)",
|
||||
"pt": "Português (Portugais)",
|
||||
"sk": "Slovenčina (Slave)",
|
||||
"uk": "Українська (Ukrainien)",
|
||||
"vi": "Tiếng Việt (Vietnamien)"
|
||||
},
|
||||
"appearance": "Apparence",
|
||||
"darkMode": {
|
||||
@ -120,9 +179,9 @@
|
||||
"restart": "Redémarrer Frigate",
|
||||
"live": {
|
||||
"cameras": {
|
||||
"count_one": "{{count}} Camera",
|
||||
"count_many": "{{count}} Cameras",
|
||||
"count_other": "",
|
||||
"count_one": "{{count}} Caméra",
|
||||
"count_many": "{{count}} Caméras",
|
||||
"count_other": "{{count}} Caméras",
|
||||
"title": "Caméras"
|
||||
},
|
||||
"allCameras": "Toutes les caméras",
|
||||
@ -134,7 +193,11 @@
|
||||
},
|
||||
"toast": {
|
||||
"save": {
|
||||
"title": "Sauvegarder"
|
||||
"title": "Sauvegarder",
|
||||
"error": {
|
||||
"noMessage": "Echec lors de l'enregistrement des changements de configuration",
|
||||
"title": "Echec lors de l'enregistrement des changements de configuration : {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"copyUrlToClipboard": "Lien copié dans le presse-papier."
|
||||
},
|
||||
@ -169,5 +232,11 @@
|
||||
},
|
||||
"label": {
|
||||
"back": "Retour"
|
||||
},
|
||||
"unit": {
|
||||
"speed": {
|
||||
"kph": "kph",
|
||||
"mph": "mph"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,8 +29,55 @@
|
||||
"camera": {
|
||||
"setting": {
|
||||
"label": "Paramètres de flux de caméra",
|
||||
"title": "{{cameraName}} Paramètres de flux"
|
||||
"title": "{{cameraName}} Paramètres de flux",
|
||||
"audioIsUnavailable": "L'audio n'est pas disponible pour ce flux",
|
||||
"audioIsAvailable": "L'audio est disponible pour ce flux",
|
||||
"desc": "Modifie les options du flux temps réel pour le tableau de bord de ce groupe de caméras. <em>Ces paramètres sont spécifiques à un périphérique et/ou navigateur.</em>",
|
||||
"audio": {
|
||||
"tips": {
|
||||
"document": "Lire la documentation ",
|
||||
"title": "L'audio doit être capté par la caméra et configuré dans go2rtc pour ce flux."
|
||||
}
|
||||
},
|
||||
"streamMethod": {
|
||||
"label": "Méthode de streaming",
|
||||
"method": {
|
||||
"noStreaming": {
|
||||
"label": "Pas de streaming",
|
||||
"desc": "Les images provenant de la caméra ne seront mises à jour qu'une fois par minute et il n'y aura pas de diffusion en temps réel."
|
||||
},
|
||||
"smartStreaming": {
|
||||
"label": "Streaming intelligent (recommandé)",
|
||||
"desc": "Le streaming intelligent mettra à jour les images de la caméra une fois par minute lorsqu'aucune activité n'est détectée afin de conserver la bande-passante et les ressources."
|
||||
},
|
||||
"continuousStreaming": {
|
||||
"label": "Streaming continu",
|
||||
"desc": {
|
||||
"title": "L'image de la caméra sera toujours un flux temps réel lorsqu'elle est visible dans le tableau de bord, même si aucune activité n'est détectée.",
|
||||
"warning": "Le streaming continu peut engendrer une bande-passante élevée et des problèmes de performance. A utiliser avec précaution."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"compatibilityMode": {
|
||||
"label": "Mode de compatibilité",
|
||||
"desc": "Activer cette option uniquement si votre flux temps réel affiche des erreurs chromatiques et a une ligne diagonale sur le côté droit de l'image."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"timestamp": "Horodatage",
|
||||
"motion": "Mouvement",
|
||||
"mask": "Masque",
|
||||
"options": {
|
||||
"showOptions": "Afficher les options",
|
||||
"title": "Options",
|
||||
"label": "Paramètres",
|
||||
"hideOptions": "Masquer les options"
|
||||
},
|
||||
"boundingBox": "Boîte de délimitation",
|
||||
"zones": "Zones",
|
||||
"regions": "Régions"
|
||||
}
|
||||
}
|
||||
|
@ -19,12 +19,12 @@
|
||||
"label": "Confirmez cette étiquette pour Frigate Plus",
|
||||
"true_one": "C'est un {{label}}",
|
||||
"true_many": "Ce sont des {{label}}",
|
||||
"true_other": ""
|
||||
"true_other": "Ce sont des {{label}}"
|
||||
},
|
||||
"false": {
|
||||
"false_one": "Ceci n'est pas un {{label}}",
|
||||
"false_many": "Ceci n'est pas une {{label}}",
|
||||
"false_other": "",
|
||||
"false_many": "Ceux-ci ne sont pas des {{label}}",
|
||||
"false_other": "Ceux-ci ne sont pas des {{label}}",
|
||||
"label": "Ne pas confirmer cette étiquette pour Frigate Plus"
|
||||
},
|
||||
"state": {
|
||||
@ -42,7 +42,7 @@
|
||||
"fromTimeline": "Sélectionner depuis la chronologie",
|
||||
"lastHour_one": "Dernière heure",
|
||||
"lastHour_many": "{{count}} dernières heures",
|
||||
"lastHour_other": "",
|
||||
"lastHour_other": "{{count}} dernières heures",
|
||||
"end": {
|
||||
"label": "Sélectionner l'instant de fin",
|
||||
"title": "Instant de fin"
|
||||
@ -55,7 +55,9 @@
|
||||
"selectOrExport": "Sélectionner ou Exporter",
|
||||
"toast": {
|
||||
"error": {
|
||||
"failed": "Impossible de démarrer l'export : {{error}}"
|
||||
"failed": "Impossible de démarrer l'export : {{error}}",
|
||||
"endTimeMustAfterStartTime": "L'instant de fin doit être aprés l'instant de début",
|
||||
"noVaildTimeSelected": "La période temporelle sélectionnée n'est pas valide"
|
||||
},
|
||||
"success": "Exportation démarrée. Consulter le fichier dans le dossier /exports."
|
||||
},
|
||||
@ -63,12 +65,52 @@
|
||||
"name": {
|
||||
"placeholder": "Nommer l'export"
|
||||
},
|
||||
"export": "Exporter"
|
||||
"export": "Exporter",
|
||||
"fromTimeline": {
|
||||
"saveExport": "Enregistrer l'export",
|
||||
"previewExport": "Prévisualiser l'export"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"saveSearch": {
|
||||
"desc": "Fournir un nom pour cette recherche sauvegardée.",
|
||||
"label": "Sauvergarder la recherche"
|
||||
"label": "Sauvergarder la recherche",
|
||||
"success": "La recherche ({{searchName}}) a été enregistrée.",
|
||||
"button": {
|
||||
"save": {
|
||||
"label": "Enregistrer cette recherche"
|
||||
}
|
||||
},
|
||||
"overwrite": "{{searchName}} existe déjà. L'enregistrement écrasera la recherche existante.",
|
||||
"placeholder": "Renseigner un nom pour votre recherche"
|
||||
}
|
||||
},
|
||||
"streaming": {
|
||||
"label": "Flux",
|
||||
"restreaming": {
|
||||
"disabled": "Le renvoi du flux n'est pas activé pour cette caméra.",
|
||||
"desc": {
|
||||
"readTheDocumentation": "Lire la documentation ",
|
||||
"title": "Paramétrer go2rtc pour accéder à des options supplémentaires concernant le flux temps réel et l'audio pour cette caméra."
|
||||
}
|
||||
},
|
||||
"showStats": {
|
||||
"label": "Afficher les statistiques des flux",
|
||||
"desc": "Activer cette option pour afficher les statistiques des flux en surimpression sur le flux de la caméra."
|
||||
},
|
||||
"debugView": "Vue debogage"
|
||||
},
|
||||
"recording": {
|
||||
"confirmDelete": {
|
||||
"desc": {
|
||||
"selected": "Êtes-vous certain de vouloir supprimer toutes les vidéos enregistrées associées à cet objet Review ? <br /><br />Presser la touche <em>Maj</em> pour éviter cette boîte de dialogue."
|
||||
},
|
||||
"title": "Confirmer la suppression"
|
||||
},
|
||||
"button": {
|
||||
"export": "Exporter",
|
||||
"markAsReviewed": "Marquer comme vérifié",
|
||||
"deleteNow": "Supprimer immédiatement"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,9 @@
|
||||
"title": "Toutes les étiquettes",
|
||||
"short": "Étiquettes"
|
||||
},
|
||||
"count": "{{count}} Étiquettes"
|
||||
"count": "{{count}} Étiquettes",
|
||||
"count_one": "{{count}} Étiquette",
|
||||
"count_other": "{{count}} Étiquettes"
|
||||
},
|
||||
"filter": "Filtre",
|
||||
"zones": {
|
||||
@ -31,5 +33,94 @@
|
||||
"all": "Toutes les sous-étiquettes"
|
||||
},
|
||||
"score": "Score",
|
||||
"estimatedSpeed": "Vitesse estimée ({{unit}})"
|
||||
"estimatedSpeed": "Vitesse estimée ({{unit}})",
|
||||
"sort": {
|
||||
"label": "Tri",
|
||||
"dateDesc": "Date (ordre chronologique inverse)",
|
||||
"dateAsc": "Date (ordre chronologique)",
|
||||
"scoreDesc": "Score Objet (Descendant)",
|
||||
"scoreAsc": "Score Objet (Ascendant)",
|
||||
"speedAsc": "Vitesse Estimée (Ascendant)",
|
||||
"speedDesc": "Vitesse Estimée (Descendant)",
|
||||
"relevance": "Pertinence"
|
||||
},
|
||||
"features": {
|
||||
"submittedToFrigatePlus": {
|
||||
"tips": "Vous devez d'abord filtrer les objets suivis qui ont un instantané.<br /><br />Les objets suivis sans instantané ne peuvent pas être soumis à Frigate+.",
|
||||
"label": "Soumis à Frigate+"
|
||||
},
|
||||
"hasVideoClip": "A un clip vidéo",
|
||||
"hasSnapshot": "A un instantané",
|
||||
"label": "Caractéristiques"
|
||||
},
|
||||
"explore": {
|
||||
"settings": {
|
||||
"title": "Paramètres",
|
||||
"defaultView": {
|
||||
"title": "Vue par défaut",
|
||||
"summary": "Résumé",
|
||||
"unfilteredGrid": "Grille non filtrée",
|
||||
"desc": "Lorsqu'aucun filtre n'est sélectionné, afficher un résumé des objets suivis les plus récents par étiquette ou affichez une grille non filtrée."
|
||||
},
|
||||
"gridColumns": {
|
||||
"desc": "Sélectionner le nombre de colonnes dans la vue grille.",
|
||||
"title": "Colonnes de la grille"
|
||||
},
|
||||
"searchSource": {
|
||||
"label": "Source de recherche",
|
||||
"options": {
|
||||
"thumbnailImage": "Image de la vignette",
|
||||
"description": "Description"
|
||||
},
|
||||
"desc": "Choisissez si vous souhaitez rechercher les vignettes ou les descriptions de vos objets suivis."
|
||||
}
|
||||
},
|
||||
"date": {
|
||||
"selectDateBy": {
|
||||
"label": "Sélectionner une date pour filtrer par"
|
||||
}
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
"showReviewed": "Montrer les évalués"
|
||||
},
|
||||
"cameras": {
|
||||
"label": "Filtre des caméras",
|
||||
"all": {
|
||||
"short": "Caméras",
|
||||
"title": "Toutes les Caméras"
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"showMotionOnly": "Afficher le mouvement uniquement"
|
||||
},
|
||||
"logSettings": {
|
||||
"filterBySeverity": "Filtrer les logs par sévérité",
|
||||
"loading": {
|
||||
"title": "Chargement",
|
||||
"desc": "Lorsque le volet de la log défile vers le bas, les nouvelles logs sont automatiquement diffusées au fur et à mesure de leur ajout."
|
||||
},
|
||||
"label": "Niveau de log du filtre",
|
||||
"disableLogStreaming": "Désactiver la diffusion des logs",
|
||||
"allLogs": "Toutes les logs"
|
||||
},
|
||||
"recognizedLicensePlates": {
|
||||
"placeholder": "Tapez pour rechercher des plaques d'immatriculation...",
|
||||
"noLicensePlatesFound": "Aucune plaque d'immatriculation trouvée.",
|
||||
"loading": "Chargement des plaques d'immatriculation reconnues...",
|
||||
"title": "Plaques d'immatriculation reconnues",
|
||||
"loadFailed": "Échec du chargement des plaques d'immatriculation reconnues.",
|
||||
"selectPlatesFromList": "Sélectionner une ou plusieurs plaques dans la liste."
|
||||
},
|
||||
"trackedObjectDelete": {
|
||||
"title": "Confirmer la suppression",
|
||||
"toast": {
|
||||
"success": "Les objets suivis ont été supprimés avec succès.",
|
||||
"error": "Échec à la suppression des objets suivis : {{errorMessage}}"
|
||||
},
|
||||
"desc": "La suppression de ces objets suivis {{objectLength}} supprime l'instantané, les incorporations enregistrées et les entrées du cycle de vie de l'objet associées. Les séquences enregistrées de ces objets suivis dans la vue Historique <em>NE</em> seront <em>PAS</em> supprimées.<br /><br />Voulez-vous vraiment continuer ?<br /><br />Maintenez la touche <em>Maj</em> enfoncée pour ignorer cette boîte de dialogue à l'avenir."
|
||||
},
|
||||
"zoneMask": {
|
||||
"filterBy": "Filtrer par masque de zone"
|
||||
}
|
||||
}
|
||||
|
@ -28,6 +28,24 @@
|
||||
"title": "Latence",
|
||||
"value": "{{seconds}} sec"
|
||||
}
|
||||
},
|
||||
"droppedFrames": {
|
||||
"short": {
|
||||
"value": "{{droppedFrames}} images",
|
||||
"title": "Abandonné"
|
||||
},
|
||||
"title": "Images abandonnées :"
|
||||
},
|
||||
"decodedFrames": "Images décodées :",
|
||||
"droppedFrameRate": "Proportion d'images abandonnées :",
|
||||
"totalFrames": "Total Images :"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"submitFrigatePlusFailed": "Échec de la soumission de l'image à Frigate+"
|
||||
},
|
||||
"success": {
|
||||
"submittedFrigatePlus": "Image soumise avec succès à Frigate+"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,5 +16,105 @@
|
||||
"cat": "Chat",
|
||||
"stop_sign": "Panneau de stop",
|
||||
"dog": "Chien",
|
||||
"horse": "Cheval"
|
||||
"horse": "Cheval",
|
||||
"sheep": "Mouton",
|
||||
"cow": "Vache",
|
||||
"elephant": "Eléphant",
|
||||
"bear": "Ours",
|
||||
"zebra": "Zèbre",
|
||||
"hat": "Chapeau",
|
||||
"tie": "Cravate",
|
||||
"suitcase": "Valise",
|
||||
"frisbee": "Frisbee",
|
||||
"skis": "Skis",
|
||||
"snowboard": "Surf des neiges",
|
||||
"sports_ball": "Balon des sports",
|
||||
"kite": "Cerf-volant",
|
||||
"baseball_bat": "Bat de base-ball",
|
||||
"umbrella": "Parapluie",
|
||||
"giraffe": "Girafe",
|
||||
"eye_glasses": "Lunettes",
|
||||
"backpack": "Sac à dos",
|
||||
"handbag": "Sac à main",
|
||||
"shoe": "Chaussure",
|
||||
"clock": "Horloge",
|
||||
"bottle": "Bouteille",
|
||||
"baseball_glove": "Gant de baseball",
|
||||
"skateboard": "Skateboard",
|
||||
"surfboard": "Planche de surf",
|
||||
"tennis_racket": "Raquette de Tennis",
|
||||
"plate": "Assiette",
|
||||
"cup": "Tasse",
|
||||
"banana": "Banane",
|
||||
"apple": "Pomme",
|
||||
"wine_glass": "Verre à vin",
|
||||
"pizza": "Pizza",
|
||||
"couch": "Canapé",
|
||||
"potted_plant": "Plante en pot",
|
||||
"mirror": "Miroir",
|
||||
"window": "Fenêtre",
|
||||
"desk": "Bureau",
|
||||
"door": "Porte",
|
||||
"remote": "Télécommande",
|
||||
"keyboard": "Clavier",
|
||||
"mouse": "Souris",
|
||||
"tv": "TV",
|
||||
"laptop": "Ordinateur portable",
|
||||
"toaster": "Grille-pain",
|
||||
"book": "Livre",
|
||||
"teddy_bear": "Ours en peluche",
|
||||
"blender": "Mixer",
|
||||
"toothbrush": "Brosse à dents",
|
||||
"hair_brush": "Brosse à cheveux",
|
||||
"vehicle": "Véhicule",
|
||||
"fox": "Renard",
|
||||
"deer": "Cerf",
|
||||
"animal": "Animal",
|
||||
"goat": "Chèvre",
|
||||
"rabbit": "Lapin",
|
||||
"raccoon": "Raton laveur",
|
||||
"waste_bin": "Poubelle",
|
||||
"robot_lawnmower": "Robot tondeuse",
|
||||
"on_demand": "Sur Demande",
|
||||
"face": "Visage",
|
||||
"license_plate": "Plaque d'immatriculation",
|
||||
"bbq_grill": "Barbecue",
|
||||
"ups": "UPS",
|
||||
"fedex": "FedEx",
|
||||
"dhl": "DHL",
|
||||
"package": "Paquetage",
|
||||
"an_post": "An Post",
|
||||
"gls": "GLS",
|
||||
"dpd": "DPD",
|
||||
"postnl": "PostNL",
|
||||
"amazon": "Amazon",
|
||||
"hot_dog": "Hot Dog",
|
||||
"refrigerator": "Réfrigérateur",
|
||||
"bark": "Aboiement",
|
||||
"oven": "Four",
|
||||
"scissors": "Paire de ciseaux",
|
||||
"toilet": "Toilettes",
|
||||
"carrot": "Carotte",
|
||||
"bed": "Lit",
|
||||
"cell_phone": "Téléphone Portable",
|
||||
"fork": "Fourchette",
|
||||
"squirrel": "Écureuil",
|
||||
"microwave": "Micro-Ondes",
|
||||
"hair_dryer": "Sèche cheveux",
|
||||
"bowl": "Bol",
|
||||
"spoon": "Cuillère",
|
||||
"sandwich": "Sandwich",
|
||||
"sink": "Lavabo",
|
||||
"broccoli": "Brocoli",
|
||||
"knife": "Couteau",
|
||||
"nzpost": "NZPost",
|
||||
"orange": "Orange",
|
||||
"chair": "Chaise",
|
||||
"donut": "Donut",
|
||||
"usps": "USPS",
|
||||
"cake": "Cake",
|
||||
"dining_table": "Table à manger",
|
||||
"vase": "Vase",
|
||||
"purolator": "Purolator",
|
||||
"postnord": "PostNord"
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
"aria": "Sélectionner les événements",
|
||||
"noFoundForTimePeriod": "Aucun événement trouvé pour cette plage de temps."
|
||||
},
|
||||
"documentTitle": "Revue - Frigate",
|
||||
"documentTitle": "Évaluations - Frigate",
|
||||
"recordings": {
|
||||
"documentTitle": "Enregistrements - Frigate"
|
||||
},
|
||||
@ -25,5 +25,11 @@
|
||||
"last24Hours": "Dernières 24 heures"
|
||||
},
|
||||
"timeline.aria": "Sélectionner une chronologie",
|
||||
"markAsReviewed": "Marqué comme révisé"
|
||||
"markAsReviewed": "Marqué comme révisé",
|
||||
"newReviewItems": {
|
||||
"button": "Nouveaux éléments à évaluer",
|
||||
"label": "Afficher les nouveaux éléments d'évaluation"
|
||||
},
|
||||
"camera": "Caméra",
|
||||
"markTheseItemsAsReviewed": "Marquer ces éléments comme évalués"
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"generativeAI": "IA générative",
|
||||
"documentTitle": "Explorer - Frigate",
|
||||
"documentTitle": "Explorateur - Frigate",
|
||||
"exploreIsUnavailable": {
|
||||
"title": "L'exploration est indisponible",
|
||||
"embeddingsReindexing": {
|
||||
"estimatedTime": "Temps restant estimé :",
|
||||
"finishingShortly": "Termine bientôt",
|
||||
"context": "L'exploration peut être utilisée une fois la réindexation des objets suivis terminée",
|
||||
"context": "L'exploration peut être utilisée une fois la réindexation des objets suivis terminée.",
|
||||
"startingUp": "Démarrage...",
|
||||
"step": {
|
||||
"thumbnailsEmbedded": "Vignettes intégrées : ",
|
||||
@ -23,11 +23,172 @@
|
||||
"textModel": "Modèle de texte"
|
||||
},
|
||||
"tips": {
|
||||
"documentation": "Lire la documentation"
|
||||
}
|
||||
"documentation": "Lire la documentation",
|
||||
"context": "Vous souhaiterez peut-être réindexer les incorporations de vos objets suivis une fois les modèles téléchargés."
|
||||
},
|
||||
"error": "Une erreur est survenue. Vérifier les logs Frigate."
|
||||
}
|
||||
},
|
||||
"details": {
|
||||
"timestamp": "Horodatage"
|
||||
"timestamp": "Horodatage",
|
||||
"item": {
|
||||
"title": "Évaluer les détails de l'élément",
|
||||
"button": {
|
||||
"share": "Partager cet élément d'évaluation",
|
||||
"viewInExplore": "Afficher dans Explorer"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"regenerate": "Une nouvelle description a été demandée à {{provider}}. Selon la vitesse de votre fournisseur, la régénération de la nouvelle description peut prendre un certain temps.",
|
||||
"updatedSublabel": "Sous-étiquette mise à jour avec succès.",
|
||||
"updatedLPR": "Plaque d'immatriculation mise à jour avec succès."
|
||||
},
|
||||
"error": {
|
||||
"regenerate": "Échec à l'appel de {{provider}} pour une nouvelle description : {{errorMessage}}",
|
||||
"updatedSublabelFailed": "Échec à la mise à jour du sous-étiquette : {{errorMessage}}",
|
||||
"updatedLPRFailed": "Échec à la mise à jour de la plaque d'immatriculation : {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"tips": {
|
||||
"mismatch_one": "{{count}} objet indisponible a été détecté et inclus dans cet élément d'évaluation. Cet objet n'a pas été considéré comme une alerte ou une détection, ou a déjà été nettoyé/supprimé.",
|
||||
"mismatch_many": "{{count}} objets indisponibles ont été détectés et inclus dans cet élément d'évaluation. Ces objets n'ont pas été considérés comme une alerte ou une détection, ou ont déjà été nettoyés/supprimés.",
|
||||
"mismatch_other": "{{count}} objets indisponibles ont été détectés et inclus dans cet élément d'évaluation. Ces objets n'ont pas été considérés comme une alerte ou une détection, ou ont déjà été nettoyés/supprimés.",
|
||||
"hasMissingObjects": "Ajustez votre configuration si vous souhaitez que Frigate enregistre les objets suivis pour les étiquettes suivantes : <em>{{objects}}</em>"
|
||||
},
|
||||
"desc": "Vérifier les détails de l'élément"
|
||||
},
|
||||
"label": "Étiquette",
|
||||
"editSubLabel": {
|
||||
"title": "Modifier la sous-étiquette",
|
||||
"desc": "Saisissez une nouvelle sous-étiquette pour ce {{label}}",
|
||||
"descNoLabel": "Entrer une nouvelle sous-étiquette pour cet objet suivi"
|
||||
},
|
||||
"topScore": {
|
||||
"label": "Meilleur score",
|
||||
"info": "Le meilleur score est le score médian le plus élevé pour l'objet suivi, il peut donc différer du score affiché sur la vignette des résultats de recherche."
|
||||
},
|
||||
"objects": "Objets",
|
||||
"button": {
|
||||
"regenerate": {
|
||||
"label": "Régénérer la description de l'objet suivi",
|
||||
"title": "Regénérer"
|
||||
},
|
||||
"findSimilar": "Trouver similaire"
|
||||
},
|
||||
"description": {
|
||||
"label": "Description",
|
||||
"placeholder": "Description de l'objet suivi",
|
||||
"aiTips": "Frigate ne demandera pas de description à votre fournisseur d'IA générative tant que le cycle de vie de l'objet suivi ne sera pas terminé."
|
||||
},
|
||||
"regenerateFromSnapshot": "Régénérer à partir d'un instantané",
|
||||
"regenerateFromThumbnails": "Régénérer à partir des vignettes",
|
||||
"editLPR": {
|
||||
"title": "Modifier la plaque d'immatriculation",
|
||||
"desc": "Saisissez une nouvelle valeur de plaque d'immatriculation pour ce {{label}}",
|
||||
"descNoLabel": "Saisir une nouvelle valeur de plaque d'immatriculation pour cet objet suivi"
|
||||
},
|
||||
"recognizedLicensePlate": "Plaque d'immatriculation reconnue",
|
||||
"estimatedSpeed": "Vitesse Estimée",
|
||||
"zones": "Zones",
|
||||
"expandRegenerationMenu": "Développer le menu de régénération",
|
||||
"camera": "Caméra",
|
||||
"tips": {
|
||||
"descriptionSaved": "Description enregistrée avec succès",
|
||||
"saveDescriptionFailed": "Échec à la mise à jour de la description : {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"type": {
|
||||
"details": "détails",
|
||||
"video": "vidéo",
|
||||
"object_lifecycle": "cycle de vie de l'objet",
|
||||
"snapshot": "instantané"
|
||||
},
|
||||
"objectLifecycle": {
|
||||
"title": "Cycle de vie de l'objet",
|
||||
"noImageFound": "Aucune image trouvée pour cet horodatage.",
|
||||
"createObjectMask": "Créer Masque Objet",
|
||||
"scrollViewTips": "Faites défiler pour voir les moments importants du cycle de vie de cet objet.",
|
||||
"adjustAnnotationSettings": "Ajuster les paramètres d'annotation",
|
||||
"autoTrackingTips": "Les positions de la zone de délimitation seront inexactes pour les caméras de suivi automatique.",
|
||||
"lifecycleItemDesc": {
|
||||
"visible": "{{label}} détecté",
|
||||
"entered_zone": "{{label}} est entré dans {{zones}}",
|
||||
"stationary": "{{label}} est devenu stationnaire",
|
||||
"attribute": {
|
||||
"other": "{{label}} reconnu comme {{attribute}}",
|
||||
"faceOrLicense_plate": "{{attribute}} détecté pour {{label}}"
|
||||
},
|
||||
"gone": "{{label}} parti",
|
||||
"heard": "{{label}} entendu",
|
||||
"external": "{{label}} détecté",
|
||||
"active": "{{label}} est devenu actif"
|
||||
},
|
||||
"annotationSettings": {
|
||||
"title": "Paramètres d'annotation",
|
||||
"showAllZones": {
|
||||
"title": "Montrer toutes les zones",
|
||||
"desc": "Afficher toujours les zones sur les images où les objets sont entrés dans une zone."
|
||||
},
|
||||
"offset": {
|
||||
"label": "Décalage de l'annotation",
|
||||
"documentation": "Lire la documentation ",
|
||||
"desc": "Ces données proviennent du flux de détection de votre caméra, mais sont superposées aux images du flux d'enregistrement. Il est peu probable que les deux flux soient parfaitement synchronisés. Par conséquent, le cadre de délimitation et la séquence ne seront pas parfaitement alignés. Cependant, le champ <code>annotation_offset</code> peut être utilisé pour ajuster ce décalage.",
|
||||
"millisecondsToOffset": "Millisecondes pour décaler les annotations détectées. <em>Par défaut : 0</em>",
|
||||
"tips": "ASTUCE : Imaginez un clip d'événement avec une personne marchant de gauche à droite. Si le cadre de la chronologie de l'événement est constamment à gauche de la personne, la valeur doit être diminuée. De même, si une personne marche de gauche à droite et que le cadre de la chronologie est constamment devant elle, la valeur doit être augmentée."
|
||||
}
|
||||
},
|
||||
"carousel": {
|
||||
"next": "Diapositive suivante",
|
||||
"previous": "Diapositive précédente"
|
||||
}
|
||||
},
|
||||
"trackedObjectDetails": "Détails de l'objet suivi",
|
||||
"itemMenu": {
|
||||
"downloadSnapshot": {
|
||||
"label": "Télécharger l'instantané",
|
||||
"aria": "Télécharger l'instantané"
|
||||
},
|
||||
"findSimilar": {
|
||||
"label": "Trouver Similaire",
|
||||
"aria": "Trouver des objets suivis similaires"
|
||||
},
|
||||
"viewObjectLifecycle": {
|
||||
"aria": "Afficher le cycle de vie de l'objet",
|
||||
"label": "Visualiser le cycle de vie de l'objet"
|
||||
},
|
||||
"viewInHistory": {
|
||||
"label": "Afficher dans l'historique",
|
||||
"aria": "Afficher dans l'historique"
|
||||
},
|
||||
"downloadVideo": {
|
||||
"label": "Télécharger la vidéo",
|
||||
"aria": "Télécharger la vidéo"
|
||||
},
|
||||
"submitToPlus": {
|
||||
"label": "Soumettre à Frigate+",
|
||||
"aria": "Soumettre à Frigate Plus"
|
||||
},
|
||||
"deleteTrackedObject": {
|
||||
"label": "Supprimer cet objet suivi"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"confirmDelete": {
|
||||
"title": "Confirmer la suppression",
|
||||
"desc": "La suppression de cet objet suivi supprime l'instantané, les incorporations enregistrées et les entrées du cycle de vie de l'objet associées. Les images enregistrées de cet objet suivi dans la vue Historique <em>NE</em> seront <em>PAS</em> supprimées.<br /><br />Êtes-vous sûr de vouloir continuer ?"
|
||||
}
|
||||
},
|
||||
"noTrackedObjects": "Aucun objet suivi trouvé",
|
||||
"fetchingTrackedObjectsFailed": "Erreur lors de la récupération des objets suivis : {{errorMessage}}",
|
||||
"trackedObjectsCount_one": "{{count}} objet suivi ",
|
||||
"trackedObjectsCount_many": "{{count}} objets suivis ",
|
||||
"trackedObjectsCount_other": "{{count}} objets suivis ",
|
||||
"searchResult": {
|
||||
"deleteTrackedObject": {
|
||||
"toast": {
|
||||
"success": "L'objet suivi a été supprimé avec succès.",
|
||||
"error": "Échec à la suppression de l'objet suivi : {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"description": {
|
||||
"addFace": "Tutoriel ajouter une nouvelle collection à la librairie de visages",
|
||||
"addFace": "Parcourez la procédure d’ajout d’une nouvelle collection à la bibliothèque de visages.",
|
||||
"placeholder": "Saisissez un nom pour cette collection"
|
||||
},
|
||||
"details": {
|
||||
@ -10,7 +10,7 @@
|
||||
"timestamp": "Horodatage",
|
||||
"faceDesc": "Détails du visage et de l'objet associé"
|
||||
},
|
||||
"documentTitle": "Librairie de visages - Frigate",
|
||||
"documentTitle": "Bibliothèque de visages - Frigate",
|
||||
"uploadFaceImage": {
|
||||
"title": "Télécharger l'image du visage",
|
||||
"desc": "Téléchargez une image pour rechercher des visages et l'inclure dans {{pageToggle}}"
|
||||
@ -19,20 +19,55 @@
|
||||
"title": "Créer une collection",
|
||||
"desc": "Créer une nouvelle collection",
|
||||
"new": "Créer un nouveau visage",
|
||||
"nextSteps": "Pour construire une base solide :<li>Utilisez l’onglet Entraîner pour sélectionner et vous entraîner sur des images pour chaque personne détectée.</li><li>Concentrez-vous sur des images de face pour de meilleurs résultats ; évitez d’entraîner des images qui capturent des visages sous un angle.</li></ul>"
|
||||
"nextSteps": "Pour construire une base solide :<li>Utilisez l’onglet Entraîner pour sélectionner et entraîner le modèle sur des images pour chaque personne détectée.</li><li>Concentrez-vous sur des images de face pour de meilleurs résultats ; évitez d’entraîner le modèle des images qui capturent des visages de biais.</li></ul>"
|
||||
},
|
||||
"train": {
|
||||
"title": "Entraîner"
|
||||
"title": "Entraîner",
|
||||
"aria": "Sélectionner Entraîner"
|
||||
},
|
||||
"selectFace": "Sélectionner un visage",
|
||||
"button": {
|
||||
"addFace": "Ajouter un visage",
|
||||
"uploadImage": "Envoyer une image",
|
||||
"deleteFaceAttempts": "Supprimer les tentatives de reconnaissance faciale"
|
||||
"deleteFaceAttempts": "Supprimer les tentatives de reconnaissance faciale",
|
||||
"reprocessFace": "Réanalyser le Visage"
|
||||
},
|
||||
"selectItem": "Sélectionner {{item}}",
|
||||
"deleteFaceLibrary": {
|
||||
"title": "Supprimer un nom",
|
||||
"desc": "Etes-vous certain de vouloir supprimer la collection {{name}} ? Cette action supprimera définitivement tous les visages associés."
|
||||
}
|
||||
},
|
||||
"imageEntry": {
|
||||
"dropActive": "Déposer l'image ici...",
|
||||
"dropInstructions": "Faites glisser et déposez une image ici, ou cliquez pour sélectionner",
|
||||
"maxSize": "Taille Max : {{size}}MB",
|
||||
"validation": {
|
||||
"selectImage": "Veuillez sélectionner un fichier image."
|
||||
}
|
||||
},
|
||||
"readTheDocs": "Lire la documentation",
|
||||
"toast": {
|
||||
"success": {
|
||||
"deletedName_one": "{{count}} visage a été supprimé avec succès.",
|
||||
"deletedName_many": "{{count}} visages ont été supprimés avec succès.",
|
||||
"deletedName_other": "{{count}} visages ont été supprimés avec succès.",
|
||||
"uploadedImage": "Image téléchargée avec succès.",
|
||||
"addFaceLibrary": "{{name}} a été ajouté avec succès à la bibliothèque de visages !",
|
||||
"updatedFaceScore": "Score du visage mis à jour avec succès.",
|
||||
"deletedFace_one": "{{count}} visage a été supprimé avec succès.",
|
||||
"deletedFace_many": "{{count}} visages ont été supprimés avec succès.",
|
||||
"deletedFace_other": "{{count}} visages ont été supprimés avec succès.",
|
||||
"trainedFace": "Visage entraîné avec succès."
|
||||
},
|
||||
"error": {
|
||||
"uploadingImageFailed": "Échec du chargement de l'image : {{errorMessage}}",
|
||||
"deleteFaceFailed": "Échec de la suppression : {{errorMessage}}",
|
||||
"trainFailed": "Échec à l'entrainement : {{errorMessage}}",
|
||||
"updateFaceScoreFailed": "Échec à la mise à jour du score du visage : {{errorMessage}}",
|
||||
"addFaceLibraryFailed": "Échec de la définition du nom du visage : {{errorMessage}}",
|
||||
"deleteNameFailed": "Échec de la suppression du nom : {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"trainFaceAs": "Entraîner Visage comme :",
|
||||
"trainFace": "Entraîner Visage"
|
||||
}
|
||||
|
@ -42,6 +42,117 @@
|
||||
"center": {
|
||||
"label": "Cliquez dans l'image pour centrer la caméra PTZ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"presets": "Paramètres prédéfinis pour les caméras PTZ"
|
||||
},
|
||||
"camera": {
|
||||
"enable": "Activer la Caméra",
|
||||
"disable": "Désactiver la Caméra"
|
||||
},
|
||||
"detect": {
|
||||
"enable": "Activer la Détection",
|
||||
"disable": "Désactiver la Détection"
|
||||
},
|
||||
"recording": {
|
||||
"enable": "Activer l'enregistrement",
|
||||
"disable": "Désactiver l'enregistrement"
|
||||
},
|
||||
"snapshots": {
|
||||
"enable": "Activer les instantanés",
|
||||
"disable": "Désactiver les instantanés"
|
||||
},
|
||||
"muteCameras": {
|
||||
"enable": "Couper le son de toutes les caméras",
|
||||
"disable": "Activer le son de toutes les caméras"
|
||||
},
|
||||
"audioDetect": {
|
||||
"enable": "Activer la Détection Audio",
|
||||
"disable": "Désactiver la Détection Audio"
|
||||
},
|
||||
"manualRecording": {
|
||||
"playInBackground": {
|
||||
"label": "Jouer en arrière plan",
|
||||
"desc": "Activer cette option pour continuer à streamer lorsque le player est masqué."
|
||||
},
|
||||
"showStats": {
|
||||
"label": "Afficher les statistiques",
|
||||
"desc": "Activer cette option pour afficher les statistiques de flux en surimpression sur le flux de la caméra."
|
||||
},
|
||||
"debugView": "Vue de débug",
|
||||
"start": "Démarrer l'enregistrement à la demande",
|
||||
"failedToStart": "impossible de démarrer l'enregistrement à la demande manuel.",
|
||||
"end": "Terminer l'enregistrement à la demande",
|
||||
"ended": "Enregistrement à la demande terminé.",
|
||||
"failedToEnd": "Impossible de terminer l'enregistrement à la demande.",
|
||||
"started": "Enregistrement à la demande démarré.",
|
||||
"recordDisabledTips": "Puisque l'enregistrement est désactivé ou restreint dans la configuration de cette caméra, seul un instantané sera enregistré.",
|
||||
"title": "Enregistrement à la demande",
|
||||
"tips": "Démarrez un événement manuel en fonction des paramètres de conservation d'enregistrement de cette caméra."
|
||||
},
|
||||
"streamingSettings": "Paramètres de streaming",
|
||||
"notifications": "Notifications",
|
||||
"suspend": {
|
||||
"forTime": "Mettre en pause pour : "
|
||||
},
|
||||
"stream": {
|
||||
"audio": {
|
||||
"available": "Audio disponible pour ce flux",
|
||||
"tips": {
|
||||
"documentation": "Lire la documentation ",
|
||||
"title": "L'audio doit être capté par votre caméra et configuré dans go2rtc pour ce flux."
|
||||
},
|
||||
"unavailable": "Audio non disponible pour ce flux"
|
||||
},
|
||||
"twoWayTalk": {
|
||||
"tips": "Votre périphérique doit supporter la fonctionnalité et WebRTC doit être configuré pour supporter le dialogue bidirectionnel.",
|
||||
"tips.documentation": "Lire la documention ",
|
||||
"available": "Discussion bidirectionnelle disponible pour ce flux",
|
||||
"unavailable": "Discussion bidirectionnelle non disponible pour ce flux"
|
||||
},
|
||||
"lowBandwidth": {
|
||||
"tips": "La vue temps réel est en mode faible bande passante à cause d'erreurs de cache ou de flux.",
|
||||
"resetStream": "Réinitialiser le flux"
|
||||
},
|
||||
"playInBackground": {
|
||||
"tips": "Activer cette option pour continuer le streaming lorsque le player est masqué.",
|
||||
"label": "Jouer en arrière plan"
|
||||
},
|
||||
"title": "Flux"
|
||||
},
|
||||
"cameraSettings": {
|
||||
"objectDetection": "Détection d'objets",
|
||||
"recording": "Enregistrement",
|
||||
"snapshots": "Instantanés",
|
||||
"audioDetection": "Détection audio",
|
||||
"autotracking": "Suivi automatique",
|
||||
"cameraEnabled": "Caméra activée",
|
||||
"title": "Paramètres de {{camera}}"
|
||||
},
|
||||
"history": {
|
||||
"label": "Afficher l'historique de capture"
|
||||
},
|
||||
"effectiveRetainMode": {
|
||||
"modes": {
|
||||
"all": "Tous",
|
||||
"motion": "Mouvement",
|
||||
"active_objects": "Objets actifs"
|
||||
},
|
||||
"notAllTips": "Votre configuration de conservation d'enregistrement {{source}} est définie sur <code>mode : {{effectiveRetainMode}}</code>, donc cet enregistrement à la demande ne conservera que les segments avec {{effectiveRetainModeName}}."
|
||||
},
|
||||
"audio": "Audio",
|
||||
"autotracking": {
|
||||
"enable": "Activer le suivi automatique",
|
||||
"disable": "Désactiver le suivi automatique"
|
||||
},
|
||||
"streamStats": {
|
||||
"enable": "Afficher les statistiques du flux",
|
||||
"disable": "Masquer les statistiques du flux"
|
||||
},
|
||||
"editLayout": {
|
||||
"label": "Modifier la mise en page",
|
||||
"group": {
|
||||
"label": "Modifier le groupe de caméras"
|
||||
},
|
||||
"exitEdit": "Quitter l'édition"
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,8 @@
|
||||
"filters": "Filtres",
|
||||
"toast": {
|
||||
"error": {
|
||||
"noValidTimeSelected": "Aucune plage horaire valide sélectionnée",
|
||||
"endTimeMustAfterStartTime": "L'heure de fin doit être après l'heure de début"
|
||||
"noValidTimeSelected": "Pas de période valide sélectionnée",
|
||||
"endTimeMustAfterStartTime": "L'instant de fin doit être aprés le début"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
"filterInformation": "Filtrer les informations",
|
||||
"filterActive": "Filtres actifs",
|
||||
"save": "Enregistrer la recherche",
|
||||
"delete": "Effacer la recherche enregistrée"
|
||||
"delete": "Supprimer la recherche enregistrée"
|
||||
},
|
||||
"trackedObjectId": "ID d'objet suivi",
|
||||
"filter": {
|
||||
@ -19,7 +19,49 @@
|
||||
"labels": "Étiquettes",
|
||||
"cameras": "Caméras",
|
||||
"after": "Après",
|
||||
"before": "Avant"
|
||||
"before": "Avant",
|
||||
"min_speed": "Vitesse Min",
|
||||
"max_speed": "Vitesse Max",
|
||||
"min_score": "Score minimum",
|
||||
"recognized_license_plate": "Plaques d'immatriculation reconnues",
|
||||
"has_clip": "Contient un clip",
|
||||
"has_snapshot": "Contient un instantané",
|
||||
"max_score": "Score maximum"
|
||||
},
|
||||
"searchType": {
|
||||
"thumbnail": "Vignette",
|
||||
"description": "Description"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"beforeDateBeLaterAfter": "La date de début « avant » doit être postérieure à la date « après ».",
|
||||
"afterDatebeEarlierBefore": "La date « après » doit être antérieure à la date « avant ».",
|
||||
"minScoreMustBeLessOrEqualMaxScore": "Le « min_score » doit être inférieur ou égal au « max_score ».",
|
||||
"maxScoreMustBeGreaterOrEqualMinScore": "Le « max_score » doit être supérieur ou égal au « min_score ».",
|
||||
"minSpeedMustBeLessOrEqualMaxSpeed": "La « vitesse_min » doit être inférieure ou égale à la « vitesse_max ».",
|
||||
"maxSpeedMustBeGreaterOrEqualMinSpeed": "La « vitesse maximale » doit être supérieure ou égale à la « vitesse minimale »."
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"currentFilterType": "Valeurs du filtre",
|
||||
"activeFilters": "Filtres actifs",
|
||||
"noFilters": "Filtres"
|
||||
},
|
||||
"tips": {
|
||||
"title": "Comment utiliser les filtres de texte",
|
||||
"desc": {
|
||||
"text": "Les filtres vous aident à affiner vos résultats de recherche. Voici comment les utiliser dans le champ de saisie :",
|
||||
"example": "Exemple: <code className=\"text-primary\">cameras:front_door label:person before:01012024 time_range:3:00PM-4:00PM </code>",
|
||||
"step": "<ul className=\"list-disc pl-5 text-sm text-primary-variant\"><li>Saisissez un nom de filtre suivi de deux points (par exemple, «cameras:»).</li><li>Sélectionnez une valeur parmi les suggestions ou saisissez la vôtre.</li><li>Utilisez plusieurs filtres en les ajoutant les uns après les autres, en laissant un espace entre eux.</li><li>Les filtres de date (avant: et après:) utilisent le format <em>{{DateFormat}}</em>.</li><li>Le filtre de plage horaire utilise le format <em>{{exampleTime}}</em>.</li><li>Supprimez les filtres en cliquant sur le «x» à côté d'eux.</li></ul>"
|
||||
}
|
||||
}
|
||||
},
|
||||
"similaritySearch": {
|
||||
"title": "Recherche par similarité",
|
||||
"active": "Recherche par similarité activée",
|
||||
"clear": "Réinitialiser la recherche par similarité"
|
||||
},
|
||||
"placeholder": {
|
||||
"search": "Rechercher..."
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,564 @@
|
||||
"debug": "Debug",
|
||||
"cameras": "Paramètres des caméras",
|
||||
"users": "Utilisateurs",
|
||||
"notifications": "Notifications"
|
||||
"notifications": "Notifications",
|
||||
"frigateplus": "Frigate+"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
"title": "Vous avez des modifications non enregistrées.",
|
||||
"desc": "Voulez-vous enregistrer vos modifications avant de continuer ?"
|
||||
}
|
||||
},
|
||||
"cameraSetting": {
|
||||
"camera": "Caméra",
|
||||
"noCamera": "Aucun Caméra"
|
||||
},
|
||||
"general": {
|
||||
"title": "Paramètres généraux",
|
||||
"liveDashboard": {
|
||||
"title": "Tableau de bord en direct",
|
||||
"automaticLiveView": {
|
||||
"label": "Vue en direct automatique",
|
||||
"desc": "Basculez automatiquement vers la vue en direct d'une caméra lorsqu'une activité est détectée. La désactivation de cette option limite la mise à jour des images statiques de la caméra sur le tableau de bord en direct à une fois par minute seulement."
|
||||
},
|
||||
"playAlertVideos": {
|
||||
"label": "Lire les vidéos d'alerte",
|
||||
"desc": "Par défaut, les alertes récentes du tableau de bord en direct sont diffusées sous forme de petites vidéos en boucle. Désactivez cette option pour afficher uniquement une image statique des alertes récentes sur cet appareil/navigateur."
|
||||
}
|
||||
},
|
||||
"storedLayouts": {
|
||||
"title": "Mises en page stockées",
|
||||
"desc": "La disposition des caméras d'un groupe peut être déplacée/redimensionnée. Les positions sont enregistrées dans le stockage local de votre navigateur.",
|
||||
"clearAll": "Effacer toutes les mises en page"
|
||||
},
|
||||
"cameraGroupStreaming": {
|
||||
"title": "Paramètres de diffusion du groupe de caméras",
|
||||
"desc": "Les paramètres de diffusion en continu pour chaque groupe de caméras sont stockés dans le stockage local de votre navigateur.",
|
||||
"clearAll": "Effacer tous les paramètres de streaming"
|
||||
},
|
||||
"recordingsViewer": {
|
||||
"title": "Visionneuse d'enregistrements",
|
||||
"defaultPlaybackRate": {
|
||||
"label": "Taux de lecture par défaut",
|
||||
"desc": "Vitesse de lecture par défaut pour la lecture des enregistrements."
|
||||
}
|
||||
},
|
||||
"calendar": {
|
||||
"firstWeekday": {
|
||||
"label": "Premier jour de la semaine",
|
||||
"desc": "Le jour où commencent les semaines du calendrier de révision.",
|
||||
"sunday": "Dimanche",
|
||||
"monday": "Lundi"
|
||||
},
|
||||
"title": "Calendrier"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"clearStoredLayoutFailed": "Échec à l'effacement de la mise en page enregistrée : {{errorMessage}}",
|
||||
"clearStreamingSettingsFailed": "Échec à l'effacement des paramètres de diffusion : {{errorMessage}}"
|
||||
},
|
||||
"success": {
|
||||
"clearStreamingSettings": "Paramètres de diffusion effacés pour tous les groupes de caméras.",
|
||||
"clearStoredLayout": "Mise en page enregistrée effacée pour {{cameraName}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
"suspendTime": {
|
||||
"untilRestart": "Suspendre jusqu'au redémarrage",
|
||||
"24hours": "Suspendre pendant 24 heures",
|
||||
"10minutes": "Suspendre pendant 10 minutes",
|
||||
"12hours": "Suspendre pendant 12 heures",
|
||||
"5minutes": "Suspendre pendant 5 minutes",
|
||||
"1hour": "Suspendre pendant 1 heure",
|
||||
"30minutes": "Suspendre pendant 30 minutes"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"registered": "Inscription réussie aux notifications. Le redémarrage de Frigate est nécessaire avant l'envoi de toute notification (y compris une notification de test).",
|
||||
"settingSaved": "Les paramètres de notification ont été enregistrés."
|
||||
},
|
||||
"error": {
|
||||
"registerFailed": "Impossible de sauvegarder l'enregistrement de la notification."
|
||||
}
|
||||
},
|
||||
"cancelSuspension": "Annuler la suspension",
|
||||
"notificationSettings": {
|
||||
"title": "Paramètres de notification",
|
||||
"documentation": "Lire la Documentation",
|
||||
"desc": "Frigate peut envoyer nativement des notifications push à votre appareil lorsqu'il est exécuté dans le navigateur ou installé en tant que PWA."
|
||||
},
|
||||
"notificationUnavailable": {
|
||||
"title": "Notifications indisponibles",
|
||||
"documentation": "Lire la Documentation",
|
||||
"desc": "Les notifications push Web nécessitent un contexte sécurisé (<code>https://...</code>). Il s'agit d'une limitation du navigateur. Accédez à Frigate en toute sécurité pour utiliser les notifications."
|
||||
},
|
||||
"globalSettings": {
|
||||
"title": "Paramètres globaux",
|
||||
"desc": "Suspendre temporairement les notifications pour des caméras spécifiques sur tous les appareils enregistrés."
|
||||
},
|
||||
"email": {
|
||||
"title": "Email",
|
||||
"desc": "Une adresse e-mail valide est requise et sera utilisée pour vous avertir en cas de problème avec le service push.",
|
||||
"placeholder": "e.g. example@email.com"
|
||||
},
|
||||
"cameras": {
|
||||
"title": "Caméras",
|
||||
"noCameras": "Aucune caméra disponible",
|
||||
"desc": "Sélectionnez les caméras pour lesquelles activer les notifications."
|
||||
},
|
||||
"deviceSpecific": "Paramètres spécifiques de l'appareil",
|
||||
"suspended": "Notifications suspendues {{time}}",
|
||||
"title": "Notifications",
|
||||
"active": "Notifications actives",
|
||||
"registerDevice": "Enregistrer cet appareil",
|
||||
"unregisterDevice": "Désenregistrer cet appareil",
|
||||
"sendTestNotification": "Envoyer une notification de test"
|
||||
},
|
||||
"frigatePlus": {
|
||||
"apiKey": {
|
||||
"notValidated": "La clé API Frigate+ n'est pas détectée ou non validée",
|
||||
"title": "Clé API Frigate+",
|
||||
"validated": "La clé API Frigate+ est détectée et validée",
|
||||
"desc": "La clé API Frigate+ permet l'intégration avec le service Frigate+.",
|
||||
"plusLink": "En savoir plus sur Frigate+"
|
||||
},
|
||||
"title": "Paramètres Frégate+",
|
||||
"snapshotConfig": {
|
||||
"documentation": "Lire la documentation",
|
||||
"desc": "La soumission à Frigate+ nécessite que les instantanés et les instantanés <code>clean_copy</code> soient activés dans votre configuration.",
|
||||
"title": "Configuration de l'instantané",
|
||||
"table": {
|
||||
"snapshots": "Instantanés",
|
||||
"camera": "Caméra",
|
||||
"cleanCopySnapshots": "<code>clean_copy</code> Instantanés"
|
||||
},
|
||||
"cleanCopyWarning": "Certaines caméras ont des instantanés activés, mais la copie propre est désactivée. Vous devez activer <code>clean_copy</code> dans votre configuration d'instantanés pour pouvoir envoyer les images de ces caméras à Frigate+."
|
||||
},
|
||||
"modelInfo": {
|
||||
"baseModel": "Modèle de base",
|
||||
"modelType": "Type de Modèle",
|
||||
"cameras": "Caméras",
|
||||
"supportedDetectors": "Détecteurs pris en charge",
|
||||
"loading": "Chargement des informations sur le modèle...",
|
||||
"title": "Informations sur le modèle",
|
||||
"trainDate": "Date d'entrainement",
|
||||
"error": "Échec au chargement des informations du modèle",
|
||||
"availableModels": "Modèles disponibles",
|
||||
"dimensions": "Dimensions",
|
||||
"loadingAvailableModels": "Chargement des modèles disponibles...",
|
||||
"modelSelect": "Vous pouvez sélectionner ici vos modèles disponibles sur Frigate+. Notez que seuls les modèles compatibles avec votre configuration de détecteur actuelle peuvent être sélectionnés."
|
||||
},
|
||||
"toast": {
|
||||
"success": "Les paramètres de Frigate+ ont été enregistrés. Redémarrez Frigate pour appliquer les modifications.",
|
||||
"error": "Échec de l'enregistrement des modifications de configuration : {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"classification": {
|
||||
"title": "Paramètres de classification",
|
||||
"semanticSearch": {
|
||||
"title": "Recherche sémantique",
|
||||
"reindexNow": {
|
||||
"label": "Réindexé Maintenant",
|
||||
"confirmTitle": "Confirmer la réindexation",
|
||||
"error": "Échec du démarrage de la réindexation : {{errorMessage}}",
|
||||
"desc": "La réindexation régénère des intégrations pour tous les objets suivis. Ce processus s'exécute en arrière-plan et peut solliciter au maximum votre processeur et prendre un certain temps, selon le nombre d'objets suivis.",
|
||||
"confirmDesc": "Êtes-vous sûr de vouloir réindexer toutes les incorporations d'objets suivies ? Ce processus s'exécutera en arrière-plan, mais il risque de solliciter au maximum votre processeur et de prendre un certain temps. Vous pouvez suivre la progression sur la page Explorateur.",
|
||||
"success": "La réindexation a démarré avec succès.",
|
||||
"alreadyInProgress": "La réindexation est déjà en cours.",
|
||||
"confirmButton": "Réindexer"
|
||||
},
|
||||
"desc": "La recherche sémantique dans Frigate vous permet de trouver des objets suivis dans vos éléments d'évaluation en utilisant soit l'image elle-même, soit une description textuelle définie par l'utilisateur, soit une description générée automatiquement.",
|
||||
"modelSize": {
|
||||
"small": {
|
||||
"desc": "L'utilisation de <em>small</em> utilise une version quantifiée du modèle qui utilise moins de RAM et s'exécute plus rapidement sur le processeur avec une différence très négligeable dans la qualité d'intégration.",
|
||||
"title": "petit"
|
||||
},
|
||||
"large": {
|
||||
"desc": "L'utilisation de <em>large</em> utilise le modèle Jina complet et s'exécutera automatiquement sur le GPU si applicable.",
|
||||
"title": "large"
|
||||
},
|
||||
"desc": "La taille du modèle utilisé pour les intégrations de recherche sémantique.",
|
||||
"label": "Taille du Modèle"
|
||||
},
|
||||
"readTheDocumentation": "Lire la documentation"
|
||||
},
|
||||
"faceRecognition": {
|
||||
"readTheDocumentation": "Lire la Documentation",
|
||||
"modelSize": {
|
||||
"large": {
|
||||
"title": "large",
|
||||
"desc": "L'utilisation de <em>large</em> utilise un modèle d'intégration de visage ArcFace et s'exécutera automatiquement sur le GPU si applicable."
|
||||
},
|
||||
"small": {
|
||||
"desc": "L'utilisation de <em>small</em> utilise un modèle d'intégration de visage FaceNet qui fonctionne efficacement sur la plupart des processeurs.",
|
||||
"title": "petit"
|
||||
},
|
||||
"label": "Taille du Modèle",
|
||||
"desc": "La taille du modèle utilisé pour la reconnaissance faciale."
|
||||
},
|
||||
"desc": "La reconnaissance faciale permet d'attribuer un nom aux personnes. Une fois leur visage reconnu, Frigate attribuera le nom de la personne comme sous-étiquette. Ces informations sont incluses dans l'interface utilisateur, les filtres et les notifications.",
|
||||
"title": "Reconnaissance Faciale"
|
||||
},
|
||||
"licensePlateRecognition": {
|
||||
"desc": "Frigate peut reconnaître les plaques d'immatriculation des véhicules et ajouter automatiquement les caractères détectés au champ recognized_license_plate ou un nom connu comme sous-étiquette aux objets de type voiture. Un cas d'utilisation courant est la lecture des plaques d'immatriculation des voitures entrant dans une allée ou circulant dans la rue.",
|
||||
"readTheDocumentation": "Lire la Documentation",
|
||||
"title": "Reconnaissance de plaque d'immatriculation"
|
||||
},
|
||||
"toast": {
|
||||
"success": "Les paramètres de classification ont été enregistrés. Redémarrez Frigate pour appliquer vos modifications.",
|
||||
"error": "Échec à l'enregistrement des modifications de configuration : {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"camera": {
|
||||
"title": "Paramètres de la caméra",
|
||||
"review": {
|
||||
"title": "Evaluation",
|
||||
"detections": "Détections ",
|
||||
"alerts": "Alertes ",
|
||||
"desc": "Activer/désactiver les alertes et les détections pour cette caméra. Si cette option est désactivée, aucun nouvel élément d'évaluation ne sera généré."
|
||||
},
|
||||
"reviewClassification": {
|
||||
"title": "Evaluer la Classification",
|
||||
"objectDetectionsTips": "Tous les objets {{detectionsLabels}} non classés sur {{cameraName}} seront affichés comme des Détections, quelle que soit la zone dans laquelle ils se trouvent.",
|
||||
"zoneObjectDetectionsTips": {
|
||||
"text": "Tous les objets {{detectionsLabels}} non classés dans {{zone}} sur {{cameraName}} seront affichés comme Détections.",
|
||||
"regardlessOfZoneObjectDetectionsTips": "Tous les objets {{detectionsLabels}} non classés sur {{cameraName}} seront affichés comme des Détections, quelle que soit la zone dans laquelle ils se trouvent.",
|
||||
"notSelectDetections": "Tous les objets {{detectionsLabels}} détectés dans {{zone}} sur {{cameraName}} non classés comme Alertes seront affichés comme Détections, quelle que soit la zone dans laquelle ils se trouvent."
|
||||
},
|
||||
"selectDetectionsZones": "Sélectionner les zones pour les Détections",
|
||||
"toast": {
|
||||
"success": "La configuration de la classification des évaluations a été enregistrée. Redémarrez Frigate pour appliquer les modifications."
|
||||
},
|
||||
"readTheDocumentation": "Lire la Documentation",
|
||||
"objectAlertsTips": "Tous les objets {{alertsLabels}} sur {{cameraName}} seront affichés sous forme d'Alertes.",
|
||||
"limitDetections": "Limiter les détections à des zones spécifiques",
|
||||
"zoneObjectAlertsTips": "Tous les objets {{alertsLabels}} détectés dans {{zone}} sur {{cameraName}} seront affichés sous forme d'Alertes.",
|
||||
"noDefinedZones": "Aucune zone n'est définie pour cette caméra.",
|
||||
"selectAlertsZones": "Sélectionner les zones pour les Alertes",
|
||||
"desc": "Frigate catégorise les éléments d'évaluation en Alertes et Détections. Par défaut, tous les objets <em>personne</em> et <em>voiture</em> sont considérés comme des Alertes. Vous pouvez affiner la catégorisation de vos éléments d'évaluation en configurant les zones requises pour ces éléments."
|
||||
},
|
||||
"streams": {
|
||||
"title": "Flux",
|
||||
"desc": "La désactivation complète d'une caméra interrompt le traitement des flux de cette caméra par Frigate. La détection, l'enregistrement et le débogage seront indisponibles.<br /> <em>Remarque : cela ne désactive pas les rediffusions go2rtc.</em>"
|
||||
}
|
||||
},
|
||||
"masksAndZones": {
|
||||
"form": {
|
||||
"zoneName": {
|
||||
"error": {
|
||||
"mustBeAtLeastTwoCharacters": "Le nom de la zone doit comporter au moins 2 caractères.",
|
||||
"mustNotBeSameWithCamera": "Le nom de la zone ne doit pas être le même que le nom de la caméra.",
|
||||
"mustNotContainPeriod": "Le nom de la zone ne doit pas contenir de points.",
|
||||
"hasIllegalCharacter": "Le nom de la zone contient des caractères illégaux.",
|
||||
"alreadyExists": "Une zone portant ce nom existe déjà pour cette caméra."
|
||||
}
|
||||
},
|
||||
"distance": {
|
||||
"error": {
|
||||
"text": "La distance doit être supérieure ou égale à 0,1.",
|
||||
"mustBeFilled": "Tous les champs de distance doivent être remplis pour utiliser l'estimation de la vitesse."
|
||||
}
|
||||
},
|
||||
"polygonDrawing": {
|
||||
"removeLastPoint": "Supprimer le dernier point",
|
||||
"delete": {
|
||||
"title": "Confirmer la suppression",
|
||||
"desc": "Êtes-vous sûr de vouloir supprimer le {{type}} <em>{{name}}</em> ?",
|
||||
"success": "{{name}} a été supprimé."
|
||||
},
|
||||
"error": {
|
||||
"mustBeFinished": "Le dessin du polygone doit être terminé avant d'enregistrer."
|
||||
},
|
||||
"reset": {
|
||||
"label": "Effacer tous les points"
|
||||
},
|
||||
"snapPoints": {
|
||||
"true": "Points d'accrochage",
|
||||
"false": "Ne cassez pas les points"
|
||||
}
|
||||
},
|
||||
"loiteringTime": {
|
||||
"error": {
|
||||
"mustBeGreaterOrEqualZero": "Le temps de latence doit être supérieur ou égal à 0."
|
||||
}
|
||||
},
|
||||
"inertia": {
|
||||
"error": {
|
||||
"mustBeAboveZero": "L'inertie doit être supérieure à 0."
|
||||
}
|
||||
}
|
||||
},
|
||||
"zones": {
|
||||
"documentTitle": "Modifier la Zone - Frigate",
|
||||
"desc": {
|
||||
"title": "Les zones vous permettent de définir une zone spécifique de l'image afin de déterminer si un objet se trouve ou non dans une zone particulière.",
|
||||
"documentation": "Documentation"
|
||||
},
|
||||
"add": "Ajouter une Zone",
|
||||
"edit": "Modifier une Zone",
|
||||
"name": {
|
||||
"title": "Nom",
|
||||
"inputPlaceHolder": "Entrer un nom...",
|
||||
"tips": "Le nom doit comporter au moins 2 caractères et ne doit pas être le nom d'une caméra ou d'une autre zone."
|
||||
},
|
||||
"loiteringTime": {
|
||||
"desc": "Définit une durée minimale en secondes pendant laquelle l'objet doit rester dans la zone pour qu'elle s'active. <em>Par défaut : 0</em>",
|
||||
"title": "Temps de latence"
|
||||
},
|
||||
"speedEstimation": {
|
||||
"title": "Estimation de la Vitesse",
|
||||
"desc": "Activer l'estimation de la vitesse des objets dans cette zone. La zone doit comporter exactement 4 points."
|
||||
},
|
||||
"speedThreshold": {
|
||||
"title": "Seuil de vitesse ({{unit}})",
|
||||
"desc": "Spécifie une vitesse minimale pour que les objets soient pris en compte dans cette zone.",
|
||||
"toast": {
|
||||
"error": {
|
||||
"loiteringTimeError": "Les zones avec des temps de latence supérieurs à 0 ne doivent pas être utilisées avec l'estimation de la vitesse.",
|
||||
"pointLengthError": "L'estimation de vitesse a été désactivée pour cette zone. Les zones avec estimation de vitesse doivent comporter exactement 4 points."
|
||||
}
|
||||
}
|
||||
},
|
||||
"point_one": "{{count}} point",
|
||||
"point_many": "{{count}} points",
|
||||
"point_other": "{{count}} points",
|
||||
"label": "Zones",
|
||||
"inertia": {
|
||||
"desc": "Spécifie le nombre d'images qu'un objet doit avoir dans une zone avant d'être considéré comme faisant partie de la zone. <em>Par défaut : 3</em>",
|
||||
"title": "Inertie"
|
||||
},
|
||||
"toast": {
|
||||
"success": "La zone ({{zoneName}}) a été enregistrée. Redémarrez Frigate pour appliquer les modifications."
|
||||
},
|
||||
"objects": {
|
||||
"title": "Objets",
|
||||
"desc": "Liste des objets qui s'appliquent à cette zone."
|
||||
},
|
||||
"clickDrawPolygon": "Cliquer pour dessiner un polygone sur l'image.",
|
||||
"allObjects": "Tous les Objets"
|
||||
},
|
||||
"motionMasks": {
|
||||
"label": "Masque de mouvement",
|
||||
"documentTitle": "Modifier Masque de Mouvement - Frigate",
|
||||
"context": {
|
||||
"documentation": "Lire la Documentation",
|
||||
"title": "Les masques de mouvement servent à empêcher les mouvements indésirables de déclencher la détection (par exemple : branches d'arbres, horodatage des caméras). Ils doivent être utilisés <em>avec parcimonie</em>, car un surmasquage complique le suivi des objets."
|
||||
},
|
||||
"polygonAreaTooLarge": {
|
||||
"title": "Le masque de mouvement couvre {{polygonArea}} % du cadre de la caméra. Les grands masques de mouvement ne sont pas recommandés.",
|
||||
"tips": "Les masques de mouvement n'empêchent pas la détection des objets. Il est préférable d'utiliser une zone obligatoire.",
|
||||
"documentation": "Lire la documentation"
|
||||
},
|
||||
"edit": "Modifier le masque de mouvement",
|
||||
"point_one": "{{count}} point",
|
||||
"point_many": "{{count}} points",
|
||||
"point_other": "{{count}} points",
|
||||
"clickDrawPolygon": "Cliquer pour dessiner un polygone sur l'image.",
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "{{polygonName}} a été enregistré. Redémarrez Frigate pour appliquer les modifications.",
|
||||
"noName": "Le masque de mouvement a été enregistré. Redémarrez Frigate pour appliquer les modifications."
|
||||
}
|
||||
},
|
||||
"desc": {
|
||||
"title": "Les masques de mouvement servent à empêcher la détection de mouvements indésirables. Un masquage excessif complique le suivi des objets.",
|
||||
"documentation": "Documentation"
|
||||
},
|
||||
"add": "Nouveau masque de mouvement"
|
||||
},
|
||||
"objectMasks": {
|
||||
"label": "Masques de l'objet",
|
||||
"desc": {
|
||||
"documentation": "Documentation",
|
||||
"title": "Les masques de filtrage d'objets sont utilisés pour filtrer les faux positifs pour un type d'objet donné en fonction de l'emplacement."
|
||||
},
|
||||
"edit": "Modifier un masque d'objet",
|
||||
"clickDrawPolygon": "Cliquez pour dessiner un polygone sur l'image.",
|
||||
"objects": {
|
||||
"title": "Objets",
|
||||
"desc": "Le type d'objet qui s'applique à ce masque d'objet.",
|
||||
"allObjectTypes": "Tous les types d'objet"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"noName": "Le masque d'objet a été enregistré. Redémarrez Frigate pour appliquer les modifications.",
|
||||
"title": "{{polygonName}} a été enregistré. Redémarrez Frigate pour appliquer les modifications."
|
||||
}
|
||||
},
|
||||
"point_one": "{{count}} point",
|
||||
"point_many": "{{count}} points",
|
||||
"point_other": "{{count}} points",
|
||||
"add": "Ajouter un masque d'objet",
|
||||
"documentTitle": "Modifier le masque de l'objet - Frigate",
|
||||
"context": "Les masques de filtrage d'objets sont utilisés pour filtrer les faux positifs pour un type d'objet donné en fonction de l'emplacement."
|
||||
},
|
||||
"filter": {
|
||||
"all": "Tous les masques et zones"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"copyCoordinates": "Coordonnées copiées pour {{polyName}} dans le presse-papiers."
|
||||
},
|
||||
"error": {
|
||||
"copyCoordinatesFailed": "Impossible de copier les coordonnées dans le presse-papiers."
|
||||
}
|
||||
}
|
||||
},
|
||||
"motionDetectionTuner": {
|
||||
"title": "Réglage de la détection de mouvement",
|
||||
"desc": {
|
||||
"documentation": "Lisez le guide de réglage de mouvement",
|
||||
"title": "Frigate utilise la détection de mouvement comme première ligne de contrôle pour voir s'il se passe quelque chose dans l'image qui mérite d'être vérifié avec la détection d'objet."
|
||||
},
|
||||
"Threshold": {
|
||||
"title": "Seuil",
|
||||
"desc": "La valeur seuil détermine dans quelle mesure un changement dans la luminance d'un pixel est nécessaire pour être considéré comme un mouvement. <em>Valeur par défaut : 30</em>"
|
||||
},
|
||||
"contourArea": {
|
||||
"title": "Zone de contour",
|
||||
"desc": "La valeur de la zone de contour est utilisée pour déterminer quels groupes de pixels modifiés sont qualifiés de mouvement. <em>Par défaut : 10</em>"
|
||||
},
|
||||
"improveContrast": {
|
||||
"title": "Améliorer le contraste",
|
||||
"desc": "Améliorer le contraste pour les scènes plus sombres. <em>Par défaut : ACTIVÉ</em>"
|
||||
},
|
||||
"toast": {
|
||||
"success": "Les paramètres de mouvement ont été enregistrés."
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"debugging": "Débogage",
|
||||
"objectList": "Liste d'objets",
|
||||
"boundingBoxes": {
|
||||
"title": "Cadres de délimitation",
|
||||
"colors": {
|
||||
"label": "Couleurs du cadre de délimitation d'un objet",
|
||||
"info": "<li>Au démarrage, différentes couleurs seront attribuées à chaque étiquette d'objet</li><li>Une fine ligne bleu foncé indique que l'objet n'est pas détecté à ce moment précis</li><li>Une fine ligne grise indique que l'objet est détecté comme étant stationnaire</li><li>Une ligne épaisse indique que l'objet fait l'objet d'un suivi automatique (lorsqu'il est activé)</li>"
|
||||
},
|
||||
"desc": "Afficher les cadres de délimitation autour des objets suivis"
|
||||
},
|
||||
"timestamp": {
|
||||
"title": "Horodatage",
|
||||
"desc": "Superposer un horodatage sur l'image"
|
||||
},
|
||||
"zones": {
|
||||
"title": "Zones",
|
||||
"desc": "Afficher un aperçu de toutes les zones définies"
|
||||
},
|
||||
"mask": {
|
||||
"title": "Masques de mouvement",
|
||||
"desc": "Afficher les polygones du masque de mouvement"
|
||||
},
|
||||
"motion": {
|
||||
"desc": "Afficher des cadres autour des zones où un mouvement est détecté",
|
||||
"title": "Cadres de mouvement",
|
||||
"tips": "<p className=\"mb-2\"><strong>Cadres de mouvement</strong></p><br><p>Des cadres rouges seront superposées sur les zones de l'image où un mouvement est actuellement détecté</p>"
|
||||
},
|
||||
"regions": {
|
||||
"title": "Régions",
|
||||
"desc": "Afficher une boîte de la région d'intérêt envoyée au détecteur d'objet",
|
||||
"tips": "<p className=\"mb-2\"><strong>Cadres de région</strong></p><br><p>Des cadres verts lumineux seront superposés sur les zones d'intérêt de l'image qui sont envoyées au détecteur d'objets.</p>"
|
||||
},
|
||||
"objectShapeFilterDrawing": {
|
||||
"title": "Dessin de filtre de forme d'objet",
|
||||
"area": "Zone",
|
||||
"desc": "Dessinez un rectangle sur l'image pour afficher les détails de la zone et du rapport",
|
||||
"score": "Score",
|
||||
"tips": "Activez cette option pour dessiner un rectangle sur l'image de la caméra afin d'afficher sa surface et son ratio. Ces valeurs peuvent ensuite être utilisées pour définir les paramètres de filtre de forme d'objet dans votre configuration.",
|
||||
"document": "Lire la documentation ",
|
||||
"ratio": "Ratio"
|
||||
},
|
||||
"noObjects": "Aucun objet",
|
||||
"title": "Debug",
|
||||
"detectorDesc": "Frigate utilise vos détecteurs ({{detectors}}) pour détecter les objets dans le flux vidéo de votre caméra.",
|
||||
"desc": "La vue de débogage affiche en temps réel les objets suivis et leurs statistiques. La liste des objets affiche un résumé différé des objets détectés."
|
||||
},
|
||||
"users": {
|
||||
"title": "Utilisateurs",
|
||||
"management": {
|
||||
"title": "Gestion des utilisateurs",
|
||||
"desc": "Gérez les comptes utilisateurs de cette instance Frigate."
|
||||
},
|
||||
"addUser": "Ajouter un utilisateur",
|
||||
"updatePassword": "Mettre à jour le mot de passe",
|
||||
"toast": {
|
||||
"success": {
|
||||
"roleUpdated": "Rôle mis à jour pour {{user}}",
|
||||
"deleteUser": "L'utilisateur {{user}} a été supprimé avec succès",
|
||||
"createUser": "L'utilisateur {{user}} a été créé avec succès",
|
||||
"updatePassword": "Mot de passe mis à jour avec succès."
|
||||
},
|
||||
"error": {
|
||||
"setPasswordFailed": "Échec à l'enregistrement du mot de passe : {{errorMessage}}",
|
||||
"createUserFailed": "Échec à la création de l'utilisateur : {{errorMessage}}",
|
||||
"deleteUserFailed": "Échec à de la suppression de l'utilisateur : {{errorMessage}}",
|
||||
"roleUpdateFailed": "Échec à la mise à jour du rôle : {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"username": "Nom d'utilisateur",
|
||||
"actions": "Actions",
|
||||
"noUsers": "Aucun utilisateur trouvé.",
|
||||
"changeRole": "Changer le rôle d'utilisateur",
|
||||
"password": "Mot de passe",
|
||||
"deleteUser": "Supprimer un utilisateur",
|
||||
"role": "Rôle"
|
||||
},
|
||||
"dialog": {
|
||||
"form": {
|
||||
"user": {
|
||||
"title": "Nom d'utilisateur",
|
||||
"placeholder": "Entrez le nom d'utilisateur",
|
||||
"desc": "Seules les lettres, les chiffres, les points et les traits de soulignement sont autorisés."
|
||||
},
|
||||
"password": {
|
||||
"strength": {
|
||||
"weak": "Faible",
|
||||
"title": "Sécurité du mot de passe : ",
|
||||
"medium": "Moyen",
|
||||
"strong": "Fort",
|
||||
"veryStrong": "Très fort"
|
||||
},
|
||||
"match": "Les mots de passe correspondent",
|
||||
"notMatch": "Les mots de passe ne correspondent pas",
|
||||
"placeholder": "Entrez le mot de passe",
|
||||
"title": "Mot de passe",
|
||||
"confirm": {
|
||||
"title": "Confirmez le mot de passe",
|
||||
"placeholder": "Confirmez le mot de passe"
|
||||
}
|
||||
},
|
||||
"newPassword": {
|
||||
"title": "Nouveau mot de passe",
|
||||
"placeholder": "Entrez le nouveau mot de passe",
|
||||
"confirm": {
|
||||
"placeholder": "Ré-entrez le nouveau mot de passe"
|
||||
}
|
||||
},
|
||||
"usernameIsRequired": "Le nom d'utilisateur est requis"
|
||||
},
|
||||
"deleteUser": {
|
||||
"title": "Supprimer un utilisateur",
|
||||
"desc": "Cette action est irréversible. Elle supprimera définitivement le compte utilisateur et toutes les données associées.",
|
||||
"warn": "Êtes-vous sûr de vouloir supprimer <span className=\"font-bold\">{{username}}</span> ?"
|
||||
},
|
||||
"passwordSetting": {
|
||||
"updatePassword": "Mettre à jour le mot de passe pour {{username}}",
|
||||
"setPassword": "Définir le mot de passe",
|
||||
"desc": "Créez un mot de passe fort pour sécuriser ce compte."
|
||||
},
|
||||
"changeRole": {
|
||||
"title": "Changer le rôle de l'utilisateur",
|
||||
"desc": "Mettre à jour les autorisations pour <span className=\"font-medium\">{{username}}</span>",
|
||||
"roleInfo": "<p>Sélectionnez le rôle approprié pour cet utilisateur :</p><ul className=\"mt-2 space-y-1 pl-5\"><li> • <span className=\"font-medium\">Administrateur :</span> Accès complet à toutes les fonctionnalités. </li><li> • <span className=\"font-medium\">Observateur :</span> Limité aux tableaux de bord en direct, à la révision, à l'exploration et aux exportations uniquement.</li></ul>"
|
||||
},
|
||||
"createUser": {
|
||||
"title": "Créer un nouvel utilisateur",
|
||||
"desc": "Ajoutez un nouveau compte utilisateur et spécifiez un rôle pour accéder aux zones de l'interface utilisateur Frigate.",
|
||||
"usernameOnlyInclude": "Le nom d'utilisateur ne peut inclure que des lettres, des chiffres, . ou _"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,132 @@
|
||||
"timestamp": "Horodatage",
|
||||
"tag": "Étiqueter",
|
||||
"message": "Message"
|
||||
},
|
||||
"tips": "Les logs sont diffusés en continu depuis le serveur",
|
||||
"toast": {
|
||||
"error": {
|
||||
"fetchingLogsFailed": "Erreur lors de la récupération des logs : {{errorMessage}}",
|
||||
"whileStreamingLogs": "Erreur lors de la diffusion des logs : {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
"title": "Général",
|
||||
"detector": {
|
||||
"title": "Détecteurs",
|
||||
"inferenceSpeed": "Vitesse d'inférence du détecteur",
|
||||
"cpuUsage": "Utilisation CPU Détecteur",
|
||||
"memoryUsage": "Utilisation Mémoire Détecteur"
|
||||
},
|
||||
"hardwareInfo": {
|
||||
"title": "Info Matériel",
|
||||
"gpuUsage": "Utilisation GPU",
|
||||
"gpuMemory": "Mémoire GPU",
|
||||
"gpuEncoder": "Encodeur GPU",
|
||||
"gpuDecoder": "Décodeur GPU",
|
||||
"gpuInfo": {
|
||||
"vainfoOutput": {
|
||||
"title": "Sortie Vainfo",
|
||||
"returnCode": "Code de retour : {{code}}",
|
||||
"processOutput": "Tâche de Sortie :",
|
||||
"processError": "Erreur de tâche :"
|
||||
},
|
||||
"nvidiaSMIOutput": {
|
||||
"title": "Sortie Nvidia SMI",
|
||||
"name": "Nom : {{name}}",
|
||||
"cudaComputerCapability": "Capacité de calcul CUDA : {{cuda_compute}}",
|
||||
"vbios": "Informations VBios : {{vbios}}",
|
||||
"driver": "Pilote : {{driver}}"
|
||||
},
|
||||
"copyInfo": {
|
||||
"label": "Information de copie du GPU"
|
||||
},
|
||||
"toast": {
|
||||
"success": "Informations GPU copiées dans le presse-papier"
|
||||
},
|
||||
"closeInfo": {
|
||||
"label": "Information de fermeture du GPU"
|
||||
}
|
||||
}
|
||||
},
|
||||
"otherProcesses": {
|
||||
"title": "Autres tâches",
|
||||
"processCpuUsage": "Utilisation CPU des tâches",
|
||||
"processMemoryUsage": "Utilisation mémoire des tâches"
|
||||
}
|
||||
},
|
||||
"storage": {
|
||||
"title": "Stockage",
|
||||
"recordings": {
|
||||
"title": "Enregistrements",
|
||||
"earliestRecording": "Enregistrement le plus ancien :",
|
||||
"tips": "Cette valeur corresponds au total du stockage utilisé par les enregistrements dans la base de données Frigate. Frigate ne suit pas l'utilisation du stockage pour tous les fichiers sur votre disque."
|
||||
},
|
||||
"cameraStorage": {
|
||||
"title": "Stockage de la caméra",
|
||||
"bandwidth": "Bande passante",
|
||||
"unused": {
|
||||
"title": "Inutilisé",
|
||||
"tips": "Cette valeur ne représente peut-être pas précisément l'espace libre et utilisable par Frigate si vous avez d'autres fichiers stockés sur ce disque en plus des enregistrements Frigate. Frigate ne suit pas l'utilisation du stockage en dehors de ses propres enregistrements."
|
||||
},
|
||||
"percentageOfTotalUsed": "Pourcentage du Total",
|
||||
"storageUsed": "Stockage",
|
||||
"camera": "Caméra",
|
||||
"unusedStorageInformation": "Information sur le stockage non utilisé"
|
||||
},
|
||||
"overview": "Prévisualisation"
|
||||
},
|
||||
"cameras": {
|
||||
"title": "Caméras",
|
||||
"info": {
|
||||
"cameraProbeInfo": "{{camera}} Information récupérée depuis la Caméra",
|
||||
"fetching": "En cours de récupération des données de la Caméra",
|
||||
"stream": "Flux {{idx}}",
|
||||
"fps": "Images par seconde :",
|
||||
"unknown": "Inconnu",
|
||||
"audio": "Audio :",
|
||||
"tips": {
|
||||
"title": "Information récupérée depuis la Caméra"
|
||||
},
|
||||
"streamDataFromFFPROBE": "Le flux de données est obtenu par <code>ffprobe</code>.",
|
||||
"resolution": "Résolution :",
|
||||
"error": "Erreur : {{error}}",
|
||||
"codec": "Codec :",
|
||||
"video": "Vidéo :"
|
||||
},
|
||||
"framesAndDetections": "Images / Détections",
|
||||
"label": {
|
||||
"camera": "caméra",
|
||||
"detect": "Détecter",
|
||||
"skipped": "ignoré",
|
||||
"ffmpeg": "ffmpeg",
|
||||
"capture": "capture"
|
||||
},
|
||||
"overview": "Prévisualisation",
|
||||
"toast": {
|
||||
"success": {
|
||||
"copyToClipboard": "Données récupérées copiées dans le presse-papier."
|
||||
},
|
||||
"error": {
|
||||
"unableToProbeCamera": "Impossible de récupérer des infos depuis la caméra : {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"lastRefreshed": "Dernier rafraichissement : ",
|
||||
"stats": {
|
||||
"ffmpegHighCpuUsage": "{{camera}} a un taux élevé d'utilisation CPU par FFMPEG ({{ffmpegAvg}}%)",
|
||||
"detectHighCpuUsage": "{{camera}} a un taux élevé d'utilisation CPU ({{detectAvg}}%)",
|
||||
"healthy": "Le système est sain",
|
||||
"reindexingEmbeddings": "Réindexation des données complémentaires ({{processed}}% complété)"
|
||||
},
|
||||
"enrichments": {
|
||||
"title": "Améliorations",
|
||||
"infPerSecond": "Inférences par seconde",
|
||||
"embeddings": {
|
||||
"face_embedding_speed": "Vitesse de capture des données complémentaires de visage",
|
||||
"text_embedding_speed": "Vitesse de capture des données complémentaire de texte",
|
||||
"image_embedding_speed": "Vitesse de capture des données complémentaires à l'image",
|
||||
"plate_recognition_speed": "Vitesse de reconnaissance des plaques d'immatriculation"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user