mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-27 02:28:22 +03:00
Compare commits
58 Commits
a2a0a5218d
...
391bd0ca61
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
391bd0ca61 | ||
|
|
947ddfa542 | ||
|
|
9eb037c369 | ||
|
|
a0b8271532 | ||
|
|
5254bfd00e | ||
|
|
e75b8ca6cc | ||
|
|
29ffcea851 | ||
|
|
925cb049ce | ||
|
|
c575e6b38f | ||
|
|
d568207b1e | ||
|
|
29d071f676 | ||
|
|
e5494bbb0f | ||
|
|
8d010c52e0 | ||
|
|
39c878b871 | ||
|
|
c0c64feae3 | ||
|
|
f0ecc5b0da | ||
|
|
a8ea77bebc | ||
|
|
b9a35dc873 | ||
|
|
dbf997692f | ||
|
|
f6f4c67372 | ||
|
|
36efcf938d | ||
|
|
665fc76397 | ||
|
|
00fd1ccee3 | ||
|
|
9d3bc82e87 | ||
|
|
983ee58b40 | ||
|
|
34b5e3c5b0 | ||
|
|
4c5124e615 | ||
|
|
d8d5f1c0b2 | ||
|
|
7f061ba5b1 | ||
|
|
bfb275fc47 | ||
|
|
d838d13d3a | ||
|
|
f79e07da9e | ||
|
|
6291107532 | ||
|
|
acbec0bd59 | ||
|
|
fe22d994bc | ||
|
|
5de553ca06 | ||
|
|
680361c35c | ||
|
|
e6405a2566 | ||
|
|
5f75289c5b | ||
|
|
0723380d4a | ||
|
|
a2eabdbeef | ||
|
|
ec49ccf83a | ||
|
|
6007ec82b5 | ||
|
|
0a6c440f24 | ||
|
|
aa5085caa0 | ||
|
|
3dd584b5ef | ||
|
|
e1ae32640c | ||
|
|
68fe7884b7 | ||
|
|
7b2c75be49 | ||
|
|
b405877587 | ||
|
|
d88c0e260e | ||
|
|
90ad5213c7 | ||
|
|
6c47e837e3 | ||
|
|
5cec1be91d | ||
|
|
e8b9225175 | ||
|
|
119137c4fe | ||
|
|
9cbd80d981 | ||
|
|
3d7ec502cb |
16
.github/workflows/ci.yml
vendored
16
.github/workflows/ci.yml
vendored
@ -32,7 +32,7 @@ jobs:
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push amd64 standard build
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v7
|
||||
with:
|
||||
context: .
|
||||
file: docker/main/Dockerfile
|
||||
@ -56,7 +56,7 @@ jobs:
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push arm64 standard build
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v7
|
||||
with:
|
||||
context: .
|
||||
file: docker/main/Dockerfile
|
||||
@ -67,7 +67,7 @@ jobs:
|
||||
${{ steps.setup.outputs.image-name }}-standard-arm64
|
||||
cache-from: type=registry,ref=${{ steps.setup.outputs.cache-name }}-arm64
|
||||
- name: Build and push RPi build
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v7
|
||||
with:
|
||||
source: .
|
||||
push: true
|
||||
@ -96,7 +96,7 @@ jobs:
|
||||
BASE_IMAGE: nvcr.io/nvidia/tensorrt:23.12-py3-igpu
|
||||
SLIM_BASE: nvcr.io/nvidia/tensorrt:23.12-py3-igpu
|
||||
TRT_BASE: nvcr.io/nvidia/tensorrt:23.12-py3-igpu
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v7
|
||||
with:
|
||||
source: .
|
||||
push: true
|
||||
@ -124,7 +124,7 @@ jobs:
|
||||
- name: Build and push TensorRT (x86 GPU)
|
||||
env:
|
||||
COMPUTE_LEVEL: "50 60 70 80 90"
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v7
|
||||
with:
|
||||
source: .
|
||||
push: true
|
||||
@ -137,7 +137,7 @@ jobs:
|
||||
- name: AMD/ROCm general build
|
||||
env:
|
||||
HSA_OVERRIDE: 0
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v7
|
||||
with:
|
||||
source: .
|
||||
push: true
|
||||
@ -163,7 +163,7 @@ jobs:
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push Rockchip build
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v7
|
||||
with:
|
||||
source: .
|
||||
push: true
|
||||
@ -188,7 +188,7 @@ jobs:
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build and push Synaptics build
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v7
|
||||
with:
|
||||
source: .
|
||||
push: true
|
||||
|
||||
@ -266,6 +266,12 @@ RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \
|
||||
RUN --mount=type=bind,from=wheels,source=/wheels,target=/deps/wheels \
|
||||
pip3 install -U /deps/wheels/*.whl
|
||||
|
||||
# Install Axera Engine
|
||||
RUN pip3 install https://github.com/AXERA-TECH/pyaxengine/releases/download/0.1.3-frigate/axengine-0.1.3-py3-none-any.whl
|
||||
|
||||
ENV PATH="${PATH}:/usr/bin/axcl"
|
||||
ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib/axcl"
|
||||
|
||||
# Install MemryX runtime (requires libgomp (OpenMP) in the final docker image)
|
||||
RUN --mount=type=bind,source=docker/main/install_memryx.sh,target=/deps/install_memryx.sh \
|
||||
bash -c "bash /deps/install_memryx.sh"
|
||||
|
||||
@ -73,6 +73,7 @@ cd /tmp/nginx
|
||||
--with-file-aio \
|
||||
--with-http_sub_module \
|
||||
--with-http_ssl_module \
|
||||
--with-http_v2_module \
|
||||
--with-http_auth_request_module \
|
||||
--with-http_realip_module \
|
||||
--with-threads \
|
||||
|
||||
@ -105,9 +105,9 @@ if [[ "${TARGETARCH}" == "amd64" ]]; then
|
||||
# install legacy and standard intel icd and level-zero-gpu
|
||||
# see https://github.com/intel/compute-runtime/blob/master/LEGACY_PLATFORMS.md for more info
|
||||
# needed core package
|
||||
wget https://github.com/intel/compute-runtime/releases/download/24.52.32224.5/libigdgmm12_22.5.5_amd64.deb
|
||||
dpkg -i libigdgmm12_22.5.5_amd64.deb
|
||||
rm libigdgmm12_22.5.5_amd64.deb
|
||||
wget https://github.com/intel/compute-runtime/releases/download/25.13.33276.19/libigdgmm12_22.7.0_amd64.deb
|
||||
dpkg -i libigdgmm12_22.7.0_amd64.deb
|
||||
rm libigdgmm12_22.7.0_amd64.deb
|
||||
|
||||
# legacy packages
|
||||
wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.36/intel-opencl-icd-legacy1_24.35.30872.36_amd64.deb
|
||||
@ -115,18 +115,19 @@ if [[ "${TARGETARCH}" == "amd64" ]]; then
|
||||
wget https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.24/intel-igc-opencl_1.0.17537.24_amd64.deb
|
||||
wget https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.24/intel-igc-core_1.0.17537.24_amd64.deb
|
||||
# standard packages
|
||||
wget https://github.com/intel/compute-runtime/releases/download/24.52.32224.5/intel-opencl-icd_24.52.32224.5_amd64.deb
|
||||
wget https://github.com/intel/compute-runtime/releases/download/24.52.32224.5/intel-level-zero-gpu_1.6.32224.5_amd64.deb
|
||||
wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.5.6/intel-igc-opencl-2_2.5.6+18417_amd64.deb
|
||||
wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.5.6/intel-igc-core-2_2.5.6+18417_amd64.deb
|
||||
wget https://github.com/intel/compute-runtime/releases/download/25.13.33276.19/intel-opencl-icd_25.13.33276.19_amd64.deb
|
||||
wget https://github.com/intel/compute-runtime/releases/download/25.13.33276.19/intel-level-zero-gpu_1.6.33276.19_amd64.deb
|
||||
wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.10.10/intel-igc-opencl-2_2.10.10+18926_amd64.deb
|
||||
wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.10.10/intel-igc-core-2_2.10.10+18926_amd64.deb
|
||||
# npu packages
|
||||
wget https://github.com/oneapi-src/level-zero/releases/download/v1.21.9/level-zero_1.21.9+u22.04_amd64.deb
|
||||
wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-driver-compiler-npu_1.17.0.20250508-14912879441_ubuntu22.04_amd64.deb
|
||||
wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-fw-npu_1.17.0.20250508-14912879441_ubuntu22.04_amd64.deb
|
||||
wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-level-zero-npu_1.17.0.20250508-14912879441_ubuntu22.04_amd64.deb
|
||||
wget https://github.com/oneapi-src/level-zero/releases/download/v1.28.2/level-zero_1.28.2+u22.04_amd64.deb
|
||||
wget https://github.com/intel/linux-npu-driver/releases/download/v1.19.0/intel-driver-compiler-npu_1.19.0.20250707-16111289554_ubuntu22.04_amd64.deb
|
||||
wget https://github.com/intel/linux-npu-driver/releases/download/v1.19.0/intel-fw-npu_1.19.0.20250707-16111289554_ubuntu22.04_amd64.deb
|
||||
wget https://github.com/intel/linux-npu-driver/releases/download/v1.19.0/intel-level-zero-npu_1.19.0.20250707-16111289554_ubuntu22.04_amd64.deb
|
||||
|
||||
dpkg -i *.deb
|
||||
rm *.deb
|
||||
apt-get -qq install -f -y
|
||||
fi
|
||||
|
||||
if [[ "${TARGETARCH}" == "arm64" ]]; then
|
||||
|
||||
@ -63,6 +63,9 @@ http {
|
||||
server {
|
||||
include listen.conf;
|
||||
|
||||
# enable HTTP/2 for TLS connections to eliminate browser 6-connection limit
|
||||
http2 on;
|
||||
|
||||
# vod settings
|
||||
vod_base_url '';
|
||||
vod_segments_base_url '';
|
||||
|
||||
@ -49,6 +49,11 @@ Frigate supports multiple different detectors that work on different types of ha
|
||||
|
||||
- [Synaptics](#synaptics): synap models can run on Synaptics devices(e.g astra machina) with included NPUs.
|
||||
|
||||
**AXERA** <CommunityBadge />
|
||||
|
||||
- [AXEngine](#axera): axmodels can run on AXERA AI acceleration.
|
||||
|
||||
|
||||
**For Testing**
|
||||
|
||||
- [CPU Detector (not recommended for actual use](#cpu-detector-not-recommended): Use a CPU to run tflite model, this is not recommended and in most cases OpenVINO can be used in CPU mode with better results.
|
||||
@ -1478,6 +1483,41 @@ model:
|
||||
input_pixel_format: rgb/bgr # look at the model.json to figure out which to put here
|
||||
```
|
||||
|
||||
## AXERA
|
||||
|
||||
Hardware accelerated object detection is supported on the following SoCs:
|
||||
|
||||
- AX650N
|
||||
- AX8850N
|
||||
|
||||
This implementation uses the [AXera Pulsar2 Toolchain](https://huggingface.co/AXERA-TECH/Pulsar2).
|
||||
|
||||
See the [installation docs](../frigate/installation.md#axera) for information on configuring the AXEngine hardware.
|
||||
|
||||
### Configuration
|
||||
|
||||
When configuring the AXEngine detector, you have to specify the model name.
|
||||
|
||||
#### yolov9
|
||||
|
||||
A yolov9 model is provided in the container at `/axmodels` and is used by this detector type by default.
|
||||
|
||||
Use the model configuration shown below when using the axengine detector with the default axmodel:
|
||||
|
||||
```yaml
|
||||
detectors:
|
||||
axengine:
|
||||
type: axengine
|
||||
|
||||
model:
|
||||
path: frigate-yolov9-tiny
|
||||
model_type: yolo-generic
|
||||
width: 320
|
||||
height: 320
|
||||
tensor_format: bgr
|
||||
labelmap_path: /labelmap/coco-80.txt
|
||||
```
|
||||
|
||||
# Models
|
||||
|
||||
Some model types are not included in Frigate by default.
|
||||
@ -1571,12 +1611,12 @@ YOLOv9 model can be exported as ONNX using the command below. You can copy and p
|
||||
```sh
|
||||
docker build . --build-arg MODEL_SIZE=t --build-arg IMG_SIZE=320 --output . -f- <<'EOF'
|
||||
FROM python:3.11 AS build
|
||||
RUN apt-get update && apt-get install --no-install-recommends -y libgl1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=ghcr.io/astral-sh/uv:0.8.0 /uv /bin/
|
||||
RUN apt-get update && apt-get install --no-install-recommends -y cmake libgl1 && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=ghcr.io/astral-sh/uv:0.10.4 /uv /bin/
|
||||
WORKDIR /yolov9
|
||||
ADD https://github.com/WongKinYiu/yolov9.git .
|
||||
RUN uv pip install --system -r requirements.txt
|
||||
RUN uv pip install --system onnx==1.18.0 onnxruntime onnx-simplifier>=0.4.1 onnxscript
|
||||
RUN uv pip install --system onnx==1.18.0 onnxruntime onnx-simplifier==0.4.* onnxscript
|
||||
ARG MODEL_SIZE
|
||||
ARG IMG_SIZE
|
||||
ADD https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-${MODEL_SIZE}-converted.pt yolov9-${MODEL_SIZE}.pt
|
||||
|
||||
@ -103,6 +103,10 @@ Frigate supports multiple different detectors that work on different types of ha
|
||||
|
||||
- [Synaptics](#synaptics): synap models can run on Synaptics devices(e.g astra machina) with included NPUs to provide efficient object detection.
|
||||
|
||||
**AXERA** <CommunityBadge />
|
||||
|
||||
- [AXEngine](#axera): axera models can run on AXERA NPUs via AXEngine, delivering highly efficient object detection.
|
||||
|
||||
:::
|
||||
|
||||
### Hailo-8
|
||||
@ -288,6 +292,14 @@ The inference time of a rk3588 with all 3 cores enabled is typically 25-30 ms fo
|
||||
| ssd mobilenet | ~ 25 ms |
|
||||
| yolov5m | ~ 118 ms |
|
||||
|
||||
### AXERA
|
||||
|
||||
- **AXEngine** Default model is **yolov9**
|
||||
|
||||
| Name | AXERA AX650N/AX8850N Inference Time |
|
||||
| ---------------- | ----------------------------------- |
|
||||
| yolov9-tiny | ~ 4 ms |
|
||||
|
||||
## What does Frigate use the CPU for and what does it use a detector for? (ELI5 Version)
|
||||
|
||||
This is taken from a [user question on reddit](https://www.reddit.com/r/homeassistant/comments/q8mgau/comment/hgqbxh5/?utm_source=share&utm_medium=web2x&context=3). Modified slightly for clarity.
|
||||
@ -308,4 +320,4 @@ Basically - When you increase the resolution and/or the frame rate of the stream
|
||||
|
||||
YES! The Coral does not help with decoding video streams.
|
||||
|
||||
Decompressing video streams takes a significant amount of CPU power. Video compression uses key frames (also known as I-frames) to send a full frame in the video stream. The following frames only include the difference from the key frame, and the CPU has to compile each frame by merging the differences with the key frame. [More detailed explanation](https://support.video.ibm.com/hc/en-us/articles/18106203580316-Keyframes-InterFrame-Video-Compression). Higher resolutions and frame rates mean more processing power is needed to decode the video stream, so try and set them on the camera to avoid unnecessary decoding work.
|
||||
Decompressing video streams takes a significant amount of CPU power. Video compression uses key frames (also known as I-frames) to send a full frame in the video stream. The following frames only include the difference from the key frame, and the CPU has to compile each frame by merging the differences with the key frame. [More detailed explanation](https://support.video.ibm.com/hc/en-us/articles/18106203580316-Keyframes-InterFrame-Video-Compression). Higher resolutions and frame rates mean more processing power is needed to decode the video stream, so try and set them on the camera to avoid unnecessary decoding work.
|
||||
@ -439,6 +439,39 @@ or add these options to your `docker run` command:
|
||||
|
||||
Next, you should configure [hardware object detection](/configuration/object_detectors#synaptics) and [hardware video processing](/configuration/hardware_acceleration_video#synaptics).
|
||||
|
||||
### AXERA
|
||||
|
||||
AXERA accelerators are available in an M.2 form factor, compatible with both Raspberry Pi and Orange Pi. This form factor has also been successfully tested on x86 platforms, making it a versatile choice for various computing environments.
|
||||
|
||||
#### Installation
|
||||
|
||||
Using AXERA accelerators requires the installation of the AXCL driver. We provide a convenient Linux script to complete this installation.
|
||||
|
||||
Follow these steps for installation:
|
||||
|
||||
1. Copy or download [this script](https://github.com/ivanshi1108/assets/releases/download/v0.16.2/user_installation.sh).
|
||||
2. Ensure it has execution permissions with `sudo chmod +x user_installation.sh`
|
||||
3. Run the script with `./user_installation.sh`
|
||||
|
||||
#### Setup
|
||||
|
||||
To set up Frigate, follow the default installation instructions, for example: `ghcr.io/blakeblackshear/frigate:stable`
|
||||
|
||||
Next, grant Docker permissions to access your hardware by adding the following lines to your `docker-compose.yml` file:
|
||||
|
||||
```yaml
|
||||
devices:
|
||||
- /dev/axcl_host
|
||||
- /dev/ax_mmb_dev
|
||||
- /dev/msg_userdev
|
||||
```
|
||||
|
||||
If you are using `docker run`, add this option to your command `--device /dev/axcl_host --device /dev/ax_mmb_dev --device /dev/msg_userdev`
|
||||
|
||||
#### Configuration
|
||||
|
||||
Finally, configure [hardware object detection](/configuration/object_detectors#axera) to complete the setup.
|
||||
|
||||
## Docker
|
||||
|
||||
Running through Docker with Docker Compose is the recommended install method.
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
"""Recording APIs."""
|
||||
|
||||
import datetime as dt
|
||||
import logging
|
||||
from datetime import datetime, timedelta
|
||||
from functools import reduce
|
||||
@ -97,45 +98,22 @@ def all_recordings_summary(
|
||||
days: dict[str, bool] = {}
|
||||
|
||||
for period_start, period_end, period_offset in dst_periods:
|
||||
hours_offset = int(period_offset / 60 / 60)
|
||||
minutes_offset = int(period_offset / 60 - hours_offset * 60)
|
||||
period_hour_modifier = f"{hours_offset} hour"
|
||||
period_minute_modifier = f"{minutes_offset} minute"
|
||||
day_expr = ((Recordings.start_time + period_offset) / 86400).cast("int")
|
||||
|
||||
period_query = (
|
||||
Recordings.select(
|
||||
fn.strftime(
|
||||
"%Y-%m-%d",
|
||||
fn.datetime(
|
||||
Recordings.start_time,
|
||||
"unixepoch",
|
||||
period_hour_modifier,
|
||||
period_minute_modifier,
|
||||
),
|
||||
).alias("day")
|
||||
)
|
||||
Recordings.select(day_expr.alias("day_idx"))
|
||||
.where(
|
||||
(Recordings.camera << camera_list)
|
||||
& (Recordings.end_time >= period_start)
|
||||
& (Recordings.start_time <= period_end)
|
||||
)
|
||||
.group_by(
|
||||
fn.strftime(
|
||||
"%Y-%m-%d",
|
||||
fn.datetime(
|
||||
Recordings.start_time,
|
||||
"unixepoch",
|
||||
period_hour_modifier,
|
||||
period_minute_modifier,
|
||||
),
|
||||
)
|
||||
)
|
||||
.order_by(Recordings.start_time.desc())
|
||||
.distinct()
|
||||
.namedtuples()
|
||||
)
|
||||
|
||||
for g in period_query:
|
||||
days[g.day] = True
|
||||
day_str = (dt.date(1970, 1, 1) + dt.timedelta(days=g.day_idx)).isoformat()
|
||||
days[day_str] = True
|
||||
|
||||
return JSONResponse(content=dict(sorted(days.items())))
|
||||
|
||||
|
||||
@ -4,20 +4,23 @@ from pydantic import BaseModel, ConfigDict, Field
|
||||
class ReviewMetadata(BaseModel):
|
||||
model_config = ConfigDict(extra="ignore", protected_namespaces=())
|
||||
|
||||
title: str = Field(description="A concise title for the activity.")
|
||||
title: str = Field(
|
||||
description="A short title characterizing what took place and where, under 10 words."
|
||||
)
|
||||
scene: str = Field(
|
||||
description="A comprehensive description of the setting and entities, including relevant context and plausible inferences if supported by visual evidence."
|
||||
description="A chronological narrative of what happens from start to finish."
|
||||
)
|
||||
shortSummary: str = Field(
|
||||
description="A brief 2-sentence summary of the scene, suitable for notifications. Should capture the key activity and context without full detail."
|
||||
description="A brief 2-sentence summary of the scene, suitable for notifications."
|
||||
)
|
||||
confidence: float = Field(
|
||||
description="A float between 0 and 1 representing your overall confidence in this analysis."
|
||||
ge=0.0,
|
||||
description="Confidence in the analysis, from 0 to 1.",
|
||||
)
|
||||
potential_threat_level: int = Field(
|
||||
ge=0,
|
||||
le=3,
|
||||
description="An integer representing the potential threat level (1-3). 1: Minor anomaly. 2: Moderate concern. 3: High threat. Only include this field if a clear security concern is observable; otherwise, omit it.",
|
||||
le=2,
|
||||
description="Threat level: 0 = normal, 1 = suspicious, 2 = critical threat.",
|
||||
)
|
||||
other_concerns: list[str] | None = Field(
|
||||
default=None,
|
||||
|
||||
86
frigate/detectors/plugins/axengine.py
Normal file
86
frigate/detectors/plugins/axengine.py
Normal file
@ -0,0 +1,86 @@
|
||||
import logging
|
||||
import os.path
|
||||
import re
|
||||
import urllib.request
|
||||
from typing import Literal
|
||||
|
||||
import axengine as axe
|
||||
|
||||
from frigate.const import MODEL_CACHE_DIR
|
||||
from frigate.detectors.detection_api import DetectionApi
|
||||
from frigate.detectors.detector_config import BaseDetectorConfig, ModelTypeEnum
|
||||
from frigate.util.model import post_process_yolo
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
DETECTOR_KEY = "axengine"
|
||||
|
||||
supported_models = {
|
||||
ModelTypeEnum.yologeneric: "frigate-yolov9-.*$",
|
||||
}
|
||||
|
||||
model_cache_dir = os.path.join(MODEL_CACHE_DIR, "axengine_cache/")
|
||||
|
||||
|
||||
class AxengineDetectorConfig(BaseDetectorConfig):
|
||||
type: Literal[DETECTOR_KEY]
|
||||
|
||||
|
||||
class Axengine(DetectionApi):
|
||||
type_key = DETECTOR_KEY
|
||||
|
||||
def __init__(self, config: AxengineDetectorConfig):
|
||||
logger.info("__init__ axengine")
|
||||
super().__init__(config)
|
||||
self.height = config.model.height
|
||||
self.width = config.model.width
|
||||
model_path = config.model.path or "frigate-yolov9-tiny"
|
||||
model_props = self.parse_model_input(model_path)
|
||||
self.session = axe.InferenceSession(model_props["path"])
|
||||
|
||||
def __del__(self):
|
||||
pass
|
||||
|
||||
def parse_model_input(self, model_path):
|
||||
model_props = {}
|
||||
model_props["preset"] = True
|
||||
|
||||
model_matched = False
|
||||
|
||||
for model_type, pattern in supported_models.items():
|
||||
if re.match(pattern, model_path):
|
||||
model_matched = True
|
||||
model_props["model_type"] = model_type
|
||||
|
||||
if model_matched:
|
||||
model_props["filename"] = model_path + ".axmodel"
|
||||
model_props["path"] = model_cache_dir + model_props["filename"]
|
||||
|
||||
if not os.path.isfile(model_props["path"]):
|
||||
self.download_model(model_props["filename"])
|
||||
else:
|
||||
supported_models_str = ", ".join(model[1:-1] for model in supported_models)
|
||||
raise Exception(
|
||||
f"Model {model_path} is unsupported. Provide your own model or choose one of the following: {supported_models_str}"
|
||||
)
|
||||
return model_props
|
||||
|
||||
def download_model(self, filename):
|
||||
if not os.path.isdir(model_cache_dir):
|
||||
os.mkdir(model_cache_dir)
|
||||
|
||||
HF_ENDPOINT = os.environ.get("HF_ENDPOINT", "https://huggingface.co")
|
||||
urllib.request.urlretrieve(
|
||||
f"{HF_ENDPOINT}/AXERA-TECH/frigate-resource/resolve/axmodel/{filename}",
|
||||
model_cache_dir + filename,
|
||||
)
|
||||
|
||||
def detect_raw(self, tensor_input):
|
||||
results = None
|
||||
results = self.session.run(None, {"images": tensor_input})
|
||||
if self.detector_config.model.model_type == ModelTypeEnum.yologeneric:
|
||||
return post_process_yolo(results, self.width, self.height)
|
||||
else:
|
||||
raise ValueError(
|
||||
f'Model type "{self.detector_config.model.model_type}" is currently not supported.'
|
||||
)
|
||||
@ -89,12 +89,7 @@ Your task is to analyze a sequence of images taken in chronological order from a
|
||||
|
||||
## Task Instructions
|
||||
|
||||
Your task is to provide a clear, accurate description of the scene that:
|
||||
1. States exactly what is happening based on observable actions and movements.
|
||||
2. Evaluates the activity against the Normal and Suspicious Activity Indicators above.
|
||||
3. Assigns a potential_threat_level (0, 1, or 2) based on the threat level indicators defined above, applying them consistently.
|
||||
|
||||
**Use the activity patterns above as guidance to calibrate your assessment. Match the activity against both normal and suspicious indicators, then use your judgment based on the complete context.**
|
||||
Describe the scene based on observable actions and movements, evaluate the activity against the Activity Indicators above, and assign a potential_threat_level (0, 1, or 2) by applying the threat level indicators consistently.
|
||||
|
||||
## Analysis Guidelines
|
||||
|
||||
@ -108,14 +103,12 @@ When forming your description:
|
||||
- **Consider duration as a primary factor**: Apply the duration thresholds defined in the activity patterns above. Brief sequences during normal hours with apparent purpose typically indicate normal activity unless explicit suspicious actions are visible.
|
||||
- **Weigh all evidence holistically**: Match the activity against the normal and suspicious patterns defined above, then evaluate based on the complete context (zone, objects, time, actions, duration). Apply the threat level indicators consistently. Use your judgment for edge cases.
|
||||
|
||||
## Response Format
|
||||
## Response Field Guidelines
|
||||
|
||||
Your response MUST be a flat JSON object with:
|
||||
- `scene` (string): A narrative description of what happens across the sequence from start to finish, in chronological order. Start by describing how the sequence begins, then describe the progression of events. **Describe all significant movements and actions in the order they occur.** For example, if a vehicle arrives and then a person exits, describe both actions sequentially. **Only describe actions you can actually observe happening in the frames provided.** Do not infer or assume actions that aren't visible (e.g., if you see someone walking but never see them sit, don't say they sat down). Include setting, detected objects, and their observable actions. Avoid speculation or filling in assumed behaviors. Your description should align with and support the threat level you assign.
|
||||
- `title` (string): A concise, grammatically complete title in the format "[Subject] [action verb] [context]" that matches your scene description. Use names from "Objects in Scene" when you visually observe them.
|
||||
- `shortSummary` (string): A brief 2-sentence summary of the scene, suitable for notifications. Should capture the key activity and context without full detail. This should be a condensed version of the scene description above.
|
||||
- `confidence` (float): 0-1 confidence in your analysis. Higher confidence when objects/actions are clearly visible and context is unambiguous. Lower confidence when the sequence is unclear, objects are partially obscured, or context is ambiguous.
|
||||
- `potential_threat_level` (integer): 0, 1, or 2 as defined in "Normal Activity Patterns for This Property" above. Your threat level must be consistent with your scene description and the guidance above.
|
||||
Respond with a JSON object matching the provided schema. Field-specific guidance:
|
||||
- `scene`: Describe how the sequence begins, then the progression of events — all significant movements and actions in order. For example, if a vehicle arrives and then a person exits, describe both sequentially. Your description should align with and support the threat level you assign.
|
||||
- `title`: Characterize **what took place and where** — interpret the overall purpose or outcome, do not simply compress the scene description into fewer words. Include the relevant location (zone, area, or entry point). Always include subject names from "Objects in Scene" — do not replace named subjects with generic terms. No editorial qualifiers like "routine" or "suspicious."
|
||||
- `potential_threat_level`: Must be consistent with your scene description and the activity patterns above.
|
||||
{get_concern_prompt()}
|
||||
|
||||
## Sequence Details
|
||||
@ -134,10 +127,6 @@ Each line represents a detection state, not necessarily unique individuals. Pare
|
||||
**Note: Unidentified objects (without names) are NOT indicators of suspicious activity—they simply mean the system hasn't identified that object.**
|
||||
{get_objects_list()}
|
||||
|
||||
## Important Notes
|
||||
- Values must be plain strings, floats, or integers — no nested objects, no extra commentary.
|
||||
- Only describe objects from the "Objects in Scene" list above. Do not hallucinate additional objects.
|
||||
- When describing people or vehicles, use the exact names provided.
|
||||
{get_language_prompt()}
|
||||
"""
|
||||
logger.debug(
|
||||
@ -153,7 +142,27 @@ Each line represents a detection state, not necessarily unique individuals. Pare
|
||||
) as f:
|
||||
f.write(context_prompt)
|
||||
|
||||
response = self._send(context_prompt, thumbnails)
|
||||
# Build JSON schema for structured output from ReviewMetadata model
|
||||
schema = ReviewMetadata.model_json_schema()
|
||||
schema.get("properties", {}).pop("time", None)
|
||||
|
||||
if "time" in schema.get("required", []):
|
||||
schema["required"].remove("time")
|
||||
if not concerns:
|
||||
schema.get("properties", {}).pop("other_concerns", None)
|
||||
if "other_concerns" in schema.get("required", []):
|
||||
schema["required"].remove("other_concerns")
|
||||
|
||||
response_format = {
|
||||
"type": "json_schema",
|
||||
"json_schema": {
|
||||
"name": "review_metadata",
|
||||
"strict": True,
|
||||
"schema": schema,
|
||||
},
|
||||
}
|
||||
|
||||
response = self._send(context_prompt, thumbnails, response_format)
|
||||
|
||||
if debug_save and response:
|
||||
with open(
|
||||
@ -172,6 +181,10 @@ Each line represents a detection state, not necessarily unique individuals. Pare
|
||||
try:
|
||||
metadata = ReviewMetadata.model_validate_json(clean_json)
|
||||
|
||||
# Normalize confidence if model returned a percentage (e.g. 85 instead of 0.85)
|
||||
if metadata.confidence > 1.0:
|
||||
metadata.confidence = min(metadata.confidence / 100.0, 1.0)
|
||||
|
||||
# If any verified objects (contain parentheses with name), set to 0
|
||||
if any("(" in obj for obj in review_data["unified_objects"]):
|
||||
metadata.potential_threat_level = 0
|
||||
@ -297,7 +310,12 @@ Guidelines:
|
||||
"""Initialize the client."""
|
||||
return None
|
||||
|
||||
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
|
||||
def _send(
|
||||
self,
|
||||
prompt: str,
|
||||
images: list[bytes],
|
||||
response_format: Optional[dict] = None,
|
||||
) -> Optional[str]:
|
||||
"""Submit a request to the provider."""
|
||||
return None
|
||||
|
||||
|
||||
@ -42,13 +42,18 @@ class OpenAIClient(GenAIClient):
|
||||
azure_endpoint=azure_endpoint,
|
||||
)
|
||||
|
||||
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
|
||||
def _send(
|
||||
self,
|
||||
prompt: str,
|
||||
images: list[bytes],
|
||||
response_format: Optional[dict] = None,
|
||||
) -> Optional[str]:
|
||||
"""Submit a request to Azure OpenAI."""
|
||||
encoded_images = [base64.b64encode(image).decode("utf-8") for image in images]
|
||||
try:
|
||||
result = self.provider.chat.completions.create(
|
||||
model=self.genai_config.model,
|
||||
messages=[
|
||||
request_params = {
|
||||
"model": self.genai_config.model,
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": [{"type": "text", "text": prompt}]
|
||||
@ -64,9 +69,12 @@ class OpenAIClient(GenAIClient):
|
||||
],
|
||||
},
|
||||
],
|
||||
timeout=self.timeout,
|
||||
"timeout": self.timeout,
|
||||
**self.genai_config.runtime_options,
|
||||
)
|
||||
}
|
||||
if response_format:
|
||||
request_params["response_format"] = response_format
|
||||
result = self.provider.chat.completions.create(**request_params)
|
||||
except Exception as e:
|
||||
logger.warning("Azure OpenAI returned an error: %s", str(e))
|
||||
return None
|
||||
|
||||
@ -42,7 +42,12 @@ class GeminiClient(GenAIClient):
|
||||
http_options=types.HttpOptions(**http_options_dict),
|
||||
)
|
||||
|
||||
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
|
||||
def _send(
|
||||
self,
|
||||
prompt: str,
|
||||
images: list[bytes],
|
||||
response_format: Optional[dict] = None,
|
||||
) -> Optional[str]:
|
||||
"""Submit a request to Gemini."""
|
||||
contents = [
|
||||
types.Part.from_bytes(data=img, mime_type="image/jpeg") for img in images
|
||||
@ -52,6 +57,12 @@ class GeminiClient(GenAIClient):
|
||||
generation_config_dict = {"candidate_count": 1}
|
||||
generation_config_dict.update(self.genai_config.runtime_options)
|
||||
|
||||
if response_format and response_format.get("type") == "json_schema":
|
||||
generation_config_dict["response_mime_type"] = "application/json"
|
||||
schema = response_format.get("json_schema", {}).get("schema")
|
||||
if schema:
|
||||
generation_config_dict["response_schema"] = schema
|
||||
|
||||
response = self.provider.models.generate_content(
|
||||
model=self.genai_config.model,
|
||||
contents=contents,
|
||||
|
||||
@ -57,7 +57,12 @@ class LlamaCppClient(GenAIClient):
|
||||
else None
|
||||
)
|
||||
|
||||
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
|
||||
def _send(
|
||||
self,
|
||||
prompt: str,
|
||||
images: list[bytes],
|
||||
response_format: Optional[dict] = None,
|
||||
) -> Optional[str]:
|
||||
"""Submit a request to llama.cpp server."""
|
||||
if self.provider is None:
|
||||
logger.warning(
|
||||
@ -96,6 +101,9 @@ class LlamaCppClient(GenAIClient):
|
||||
**self.provider_options,
|
||||
}
|
||||
|
||||
if response_format:
|
||||
payload["response_format"] = response_format
|
||||
|
||||
response = requests.post(
|
||||
f"{self.provider}/v1/chat/completions",
|
||||
json=payload,
|
||||
|
||||
@ -53,7 +53,12 @@ class OllamaClient(GenAIClient):
|
||||
logger.warning("Error initializing Ollama: %s", str(e))
|
||||
return None
|
||||
|
||||
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
|
||||
def _send(
|
||||
self,
|
||||
prompt: str,
|
||||
images: list[bytes],
|
||||
response_format: Optional[dict] = None,
|
||||
) -> Optional[str]:
|
||||
"""Submit a request to Ollama"""
|
||||
if self.provider is None:
|
||||
logger.warning(
|
||||
@ -65,6 +70,10 @@ class OllamaClient(GenAIClient):
|
||||
**self.provider_options,
|
||||
**self.genai_config.runtime_options,
|
||||
}
|
||||
if response_format and response_format.get("type") == "json_schema":
|
||||
schema = response_format.get("json_schema", {}).get("schema")
|
||||
if schema:
|
||||
ollama_options["format"] = schema
|
||||
result = self.provider.generate(
|
||||
self.genai_config.model,
|
||||
prompt,
|
||||
|
||||
@ -36,7 +36,12 @@ class OpenAIClient(GenAIClient):
|
||||
|
||||
return OpenAI(api_key=self.genai_config.api_key, **provider_opts)
|
||||
|
||||
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
|
||||
def _send(
|
||||
self,
|
||||
prompt: str,
|
||||
images: list[bytes],
|
||||
response_format: Optional[dict] = None,
|
||||
) -> Optional[str]:
|
||||
"""Submit a request to OpenAI."""
|
||||
encoded_images = [base64.b64encode(image).decode("utf-8") for image in images]
|
||||
messages_content = []
|
||||
@ -57,17 +62,20 @@ class OpenAIClient(GenAIClient):
|
||||
}
|
||||
)
|
||||
try:
|
||||
result = self.provider.chat.completions.create(
|
||||
model=self.genai_config.model,
|
||||
messages=[
|
||||
request_params = {
|
||||
"model": self.genai_config.model,
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": messages_content,
|
||||
},
|
||||
],
|
||||
timeout=self.timeout,
|
||||
"timeout": self.timeout,
|
||||
**self.genai_config.runtime_options,
|
||||
)
|
||||
}
|
||||
if response_format:
|
||||
request_params["response_format"] = response_format
|
||||
result = self.provider.chat.completions.create(**request_params)
|
||||
if (
|
||||
result is not None
|
||||
and hasattr(result, "choices")
|
||||
|
||||
@ -106,7 +106,9 @@
|
||||
"logout": "Tanca la sessió",
|
||||
"current": "Usuari actual: {{user}}"
|
||||
},
|
||||
"classification": "Classificació"
|
||||
"classification": "Classificació",
|
||||
"chat": "Xat",
|
||||
"actions": "Accions"
|
||||
},
|
||||
"pagination": {
|
||||
"previous": {
|
||||
@ -268,7 +270,18 @@
|
||||
"unselect": "Desseleccionar",
|
||||
"enable": "Habilitar",
|
||||
"enabled": "Habilitat",
|
||||
"continue": "Continua"
|
||||
"continue": "Continua",
|
||||
"add": "Afegeix",
|
||||
"undo": "Desfés",
|
||||
"copiedToClipboard": "S'ha copiat al porta-retalls",
|
||||
"modified": "Modificat",
|
||||
"overridden": "Sobreescrit",
|
||||
"resetToGlobal": "Restableix a global",
|
||||
"resetToDefault": "Restableix al valor predeterminat",
|
||||
"saveAll": "Desa-ho tot",
|
||||
"savingAll": "S'està desant tot…",
|
||||
"undoAll": "Desfés-ho tot",
|
||||
"applying": "S'està aplicant…"
|
||||
},
|
||||
"toast": {
|
||||
"copyUrlToClipboard": "URL copiada al porta-retalls.",
|
||||
|
||||
@ -65,6 +65,10 @@
|
||||
"fromTimeline": {
|
||||
"saveExport": "Guardar exportació",
|
||||
"previewExport": "Previsualitzar exportació"
|
||||
},
|
||||
"case": {
|
||||
"label": "Cas",
|
||||
"placeholder": "Selecciona un cas"
|
||||
}
|
||||
},
|
||||
"streaming": {
|
||||
|
||||
941
web/public/locales/ca/config/cameras.json
Normal file
941
web/public/locales/ca/config/cameras.json
Normal file
@ -0,0 +1,941 @@
|
||||
{
|
||||
"label": "ConfiguracióDeLaCcàmera",
|
||||
"name": {
|
||||
"label": "Nom de la càmera",
|
||||
"description": "Es requereix el nom de la càmera"
|
||||
},
|
||||
"friendly_name": {
|
||||
"label": "Nom amistós",
|
||||
"description": "Nom amigable de la càmera utilitzat a la interfície d'usuari de la Frigate"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Habilitat",
|
||||
"description": "Habilitat"
|
||||
},
|
||||
"audio": {
|
||||
"label": "Esdeveniments d'àudio",
|
||||
"description": "Configuració per a la detecció d'esdeveniments basats en àudio per a aquesta càmera.",
|
||||
"enabled": {
|
||||
"label": "Habilita la detecció d'àudio",
|
||||
"description": "Activa o desactiva la detecció d'esdeveniments d'àudio per a aquesta càmera."
|
||||
},
|
||||
"max_not_heard": {
|
||||
"label": "Temps d'espera final",
|
||||
"description": "Quantitat de segons sense el tipus d'àudio configurat abans que acabi l'esdeveniment d'àudio."
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Volum mínim",
|
||||
"description": "Llindar mínim de volum RMS necessari per executar la detecció d'àudio; els valors més baixos augmenten la sensibilitat (p. ex., 200 alta, 500 mitjana, 1000 baixa)."
|
||||
},
|
||||
"listen": {
|
||||
"label": "Tipus d'escoltes",
|
||||
"description": "Llista de tipus d'esdeveniment d'àudio a detectar (per exemple: escorça, focarmalarma, crit, parla, crida)."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Filtres d'àudio",
|
||||
"description": "Paràmetres de filtre per-àudio-tipus, com ara llindars de confiança utilitzats per reduir falsos positius."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat d'àudio original",
|
||||
"description": "Indica si la detecció d'àudio s'ha activat originalment al fitxer de configuració estàtic."
|
||||
},
|
||||
"num_threads": {
|
||||
"label": "Fils de detecció",
|
||||
"description": "Nombre de fils a utilitzar per al processament de detecció d'àudio."
|
||||
}
|
||||
},
|
||||
"audio_transcription": {
|
||||
"label": "Transcripció d'àudio",
|
||||
"description": "Configuració per a la transcripció d'àudio en viu i de veu utilitzada per a esdeveniments i llegendes en directe.",
|
||||
"enabled": {
|
||||
"label": "Habilita la transcripció",
|
||||
"description": "Activa o desactiva la transcripció d'esdeveniments d'àudio activada manualment."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat de transcripció original"
|
||||
},
|
||||
"live_enabled": {
|
||||
"label": "Transcripció en viu",
|
||||
"description": "Habilita la transcripció en directe per a l'àudio a mesura que es rep."
|
||||
}
|
||||
},
|
||||
"birdseye": {
|
||||
"label": "Birdseye",
|
||||
"description": "Arranjament per a la vista composta Birdseye que compon múltiples canals de càmera en una única disposició.",
|
||||
"enabled": {
|
||||
"label": "Habilita Birdseye",
|
||||
"description": "Activa o desactiva la funció de vista Birdseye."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Mode de seguiment",
|
||||
"description": "Mode per a incloure càmeres en Birdseye: 'objectes', 'motion' o 'continuous'."
|
||||
},
|
||||
"order": {
|
||||
"label": "Posició",
|
||||
"description": "Posició numèrica que controla l'ordenació de la càmera en la disposició Birdseye."
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"label": "Detecció d'objectes",
|
||||
"description": "Configuració del rol de detecció utilitzat per executar la detecció d'objectes i inicialitzar els rastrejadors.",
|
||||
"enabled": {
|
||||
"label": "Detecció activada",
|
||||
"description": "Activa o desactiva la detecció d'objectes per a aquesta càmera. La detecció s'ha d'activar perquè s'executi el seguiment d'objectes."
|
||||
},
|
||||
"height": {
|
||||
"label": "Detecta l'alçada",
|
||||
"description": "Alçada (píxels) dels fotogrames utilitzats per al flux de detecció; deixeu-ho buit per a utilitzar la resolució nativa del flux."
|
||||
},
|
||||
"width": {
|
||||
"label": "Detecta l'amplada",
|
||||
"description": "Amplada (píxels) dels fotogrames utilitzats per al flux de detecció; deixeu-ho buit per a utilitzar la resolució nativa del flux."
|
||||
},
|
||||
"fps": {
|
||||
"label": "Detecta FPS",
|
||||
"description": "Fotogrames desitjats per segon per executar la detecció; els valors més baixos redueixen l'ús de la CPU (el valor recomanat és 5, només estableix més alt - com a màxim 10 - si el seguiment d'objectes en moviment extremadament ràpid)."
|
||||
},
|
||||
"min_initialized": {
|
||||
"label": "Fotogrames d'inicialització mínims",
|
||||
"description": "Nombre d'incidències de detecció consecutives necessàries abans de crear un objecte rastrejat. Incrementa per a reduir les falses inicialitzacions. El valor per defecte és fps dividit per 2."
|
||||
},
|
||||
"max_disappeared": {
|
||||
"label": "Màxim de fotogrames desapareguts",
|
||||
"description": "Nombre de fotogrames sense detecció abans que es consideri que un objecte rastrejat ha desaparegut."
|
||||
},
|
||||
"stationary": {
|
||||
"label": "Configuració d'objectes estacionaris",
|
||||
"description": "Configuració per detectar i gestionar objectes que romanen estacionaris durant un període de temps.",
|
||||
"interval": {
|
||||
"label": "Interval estacionari",
|
||||
"description": "Amb quina freqüència (en fotogrames) s'executa una comprovació de detecció per confirmar un objecte estacionari."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Llindar estacionari",
|
||||
"description": "Nombre de fotogrames sense cap canvi de posició necessari per a marcar un objecte com a estacionari."
|
||||
},
|
||||
"max_frames": {
|
||||
"label": "Fotogrames màxims",
|
||||
"description": "Limita quant de temps es segueixen els objectes estacionaris abans de descartar-los.",
|
||||
"default": {
|
||||
"label": "Fotogrames màxims predeterminats",
|
||||
"description": "Fotogrames màxims predeterminats per a fer el seguiment d'un objecte estacionari abans d'aturar-se."
|
||||
},
|
||||
"objects": {
|
||||
"label": "Fotogrames màxims de l'objecte",
|
||||
"description": "Sobreescriu l'objecte per als fotogrames màxims per fer un seguiment dels objectes estacionaris."
|
||||
}
|
||||
},
|
||||
"classifier": {
|
||||
"label": "Habilita el classificador visual",
|
||||
"description": "Utilitzeu un classificador visual per detectar objectes realment estacionaris, fins i tot quan les caixes contenidores tremolen."
|
||||
}
|
||||
},
|
||||
"annotation_offset": {
|
||||
"label": "Desplaçament de l'anotació",
|
||||
"description": "Mil·lisegons per a desplaçar detecta anotacions per a alinear millor els límits de la línia de temps amb els enregistraments; pot ser positiu o negatiu."
|
||||
}
|
||||
},
|
||||
"face_recognition": {
|
||||
"label": "Reconeixement de cares",
|
||||
"description": "Configuració per a la detecció de la cara i el reconeixement d'aquesta càmera.",
|
||||
"enabled": {
|
||||
"label": "Habilita el reconeixement facial",
|
||||
"description": "Activa o desactiva el reconeixement facial."
|
||||
},
|
||||
"min_area": {
|
||||
"label": "Àrea mínima de la cara",
|
||||
"description": "Àrea mínima (píxels) d'un quadre facial detectat requerit per intentar el reconeixement."
|
||||
}
|
||||
},
|
||||
"ffmpeg": {
|
||||
"label": "FFmpeg",
|
||||
"description": "Paràmetres del FFmpeg que inclouen camins binaris, args, opcions de hwaccel i args de sortida per rol.",
|
||||
"path": {
|
||||
"label": "Ruta FFmpeg",
|
||||
"description": "Ruta al binari FFmpeg a usar o un àlies de versió («5.0» o «7.0»)."
|
||||
},
|
||||
"global_args": {
|
||||
"label": "Arguments globals del FFmpeg",
|
||||
"description": "Arguments globals passats als processos FFmpeg."
|
||||
},
|
||||
"hwaccel_args": {
|
||||
"label": "Arguments d'acceleració del maquinari",
|
||||
"description": "Arguments d'acceleració de maquinari per a FFmpeg. Es recomanen predefinits específics del proveïdor."
|
||||
},
|
||||
"input_args": {
|
||||
"label": "Arguments d'entrada",
|
||||
"description": "Arguments d'entrada aplicats als fluxos d'entrada del FFmpeg."
|
||||
},
|
||||
"output_args": {
|
||||
"label": "Arguments de sortida",
|
||||
"description": "Arguments de sortida predeterminats utilitzats per a diferents rols FFmpeg com detecta i registra.",
|
||||
"detect": {
|
||||
"label": "Detecta els arguments de sortida",
|
||||
"description": "Arguments de sortida predeterminats per a detectar fluxos de rol."
|
||||
},
|
||||
"record": {
|
||||
"label": "Registra els arguments de sortida",
|
||||
"description": "Arguments de sortida predeterminats per a enregistrar fluxos de rols."
|
||||
}
|
||||
},
|
||||
"retry_interval": {
|
||||
"label": "Temps de reintent del FFmpeg",
|
||||
"description": "Segons a esperar abans d'intentar tornar a connectar un flux de càmera després d'un error. Per defecte és 10."
|
||||
},
|
||||
"apple_compatibility": {
|
||||
"label": "Compatibilitat d'Apple",
|
||||
"description": "Activa l'etiquetatge HEVC per a una millor compatibilitat amb el reproductor d'Apple en gravar H.265."
|
||||
},
|
||||
"gpu": {
|
||||
"label": "Índex de GPU",
|
||||
"description": "Índex de GPU predeterminat utilitzat per a l'acceleració de maquinari si està disponible."
|
||||
},
|
||||
"inputs": {
|
||||
"label": "Entrada de la càmera",
|
||||
"description": "Llista de definicions de flux d'entrada (camins i rols) per a aquesta càmera.",
|
||||
"path": {
|
||||
"label": "Ruta d'entrada",
|
||||
"description": "URL o camí del flux d'entrada de la càmera."
|
||||
},
|
||||
"roles": {
|
||||
"label": "Rols d'entrada",
|
||||
"description": "Rols per a aquest flux d'entrada."
|
||||
},
|
||||
"global_args": {
|
||||
"label": "Arguments globals del FFmpeg",
|
||||
"description": "Arguments globals del FFmpeg per a aquest flux d'entrada."
|
||||
},
|
||||
"hwaccel_args": {
|
||||
"label": "Arguments d'acceleració del maquinari",
|
||||
"description": "Arguments d'acceleració del maquinari per a aquest flux d'entrada."
|
||||
},
|
||||
"input_args": {
|
||||
"label": "Arguments d'entrada",
|
||||
"description": "Arguments d'entrada específics d'aquest flux."
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"label": "Reproducció en directe",
|
||||
"description": "Configuració utilitzada per la interfície d'usuari web per controlar la selecció, resolució i qualitat del flux en viu.",
|
||||
"streams": {
|
||||
"label": "Noms de flux en viu",
|
||||
"description": "Assignació de noms de flux configurats per a restream/go2rtc noms utilitzats per a la reproducció en viu."
|
||||
},
|
||||
"height": {
|
||||
"label": "Alçada del directe",
|
||||
"description": "Alçada (píxels) per a renderitzar el flux en viu jsmpeg a la interfície d'usuari web; ha de ser . detecta l'alçada del flux."
|
||||
},
|
||||
"quality": {
|
||||
"label": "Qualitat del directe",
|
||||
"description": "Qualitat de codificació per al flux jsmpeg (1 més alt, 31 més baix)."
|
||||
}
|
||||
},
|
||||
"lpr": {
|
||||
"label": "Reconeixement de la placa de llicència",
|
||||
"description": "Paràmetres de reconeixement de la matrícula de la llicència, inclosos els llindars de detecció, el format i les plaques conegudes.",
|
||||
"enabled": {
|
||||
"label": "Habilita el LPR",
|
||||
"description": "Activa o desactiva LPR en aquesta càmera."
|
||||
},
|
||||
"expire_time": {
|
||||
"label": "Caduca els segons",
|
||||
"description": "Temps en segons després del qual una placa no vista expira del rastrejador (només per a càmeres LPR dedicades)."
|
||||
},
|
||||
"min_area": {
|
||||
"label": "Àrea mínima de la placa",
|
||||
"description": "Àrea mínima de placa (píxels) necessària per intentar el reconeixement."
|
||||
},
|
||||
"enhancement": {
|
||||
"label": "Nivell de millora",
|
||||
"description": "Nivell de millora (0-10) per aplicar als cultius de plaques abans de l'OCR; els valors més alts no sempre poden millorar els resultats, els nivells superiors a 5 només poden funcionar amb plaques nocturnes i s'han d'utilitzar amb precaució."
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "Detecció de moviment",
|
||||
"enabled": {
|
||||
"label": "Habilita la detecció de moviment",
|
||||
"description": "Activa o desactiva la detecció de moviment d'aquesta càmera."
|
||||
},
|
||||
"description": "Configuració predeterminada de detecció de moviment per a aquesta càmera.",
|
||||
"threshold": {
|
||||
"label": "Llindar del moviment",
|
||||
"description": "Llindar de diferència de píxels utilitzat pel detector de moviment; els valors més alts redueixen la sensibilitat (interval 1-255)."
|
||||
},
|
||||
"lightning_threshold": {
|
||||
"label": "Llindar del llamp",
|
||||
"description": "Llindar per detectar i ignorar les puntes d'il·luminació breu (més baixes són més sensibles, valors entre 0,3 i 1,0). Això no impedeix la detecció de moviment per complet; simplement fa que el detector deixi d'analitzar fotogrames addicionals una vegada que el llindar s'excedeix. Els enregistraments basats en moviment encara es creen durant aquests esdeveniments."
|
||||
},
|
||||
"improve_contrast": {
|
||||
"label": "Millora el contrast",
|
||||
"description": "Aplicar la millora del contrast als fotogrames abans de l'anàlisi del moviment per ajudar a la detecció."
|
||||
},
|
||||
"contour_area": {
|
||||
"label": "Àrea de la vora",
|
||||
"description": "Àrea mínima de contorn en píxels necessària per a comptar un contorn de moviment."
|
||||
},
|
||||
"delta_alpha": {
|
||||
"label": "Delta alfa",
|
||||
"description": "Factor de barreja alfa utilitzat en la diferència de fotogrames per al càlcul del moviment."
|
||||
},
|
||||
"frame_alpha": {
|
||||
"label": "Alfa del fotograma",
|
||||
"description": "Valor alfa utilitzat en la barreja de fotogrames per al preprocessament del moviment."
|
||||
},
|
||||
"frame_height": {
|
||||
"label": "Alçada del marc",
|
||||
"description": "Alçada en píxels per a escalar els fotogrames quan es computa el moviment."
|
||||
},
|
||||
"mask": {
|
||||
"label": "Coordenades de la màscara",
|
||||
"description": "Coordenades x,y que defineixen el polígon de màscara de moviment utilitzat per incloure/excloure àrees."
|
||||
},
|
||||
"mqtt_off_delay": {
|
||||
"label": "Retard MQTT desactivat",
|
||||
"description": "Segons a esperar després de l'última moció abans de publicar un estat MQTT 'off'."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat del moviment original",
|
||||
"description": "Indica si la detecció de moviment s'ha activat en la configuració estàtica original."
|
||||
},
|
||||
"raw_mask": {
|
||||
"label": "Màscara en brut"
|
||||
},
|
||||
"skip_motion_threshold": {
|
||||
"label": "Omet el llindar de moviment",
|
||||
"description": "Si més d'aquesta fracció de la imatge canvia en un sol fotograma, el detector no retornarà cap caixa de moviment i recalibrarà immediatament. Això pot estalviar CPU i reduir falsos positius durant el llamp, tempestes, etc., però pot perdre esdeveniments reals com una càmera PTZ que fa un seguiment automàtic d'un objecte. La compensació es troba entre deixar caure uns quants megabytes d'enregistraments versus revisar un parell de clips curts. Interval de 0,0 a 1,0."
|
||||
}
|
||||
},
|
||||
"objects": {
|
||||
"label": "Objectes",
|
||||
"description": "Object tracking defaults incloent quines etiquetes rastrejar i per objecte filtres.",
|
||||
"track": {
|
||||
"label": "Objectes a seguir",
|
||||
"description": "Llista d'etiquetes d'objectes a seguir per a aquesta càmera."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Filtres d'objectes",
|
||||
"description": "Filtres aplicats als objectes detectats per reduir falsos positius (àrea, relació, confiança).",
|
||||
"min_area": {
|
||||
"label": "Àrea mínima de l'objecte",
|
||||
"description": "Es requereix una àrea de caixa contenidora mínima (píxels o percentatge) per a aquest tipus d'objecte. Pot ser píxels (int) o percentatge (float entre 0,000001 i 0.99)."
|
||||
},
|
||||
"max_area": {
|
||||
"label": "Àrea màxima de l'objecte",
|
||||
"description": "Es permet l'àrea màxima de la caixa contenidora (píxels o percentatge) per a aquest tipus d'objecte. Pot ser píxels (int) o percentatge (float entre 0,000001 i 0.99)."
|
||||
},
|
||||
"min_ratio": {
|
||||
"label": "Relació mínima d'aspecte",
|
||||
"description": "Relació mínima d'amplada/alçada requerida per a la casella contenidora a qualificar."
|
||||
},
|
||||
"max_ratio": {
|
||||
"description": "Es permet la relació màxima d'amplada/alçada per a la casella contenidora a qualificar.",
|
||||
"label": "Relació màxima d'aspecte"
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Llindar de confiança",
|
||||
"description": "Es requereix un llindar de confiança mitjà per a la detecció perquè l'objecte es consideri un veritable positiu."
|
||||
},
|
||||
"min_score": {
|
||||
"label": "Confiança mínima",
|
||||
"description": "Es requereix una confiança mínima de detecció d'un sol fotograma per a comptar l'objecte."
|
||||
},
|
||||
"mask": {
|
||||
"label": "Màscara de filtre",
|
||||
"description": "Coordenades de polígon que defineixen on s'aplica aquest filtre dins del marc."
|
||||
},
|
||||
"raw_mask": {
|
||||
"label": "Màscara en brut"
|
||||
}
|
||||
},
|
||||
"mask": {
|
||||
"label": "Màscara d'objecte",
|
||||
"description": "Polígon de màscara utilitzat per evitar la detecció d'objectes en àrees especificades."
|
||||
},
|
||||
"raw_mask": {
|
||||
"label": "Màscara en brut"
|
||||
},
|
||||
"genai": {
|
||||
"label": "Configuració de l'objecte GenAI",
|
||||
"description": "Opcions de GenAI per descriure objectes rastrejats i enviar fotogrames per a la generació.",
|
||||
"enabled": {
|
||||
"label": "Habilita el GenAI",
|
||||
"description": "Habilita la generació de descripcions de GenAI per als objectes rastrejats de manera predeterminada."
|
||||
},
|
||||
"use_snapshot": {
|
||||
"label": "Utilitza instantànies",
|
||||
"description": "Usa instantànies d'objecte en lloc de miniatures per a la generació de descripcions de GenAI."
|
||||
},
|
||||
"prompt": {
|
||||
"label": "Indicació de la llegenda",
|
||||
"description": "Plantilla de pregunta predeterminada utilitzada en generar descripcions amb GenAI."
|
||||
},
|
||||
"object_prompts": {
|
||||
"label": "Peticions d'objecte",
|
||||
"description": "Per objecte demana personalitzar les sortides de GenAI per a etiquetes específiques."
|
||||
},
|
||||
"objects": {
|
||||
"label": "Objectes GenAI",
|
||||
"description": "Llista d'etiquetes d'objectes a enviar a GenAI per defecte."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "Zones requerides",
|
||||
"description": "Zones que s'han d'introduir perquè els objectes es puguin classificar per a la generació de descripcions de GenAI."
|
||||
},
|
||||
"debug_save_thumbnails": {
|
||||
"label": "Desa les miniatures",
|
||||
"description": "Desa les miniatures enviades a GenAI per a la depuració i la revisió."
|
||||
},
|
||||
"send_triggers": {
|
||||
"label": "Activadors de GenAI",
|
||||
"description": "Defineix quan s'han d'enviar fotogrames a GenAI (al final, després de les actualitzacions, etc.).",
|
||||
"tracked_object_end": {
|
||||
"label": "Envia al final",
|
||||
"description": "Envia una sol·licitud a GenAI quan acabi l'objecte rastrejat."
|
||||
},
|
||||
"after_significant_updates": {
|
||||
"label": "Activador de GenAI primerenc",
|
||||
"description": "Envia una sol·licitud a GenAI després d'un nombre especificat d'actualitzacions significatives per a l'objecte rastrejat."
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat original de GenAI",
|
||||
"description": "Indica si el GenAI s'ha activat a la configuració estàtica original."
|
||||
}
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"label": "Enregistrament",
|
||||
"description": "Configuració d'enregistrament i retenció d'aquesta càmera.",
|
||||
"enabled": {
|
||||
"label": "Habilita l'enregistrament",
|
||||
"description": "Activa o desactiva l'enregistrament d'aquesta càmera."
|
||||
},
|
||||
"expire_interval": {
|
||||
"label": "Interval de neteja de l'enregistrament",
|
||||
"description": "Minuts entre passades de neteja que eliminen segments d'enregistrament caducats."
|
||||
},
|
||||
"continuous": {
|
||||
"label": "Retenció contínua",
|
||||
"description": "Nombre de dies per a retenir els enregistraments independentment dels objectes rastrejats o del moviment. Establiu-ho a 0 si només voleu retenir enregistraments d'alertes i deteccions.",
|
||||
"days": {
|
||||
"label": "Dies de retenció",
|
||||
"description": "Dies per retenir enregistraments."
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "Retenció del moviment",
|
||||
"description": "Nombre de dies per a retenir els enregistraments activats pel moviment independentment dels objectes rastrejats. Establiu-ho a 0 si només voleu retenir enregistraments d'alertes i deteccions.",
|
||||
"days": {
|
||||
"label": "Dies de retenció",
|
||||
"description": "Dies per retenir enregistraments."
|
||||
}
|
||||
},
|
||||
"detections": {
|
||||
"label": "Retenció de detecció",
|
||||
"description": "Configuració de retenció de l'enregistrament per a esdeveniments de detecció, incloent-hi la durada de la captura anterior a la publicació.",
|
||||
"pre_capture": {
|
||||
"label": "Segons de precaptura",
|
||||
"description": "Nombre de segons abans de l'esdeveniment de detecció a incloure en l'enregistrament."
|
||||
},
|
||||
"post_capture": {
|
||||
"label": "Segons de postcaptura",
|
||||
"description": "Nombre de segons després de l'esdeveniment de detecció que s'inclourà a l'enregistrament."
|
||||
},
|
||||
"retain": {
|
||||
"label": "Retenció d'esdeveniments",
|
||||
"description": "Configuració de retenció per a enregistraments d'esdeveniments de detecció.",
|
||||
"days": {
|
||||
"label": "Dies de retenció",
|
||||
"description": "Nombre de dies per a retenir enregistraments d'esdeveniments de detecció."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Mode de retenció",
|
||||
"description": "Mode de retenció: tot (desa tots els segments), moviment (desa els segments amb moviment), o actiuobobjectes (desa els segments amb objectes actius)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"alerts": {
|
||||
"label": "Retenció d'alerta",
|
||||
"description": "Configuració de retenció de l'enregistrament per a esdeveniments d'alerta, incloses les durades de captura anteriors a la publicació.",
|
||||
"pre_capture": {
|
||||
"label": "Segons de precaptura",
|
||||
"description": "Nombre de segons abans de l'esdeveniment de detecció a incloure en l'enregistrament."
|
||||
},
|
||||
"post_capture": {
|
||||
"label": "Segons de postcaptura",
|
||||
"description": "Nombre de segons després de l'esdeveniment de detecció que s'inclourà a l'enregistrament."
|
||||
},
|
||||
"retain": {
|
||||
"label": "Retenció d'esdeveniments",
|
||||
"description": "Configuració de retenció per a enregistraments d'esdeveniments de detecció.",
|
||||
"days": {
|
||||
"label": "Dies de retenció",
|
||||
"description": "Nombre de dies per a retenir enregistraments d'esdeveniments de detecció."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Mode de retenció",
|
||||
"description": "Mode de retenció: tot (desa tots els segments), moviment (desa els segments amb moviment), o actiuobobjectes (desa els segments amb objectes actius)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"export": {
|
||||
"label": "Exporta la configuració",
|
||||
"description": "Paràmetres utilitzats en exportar enregistraments com el timelapse i l'acceleració del maquinari.",
|
||||
"hwaccel_args": {
|
||||
"label": "Exporta els arguments de l'hwaccel",
|
||||
"description": "Args d'acceleració de maquinari a utilitzar per a operacions d'exportació/transcodificació."
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
"label": "Configuració de la vista prèvia",
|
||||
"description": "Paràmetres que controlen la qualitat de les vistes prèvies de l'enregistrament que es mostren a la interfície d'usuari.",
|
||||
"quality": {
|
||||
"label": "Qualitat de la vista prèvia",
|
||||
"description": "Nivell de qualitat de la vista prèvia (moltlowbaix, baix, mitjà, alt, molt).alt)."
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat de l'enregistrament original",
|
||||
"description": "Indica si l'enregistrament s'ha activat en la configuració estàtica original."
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
"label": "Revisió",
|
||||
"description": "Configuració que controla les alertes, les deteccions i els resums de revisió de GenAI utilitzats per la interfície d'usuari i l'emmagatzematge d'aquesta càmera.",
|
||||
"alerts": {
|
||||
"label": "Configuració d'alertes",
|
||||
"description": "Paràmetres per als quals els objectes rastrejats generen alertes i com es mantenen les alertes",
|
||||
"enabled": {
|
||||
"label": "Habilita les alertes",
|
||||
"description": "Activa o desactiva la generació d'alertes per a aquesta càmera."
|
||||
},
|
||||
"labels": {
|
||||
"label": "Etiquetes d'alerta",
|
||||
"description": "Llista d'etiquetes d'objectes que qualifiquen d'alertes (per exemple: cotxe, persona)."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "Zones requerides",
|
||||
"description": "Zones que un objecte ha d'introduir per a ser considerat una alerta; deixeu-ho buit per a permetre qualsevol zona."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat de les alertes originals",
|
||||
"description": "Fa un seguiment de si les alertes es van habilitar originalment a la configuració estàtica."
|
||||
},
|
||||
"cutoff_time": {
|
||||
"label": "Temps de tall d'alertes",
|
||||
"description": "Segons a esperar després de no provocar activitat d'alerta abans de tallar una alerta."
|
||||
}
|
||||
},
|
||||
"detections": {
|
||||
"label": "Configuració de les deteccions",
|
||||
"description": "Paràmetres per a crear esdeveniments de detecció (no-alerta) i quant de temps conservar-los.",
|
||||
"enabled": {
|
||||
"label": "Habilita les deteccions",
|
||||
"description": "Activa o desactiva els esdeveniments de detecció d'aquesta càmera."
|
||||
},
|
||||
"labels": {
|
||||
"label": "Etiquetes de detecció",
|
||||
"description": "Llista d'etiquetes d'objectes que es qualifiquen com a esdeveniments de detecció."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "Zones requerides",
|
||||
"description": "Zones que un objecte ha d'introduir per a ser considerat una detecció; deixeu-ho buit per a permetre qualsevol zona."
|
||||
},
|
||||
"cutoff_time": {
|
||||
"label": "Temps de tall de detecció",
|
||||
"description": "Segons a esperar després de no haver-hi activitat de detecció abans de tallar una detecció"
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat de les deteccions originals",
|
||||
"description": "Fa un seguiment de si les deteccions es van habilitar originalment a la configuració estàtica."
|
||||
}
|
||||
},
|
||||
"genai": {
|
||||
"label": "Configuració del GenAI",
|
||||
"description": "Controla l'ús de la IA generativa per a la producció de descripcions i resums d'articles de revisió.",
|
||||
"enabled": {
|
||||
"label": "Habilita les descripcions del GenAI",
|
||||
"description": "Activa o desactiva les descripcions i resums generats per GenAI per als elements de revisió."
|
||||
},
|
||||
"alerts": {
|
||||
"label": "Habilita el GenAI per a alertes",
|
||||
"description": "Utilitzeu GenAI per a generar descripcions per als elements d'alerta."
|
||||
},
|
||||
"detections": {
|
||||
"label": "Habilita el GenAI per a les deteccions",
|
||||
"description": "Utilitzeu GenAI per generar descripcions per als elements de detecció."
|
||||
},
|
||||
"image_source": {
|
||||
"label": "Revisa l'origen de la imatge",
|
||||
"description": "Font d'imatges enviades a GenAI ('previsualització' o 'enregistraments'); 'enregistraments' utilitza Fotogrames de més qualitat però més tokens."
|
||||
},
|
||||
"additional_concerns": {
|
||||
"label": "Altres preocupacions",
|
||||
"description": "Una llista de preocupacions o notes addicionals que el GenAI ha de tenir en compte a l'hora d'avaluar l'activitat en aquesta càmera."
|
||||
},
|
||||
"debug_save_thumbnails": {
|
||||
"label": "Desa les miniatures",
|
||||
"description": "Desa les miniatures que s'envien al proveïdor GenAI per a la depuració i la revisió."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat original de GenAI",
|
||||
"description": "Fa un seguiment de si la revisió de GenAI es va habilitar originalment a la configuració estàtica."
|
||||
},
|
||||
"preferred_language": {
|
||||
"label": "Idioma preferit",
|
||||
"description": "Idioma preferit per sol·licitar al proveïdor GenAI respostes generades."
|
||||
},
|
||||
"activity_context_prompt": {
|
||||
"label": "Indicador de context de l'activitat",
|
||||
"description": "Pregunta personalitzada que descriu el que és i no és una activitat sospitosa per proporcionar context per als resums de GenAI."
|
||||
}
|
||||
}
|
||||
},
|
||||
"semantic_search": {
|
||||
"label": "Cerca semàntica",
|
||||
"description": "Paràmetres per a la cerca semàntica que construeix i consulta incrustacions d'objectes per a trobar elements similars.",
|
||||
"triggers": {
|
||||
"label": "Activadors",
|
||||
"description": "Accions i criteris coincidents per als desencadenants de cerca semàntica específics de la càmera.",
|
||||
"friendly_name": {
|
||||
"label": "Nom amistós",
|
||||
"description": "Nom opcional amistós que es mostra a la interfície d'usuari per a aquest activador."
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Habilita aquest activador",
|
||||
"description": "Activa o desactiva aquest activador de cerca semàntica."
|
||||
},
|
||||
"type": {
|
||||
"label": "Tipus d'activador",
|
||||
"description": "Tipus d'activador: «miniatures» (match contra imatge) o «descripció» (match contra text)."
|
||||
},
|
||||
"data": {
|
||||
"label": "Contingut del disparador",
|
||||
"description": "Frase de text o ID de miniatures per a coincidir amb els objectes rastrejats."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Llindar d'activació",
|
||||
"description": "Puntuació mínima de similitud (0-1) necessària per activar aquest activador."
|
||||
},
|
||||
"actions": {
|
||||
"label": "Accions d'activació",
|
||||
"description": "Llista d'accions a executar quan coincideixi l'activador (notificació, sublabeletiqueta, atribut)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"snapshots": {
|
||||
"label": "Instantànies",
|
||||
"description": "Configuració per a les instantànies JPEG desades dels objectes seguits per a aquesta càmera.",
|
||||
"enabled": {
|
||||
"label": "Instantànies habilitades",
|
||||
"description": "Activa o desactiva el desament de les instantànies d'aquesta càmera."
|
||||
},
|
||||
"clean_copy": {
|
||||
"label": "Desa la còpia neta",
|
||||
"description": "Desa una còpia neta no anotada de les instantànies a més de les anotades."
|
||||
},
|
||||
"timestamp": {
|
||||
"label": "Superposició de marca horària",
|
||||
"description": "Superposa una marca horària a les instantànies desades."
|
||||
},
|
||||
"bounding_box": {
|
||||
"label": "Superposició de la caixa contenidora",
|
||||
"description": "Dibuixa caixes contenidores per als objectes seguits en les instantànies desades."
|
||||
},
|
||||
"crop": {
|
||||
"label": "Retalla la instantània",
|
||||
"description": "Retalla les instantànies desades a la caixa contenidora de l'objecte detectat."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "Zones requerides",
|
||||
"description": "Zones que ha d'introduir un objecte perquè es desi una instantània."
|
||||
},
|
||||
"height": {
|
||||
"label": "Alçada de la instantània",
|
||||
"description": "Alçada (píxels) per a canviar la mida de les instantànies desades; deixeu-ho buit per a preservar la mida original."
|
||||
},
|
||||
"retain": {
|
||||
"label": "Retenció de la instantània",
|
||||
"description": "Paràmetres de retenció per a les instantànies desades, inclosos els dies predeterminats i les anul·lacions per objecte.",
|
||||
"default": {
|
||||
"label": "Retenció predeterminada",
|
||||
"description": "Nombre predeterminat de dies per a retenir les instantànies."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Mode de retenció",
|
||||
"description": "Mode de retenció: tot (desa tots els segments), moviment (desa els segments amb moviment), o actiuobobjectes (desa els segments amb objectes actius)."
|
||||
},
|
||||
"objects": {
|
||||
"label": "Retenció d'objectes",
|
||||
"description": "Anul·lació per objecte per dies de retenció d'instantànies."
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Qualitat JPEG",
|
||||
"description": "Qualitat del codi JPEG per a les instantànies desades (0-100)."
|
||||
}
|
||||
},
|
||||
"timestamp_style": {
|
||||
"label": "Estil de la marca horària",
|
||||
"description": "Opcions d'estilització per a marques de temps d'alimentació aplicades a enregistraments i instantànies.",
|
||||
"position": {
|
||||
"label": "Posició de la marca horària",
|
||||
"description": "Posició de la marca horària a la imatge (tl/tr/bl/br)."
|
||||
},
|
||||
"format": {
|
||||
"label": "Format de la marca horària",
|
||||
"description": "Cadena de format de data i hora utilitzada per a marques horàries (codis de format de data i hora de Python)."
|
||||
},
|
||||
"color": {
|
||||
"label": "Color de la marca horària",
|
||||
"description": "Valors de color RGB per al text de la marca de temps (tots els valors 0-255).",
|
||||
"red": {
|
||||
"label": "Vermell",
|
||||
"description": "Component vermell (0-255) per al color de la marca horària."
|
||||
},
|
||||
"green": {
|
||||
"label": "Verd",
|
||||
"description": "Component verd (0-255) per al color de la marca horària."
|
||||
},
|
||||
"blue": {
|
||||
"label": "Blau",
|
||||
"description": "Component blau (0-255) per al color de la marca horària."
|
||||
}
|
||||
},
|
||||
"thickness": {
|
||||
"label": "Gruix de la marca de temps",
|
||||
"description": "Gruix de la línia del text de la marca de temps."
|
||||
},
|
||||
"effect": {
|
||||
"label": "Efecte de marca horària",
|
||||
"description": "Efecte visual per al text de la marca de temps (cap, sòlid, ombra)."
|
||||
}
|
||||
},
|
||||
"best_image_timeout": {
|
||||
"label": "Temps d'espera de la millor imatge",
|
||||
"description": "Quant de temps s'espera per a la imatge amb la puntuació de confiança més alta."
|
||||
},
|
||||
"mqtt": {
|
||||
"label": "MQTT",
|
||||
"description": "Configuració de la publicació d'imatges MQTT.",
|
||||
"enabled": {
|
||||
"label": "Envia la imatge",
|
||||
"description": "Habilita la publicació d'instantànies d'imatges per a objectes als temes MQTT d'aquesta càmera."
|
||||
},
|
||||
"timestamp": {
|
||||
"label": "Afegeix una marca horària",
|
||||
"description": "Superposa una marca horària a les imatges publicades a MQTT."
|
||||
},
|
||||
"bounding_box": {
|
||||
"label": "Afegeix el quadre de delimitació",
|
||||
"description": "Dibuixa caixes delimitadores en imatges publicades sobre MQTT."
|
||||
},
|
||||
"crop": {
|
||||
"label": "Retalla la imatge",
|
||||
"description": "Retalla les imatges publicades a MQTT a la caixa contenidora de l'objecte detectat."
|
||||
},
|
||||
"height": {
|
||||
"label": "Alçada de la imatge",
|
||||
"description": "Alçada (píxels) per a canviar la mida de les imatges publicades sobre MQTT."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "Zones requerides",
|
||||
"description": "Zones que ha d'introduir un objecte perquè es publiqui una imatge MQTT."
|
||||
},
|
||||
"quality": {
|
||||
"label": "Qualitat JPEG",
|
||||
"description": "Qualitat JPEG per a les imatges publicades a MQTT (0-100)."
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"label": "Notificacions",
|
||||
"description": "Configuració per a habilitar i controlar les notificacions d'aquesta càmera.",
|
||||
"enabled": {
|
||||
"label": "Habilita les notificacions",
|
||||
"description": "Activa o desactiva les notificacions d'aquesta càmera."
|
||||
},
|
||||
"email": {
|
||||
"label": "Correu electrònic de notificació",
|
||||
"description": "Adreça de correu electrònic utilitzada per a notificacions push o requerides per determinats proveïdors de notificacions."
|
||||
},
|
||||
"cooldown": {
|
||||
"label": "Període de reducció",
|
||||
"description": "Retirada (segons) entre notificacions per evitar els destinataris de correu brossa."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat de les notificacions originals",
|
||||
"description": "Indica si les notificacions s'han activat en la configuració estàtica original."
|
||||
}
|
||||
},
|
||||
"onvif": {
|
||||
"label": "ONVIF",
|
||||
"description": "Connexió ONVIF i configuració de seguiment automàtic PTZ per a aquesta càmera.",
|
||||
"host": {
|
||||
"label": "Servidor ONVIF",
|
||||
"description": "Host (i esquema opcional) per al servei ONVIF per a aquesta càmera."
|
||||
},
|
||||
"port": {
|
||||
"label": "Port ONVIF",
|
||||
"description": "Número de port del servei ONVIF."
|
||||
},
|
||||
"user": {
|
||||
"label": "Nom d'usuari ONVIF",
|
||||
"description": "Nom d'usuari per a l'autenticació ONVIF; alguns dispositius requereixen l'usuari administrador per a ONVIF."
|
||||
},
|
||||
"password": {
|
||||
"label": "Contrasenya ONVIF",
|
||||
"description": "Contrasenya per a l'autenticació ONVIF."
|
||||
},
|
||||
"tls_insecure": {
|
||||
"label": "Inhabilita la verificació TLS",
|
||||
"description": "Omet la verificació TLS i desactiva l'autenticació de resum per a ONVIF (no segur; només s'utilitza en xarxes segures)."
|
||||
},
|
||||
"autotracking": {
|
||||
"label": "Aeguiment automàtic",
|
||||
"description": "Segueix automàticament els objectes en moviment i els manté centrats en el marc utilitzant els moviments de la càmera PTZ.",
|
||||
"enabled": {
|
||||
"label": "Habilita el seguiment automàtic",
|
||||
"description": "Activa o desactiva el seguiment automàtic de la càmera PTZ dels objectes detectats."
|
||||
},
|
||||
"calibrate_on_startup": {
|
||||
"label": "Calibra a l'inici",
|
||||
"description": "Mesura les velocitats del motor PTZ a l'inici per millorar la precisió del seguiment. Frigate actualitzarà la configuració amb «movtion.weights» després del calibratge."
|
||||
},
|
||||
"zooming": {
|
||||
"label": "Mode de zoom",
|
||||
"description": "Comportament de zoom de control: desactivat (només pan/tilt), absolut (més compatible) o relatiu (pa/tilt/zoom concurrent)."
|
||||
},
|
||||
"zoom_factor": {
|
||||
"label": "Factor de zoom",
|
||||
"description": "Controla el nivell d'ampliació dels objectes rastrejats. Els valors més baixos mantenen més escena a la vista; els valors més alts s'apropen, però poden perdre el seguiment. Valors entre 0,1 i 0,75."
|
||||
},
|
||||
"track": {
|
||||
"label": "Objectes rastrejats",
|
||||
"description": "Llista de tipus d'objectes que haurien d'activar el seguiment automàtic."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "Zones requerides",
|
||||
"description": "Els objectes han d'entrar en una d'aquestes zones abans que comenci el seguiment automàtic."
|
||||
},
|
||||
"return_preset": {
|
||||
"label": "Retorna la predefinició",
|
||||
"description": "Nom predefinit ONVIF configurat al microprogramari de la càmera per tornar després de finalitzar el seguiment."
|
||||
},
|
||||
"timeout": {
|
||||
"label": "Temps d'espera de retorn",
|
||||
"description": "Espereu tants segons després de perdre el seguiment abans de tornar la càmera a la posició preestablerta."
|
||||
},
|
||||
"movement_weights": {
|
||||
"label": "Pes del moviment",
|
||||
"description": "Valors de calibratge generats automàticament pel calibratge de la càmera. No modifiquis manualment."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat de la pista automàtica original",
|
||||
"description": "Camp intern per a fer el seguiment de si s'ha habilitat el seguiment automàtic a la configuració."
|
||||
}
|
||||
},
|
||||
"ignore_time_mismatch": {
|
||||
"label": "Ignora el desajust de temps",
|
||||
"description": "Ignora les diferències de sincronització de temps entre càmera i servidor Frigate per a la comunicació ONVIF."
|
||||
}
|
||||
},
|
||||
"type": {
|
||||
"label": "Tipus de càmera",
|
||||
"description": "Tipus de càmera"
|
||||
},
|
||||
"ui": {
|
||||
"label": "Interfície d'usuari de la càmera",
|
||||
"description": "Mostra l'ordre i la visibilitat d'aquesta càmera a la interfície d'usuari. La comanda afecta el tauler predeterminat. Per a un control més granular, utilitzeu grups de càmera.",
|
||||
"order": {
|
||||
"label": "Ordre de la interfície",
|
||||
"description": "Ordre numèric utilitzat per ordenar la càmera a la interfície d'usuari (taulell de control i llistes per defecte); els nombres més grans apareixen més tard."
|
||||
},
|
||||
"dashboard": {
|
||||
"label": "Mostra a l'interfície d'usuari",
|
||||
"description": "Estableix si aquesta càmera és visible a tot arreu a la interfície d'usuari de la Frigate. Desactivar això requerirà editar manualment la configuració per tornar a veure aquesta càmera a la interfície d'usuari."
|
||||
}
|
||||
},
|
||||
"webui_url": {
|
||||
"label": "URL de la càmera",
|
||||
"description": "URL per visitar la càmera directament des de la pàgina del sistema"
|
||||
},
|
||||
"zones": {
|
||||
"label": "Zones",
|
||||
"description": "Les zones permeten definir una àrea específica del marc perquè pugueu determinar si un objecte es troba dins d'una àrea determinada.",
|
||||
"friendly_name": {
|
||||
"label": "Nom de la zona",
|
||||
"description": "Un nom fàcil d'utilitzar per a la zona, que es mostra a la interfície d'usuari de la fragata. Si no s'estableix, s'utilitzarà una versió amb format del nom de la zona."
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Habilitat",
|
||||
"description": "Activa o desactiva aquesta zona. Les zones inhabilitades s'ignoren en temps d'execució."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Feu un seguiment de l'estat original de la zona."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Filtres de zona",
|
||||
"description": "Filtres que s'aplicaran als objectes d'aquesta zona. S'utilitza per reduir falsos positius o restringir quins objectes es consideren presents a la zona.",
|
||||
"min_area": {
|
||||
"label": "Àrea mínima de l'objecte",
|
||||
"description": "Es requereix una àrea de caixa contenidora mínima (píxels o percentatge) per a aquest tipus d'objecte. Pot ser píxels (int) o percentatge (float entre 0,000001 i 0.99)."
|
||||
},
|
||||
"max_area": {
|
||||
"label": "Àrea màxima de l'objecte",
|
||||
"description": "Es permet l'àrea màxima de la caixa contenidora (píxels o percentatge) per a aquest tipus d'objecte. Pot ser píxels (int) o percentatge (float entre 0,000001 i 0.99)."
|
||||
},
|
||||
"min_ratio": {
|
||||
"label": "Relació mínima d'aspecte",
|
||||
"description": "Relació mínima d'amplada/alçada requerida per a la casella contenidora a qualificar."
|
||||
},
|
||||
"max_ratio": {
|
||||
"label": "Relació màxima d'aspecte",
|
||||
"description": "Es permet la relació màxima d'amplada/alçada per a la casella contenidora a qualificar."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Llindar de confiança",
|
||||
"description": "Es requereix un llindar de confiança mitjà per a la detecció perquè l'objecte es consideri un veritable positiu."
|
||||
},
|
||||
"min_score": {
|
||||
"label": "Confiança mínima",
|
||||
"description": "Es requereix una confiança mínima de detecció d'un sol fotograma per a comptar l'objecte."
|
||||
},
|
||||
"mask": {
|
||||
"label": "Màscara de filtre",
|
||||
"description": "Coordenades de polígon que defineixen on s'aplica aquest filtre dins del marc."
|
||||
},
|
||||
"raw_mask": {
|
||||
"label": "Màscara en brut"
|
||||
}
|
||||
},
|
||||
"objects": {
|
||||
"description": "Llista de tipus d'objectes (des del mapa d'etiquetes) que poden activar aquesta zona. Pot ser una cadena o una llista de cadenes. Si està buit, es consideraran tots els objectes.",
|
||||
"label": "Objectes d'activació"
|
||||
},
|
||||
"coordinates": {
|
||||
"label": "Coordenades",
|
||||
"description": "Coordenades de polígon que defineixen l'àrea de zona. Pot ser una cadena separada per comes o una llista de cadenes de coordenades. Les coordenades han de ser relatives (0-1) o absolutes (antic)."
|
||||
},
|
||||
"distances": {
|
||||
"label": "Distàncies del món real",
|
||||
"description": "Distàncies opcionals del món real per a cada costat del quadrilàter de la zona, utilitzades per a càlculs de velocitat o distància. Si s'estableix, ha de tenir exactament 4 valors."
|
||||
},
|
||||
"inertia": {
|
||||
"label": "Fotogrames d'inèrcia",
|
||||
"description": "Nombre de fotogrames consecutius que s'ha de detectar un objecte a la zona abans de considerar-lo present. Ajuda a filtrar les deteccions transitòries."
|
||||
},
|
||||
"loitering_time": {
|
||||
"label": "Segons flotants",
|
||||
"description": "Nombre de segons que un objecte ha de romandre a la zona a considerar com a errant. Establiu-ho a 0 per a desactivar la detecció de la itinerància."
|
||||
},
|
||||
"speed_threshold": {
|
||||
"label": "Velocitat mínima",
|
||||
"description": "Velocitat mínima (en unitats del món real si s'estableixen distàncies) necessària perquè un objecte es consideri present a la zona. S'utilitza per a activadors de zona basats en velocitat."
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Estat original de la càmera",
|
||||
"description": "Feu un seguiment de l'estat original de la càmera."
|
||||
}
|
||||
}
|
||||
2192
web/public/locales/ca/config/global.json
Normal file
2192
web/public/locales/ca/config/global.json
Normal file
File diff suppressed because it is too large
Load Diff
73
web/public/locales/ca/config/groups.json
Normal file
73
web/public/locales/ca/config/groups.json
Normal file
@ -0,0 +1,73 @@
|
||||
{
|
||||
"audio": {
|
||||
"global": {
|
||||
"detection": "Detecció global",
|
||||
"sensitivity": "Sensibilitat global"
|
||||
},
|
||||
"cameras": {
|
||||
"detection": "Detecció",
|
||||
"sensitivity": "Sensibilitat"
|
||||
}
|
||||
},
|
||||
"timestamp_style": {
|
||||
"global": {
|
||||
"appearance": "Aparença global"
|
||||
},
|
||||
"cameras": {
|
||||
"appearance": "Aparença"
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"global": {
|
||||
"sensitivity": "Sensibilitat global",
|
||||
"algorithm": "Algorisme global"
|
||||
},
|
||||
"cameras": {
|
||||
"sensitivity": "Sensibilitat",
|
||||
"algorithm": "Algorisme"
|
||||
}
|
||||
},
|
||||
"snapshots": {
|
||||
"global": {
|
||||
"display": "Visualització global"
|
||||
},
|
||||
"cameras": {
|
||||
"display": "Mostra"
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"global": {
|
||||
"resolution": "Resolució global",
|
||||
"tracking": "Seguiment global"
|
||||
},
|
||||
"cameras": {
|
||||
"resolution": "Resolució",
|
||||
"tracking": "Seguiment"
|
||||
}
|
||||
},
|
||||
"objects": {
|
||||
"global": {
|
||||
"tracking": "Seguiment global",
|
||||
"filtering": "Filtratge global"
|
||||
},
|
||||
"cameras": {
|
||||
"tracking": "Seguiment",
|
||||
"filtering": "Filtra"
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"global": {
|
||||
"retention": "Retenció global",
|
||||
"events": "Esdeveniments globals"
|
||||
},
|
||||
"cameras": {
|
||||
"retention": "Retenció",
|
||||
"events": "Esdeveniment"
|
||||
}
|
||||
},
|
||||
"ffmpeg": {
|
||||
"cameras": {
|
||||
"cameraFfmpeg": "Arguments específics del FFmpeg"
|
||||
}
|
||||
}
|
||||
}
|
||||
32
web/public/locales/ca/config/validation.json
Normal file
32
web/public/locales/ca/config/validation.json
Normal file
@ -0,0 +1,32 @@
|
||||
{
|
||||
"minimum": "Ha de ser com a mínim {{limit}}",
|
||||
"maximum": "Ha de ser com a màxim {{limit}}",
|
||||
"exclusiveMinimum": "Ha de ser més gran que {{limit}}",
|
||||
"exclusiveMaximum": "Ha de ser inferior a {{limit}}",
|
||||
"minLength": "Ha de tenir com a mínim {{limit}} caràcters",
|
||||
"maxLength": "Ha de tenir com a màxim {{limit}} caràcters",
|
||||
"minItems": "Ha de tenir com a mínim {{limit}} elements",
|
||||
"maxItems": "Ha de tenir com a màxim {{limit}} elements",
|
||||
"pattern": "Format no vàlid",
|
||||
"required": "Aquest camp és obligatori",
|
||||
"type": "Tipus de valor no vàlid",
|
||||
"enum": "Ha de ser un dels valors permesos",
|
||||
"const": "El valor no coincideix amb la constant esperada",
|
||||
"uniqueItems": "Tots els elements han de ser únics",
|
||||
"format": "Format no vàlid",
|
||||
"additionalProperties": "No es permet la propietat desconeguda",
|
||||
"oneOf": "Ha de coincidir exactament amb un dels esquemes permesos",
|
||||
"anyOf": "Ha de coincidir almenys amb un dels esquemes permesos",
|
||||
"proxy": {
|
||||
"header_map": {
|
||||
"roleHeaderRequired": "Es requereix la capçalera del rol quan es configuren els mapes de rols."
|
||||
}
|
||||
},
|
||||
"ffmpeg": {
|
||||
"inputs": {
|
||||
"rolesUnique": "Cada rol només es pot assignar a un flux d'entrada.",
|
||||
"detectRequired": "Almenys un flux d'entrada ha de tenir assignat el rol «detecta».",
|
||||
"hwaccelDetectOnly": "Només el flux d'entrada amb el rol detect pot definir arguments d'acceleració del maquinari."
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -39,7 +39,7 @@
|
||||
"surfboard": "Taula de surf",
|
||||
"tennis_racket": "Raqueta de tenis",
|
||||
"bottle": "Ampolla",
|
||||
"plate": "Placa",
|
||||
"plate": "Matrícula",
|
||||
"wine_glass": "Got de vi",
|
||||
"cup": "Copa",
|
||||
"fork": "Forquilla",
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
"deleteImageFailed": "No s'ha pogut suprimir: {{errorMessage}}",
|
||||
"deleteCategoryFailed": "No s'ha pogut suprimir la classe: {{errorMessage}}",
|
||||
"categorizeFailed": "No s'ha pogut categoritzar la imatge: {{errorMessage}}",
|
||||
"trainingFailed": "Ha fallat l'entrenament del model. Comproveu els registres de fragata per a més detalls.",
|
||||
"trainingFailed": "Ha fallat l'entrenament del model. Comproveu els registres de Frigate per a més detalls.",
|
||||
"deleteModelFailed": "No s'ha pogut suprimir el model: {{errorMessage}}",
|
||||
"updateModelFailed": "No s'ha pogut actualitzar el model: {{errorMessage}}",
|
||||
"renameCategoryFailed": "No s'ha pogut canviar el nom de la classe: {{errorMessage}}",
|
||||
|
||||
@ -63,5 +63,25 @@
|
||||
"normalActivity": "Normal",
|
||||
"needsReview": "Necessita revisió",
|
||||
"securityConcern": "Preocupació per la seguretat",
|
||||
"select_all": "Tots"
|
||||
"select_all": "Tots",
|
||||
"motionSearch": {
|
||||
"menuItem": "Cerca de moviment",
|
||||
"openMenu": "Opcions de la càmera"
|
||||
},
|
||||
"motionPreviews": {
|
||||
"menuItem": "Visualitza les vistes prèvies del moviment",
|
||||
"title": "Vista prèvia del moviment: {{camera}}",
|
||||
"mobileSettingsTitle": "Configuració de la vista prèvia del moviment",
|
||||
"mobileSettingsDesc": "Ajusteu la velocitat de reproducció i l'enfosquiment, i trieu una data per a revisar clips només en moviment.",
|
||||
"dim": "Atenuar",
|
||||
"dimAria": "Ajusta la intensitat de l'enfosquiment",
|
||||
"dimDesc": "Incrementa l'enfosquiment per augmentar la visibilitat de l'àrea de moviment.",
|
||||
"speed": "Velocitat",
|
||||
"speedAria": "Selecciona la velocitat de reproducció de la vista prèvia",
|
||||
"speedDesc": "Trieu la rapidesa amb què es reprodueixen els clips de vista prèvia.",
|
||||
"back": "Enrere",
|
||||
"empty": "No hi ha cap vista prèvia disponible",
|
||||
"noPreview": "Vista prèvia no disponible",
|
||||
"seekAria": "Cerca el reproductor {{camera}} a {{time}}"
|
||||
}
|
||||
}
|
||||
|
||||
@ -234,6 +234,10 @@
|
||||
"downloadCleanSnapshot": {
|
||||
"label": "Descarrega la instantània neta",
|
||||
"aria": "Descarrega la instantània neta"
|
||||
},
|
||||
"debugReplay": {
|
||||
"label": "Depura la repetició",
|
||||
"aria": "Mostra aquest objecte rastrejat a la vista de reproducció de depuració"
|
||||
}
|
||||
},
|
||||
"noTrackedObjects": "No s'han trobat objectes rastrejats",
|
||||
@ -285,7 +289,7 @@
|
||||
"title": "Configuració d'anotacions",
|
||||
"showAllZones": {
|
||||
"title": "Mostra totes les Zones",
|
||||
"desc": "Mostra sempre les zones amb marcs on els objectes hagin entrat a la zona."
|
||||
"desc": "Mostra sempre les zones amb fotogrames on els objectes hagin entrat a la zona."
|
||||
},
|
||||
"offset": {
|
||||
"label": "Òfset d'Anotació",
|
||||
|
||||
@ -11,13 +11,27 @@
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "Error al canviar el nom de l’exportació: {{errorMessage}}"
|
||||
"renameExportFailed": "Error al canviar el nom de l’exportació: {{errorMessage}}",
|
||||
"assignCaseFailed": "No s'ha pogut actualitzar l'assignació de cas:{{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"tooltip": {
|
||||
"shareExport": "Comparteix l'exportació",
|
||||
"downloadVideo": "Baixa el vídeo",
|
||||
"editName": "Edita el nom",
|
||||
"deleteExport": "Suprimeix l'exportació"
|
||||
"deleteExport": "Suprimeix l'exportació",
|
||||
"assignToCase": "Afegeix al cas"
|
||||
},
|
||||
"headings": {
|
||||
"cases": "Casos",
|
||||
"uncategorizedExports": "Exportacions sense categoria"
|
||||
},
|
||||
"caseDialog": {
|
||||
"title": "Afegeix al cas",
|
||||
"description": "Trieu un cas existent o creeu-ne un de nou.",
|
||||
"selectLabel": "Cas",
|
||||
"newCaseOption": "Crea un cas nou",
|
||||
"nameLabel": "Nom del cas",
|
||||
"descriptionLabel": "Descripció"
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,17 +7,20 @@
|
||||
"authentication": "Configuració d'autenticació - Frigate",
|
||||
"camera": "Paràmetres de càmera - Frigate",
|
||||
"masksAndZones": "Editor de màscares i zones - Frigate",
|
||||
"general": "Configuració de la interfície d'usuari - Fragata",
|
||||
"general": "Configuració del perfil - Frigate",
|
||||
"frigatePlus": "Paràmetres de Frigate+ - Frigate",
|
||||
"notifications": "Paràmetres de notificació - Frigate",
|
||||
"cameraManagement": "Gestionar càmeres - Frigate",
|
||||
"cameraReview": "Configuració Revisió de Càmeres - Frigate"
|
||||
"cameraReview": "Configuració Revisió de Càmeres - Frigate",
|
||||
"globalConfig": "Configuració global - Frigate",
|
||||
"cameraConfig": "Configuració de la càmera - Frigate",
|
||||
"maintenance": "Manteniment - Frigate"
|
||||
},
|
||||
"menu": {
|
||||
"ui": "Interfície d'usuari",
|
||||
"cameras": "Paràmetres de la càmera",
|
||||
"masksAndZones": "Màscares / Zones",
|
||||
"motionTuner": "Ajust de detecció de moviment",
|
||||
"motionTuner": "Afinador de moviment",
|
||||
"users": "Usuaris",
|
||||
"notifications": "Notificacions",
|
||||
"debug": "Depuració",
|
||||
@ -26,7 +29,64 @@
|
||||
"triggers": "Disparadors",
|
||||
"cameraManagement": "Gestió",
|
||||
"cameraReview": "Revisió",
|
||||
"roles": "Rols"
|
||||
"roles": "Rols",
|
||||
"general": "General",
|
||||
"globalConfig": "Configuració global",
|
||||
"system": "Sistema",
|
||||
"integrations": "Integracions",
|
||||
"profileSettings": "Configuració del perfil",
|
||||
"globalDetect": "Detecció d'objectes",
|
||||
"globalRecording": "Enregistrament",
|
||||
"globalSnapshots": "Instantànies",
|
||||
"globalFfmpeg": "FFmpeg",
|
||||
"globalMotion": "Detecció de moviment",
|
||||
"globalObjects": "Objectes",
|
||||
"globalReview": "Revisió",
|
||||
"globalAudioEvents": "Esdeveniments d'àudio",
|
||||
"globalLivePlayback": "Reproducció en directe",
|
||||
"globalTimestampStyle": "Estil de la marca horària",
|
||||
"systemDatabase": "Base de dades",
|
||||
"systemTls": "TLS",
|
||||
"systemAuthentication": "Autenticació",
|
||||
"systemNetworking": "Xarxa",
|
||||
"systemProxy": "Proxy",
|
||||
"systemUi": "UI",
|
||||
"systemLogging": "Registre",
|
||||
"systemEnvironmentVariables": "Variables d'entorn",
|
||||
"systemTelemetry": "Telemetria",
|
||||
"systemBirdseye": "Birdseye",
|
||||
"systemFfmpeg": "FFmpeg",
|
||||
"systemDetectorHardware": "Hardware del detector",
|
||||
"systemDetectionModel": "Model de detecció",
|
||||
"systemMqtt": "MQTT",
|
||||
"integrationSemanticSearch": "Cerca semàntica",
|
||||
"integrationGenerativeAi": "IA generativa",
|
||||
"integrationFaceRecognition": "Reconeixement de cares",
|
||||
"integrationLpr": "Reconeixement de la matrícula",
|
||||
"integrationObjectClassification": "Classificació de l'objecte",
|
||||
"integrationAudioTranscription": "Transcripció d'àudio",
|
||||
"cameraDetect": "Detecció d'objectes",
|
||||
"cameraFfmpeg": "FFmpeg",
|
||||
"cameraRecording": "Enregistrament",
|
||||
"cameraSnapshots": "Instantànies",
|
||||
"cameraMotion": "Detecció de moviment",
|
||||
"cameraObjects": "Objectes",
|
||||
"cameraConfigReview": "Revisió",
|
||||
"cameraAudioEvents": "Esdeveniments d'àudio",
|
||||
"cameraAudioTranscription": "Transcripció d'àudio",
|
||||
"cameraNotifications": "Notificacions",
|
||||
"cameraLivePlayback": "Reproducció en directe",
|
||||
"cameraBirdseye": "Birdseye",
|
||||
"cameraFaceRecognition": "Reconeixement de cares",
|
||||
"cameraLpr": "Reconeixement de la matrícula",
|
||||
"cameraMqttConfig": "MQTT",
|
||||
"cameraOnvif": "ONVIF",
|
||||
"cameraUi": "UI de la càmera",
|
||||
"cameraTimestampStyle": "Estil de la marca horària",
|
||||
"cameraMqtt": "Càmera MQTT",
|
||||
"maintenance": "Manteniment",
|
||||
"mediaSync": "Sincronització multimèdia",
|
||||
"regionGrid": "Quadrícula de la regió"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
@ -39,7 +99,7 @@
|
||||
"noCamera": "Cap càmera"
|
||||
},
|
||||
"general": {
|
||||
"title": "Paràmetres de la interfície d'usuari",
|
||||
"title": "Configuració del perfil",
|
||||
"liveDashboard": {
|
||||
"title": "Panell en directe",
|
||||
"automaticLiveView": {
|
||||
@ -205,6 +265,10 @@
|
||||
"clickDrawPolygon": "Fes click per a dibuixar un polígon a la imatge.",
|
||||
"toast": {
|
||||
"success": "S'ha desat la zona ({{zoneName}})."
|
||||
},
|
||||
"enabled": {
|
||||
"title": "Habilitat",
|
||||
"description": "Si aquesta zona està activa i activada al fitxer de configuració. Si està desactivat, no pot ser habilitat per MQTT. Les zones inhabilitades s'ignoren en temps d'execució."
|
||||
}
|
||||
},
|
||||
"filter": {
|
||||
@ -237,6 +301,12 @@
|
||||
"title": "{{polygonName}} s'ha desat.",
|
||||
"noName": "La màscara de moviment ha estat desada."
|
||||
}
|
||||
},
|
||||
"defaultName": "Màscara de moviment {{number}}",
|
||||
"name": {
|
||||
"title": "Nom",
|
||||
"description": "Un nom opcional per a aquesta màscara de moviment.",
|
||||
"placeholder": "Introduïu un nom..."
|
||||
}
|
||||
},
|
||||
"objectMasks": {
|
||||
@ -263,11 +333,16 @@
|
||||
"noName": "La màscara d'objectes ha estat desada."
|
||||
}
|
||||
},
|
||||
"context": "Les màscares de filtratge d’objectes s’utilitzen per descartar falsos positius d’un tipus d’objecte concret segons la seva ubicació."
|
||||
"context": "Les màscares de filtratge d’objectes s’utilitzen per descartar falsos positius d’un tipus d’objecte concret segons la seva ubicació.",
|
||||
"name": {
|
||||
"title": "Nom",
|
||||
"description": "Un nom opcional per a aquesta màscara d'objecte.",
|
||||
"placeholder": "Introduïu un nom..."
|
||||
}
|
||||
},
|
||||
"restart_required": "Reinici necessari (canvi de màscares o zones)",
|
||||
"motionMaskLabel": "Màscara de moviment {{number}}",
|
||||
"objectMaskLabel": "Màscara d'objecte {{number}} ({{label}})",
|
||||
"objectMaskLabel": "Màscara d'objecte {{number}}",
|
||||
"toast": {
|
||||
"success": {
|
||||
"copyCoordinates": "S'han copiat les coordenades per a {{polyName}} al porta-retalls."
|
||||
@ -275,6 +350,13 @@
|
||||
"error": {
|
||||
"copyCoordinatesFailed": "No s'han pogut copiar les coordenades al porta-retalls."
|
||||
}
|
||||
},
|
||||
"disabledInConfig": "L'element està desactivat al fitxer de configuració",
|
||||
"masks": {
|
||||
"enabled": {
|
||||
"title": "Habilitat",
|
||||
"description": "Si aquesta màscara està activada al fitxer de configuració. Si està desactivat, no pot ser habilitat per MQTT. Les màscares desactivades s'ignoren en temps d'execució."
|
||||
}
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
@ -644,7 +726,14 @@
|
||||
"error": "No s'han pogut guardar els canvis de configuració: {{errorMessage}}",
|
||||
"success": "Els paràmetres de Frigate+ han estat desats. Reincia Frigate per aplicar els canvis."
|
||||
},
|
||||
"restart_required": "Es necessari un reinici (El model de Frigate+ ha cambiat)"
|
||||
"restart_required": "Es necessari un reinici (El model de Frigate+ ha cambiat)",
|
||||
"description": "Frigate+ és un servei de subscripció que proporciona accés a funcions i capacitats addicionals per a la vostra instància de Frigate, inclosa la capacitat d'utilitzar models de detecció d'objectes personalitzats entrenats en les vostres pròpies dades. Podeu gestionar la configuració del model Frigate+ aquí.",
|
||||
"cardTitles": {
|
||||
"api": "API",
|
||||
"currentModel": "Model actual",
|
||||
"otherModels": "Altres models",
|
||||
"configuration": "Configuració"
|
||||
}
|
||||
},
|
||||
"enrichments": {
|
||||
"semanticSearch": {
|
||||
@ -665,7 +754,7 @@
|
||||
"success": "La reindexació ha començat amb èxit.",
|
||||
"label": "Reindexar ara",
|
||||
"confirmTitle": "Confirmar la reindexació",
|
||||
"desc": "La reindexació regenerarà les incrustacions (embeddings) de tots els objectes seguits. Aquest procés s’executa en segon pla i pot arribar a saturar la CPU, així com trigar una bona estona depenent del nombre d’objectes seguits que tinguis.",
|
||||
"desc": "La reindexació regenerarà les incrustacions per a tots els objectes rastrejats. Aquest procés s'executa en segon pla i pot treure el màxim de la CPU i prendre una quantitat de temps raonable depenent del nombre d'objectes rastrejats que tingueu.",
|
||||
"confirmDesc": "Estàs segur que vols reindexar totes les incrustacions (embeddings) dels objectes seguits? Aquest procés s’executarà en segon pla, però pot arribar a saturar la CPU i trigar bastant temps. Pots seguir-ne el progrés a la pàgina d’Explora.",
|
||||
"alreadyInProgress": "La reindexació ja està en curs.",
|
||||
"error": "Error en iniciar la reindexació: {{errorMessage}}"
|
||||
@ -1181,7 +1270,12 @@
|
||||
"backToSettings": "Torna a la configuració de la càmera",
|
||||
"streams": {
|
||||
"title": "Habilita / Inhabilita les càmeres",
|
||||
"desc": "Inhabilita temporalment una càmera fins que es reiniciï la fragata. La inhabilitació d'una càmera atura completament el processament de Frigate dels fluxos d'aquesta càmera. La detecció, l'enregistrament i la depuració no estaran disponibles.<br /> <em>Nota: això no desactiva les retransmissions de go2rtc.</em>"
|
||||
"desc": "Inhabilita temporalment una càmera fins que es reiniciï la fragata. La inhabilitació d'una càmera atura completament el processament de Frigate dels fluxos d'aquesta càmera. La detecció, l'enregistrament i la depuració no estaran disponibles.<br /> <em>Nota: això no desactiva les retransmissions de go2rtc.</em>",
|
||||
"enableLabel": "Càmeres habilitades",
|
||||
"enableDesc": "Inhabilita temporalment una càmera habilitada fins que es reiniciï Frigate. La inhabilitació d'una càmera atura completament el processament de Frigate dels fluxos d'aquesta càmera. La detecció, l'enregistrament i la depuració no estaran disponibles.<br /> <em>Nota: això no desactiva les retransmissions de go2rtc.</em>",
|
||||
"disableLabel": "Càmeres inhabilitades",
|
||||
"disableDesc": "Habilita una càmera que actualment no és visible a la interfície d'usuari i està desactivada a la configuració. Es requereix un reinici de Frigate després d'activar-la.",
|
||||
"enableSuccess": "{{cameraName}} activat a la configuració. Reinicia Frigate per aplicar els canvis."
|
||||
},
|
||||
"cameraConfig": {
|
||||
"add": "Afegeix una càmera",
|
||||
@ -1211,6 +1305,18 @@
|
||||
"toast": {
|
||||
"success": "La càmera {{cameraName}} s'ha desat correctament"
|
||||
}
|
||||
},
|
||||
"deleteCamera": "Suprimeix la càmera",
|
||||
"deleteCameraDialog": {
|
||||
"title": "Suprimeix la càmera",
|
||||
"description": "Suprimir una càmera eliminarà permanentment tots els enregistraments, els objectes rastrejats i la configuració d'aquesta càmera. Qualsevol flux go2rtc associat amb aquesta càmera encara pot haver de ser eliminat manualment.",
|
||||
"selectPlaceholder": "Trieu la càmera...",
|
||||
"confirmTitle": "N'estàs segur?",
|
||||
"confirmWarning": "Suprimir <strong>{{cameraName}}</strong> no es pot desfer.",
|
||||
"deleteExports": "Elimina també les exportacions d'aquesta càmera",
|
||||
"confirmButton": "Suprimeix permanentment",
|
||||
"success": "La càmera {{cameraName}} s'ha suprimit correctament",
|
||||
"error": "No s'ha pogut suprimir la càmera {{cameraName}}"
|
||||
}
|
||||
},
|
||||
"cameraReview": {
|
||||
@ -1236,7 +1342,7 @@
|
||||
"selectDetectionsZones": "Selecció de zones per a les deteccions",
|
||||
"limitDetections": "Limita les deteccions a zones específiques",
|
||||
"toast": {
|
||||
"success": "S'ha desat la configuració de la classificació de la revisió. Reinicia la fragata per aplicar canvis."
|
||||
"success": "S'ha desat la configuració de la classificació de la revisió. Reinicia Frigate per aplicar canvis."
|
||||
},
|
||||
"unsavedChanges": "Paràmetres de classificació de revisions sense desar per {{camera}}",
|
||||
"objectAlertsTips": "Totes els objectes {{alertsLabels}} de {{cameraName}} es mostraran com avisos.",
|
||||
@ -1249,5 +1355,265 @@
|
||||
}
|
||||
},
|
||||
"title": "Paràmetres de Revisió de la Càmera"
|
||||
}
|
||||
},
|
||||
"saveAllPreview": {
|
||||
"title": "Canvis a desar",
|
||||
"triggerLabel": "Revisa els canvis pendents",
|
||||
"empty": "No hi ha canvis pendents.",
|
||||
"scope": {
|
||||
"label": "Àmbit",
|
||||
"global": "Global",
|
||||
"camera": "Càmara:{{cameraName}}"
|
||||
},
|
||||
"field": {
|
||||
"label": "Camp"
|
||||
},
|
||||
"value": {
|
||||
"label": "Valor nou",
|
||||
"reset": "Restableix"
|
||||
}
|
||||
},
|
||||
"detectionModel": {
|
||||
"plusActive": {
|
||||
"title": "Gestió del model Frigate+",
|
||||
"label": "Font del model actual",
|
||||
"description": "Aquesta instància està executant un model Frigate+. Seleccioneu o canvieu el vostre model a la configuració de Frigate+.",
|
||||
"goToFrigatePlus": "Ves a la configuració de Frigate+",
|
||||
"showModelForm": "Configuració manual d'un model"
|
||||
}
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "Manteniment",
|
||||
"sync": {
|
||||
"title": "Sincronització multimèdia",
|
||||
"desc": "Frigate netejarà periòdicament els mitjans en un horari regular segons la configuració de la seva retenció. És normal veure alguns arxius orfes mentre corre Frigate. Utilitzeu aquesta característica per eliminar fitxers multimèdia orfes del disc que ja no estan referenciats a la base de dades.",
|
||||
"started": "S'ha iniciat la sincronització del mitjà.",
|
||||
"alreadyRunning": "Ja s'està executant una tasca de sincronització",
|
||||
"error": "No s'ha pogut iniciar la sincronització",
|
||||
"currentStatus": "Estat",
|
||||
"jobId": "ID de la tasca",
|
||||
"startTime": "Hora d'inici",
|
||||
"endTime": "Hora final",
|
||||
"statusLabel": "Estat",
|
||||
"results": "Resultats",
|
||||
"errorLabel": "Error",
|
||||
"mediaTypes": "Tipus de suport",
|
||||
"allMedia": "Tots els suports",
|
||||
"dryRun": "Executa en sec",
|
||||
"dryRunEnabled": "No s'eliminarà cap fitxer",
|
||||
"dryRunDisabled": "S'eliminaran els fitxers",
|
||||
"force": "Força",
|
||||
"forceDesc": "Evita el llindar de seguretat i completa la sincronització fins i tot si més del 50% dels fitxers s'eliminarien.",
|
||||
"running": "Sincronització en execució...",
|
||||
"start": "Inicia la sincronització",
|
||||
"inProgress": "La sincronització està en curs. Aquesta pàgina està desactivada.",
|
||||
"status": {
|
||||
"queued": "En cua",
|
||||
"running": "En execució",
|
||||
"completed": "Completat",
|
||||
"failed": "Ha fallat",
|
||||
"notRunning": "No s'està executant"
|
||||
},
|
||||
"resultsFields": {
|
||||
"filesChecked": "Fitxers comprovats",
|
||||
"orphansFound": "Orfes trobades",
|
||||
"orphansDeleted": "Orfes eliminats",
|
||||
"aborted": "Avortat. La supressió superaria el llindar de seguretat.",
|
||||
"error": "Error",
|
||||
"totals": "Totals"
|
||||
},
|
||||
"event_snapshots": "Instantànies de l'objecte rastrejat",
|
||||
"event_thumbnails": "Miniatures d'objecte rastrejat",
|
||||
"review_thumbnails": "Revisa les miniatures",
|
||||
"previews": "Previsualitzacions",
|
||||
"exports": "Exporta",
|
||||
"recordings": "Enregistraments"
|
||||
},
|
||||
"regionGrid": {
|
||||
"title": "Quadrícula de la regió",
|
||||
"desc": "La quadrícula de regions és una optimització que aprèn on solen aparèixer objectes de diferents mides en el camp de visió de cada càmera. Frigate utilitza aquestes dades per detectar regions de mida eficient. La quadrícula es construeix automàticament amb el temps a partir de dades d'objectes rastrejats.",
|
||||
"clear": "Neteja la quadrícula de la regió",
|
||||
"clearConfirmTitle": "Neteja la quadrícula de la regió",
|
||||
"clearConfirmDesc": "No es recomana netejar la quadrícula de la regió tret que hagi canviat recentment la mida del model del detector o hagi canviat la posició física de la càmera i tingui problemes de seguiment d'objectes. La quadrícula es reconstruirà automàticament amb el temps a mesura que els objectes siguin rastrejats. Es requereix un reinici de la fragata perquè els canvis tinguin efecte.",
|
||||
"clearSuccess": "La quadrícula de la regió s'ha netejat correctament",
|
||||
"clearError": "Ha fallat en netejar la graella de la regió",
|
||||
"restartRequired": "Cal reiniciar per a que els canvis de la quadrícula de la regió tinguin efecte"
|
||||
}
|
||||
},
|
||||
"configForm": {
|
||||
"global": {
|
||||
"title": "Configuració global",
|
||||
"description": "Aquestes opcions de configuració s'apliquen a totes les càmeres, llevat que se substitueixin en la configuració específica de la càmera."
|
||||
},
|
||||
"camera": {
|
||||
"title": "Configuració de la càmera",
|
||||
"description": "Aquests paràmetres només s'apliquen a aquesta càmera i substitueixen els paràmetres globals."
|
||||
},
|
||||
"advancedSettingsCount": "Configuració avançada ({{count}})",
|
||||
"advancedCount": "Avançat ({{count}})",
|
||||
"showAdvanced": "Mostra la configuració avançada",
|
||||
"tabs": {
|
||||
"sharedDefaults": "Per defecte compartit",
|
||||
"system": "Sistema",
|
||||
"integrations": "Integracions"
|
||||
},
|
||||
"additionalProperties": {
|
||||
"keyLabel": "Clau",
|
||||
"valueLabel": "Valor",
|
||||
"keyPlaceholder": "Nou valor",
|
||||
"remove": "Elimina"
|
||||
},
|
||||
"timezone": {
|
||||
"defaultOption": "Utilitza la zona horària del navegador"
|
||||
},
|
||||
"roleMap": {
|
||||
"empty": "No hi ha assignacions de rols",
|
||||
"roleLabel": "Rol",
|
||||
"groupsLabel": "Grups",
|
||||
"addMapping": "Afegeix un mapatge de rol",
|
||||
"remove": "Elimina"
|
||||
},
|
||||
"ffmpegArgs": {
|
||||
"preset": "Predefinit",
|
||||
"manual": "Arguments manuals",
|
||||
"inherit": "Hereta de la configuració de la càmera",
|
||||
"selectPreset": "Selecció de valors predefinits",
|
||||
"manualPlaceholder": "ntroduïu els arguments FFmpeg"
|
||||
},
|
||||
"cameraInputs": {
|
||||
"itemTitle": "Flux {{index}}"
|
||||
},
|
||||
"restartRequiredField": "Reinicia requerit",
|
||||
"restartRequiredFooter": "S'ha canviat la configuració - es requereix reiniciar",
|
||||
"sections": {
|
||||
"detect": "Detecció",
|
||||
"record": "Enregistrament",
|
||||
"snapshots": "Instantànies",
|
||||
"motion": "Moviment",
|
||||
"objects": "Objectes",
|
||||
"review": "Revisió",
|
||||
"audio": "Àudio",
|
||||
"notifications": "Notificacions",
|
||||
"live": "Vista en viu",
|
||||
"timestamp_style": "Marques temporals",
|
||||
"mqtt": "MQTT",
|
||||
"database": "Base de dades",
|
||||
"telemetry": "Telemetria",
|
||||
"auth": "Autenticació",
|
||||
"tls": "TLS",
|
||||
"proxy": "Proxy",
|
||||
"go2rtc": "go2rtc",
|
||||
"ffmpeg": "FFmpeg",
|
||||
"detectors": "Detectors",
|
||||
"model": "Model",
|
||||
"semantic_search": "Cerca semàntica",
|
||||
"genai": "GenAI",
|
||||
"face_recognition": "Reconeixement de cares",
|
||||
"lpr": "Reconeixement de matrícules",
|
||||
"birdseye": "Birdseye"
|
||||
},
|
||||
"detect": {
|
||||
"title": "Configuració de detecció"
|
||||
},
|
||||
"detectors": {
|
||||
"title": "Configuració del detector",
|
||||
"singleType": "Només es permet un detector {{type}}.",
|
||||
"keyRequired": "Es requereix el nom del detector.",
|
||||
"keyDuplicate": "El nom del detector ja existeix.",
|
||||
"noSchema": "No hi ha esquemes de detector disponibles.",
|
||||
"none": "No s'ha configurat cap instància de detector.",
|
||||
"add": "Afegeix un detector"
|
||||
},
|
||||
"record": {
|
||||
"title": "Configuració de l'enregistrament"
|
||||
},
|
||||
"snapshots": {
|
||||
"title": "Configuració de la instantània"
|
||||
},
|
||||
"motion": {
|
||||
"title": "Configuració del moviment"
|
||||
},
|
||||
"objects": {
|
||||
"title": "Configuració de l'objecte"
|
||||
},
|
||||
"audioLabels": {
|
||||
"summary": "{{count}} etiquetes d'àudio seleccionades",
|
||||
"empty": "No hi ha etiquetes d'àudio disponibles"
|
||||
},
|
||||
"objectLabels": {
|
||||
"summary": "{{count}} tipus d'objectes seleccionats",
|
||||
"empty": "No hi ha cap etiqueta d'objecte disponible"
|
||||
},
|
||||
"filters": {
|
||||
"objectFieldLabel": "{{field}} per {{label}}"
|
||||
},
|
||||
"zoneNames": {
|
||||
"summary": "{{count}} seleccionats",
|
||||
"empty": "No hi ha zones disponibles"
|
||||
},
|
||||
"inputRoles": {
|
||||
"summary": "{{count}} rols seleccionats",
|
||||
"empty": "No hi ha cap rol disponible",
|
||||
"options": {
|
||||
"detect": "Detecta",
|
||||
"record": "Enregistrament",
|
||||
"audio": "Àudio"
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
"title": "Configuració de la revisió"
|
||||
},
|
||||
"audio": {
|
||||
"title": "Configuració de l'àudio"
|
||||
},
|
||||
"notifications": {
|
||||
"title": "Configuració de notificacions"
|
||||
},
|
||||
"live": {
|
||||
"title": "Configuració de la vista en viu"
|
||||
},
|
||||
"timestamp_style": {
|
||||
"title": "Configuració de la marca horària"
|
||||
},
|
||||
"searchPlaceholder": "Cerca..."
|
||||
},
|
||||
"globalConfig": {
|
||||
"title": "Configuració global",
|
||||
"description": "Configura la configuració global que s'aplica a totes les càmeres llevat que se sobreescriti.",
|
||||
"toast": {
|
||||
"success": "La configuració global s'ha desat correctament",
|
||||
"error": "No s'ha pogut desar la configuració global",
|
||||
"validationError": "Ha fallat la validació"
|
||||
}
|
||||
},
|
||||
"cameraConfig": {
|
||||
"title": "Configuració de la càmera",
|
||||
"description": "Configura la configuració per a les càmeres individuals. La configuració substitueix els valors predeterminats globals.",
|
||||
"overriddenBadge": "Sobreescrit",
|
||||
"resetToGlobal": "Restableix a global",
|
||||
"toast": {
|
||||
"success": "La configuració de la càmera s'ha desat correctament",
|
||||
"error": "Ha fallat en desar la configuració de la càmera"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"success": "La configuració s'ha desat correctament",
|
||||
"successRestartRequired": "La configuració s'ha desat correctament. Reinicia Frigate per aplicar els canvis.",
|
||||
"error": "No s'ha pogut desar la configuració",
|
||||
"validationError": "Ha fallat la validació: {{message}}",
|
||||
"resetSuccess": "Restableix als valors predeterminats globals",
|
||||
"resetError": "No s'ha pogut restablir la configuració",
|
||||
"saveAllSuccess_one": "S'ha desat la secció {{count}} correctament.",
|
||||
"saveAllSuccess_many": "Totes les {{count}} seccions s'han desat correctament.",
|
||||
"saveAllSuccess_other": "Totes les {{count}} seccions s'han desat correctament.",
|
||||
"saveAllPartial_one": "{{successCount}} de la secció {{totalCount}} desada. {{failCount}} ha fallat.",
|
||||
"saveAllPartial_many": "{{successCount}} de {{totalCount}} seccions desades. {{failCount}} ha fallat.",
|
||||
"saveAllPartial_other": "{{successCount}} de {{totalCount}} seccions desades. {{failCount}} ha fallat.",
|
||||
"saveAllFailure": "Ha fallat en desar totes les seccions.",
|
||||
"applied": "La configuració s'ha aplicat correctament"
|
||||
},
|
||||
"unsavedChanges": "Teniu canvis sense desar",
|
||||
"confirmReset": "Confirma el restabliment",
|
||||
"resetToDefaultDescription": "Això restablirà tots els paràmetres d'aquesta secció als seus valors predeterminats. Aquesta acció no es pot desfer.",
|
||||
"resetToGlobalDescription": "Això restablirà la configuració d'aquesta secció als valors predeterminats globals. Aquesta acció no es pot desfer."
|
||||
}
|
||||
|
||||
@ -6,7 +6,8 @@
|
||||
"logs": {
|
||||
"frigate": "Registres de Frigate - Frigate",
|
||||
"go2rtc": "Registres de Go2RTC - Frigate",
|
||||
"nginx": "Registres de Nginix - Frigate"
|
||||
"nginx": "Registres de Nginix - Frigate",
|
||||
"websocket": "Registres de missatges - Frigate"
|
||||
},
|
||||
"enrichments": "Estadístiques complementàries - Frigate"
|
||||
},
|
||||
@ -33,6 +34,32 @@
|
||||
"fetchingLogsFailed": "Error al obtenir els registres: {{errorMessage}}",
|
||||
"whileStreamingLogs": "Error en la transmissió dels registres: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"websocket": {
|
||||
"label": "Missatges",
|
||||
"pause": "Pausa",
|
||||
"resume": "Reprèn",
|
||||
"clear": "Neteja",
|
||||
"filter": {
|
||||
"all": "Tots els temes",
|
||||
"topics": "Temes",
|
||||
"events": "Esdeveniment",
|
||||
"reviews": "Revisions",
|
||||
"classification": "Classificació",
|
||||
"face_recognition": "Reconeixement facial",
|
||||
"lpr": "LPR",
|
||||
"camera_activity": "Activitat de la càmera",
|
||||
"system": "Sistema",
|
||||
"camera": "Càmara",
|
||||
"all_cameras": "Totes les càmeres",
|
||||
"cameras_count_one": "{{count}} càmera",
|
||||
"cameras_count_other": "{{count}} Càmeres"
|
||||
},
|
||||
"empty": "Encara no s'ha capturat cap missatge",
|
||||
"count": "{{count}} missatges",
|
||||
"expanded": {
|
||||
"payload": "Payload"
|
||||
}
|
||||
}
|
||||
},
|
||||
"general": {
|
||||
@ -80,8 +107,10 @@
|
||||
"intelGpuWarning": {
|
||||
"title": "Avís d'estadístiques de la GPU d'Intel",
|
||||
"message": "Estadístiques de GPU no disponibles",
|
||||
"description": "Aquest és un error conegut en les eines d'informació de les estadístiques de GPU d'Intel (intel.gpu.top) on es trencarà i retornarà repetidament un ús de GPU del 0% fins i tot en els casos en què l'acceleració del maquinari i la detecció d'objectes s'executen correctament a la (i)GPU. Això no és un error de fragata. Podeu reiniciar l'amfitrió per a corregir temporalment el problema i confirmar que la GPU funciona correctament. Això no afecta el rendiment."
|
||||
}
|
||||
"description": "Aquest és un error conegut en les eines d'informació de les estadístiques de GPU d'Intel (intel.gpu.top) on es trencarà i retornarà repetidament un ús de GPU del 0% fins i tot en els casos en què l'acceleració del maquinari i la detecció d'objectes s'executen correctament a la (i)GPU. Això no és un error de Frigate. Podeu reiniciar l'amfitrió per a corregir temporalment el problema i confirmar que la GPU funciona correctament. Això no afecta el rendiment."
|
||||
},
|
||||
"gpuTemperature": "Temperatura de la GPU",
|
||||
"npuTemperature": "Temperatura NPU"
|
||||
},
|
||||
"otherProcesses": {
|
||||
"title": "Altres processos",
|
||||
@ -165,6 +194,17 @@
|
||||
"error": {
|
||||
"unableToProbeCamera": "No s'ha pogut sondejar la càmera: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"connectionQuality": {
|
||||
"title": "Qualitat de la connexió",
|
||||
"excellent": "Excel·lent",
|
||||
"fair": "Fira",
|
||||
"poor": "Pobre",
|
||||
"unusable": "No utilitzable",
|
||||
"fps": "FPS",
|
||||
"expectedFps": "FPS esperat",
|
||||
"reconnectsLastHour": "Reconnecta (última hora)",
|
||||
"stallsLastHour": "Parades (última hora)"
|
||||
}
|
||||
},
|
||||
"lastRefreshed": "Darrera actualització: ",
|
||||
@ -176,7 +216,8 @@
|
||||
"detectHighCpuUsage": "{{camera}} te un ús elevat de CPU per la detecció ({{detectAvg}}%)",
|
||||
"detectIsVerySlow": "{{detect}} és molt lent ({{speed}} ms)",
|
||||
"detectIsSlow": "{{detect}} és lent ({{speed}} ms)",
|
||||
"shmTooLow": "/dev/shm directori ({{total}} MB) hauria de ser incrementat com a mínim {{min}} MB."
|
||||
"shmTooLow": "/dev/shm directori ({{total}} MB) hauria de ser incrementat com a mínim {{min}} MB.",
|
||||
"debugReplayActive": "La sessió de repetició de depuració està activa"
|
||||
},
|
||||
"enrichments": {
|
||||
"title": "Enriquiments",
|
||||
|
||||
@ -133,7 +133,7 @@
|
||||
},
|
||||
"unit": {
|
||||
"speed": {
|
||||
"kph": "Km/h",
|
||||
"kph": "km/h",
|
||||
"mph": "míle/h"
|
||||
},
|
||||
"length": {
|
||||
@ -177,7 +177,7 @@
|
||||
"fi": "Suomi (Finština)",
|
||||
"sk": "Slovenčina (Slovenština)",
|
||||
"withSystem": {
|
||||
"label": "Použít systémové nastavení pro jazyk"
|
||||
"label": "Použít systémové nastavení jazyka"
|
||||
},
|
||||
"zhCN": "简体中文 (Zjednodušená čínština)",
|
||||
"es": "Español (Španělština)",
|
||||
@ -205,14 +205,15 @@
|
||||
"pl": "Polski (Polština)",
|
||||
"th": "ไทย (Thaiština)",
|
||||
"ca": "Català (Katalánština)",
|
||||
"sl": "Slovinština (Slovinsko)",
|
||||
"ptBR": "Português brasileiro (Brazilian Portuguese)",
|
||||
"sr": "Српски (Serbian)",
|
||||
"lt": "Lietuvių (Lithuanian)",
|
||||
"bg": "Български (Bulgarian)",
|
||||
"gl": "Galego (Galician)",
|
||||
"id": "Bahasa Indonesia (Indonesian)",
|
||||
"ur": "اردو (Urdu)"
|
||||
"sl": "Slovinština (Slovinština)",
|
||||
"ptBR": "Português brasileiro (Brazilská Portugalština)",
|
||||
"sr": "Српски (Srbština)",
|
||||
"lt": "Lietuvių (Litevština)",
|
||||
"bg": "Български (Bulharština)",
|
||||
"gl": "Galego (Galicijština)",
|
||||
"id": "Bahasa Indonesia (Indonéština)",
|
||||
"ur": "اردو (Urdština)",
|
||||
"hr": "Hrvatski (Chorvatština)"
|
||||
},
|
||||
"theme": {
|
||||
"highcontrast": "Vysoký kontrast",
|
||||
|
||||
@ -123,7 +123,18 @@
|
||||
"on": "AN",
|
||||
"suspended": "Pausierte",
|
||||
"unsuspended": "fortsetzen",
|
||||
"continue": "Weiter"
|
||||
"continue": "Weiter",
|
||||
"add": "Hinzufügen",
|
||||
"applying": "Wird angewendet…",
|
||||
"undo": "Rückgängig",
|
||||
"copiedToClipboard": "In die Zwischenablage kopiert",
|
||||
"modified": "Verändert",
|
||||
"overridden": "Überschrieben",
|
||||
"resetToGlobal": "Auf Global zurückgesetzen",
|
||||
"resetToDefault": "Auf Werkseinstellungen zurücksetzten",
|
||||
"saveAll": "Alle speichern",
|
||||
"savingAll": "Alle werden gespeichert…",
|
||||
"undoAll": "Alle rückgängig"
|
||||
},
|
||||
"label": {
|
||||
"back": "Zurück",
|
||||
|
||||
@ -74,7 +74,11 @@
|
||||
"saveExport": "Export speichern",
|
||||
"previewExport": "Exportvorschau"
|
||||
},
|
||||
"export": "Exportieren"
|
||||
"export": "Exportieren",
|
||||
"case": {
|
||||
"label": "Fall",
|
||||
"placeholder": "Einen Fall auswählen"
|
||||
}
|
||||
},
|
||||
"streaming": {
|
||||
"restreaming": {
|
||||
|
||||
81
web/public/locales/de/config/cameras.json
Normal file
81
web/public/locales/de/config/cameras.json
Normal file
@ -0,0 +1,81 @@
|
||||
{
|
||||
"label": "KameraEinstellungen",
|
||||
"name": {
|
||||
"label": "Name der Kamera",
|
||||
"description": "Kameraname ist erforderlich"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Aktiviert",
|
||||
"description": "Aktiviert"
|
||||
},
|
||||
"audio": {
|
||||
"label": "Audioereignisse",
|
||||
"description": "Einstellungen für audiobasierte Ereigniserkennung für diese Kamera.",
|
||||
"enabled": {
|
||||
"label": "Aktivieren der Audioerkennung",
|
||||
"description": "Aktivieren / Deaktivieren der audiobasierten Ereigniserkennung für diese Kamera."
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Mindestlautstärke",
|
||||
"description": "Mindest-RMS-Lautstärkeschwelle, die für die Audioerkennung erforderlich ist; niedrigere Werte erhöhen die Empfindlichkeit (z. B. 200 hoch, 500 mittel, 1000 niedrig)."
|
||||
},
|
||||
"listen": {
|
||||
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, schreien, sprechen, rufen).",
|
||||
"label": "Hörtypen"
|
||||
},
|
||||
"filters": {
|
||||
"label": "Audiofilter",
|
||||
"description": "Filtereinstellungen pro Audiotyp, wie z. B. Konfidenzschwellenwerte, die zur Reduzierung von Fehlalarmen verwendet werden."
|
||||
},
|
||||
"max_not_heard": {
|
||||
"label": "Zeitüberschreitung beendet",
|
||||
"description": "Anzahl der Sekunden ohne den konfigurierten Audiotyp, bevor das Audioereignis beendet wird."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Ursprünglicher Audiozustand",
|
||||
"description": "Gibt an, ob die Audioerkennung ursprünglich in der statischen Konfigurationsdatei aktiviert war."
|
||||
},
|
||||
"num_threads": {
|
||||
"label": "Erkennungsthreads",
|
||||
"description": "Anzahl der Threads, die für die Audioerkennungsverarbeitung verwendet werden sollen."
|
||||
}
|
||||
},
|
||||
"friendly_name": {
|
||||
"label": "Anzeigename",
|
||||
"description": "Kamera-Anzeigename in der Frigate-Benutzeroberfläche"
|
||||
},
|
||||
"audio_transcription": {
|
||||
"label": "Audio-Transkription",
|
||||
"description": "Einstellungen für Live- und Sprach-Audio-Transkription, die für Veranstaltungen und Live-Untertitel verwendet werden.",
|
||||
"enabled": {
|
||||
"label": "Transkription aktivieren",
|
||||
"description": "Aktivieren oder deaktivieren Sie die manuell ausgelöste Transkription von Audioereignissen."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Ursprünglicher Transkriptionszustand"
|
||||
},
|
||||
"live_enabled": {
|
||||
"label": "Live-Transkription",
|
||||
"description": "Aktivieren Sie die Live-Transkription für Audio, sobald es empfangen wird."
|
||||
}
|
||||
},
|
||||
"birdseye": {
|
||||
"label": "Birdseye",
|
||||
"description": "Einstellungen für die Birdseye-Kompositansicht, die mehrere Kamerafeeds zu einem einzigen Layout zusammenfasst.",
|
||||
"enabled": {
|
||||
"label": "Birdseye aktivieren",
|
||||
"description": "Aktivieren oder deaktivieren der Birdseye-Funktion."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Verfolgungsmodus",
|
||||
"description": "Modus zum Einbeziehen von Kameras in Birdseye: „Objekte“, „Bewegung“ oder „kontinuierlich“."
|
||||
},
|
||||
"order": {
|
||||
"label": "Position",
|
||||
"description": "Numerische Position, die die Reihenfolge der Kamera im Birdseye-Layout steuert."
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"label": "Objekterkennung"
|
||||
}
|
||||
}
|
||||
138
web/public/locales/de/config/global.json
Normal file
138
web/public/locales/de/config/global.json
Normal file
@ -0,0 +1,138 @@
|
||||
{
|
||||
"version": {
|
||||
"label": "Aktuelle Version der Konfiguration",
|
||||
"description": "Die Version Numerisch oder als Zeichenketten der aktiven Konfiguration, um Migrationen oder Formatänderungen zu erkennen."
|
||||
},
|
||||
"safe_mode": {
|
||||
"label": "abgesicherter Modus",
|
||||
"description": "Wenn aktiviert, starte Frigate im abgesicherten Modus mit reduzierten Features für die Fehlersuche."
|
||||
},
|
||||
"audio": {
|
||||
"label": "Audioereignisse",
|
||||
"enabled": {
|
||||
"label": "Aktivieren der Audioerkennung"
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Mindestlautstärke",
|
||||
"description": "Mindest-RMS-Lautstärkeschwelle, die für die Audioerkennung erforderlich ist; niedrigere Werte erhöhen die Empfindlichkeit (z. B. 200 hoch, 500 mittel, 1000 niedrig)."
|
||||
},
|
||||
"listen": {
|
||||
"description": "Liste der zu erkennenden Audioereignisse (z.B: bellen, Feueralarm, schreien, sprechen, rufen).",
|
||||
"label": "Hörtypen"
|
||||
},
|
||||
"filters": {
|
||||
"label": "Audiofilter",
|
||||
"description": "Filtereinstellungen pro Audiotyp, wie z. B. Konfidenzschwellenwerte, die zur Reduzierung von Fehlalarmen verwendet werden."
|
||||
},
|
||||
"max_not_heard": {
|
||||
"label": "Zeitüberschreitung beendet",
|
||||
"description": "Anzahl der Sekunden ohne den konfigurierten Audiotyp, bevor das Audioereignis beendet wird."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Ursprünglicher Audiozustand",
|
||||
"description": "Gibt an, ob die Audioerkennung ursprünglich in der statischen Konfigurationsdatei aktiviert war."
|
||||
},
|
||||
"num_threads": {
|
||||
"label": "Erkennungsthreads",
|
||||
"description": "Anzahl der Threads, die für die Audioerkennungsverarbeitung verwendet werden sollen."
|
||||
}
|
||||
},
|
||||
"environment_vars": {
|
||||
"label": "Umgebungsvariablen",
|
||||
"description": "Schlüssel-/Wertpaare für Umgebungsvariablen des Frigate-Prozesses in Home Assistant OS. Nicht-HAOS Benutzer müssen anstatt dessen Docker Umgebungsvariablen nutzen."
|
||||
},
|
||||
"logger": {
|
||||
"label": "Protokollierung",
|
||||
"description": "Steuert die Standard-Protokollierungsausführlichkeit und Überschreibungen der Protokollierungsstufe pro Komponente.",
|
||||
"default": {
|
||||
"label": "Loglevel",
|
||||
"description": "Standardmäßiges globales Log Level (Debug, Info, Warnung, Fehler)."
|
||||
},
|
||||
"logs": {
|
||||
"label": "Prozessspezifisches Log Level",
|
||||
"description": "Überschreiben der Protokollierungsstufe pro Komponente, um die Ausführlichkeit für bestimmte Module zu erhöhen oder zu verringern."
|
||||
}
|
||||
},
|
||||
"auth": {
|
||||
"label": "Authentifizierung",
|
||||
"description": "Einstellungen für die Authentifizierung und Sitzungen, einschließlich Optionen für Cookies und Limits.",
|
||||
"enabled": {
|
||||
"label": "Authentifizierung aktivieren",
|
||||
"description": "Aktivierung native Authentifizierung für Frigate UI."
|
||||
},
|
||||
"reset_admin_password": {
|
||||
"label": "Zurücksetzen vom Admin Passwort",
|
||||
"description": "Wenn wahr, wird das Passwort beim nächsten start zurückgesetzt und das neue Passwort steht in den Logs."
|
||||
},
|
||||
"cookie_name": {
|
||||
"label": "JWT cookie Name",
|
||||
"description": "Name des Cookies, das zum Speichern des JWT-Tokens für die native Authentifizierung verwendet wird."
|
||||
},
|
||||
"cookie_secure": {
|
||||
"label": "Sicheres Cookie-Flag",
|
||||
"description": "Setzen Sie das Sicherheitsflag im Authentifizierungs-Cookie; sollte bei Verwendung von TLS auf „true“ gesetzt sein."
|
||||
},
|
||||
"session_length": {
|
||||
"label": "Sitzungssdauer",
|
||||
"description": "Sitzungsdauer in Sekunden für JWT-basierte Sitzungen."
|
||||
},
|
||||
"refresh_time": {
|
||||
"label": "Sitzung aktualisieren",
|
||||
"description": "Wenn eine Sitzung innerhalb dieser Sekunden abläuft, aktualisieren Sie sie wieder auf ihre volle Länge."
|
||||
},
|
||||
"failed_login_rate_limit": {
|
||||
"label": "Fehlgeschlagene Anmeldeversuche",
|
||||
"description": "Begrenzungsregeln für fehlgeschlagene Anmeldeversuche zur Reduzierung von Brute-Force-Angriffen."
|
||||
},
|
||||
"trusted_proxies": {
|
||||
"label": "Vertrauenswürdige Proxys",
|
||||
"description": "Liste vertrauenswürdiger Proxy-IPs, die bei der Ermittlung der Client-IP für die Ratenbegrenzung verwendet werden."
|
||||
},
|
||||
"hash_iterations": {
|
||||
"label": "Hash-Iterationen",
|
||||
"description": "Anzahl der PBKDF2-SHA256-Iterationen, die beim Hashing von Benutzerkennwörtern verwendet werden sollen."
|
||||
},
|
||||
"roles": {
|
||||
"label": "Rollen zuweisen",
|
||||
"description": "Ordnen Sie Rollen zu Kameralisten zu. Eine leere Liste gewährt der Rolle Zugriff auf alle Kameras."
|
||||
},
|
||||
"admin_first_time_login": {
|
||||
"label": "Erstmalige Admin-Markierung",
|
||||
"description": "Wenn dies zutrifft, zeigt die Benutzeroberfläche möglicherweise einen Hilfe-Link auf der Anmeldeseite an, der Benutzer darüber informiert, wie sie sich nach einer Zurücksetzung des Administratorpassworts anmelden können. "
|
||||
}
|
||||
},
|
||||
"audio_transcription": {
|
||||
"label": "Audio-Transkription",
|
||||
"description": "Einstellungen für Live- und Sprach-Audio-Transkription, die für Veranstaltungen und Live-Untertitel verwendet werden.",
|
||||
"live_enabled": {
|
||||
"label": "Live-Transkription",
|
||||
"description": "Aktivieren Sie die Live-Transkription für Audio, sobald es empfangen wird."
|
||||
}
|
||||
},
|
||||
"birdseye": {
|
||||
"label": "Birdseye",
|
||||
"description": "Einstellungen für die Birdseye-Kompositansicht, die mehrere Kamerafeeds zu einem einzigen Layout zusammenfasst.",
|
||||
"enabled": {
|
||||
"label": "Birdseye aktivieren",
|
||||
"description": "Aktivieren oder deaktivieren der Birdseye-Funktion."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Verfolgungsmodus",
|
||||
"description": "Modus zum Einbeziehen von Kameras in Birdseye: „Objekte“, „Bewegung“ oder „kontinuierlich“."
|
||||
},
|
||||
"order": {
|
||||
"label": "Position",
|
||||
"description": "Numerische Position, die die Reihenfolge der Kamera im Birdseye-Layout steuert."
|
||||
}
|
||||
},
|
||||
"database": {
|
||||
"label": "Datenbank",
|
||||
"description": "Einstellungen für die SQLite-Datenbank, die von Frigate zum Speichern von verfolgten Objekten und Aufzeichnungsmetadaten verwendet wird.",
|
||||
"path": {
|
||||
"label": "Pfad zur Datenbank"
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"label": "Objekterkennung"
|
||||
}
|
||||
}
|
||||
73
web/public/locales/de/config/groups.json
Normal file
73
web/public/locales/de/config/groups.json
Normal file
@ -0,0 +1,73 @@
|
||||
{
|
||||
"audio": {
|
||||
"global": {
|
||||
"detection": "Globale Erkennung",
|
||||
"sensitivity": "Globale Empfindlichkeit"
|
||||
},
|
||||
"cameras": {
|
||||
"detection": "Erkennung",
|
||||
"sensitivity": "Empfindlichkeit"
|
||||
}
|
||||
},
|
||||
"timestamp_style": {
|
||||
"global": {
|
||||
"appearance": "Globale Darstellung"
|
||||
},
|
||||
"cameras": {
|
||||
"appearance": "Erscheinungsbild"
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"global": {
|
||||
"sensitivity": "Globale Empfindlichkeit",
|
||||
"algorithm": "Globaler Algorithmus"
|
||||
},
|
||||
"cameras": {
|
||||
"sensitivity": "Genauhigkeit",
|
||||
"algorithm": "Algorithmus"
|
||||
}
|
||||
},
|
||||
"snapshots": {
|
||||
"global": {
|
||||
"display": "Globale Anzeige"
|
||||
},
|
||||
"cameras": {
|
||||
"display": "Anzeige"
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"global": {
|
||||
"resolution": "Globale Auflösung",
|
||||
"tracking": "Globale Verfolgung"
|
||||
},
|
||||
"cameras": {
|
||||
"resolution": "Auflösung",
|
||||
"tracking": "Verfolgung"
|
||||
}
|
||||
},
|
||||
"objects": {
|
||||
"global": {
|
||||
"tracking": "Globale Verfolgung",
|
||||
"filtering": "Globaler Filter"
|
||||
},
|
||||
"cameras": {
|
||||
"tracking": "Verfolgung",
|
||||
"filtering": "Filtern"
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"global": {
|
||||
"retention": "Globale Bindung",
|
||||
"events": "Globale Ereignisse"
|
||||
},
|
||||
"cameras": {
|
||||
"retention": "Bindung",
|
||||
"events": "Events"
|
||||
}
|
||||
},
|
||||
"ffmpeg": {
|
||||
"cameras": {
|
||||
"cameraFfmpeg": "Kameraspezifische FFmpeg-Argumente"
|
||||
}
|
||||
}
|
||||
}
|
||||
32
web/public/locales/de/config/validation.json
Normal file
32
web/public/locales/de/config/validation.json
Normal file
@ -0,0 +1,32 @@
|
||||
{
|
||||
"maximum": "Darf nicht größer sein als {{limit}}",
|
||||
"minimum": "Darf nicht kleiner sein als {{limit}}",
|
||||
"exclusiveMinimum": "Muss größer sein als {{limit}}",
|
||||
"minLength": "Muss mindestens {{limit}} Zeichen lang sein",
|
||||
"maxLength": "Muss maximal {{limit}} Zeichen lang sein",
|
||||
"minItems": "Muss mindestens {{limit}} mal vorkommen",
|
||||
"exclusiveMaximum": "Muss kleiner sein als {{limit}}",
|
||||
"maxItems": "Muss maximal {{limit}} mal vorkommen",
|
||||
"pattern": "Ungültiges Format",
|
||||
"required": "Pflichtfeld",
|
||||
"type": "Ungültiger Wertetyp",
|
||||
"enum": "Muss einer der erlaubten Werte sein",
|
||||
"const": "Wert stimmt nicht mit erwarteter Konstante überein",
|
||||
"uniqueItems": "Alle Einträge müssen eindeutig sein",
|
||||
"format": "Ungültiges Format",
|
||||
"additionalProperties": "Unbekannte Eigenschaft ist nicht erlaubt",
|
||||
"oneOf": "Muss exakt mit einem der erlaubten Schemas übereinstimmen",
|
||||
"anyOf": "Muss mindestens mit einem der erlaubten Schemas übereinstimmen",
|
||||
"proxy": {
|
||||
"header_map": {
|
||||
"roleHeaderRequired": "Rollen-Header muss angegeben werden, wenn Rollen-Zuordnungen konfiguriert sind."
|
||||
}
|
||||
},
|
||||
"ffmpeg": {
|
||||
"inputs": {
|
||||
"rolesUnique": "Jede Rolle kann nur einem input stream zugeteilt werden.",
|
||||
"detectRequired": "Es muss mindestens ein input stream die Rolle 'erkennen' tragen.",
|
||||
"hwaccelDetectOnly": "Nur der input-stream mit der Rolle 'erkennen' kann Hardwarebeschleunigungs Argumente definieren."
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -11,13 +11,27 @@
|
||||
"noExports": "Keine Exporte gefunden",
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "Umbenennen des Exports fehlgeschlagen: {{errorMessage}}"
|
||||
"renameExportFailed": "Umbenennen des Exports fehlgeschlagen: {{errorMessage}}",
|
||||
"assignCaseFailed": "Aktualisierung der Fallzuweisung fehlgeschlagen: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"tooltip": {
|
||||
"shareExport": "Export teilen",
|
||||
"downloadVideo": "Video herunterladen",
|
||||
"editName": "Name ändern",
|
||||
"deleteExport": "Export löschen"
|
||||
"deleteExport": "Export löschen",
|
||||
"assignToCase": "Hinzufügen zum Fall"
|
||||
},
|
||||
"headings": {
|
||||
"cases": "Fälle",
|
||||
"uncategorizedExports": "Unkategorisierte Exporte"
|
||||
},
|
||||
"caseDialog": {
|
||||
"title": "Zum Fall hinzufügen",
|
||||
"description": "Wählen Sie einen bestehenden Fall aus oder erstellen Sie einen neuen.",
|
||||
"selectLabel": "Fall",
|
||||
"newCaseOption": "Neuen Fall erstellen",
|
||||
"nameLabel": "Fallname",
|
||||
"descriptionLabel": "Beschreibung"
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,14 +5,17 @@
|
||||
"camera": "Kameraeinstellungen - Frigate",
|
||||
"masksAndZones": "Masken- und Zoneneditor – Frigate",
|
||||
"object": "Debug - Frigate",
|
||||
"general": "UI-Einstellungen - Frigate",
|
||||
"general": "Profileinstellungen - Frigate",
|
||||
"frigatePlus": "Frigate+ Einstellungen – Frigate",
|
||||
"classification": "Klassifizierungseinstellungen – Frigate",
|
||||
"motionTuner": "Bewegungserkennungs-Optimierer – Frigate",
|
||||
"notifications": "Benachrichtigungseinstellungen",
|
||||
"enrichments": "Erweiterte Statistiken - Frigate",
|
||||
"cameraManagement": "Kameras verwalten - Frigate",
|
||||
"cameraReview": "Kameraeinstellungen prüfen - Frigate"
|
||||
"cameraReview": "Kameraeinstellungen prüfen - Frigate",
|
||||
"globalConfig": "Globale Konfiguration - Frigate",
|
||||
"cameraConfig": "Kamera Konfiguration - Frigate",
|
||||
"maintenance": "Wartung - Frigate"
|
||||
},
|
||||
"menu": {
|
||||
"ui": "Benutzeroberfläche",
|
||||
@ -28,7 +31,31 @@
|
||||
"triggers": "Auslöser",
|
||||
"roles": "Rollen",
|
||||
"cameraManagement": "Verwaltung",
|
||||
"cameraReview": "Überprüfung"
|
||||
"cameraReview": "Überprüfung",
|
||||
"system": "System",
|
||||
"general": "allgemein",
|
||||
"globalConfig": "Globale Konfiguration",
|
||||
"integrations": "Integrationen",
|
||||
"profileSettings": "Profil Einstellung",
|
||||
"globalDetect": "Objekterkennung",
|
||||
"globalRecording": "Aufnahme",
|
||||
"globalSnapshots": "Schnappschüsse",
|
||||
"globalFfmpeg": "FFmpeg",
|
||||
"globalMotion": "Bewegungserkennung",
|
||||
"globalObjects": "Objekte",
|
||||
"globalReview": "Überprüfung",
|
||||
"globalAudioEvents": "Audio Events",
|
||||
"globalLivePlayback": "Live Wiedergabe",
|
||||
"globalTimestampStyle": "Zeitstempelformat",
|
||||
"systemDatabase": "Datenbank",
|
||||
"systemTls": "TLS",
|
||||
"systemAuthentication": "Authentifizierung",
|
||||
"systemNetworking": "Netzwerk",
|
||||
"systemProxy": "Proxy",
|
||||
"systemUi": "UI",
|
||||
"systemLogging": "Log",
|
||||
"systemEnvironmentVariables": "Umgebungsvariablen",
|
||||
"systemTelemetry": "Telemetrie"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
@ -41,7 +68,7 @@
|
||||
"noCamera": "Keine Kamera"
|
||||
},
|
||||
"general": {
|
||||
"title": "Einstellungen der Benutzeroberfläche",
|
||||
"title": "Profileinstellungen",
|
||||
"liveDashboard": {
|
||||
"title": "Live Übersicht",
|
||||
"playAlertVideos": {
|
||||
@ -408,7 +435,7 @@
|
||||
}
|
||||
},
|
||||
"motionMaskLabel": "Bewegungsmaske {{number}}",
|
||||
"objectMaskLabel": "Objektmaske {{number}} ({{label}})"
|
||||
"objectMaskLabel": "Objektmaske {{number}}"
|
||||
},
|
||||
"debug": {
|
||||
"objectShapeFilterDrawing": {
|
||||
|
||||
@ -67,7 +67,8 @@
|
||||
"logs": {
|
||||
"frigate": "Frigate Protokolle – Frigate",
|
||||
"go2rtc": "Go2RTC Protokolle - Frigate",
|
||||
"nginx": "Nginx Protokolle - Frigate"
|
||||
"nginx": "Nginx Protokolle - Frigate",
|
||||
"websocket": "Nachrichten Logs- Frigate"
|
||||
},
|
||||
"enrichments": "Erweiterte Statistiken - Frigate"
|
||||
},
|
||||
@ -93,7 +94,32 @@
|
||||
"whileStreamingLogs": "Beim Übertragen der Protokolle ist ein Fehler aufgetreten: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"tips": "Protokolle werden in Echtzeit vom Server übertragen"
|
||||
"tips": "Protokolle werden in Echtzeit vom Server übertragen",
|
||||
"websocket": {
|
||||
"label": "Nachrichten",
|
||||
"pause": "Pause",
|
||||
"clear": "Säubern",
|
||||
"filter": {
|
||||
"all": "alle Themen",
|
||||
"topics": "Themen",
|
||||
"events": "Event",
|
||||
"reviews": "Bewertungen",
|
||||
"classification": "Klassifizierung",
|
||||
"face_recognition": "Gesichtserkennung",
|
||||
"lpr": "LPR",
|
||||
"camera_activity": "Kameraaktivität",
|
||||
"system": "System",
|
||||
"camera": "Kamera",
|
||||
"all_cameras": "Alle Kameras",
|
||||
"cameras_count_one": "{{count}} Kamera",
|
||||
"cameras_count_other": "{{count}} Kameras"
|
||||
},
|
||||
"empty": "Noch keine Nachrichten erfasst",
|
||||
"count": "{{count}} Nachrichten",
|
||||
"expanded": {
|
||||
"payload": "Nutzlast"
|
||||
}
|
||||
}
|
||||
},
|
||||
"metrics": "Systemmetriken",
|
||||
"storage": {
|
||||
|
||||
@ -80,6 +80,9 @@
|
||||
"back": "Back",
|
||||
"empty": "No previews available",
|
||||
"noPreview": "Preview unavailable",
|
||||
"seekAria": "Seek {{camera}} player to {{time}}"
|
||||
"seekAria": "Seek {{camera}} player to {{time}}",
|
||||
"filter": "Filter",
|
||||
"filterDesc": "Select areas to only show clips with motion in those regions.",
|
||||
"filterClear": "Clear"
|
||||
}
|
||||
}
|
||||
|
||||
30
web/public/locales/es/config/cameras.json
Normal file
30
web/public/locales/es/config/cameras.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"name": {
|
||||
"label": "Nombre de cámara",
|
||||
"description": "El nombre de la cámara es necesario"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Habilitado",
|
||||
"description": "Habilitado"
|
||||
},
|
||||
"audio": {
|
||||
"label": "Eventos de audio",
|
||||
"description": "Configuración para la detección de eventos basada en audio para esta cámara.",
|
||||
"enabled": {
|
||||
"label": "Habilitar la detección de audio",
|
||||
"description": "Activar o deshabilitar la detección de eventos de audio para esta cámara."
|
||||
},
|
||||
"max_not_heard": {
|
||||
"label": "Finalizar el tiempo de espera",
|
||||
"description": "Cantidad de segundos sin el tipo de audio configurado antes de que finalice el evento de audio."
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Volumen mínimo"
|
||||
}
|
||||
},
|
||||
"friendly_name": {
|
||||
"label": "Nombre descriptivo",
|
||||
"description": "Nombre descriptivo de la cámara utilizado en la interfaz de usuario de Frigate"
|
||||
},
|
||||
"label": "Configuración de Cámara"
|
||||
}
|
||||
43
web/public/locales/es/config/global.json
Normal file
43
web/public/locales/es/config/global.json
Normal file
@ -0,0 +1,43 @@
|
||||
{
|
||||
"version": {
|
||||
"label": "Versión de configuración actual",
|
||||
"description": "Versión numérica o de cadena de la configuración activa para ayudar a detectar migraciones o cambios de formato."
|
||||
},
|
||||
"safe_mode": {
|
||||
"label": "Modo seguro",
|
||||
"description": "Cuando está habilitado, inicia Frigate en modo seguro con funciones reducidas para la solución de problemas."
|
||||
},
|
||||
"environment_vars": {
|
||||
"label": "Variables de entorno",
|
||||
"description": "Pares clave/valor de variables de entorno para establecer para el proceso de Frigate en el sistema operativo Home Assistant. Los usuarios que no son de HAOS deben usar la configuración de variables de entorno de Docker."
|
||||
},
|
||||
"logger": {
|
||||
"label": "Registro",
|
||||
"description": "Controla la verbosidad de registro predeterminada y la sobre-escritura de nivel de registro por componente.",
|
||||
"default": {
|
||||
"label": "Nivel de registro",
|
||||
"description": "Nivel de detalle global predeterminada del registro (depuración, información, advertencia, error)."
|
||||
},
|
||||
"logs": {
|
||||
"label": "Nivel de registro por proceso",
|
||||
"description": "Sobre-escribir el nivel de registro por componente para aumentar o disminuir el nivel de detalle de módulos específicos."
|
||||
}
|
||||
},
|
||||
"audio": {
|
||||
"label": "Eventos de audio",
|
||||
"enabled": {
|
||||
"label": "Habilitar la detección de audio"
|
||||
},
|
||||
"max_not_heard": {
|
||||
"label": "Finalizar el tiempo de espera",
|
||||
"description": "Cantidad de segundos sin el tipo de audio configurado antes de que finalice el evento de audio."
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Volumen mínimo"
|
||||
}
|
||||
},
|
||||
"auth": {
|
||||
"label": "Autenticación",
|
||||
"description": "Configuración relacionada con la autenticación y la sesión, incluidas las opciones de cookies y límite de peticiones."
|
||||
}
|
||||
}
|
||||
44
web/public/locales/es/config/groups.json
Normal file
44
web/public/locales/es/config/groups.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"audio": {
|
||||
"global": {
|
||||
"detection": "Detección Global",
|
||||
"sensitivity": "Sensibilidad Global"
|
||||
},
|
||||
"cameras": {
|
||||
"detection": "Detección",
|
||||
"sensitivity": "Sensibilidad"
|
||||
}
|
||||
},
|
||||
"timestamp_style": {
|
||||
"global": {
|
||||
"appearance": "Apariencia Global"
|
||||
},
|
||||
"cameras": {
|
||||
"appearance": "Apariencia"
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"global": {
|
||||
"sensitivity": "Sensibilidad Global",
|
||||
"algorithm": "Algoritmo Global"
|
||||
},
|
||||
"cameras": {
|
||||
"sensitivity": "Sensibilidad",
|
||||
"algorithm": "Algoritmo"
|
||||
}
|
||||
},
|
||||
"snapshots": {
|
||||
"global": {
|
||||
"display": "Pantalla Global"
|
||||
},
|
||||
"cameras": {
|
||||
"display": "Pantalla"
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"global": {
|
||||
"resolution": "Resolución Global",
|
||||
"tracking": "Seguimiento Global"
|
||||
}
|
||||
}
|
||||
}
|
||||
16
web/public/locales/es/config/validation.json
Normal file
16
web/public/locales/es/config/validation.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"minimum": "Debe ser al menos {{limit}}",
|
||||
"maximum": "Debe ser como mucho {{limit}}",
|
||||
"exclusiveMinimum": "Debe ser mayor que {{limit}}",
|
||||
"exclusiveMaximum": "Debe ser menor que {{limit}}",
|
||||
"minLength": "Debe ser al menos {{limit}} carácter(es)",
|
||||
"maxLength": "Debe ser como máximo {{limit}} carácter(es)",
|
||||
"minItems": "Debe tener al menos {{limit}} objetos",
|
||||
"maxItems": "Debe tener como máximo {{limit}} objetos",
|
||||
"pattern": "Formato no válido",
|
||||
"required": "Este campo es requerido",
|
||||
"type": "Tipo de valor no válido",
|
||||
"enum": "Debe ser uno de los valores permitidos",
|
||||
"const": "El valor no coincide con la constante esperada",
|
||||
"uniqueItems": "Todos los objetos deben ser únicos"
|
||||
}
|
||||
@ -10,7 +10,8 @@
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "No se pudo renombrar la exportación: {{errorMessage}}"
|
||||
"renameExportFailed": "No se pudo renombrar la exportación: {{errorMessage}}",
|
||||
"assignCaseFailed": "Fallo en la actualización de la asignación de caso: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"deleteExport.desc": "¿Estás seguro de que quieres eliminar {{exportName}}?",
|
||||
@ -18,6 +19,11 @@
|
||||
"shareExport": "Compartir exportación",
|
||||
"downloadVideo": "Descargar video",
|
||||
"editName": "Editar nombre",
|
||||
"deleteExport": "Eliminar exportación"
|
||||
"deleteExport": "Eliminar exportación",
|
||||
"assignToCase": "Añadir al caso"
|
||||
},
|
||||
"headings": {
|
||||
"cases": "Casos",
|
||||
"uncategorizedExports": "Exportaciones sin categorizar"
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,7 +12,10 @@
|
||||
"notifications": "Configuración de Notificaciones - Frigate",
|
||||
"enrichments": "Configuración de Análisis Avanzado - Frigate",
|
||||
"cameraManagement": "Administrar Cámaras - Frigate",
|
||||
"cameraReview": "Revisar Configuración de Cámaras - Frigate"
|
||||
"cameraReview": "Revisar Configuración de Cámaras - Frigate",
|
||||
"globalConfig": "Configuración Global - Frigate",
|
||||
"cameraConfig": "Configuración de Cámara - Frigate",
|
||||
"maintenance": "Mantenimiento - Frigate"
|
||||
},
|
||||
"menu": {
|
||||
"cameras": "Configuración de Cámara",
|
||||
@ -28,7 +31,10 @@
|
||||
"triggers": "Disparadores",
|
||||
"roles": "Rols",
|
||||
"cameraManagement": "Administración",
|
||||
"cameraReview": "Revisar"
|
||||
"cameraReview": "Revisar",
|
||||
"general": "General",
|
||||
"globalConfig": "Configuración Global",
|
||||
"system": "Sistema"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
@ -411,7 +417,7 @@
|
||||
},
|
||||
"restart_required": "Es necesario reiniciar (se han cambiado las máscaras/zonas)",
|
||||
"motionMaskLabel": "Máscara de movimiento {{number}}",
|
||||
"objectMaskLabel": "Máscara de objeto {{number}} ({{label}})"
|
||||
"objectMaskLabel": "Máscara de objeto {{number}}"
|
||||
},
|
||||
"motionDetectionTuner": {
|
||||
"title": "Sintonizador de Detección de Movimiento",
|
||||
@ -731,7 +737,7 @@
|
||||
"alreadyInProgress": "El proceso de re-indexado ya se está ejecutando.",
|
||||
"error": "Ha ocurrido un error al intentar iniciar el proceso de re-indexado: {{errorMessage}}",
|
||||
"label": "Re-indexar Ahora",
|
||||
"desc": "La re-indexación regenerará las embeddings para todos los objetos rastreados. Este proceso se ejecuta en segundo plano y puede utilizar al máximo tu CPU, además de tomar una cantidad considerable de tiempo dependiendo de la cantidad de objetos rastreados que tengas."
|
||||
"desc": "La re-indexación regenerará las incrustaciones para todos los objetos rastreados. Este proceso se ejecuta en segundo plano y puede utilizar al máximo tu CPU, además de tomar una cantidad considerable de tiempo dependiendo de la cantidad de objetos rastreados que tengas."
|
||||
},
|
||||
"modelSize": {
|
||||
"label": "Tamaño del Modelo",
|
||||
|
||||
@ -5,7 +5,8 @@
|
||||
"logs": {
|
||||
"frigate": "Registros de Frigate - Frigate",
|
||||
"go2rtc": "Registros de Go2RTC - Frigate",
|
||||
"nginx": "Registros de Nginx - Frigate"
|
||||
"nginx": "Registros de Nginx - Frigate",
|
||||
"websocket": "Mensajes Logs - Frigata"
|
||||
},
|
||||
"cameras": "Estadísticas de cámaras - Frigate",
|
||||
"enrichments": "Estadísticas de Enriquecimientos - Frigate"
|
||||
@ -31,6 +32,12 @@
|
||||
},
|
||||
"download": {
|
||||
"label": "Descargar registros"
|
||||
},
|
||||
"websocket": {
|
||||
"label": "Mensajes",
|
||||
"pause": "Pausar",
|
||||
"resume": "Continuar",
|
||||
"clear": "Limpiar"
|
||||
}
|
||||
},
|
||||
"title": "Sistema",
|
||||
|
||||
@ -178,7 +178,9 @@
|
||||
"export": "Ekspordi",
|
||||
"uiPlayground": "Leht kasutajaliidese katsetamiseks",
|
||||
"faceLibrary": "Näoteek",
|
||||
"classification": "Klassifikatsioon"
|
||||
"classification": "Klassifikatsioon",
|
||||
"chat": "Vestlus",
|
||||
"actions": "Tegevused"
|
||||
},
|
||||
"unit": {
|
||||
"speed": {
|
||||
@ -234,7 +236,18 @@
|
||||
"export": "Ekspordi",
|
||||
"deleteNow": "Kustuta kohe",
|
||||
"next": "Järgmine",
|
||||
"continue": "Jätka"
|
||||
"continue": "Jätka",
|
||||
"add": "Lisa",
|
||||
"undo": "Võta tegevus tagasi",
|
||||
"copiedToClipboard": "Kopeeritud lõikelauale",
|
||||
"modified": "Muudetud",
|
||||
"overridden": "Sürjutatud",
|
||||
"resetToDefault": "Lähtesta vaikimisi väärtusteks",
|
||||
"saveAll": "Salvesta kõik",
|
||||
"resetToGlobal": "Lähtesta üldiseks väärtusteks",
|
||||
"savingAll": "Salvestan kõiki…",
|
||||
"undoAll": "Pööra kõik tegevused tagasi",
|
||||
"applying": "Võtan kasutusele…"
|
||||
},
|
||||
"label": {
|
||||
"back": "Mine tagasi",
|
||||
|
||||
@ -78,6 +78,10 @@
|
||||
"fromTimeline": {
|
||||
"saveExport": "Salvesta eksporditud sisu",
|
||||
"previewExport": "Eksporditud sisu eelvaade"
|
||||
},
|
||||
"case": {
|
||||
"label": "Juhtum",
|
||||
"placeholder": "Vali juhtum"
|
||||
}
|
||||
},
|
||||
"streaming": {
|
||||
|
||||
@ -13,11 +13,25 @@
|
||||
"shareExport": "Jaga eksporditud sisu",
|
||||
"downloadVideo": "Laadi video alla",
|
||||
"editName": "Muuda nime",
|
||||
"deleteExport": "Kustuta eksporditud sisu"
|
||||
"deleteExport": "Kustuta eksporditud sisu",
|
||||
"assignToCase": "Lisa juhtumile"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "Eksporditud sisu nime muutmine ei õnnestunud: {{errorMessage}}"
|
||||
"renameExportFailed": "Eksporditud sisu nime muutmine ei õnnestunud: {{errorMessage}}",
|
||||
"assignCaseFailed": "Juhtumiga seose uuendamine ei õnnestunud: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"headings": {
|
||||
"cases": "Juhtumid",
|
||||
"uncategorizedExports": "Kategooriata eksportimised"
|
||||
},
|
||||
"caseDialog": {
|
||||
"title": "Lisa juhtumile",
|
||||
"selectLabel": "Juhtum",
|
||||
"newCaseOption": "Lisa uus juhtum",
|
||||
"nameLabel": "Juhtumi nimi",
|
||||
"descriptionLabel": "Kirjeldus",
|
||||
"description": "Vali olemasolev juhtum või lisa uus."
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,7 +6,8 @@
|
||||
"description": {
|
||||
"placeholder": "Sisesta nimi selle kogumiku jaoks",
|
||||
"invalidName": "Vigane nimi. Nimed võivad sisaldada ainult tähti, numbreid, tühikuid, ülakomasid, alakriipse ja sidekriipse.",
|
||||
"addFace": "Laadides üles oma esimese pildi saad lisada uue kogumiku Näoteeki."
|
||||
"addFace": "Laadides üles oma esimese pildi saad lisada uue kogumiku Näoteeki.",
|
||||
"nameCannotContainHash": "Nimi ei saa sisaldada # märki."
|
||||
},
|
||||
"documentTitle": "Näoteek - Frigate",
|
||||
"createFaceLibrary": {
|
||||
|
||||
@ -11,7 +11,8 @@
|
||||
"audioDetection": "Heli tuvastus",
|
||||
"transcription": "Heli üleskirjutus",
|
||||
"snapshots": "Hetkvõtted",
|
||||
"autotracking": "Automaatne jälgimine"
|
||||
"autotracking": "Automaatne jälgimine",
|
||||
"recording": "Salvestus"
|
||||
},
|
||||
"documentTitle": "Otseülekanne - Frigate",
|
||||
"documentTitle.withCamera": "{{camera}} - Otseülekanne - Frigate",
|
||||
@ -100,6 +101,10 @@
|
||||
"audio": {
|
||||
"available": "Selles voogedastuses on heliriba saadaval",
|
||||
"unavailable": "Selles voogedastuses pole heliriba saadaval"
|
||||
},
|
||||
"title": "Voogedastus",
|
||||
"lowBandwidth": {
|
||||
"resetStream": "Lähtesta voogedastus"
|
||||
}
|
||||
},
|
||||
"notifications": "Teavitused",
|
||||
@ -127,7 +132,8 @@
|
||||
"playInBackground": {
|
||||
"label": "Esita taustal",
|
||||
"desc": "Kasuta seda valikut, kui tahad voogedastuse jätkumist ka siis, kui pildivaade on peidetud."
|
||||
}
|
||||
},
|
||||
"debugView": "Veaotsinguvaade"
|
||||
},
|
||||
"noCameras": {
|
||||
"buttonText": "Lisa kaamera",
|
||||
@ -136,7 +142,17 @@
|
||||
"description": "Sul pole õigust ühegi selle grupi kaamera vaatamiseks."
|
||||
},
|
||||
"title": "Ühtegi kaamerat pole seadistatud",
|
||||
"description": "Alustamiseks ühenda mõni kaamera Frigate'iga."
|
||||
"description": "Alustamiseks ühenda mõni kaamera Frigate'iga.",
|
||||
"default": {
|
||||
"title": "Ühtegi kaamerat pole seadistatud",
|
||||
"description": "Alustamiseks ühenda mõni kaamera Frigate'iga.",
|
||||
"buttonText": "Lisa kaamera"
|
||||
},
|
||||
"group": {
|
||||
"title": "Grupid pole ühtegi kaamerat",
|
||||
"description": "Selles kaameragrupis pole ühtegi määratud ega kasutusel kaamerat.",
|
||||
"buttonText": "Halda gruppe"
|
||||
}
|
||||
},
|
||||
"effectiveRetainMode": {
|
||||
"modes": {
|
||||
|
||||
@ -172,7 +172,7 @@
|
||||
"default": "Seadistused - Frigate",
|
||||
"authentication": "Autentimise seadistused - Frigate",
|
||||
"cameraReview": "Kaamerate kordusvaatuste seadistused - Frigate",
|
||||
"general": "Kasutajaliidese seadistused - Frigate",
|
||||
"general": "Profiili seadistused - Frigate",
|
||||
"frigatePlus": "Frigate+ seadistused - Frigate",
|
||||
"notifications": "Teavituste seadistused - Frigate",
|
||||
"cameraManagement": "Kaamerate haldus - Frigate",
|
||||
@ -180,7 +180,7 @@
|
||||
"object": "Silumine ja veaotsing - Frigate"
|
||||
},
|
||||
"general": {
|
||||
"title": "Kasutajaliidese seadistused",
|
||||
"title": "Profiili seadistused",
|
||||
"cameraGroupStreaming": {
|
||||
"clearAll": "Kustuta kõik voogedastuse seadistused"
|
||||
},
|
||||
|
||||
@ -75,7 +75,8 @@
|
||||
},
|
||||
"inProgress": "در حال انجام",
|
||||
"invalidStartTime": "زمان شروع نامعتبر است",
|
||||
"invalidEndTime": "زمان پایان نامعتبر است"
|
||||
"invalidEndTime": "زمان پایان نامعتبر است",
|
||||
"never": "هرگز"
|
||||
},
|
||||
"unit": {
|
||||
"length": {
|
||||
|
||||
@ -129,7 +129,17 @@
|
||||
"deleteNow": "Supprimer maintenant",
|
||||
"download": "Télécharger",
|
||||
"done": "Terminé",
|
||||
"continue": "Continuer"
|
||||
"continue": "Continuer",
|
||||
"add": "Ajouter",
|
||||
"undo": "Annuler",
|
||||
"copiedToClipboard": "Copié dans le presse-papiers",
|
||||
"modified": "Modifié",
|
||||
"overridden": "Surpassé",
|
||||
"resetToGlobal": "Réinitialiser aux réglages globaux",
|
||||
"resetToDefault": "Réinitialiser aux réglages par défaut",
|
||||
"saveAll": "Tout enregistrer",
|
||||
"savingAll": "Enregistrement de tout en cours…",
|
||||
"undoAll": "Tout annuler"
|
||||
},
|
||||
"menu": {
|
||||
"configuration": "Configuration",
|
||||
|
||||
@ -77,6 +77,10 @@
|
||||
"fromTimeline": {
|
||||
"saveExport": "Enregistrer l'exportation",
|
||||
"previewExport": "Aperçu de l'exportation"
|
||||
},
|
||||
"case": {
|
||||
"label": "Dossier",
|
||||
"placeholder": "Sélectionner un dossier"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
|
||||
320
web/public/locales/fr/config/cameras.json
Normal file
320
web/public/locales/fr/config/cameras.json
Normal file
@ -0,0 +1,320 @@
|
||||
{
|
||||
"name": {
|
||||
"label": "Nom de la caméra",
|
||||
"description": "Le nom de la caméra est requis"
|
||||
},
|
||||
"friendly_name": {
|
||||
"label": "Nom convivial",
|
||||
"description": "Nom convivial de la caméra utilisé dans l'IU Frigate"
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Activé",
|
||||
"description": "Activé"
|
||||
},
|
||||
"audio": {
|
||||
"label": "Événements audio",
|
||||
"description": "Réglages pour la détection des événements audio de cette caméra.",
|
||||
"enabled": {
|
||||
"label": "Activer la détection audio",
|
||||
"description": "Activer ou désactiver la détection des événements audio pour cette caméra."
|
||||
},
|
||||
"max_not_heard": {
|
||||
"description": "Nombre de secondes sans le type audio configuré avant que l'événement audio se termine.",
|
||||
"label": "Délai d'inactivité"
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Volume minimal",
|
||||
"description": "Seuil minimal d'activation du volume en moyenne quadratique requis pour exécuter la détection audio. Des valeurs plus faibles augmentent la sensibilité (p. ex. 200 est élevé, 500 est moyen et 1000 est faible)."
|
||||
},
|
||||
"listen": {
|
||||
"label": "Types d'écoute",
|
||||
"description": "Liste des types d'événements audio à détecter (p. ex. bark, fire_alarm, scream, speech, yell)."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Filtres audio",
|
||||
"description": "Réglages des filtres par type audio, tels que seuils de confiance utilisé afin de réduire les faux positifs."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "État audio original",
|
||||
"description": "Indique si la détection audio était initialement activée dans le fichier de configuration statique."
|
||||
},
|
||||
"num_threads": {
|
||||
"label": "Fils d'exécution pour la détection",
|
||||
"description": "Nombre de fils d'éxécution à utiliser pour le traitement de la détection audio."
|
||||
}
|
||||
},
|
||||
"audio_transcription": {
|
||||
"label": "Transcription audio",
|
||||
"description": "Réglages pour la transcription audio et vocale utilisée pour les événements et les sous-titres en temps réel.",
|
||||
"enabled": {
|
||||
"label": "Activer la transcription",
|
||||
"description": "Activer ou désactiver le déclenchement manuel de la transcription des événements audio."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "État original de la transcription"
|
||||
},
|
||||
"live_enabled": {
|
||||
"label": "Transcription en temps réel",
|
||||
"description": "Activer la diffusion de la transcription en temps réel pour le flux sonore dès sa réception."
|
||||
}
|
||||
},
|
||||
"birdseye": {
|
||||
"label": "À vol d'oiseau",
|
||||
"description": "Réglages pour la vue composée à vol d'oiseau qui combine plusieurs flux de caméras dans une simple disposition.",
|
||||
"enabled": {
|
||||
"label": "Activer la vue à vol d'oiseau",
|
||||
"description": "Activer ou désactiver la fonctionalité de vue à vol d'oiseau."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Mode de suivi",
|
||||
"description": "Mode pour l'inclusion des caméras dans la vue à vol d'oiseau: 'objects', 'motion', ou 'continuous'."
|
||||
},
|
||||
"order": {
|
||||
"label": "Emplacement",
|
||||
"description": "Emplacement numérique contrôlant l'ordre de la caméra dans la disposition en vue à vol d'oiseau."
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"label": "Détection d'objets",
|
||||
"description": "Réglages pour la détection ou le rôle de détection utilisé pour exécuter la détection des objets et initialiser les traceurs.",
|
||||
"enabled": {
|
||||
"label": "Détection activée",
|
||||
"description": "Activer ou désactiver la détection des objets pour cette caméra. La détection doit être activée pour que le suivi des objets fonctionne."
|
||||
},
|
||||
"height": {
|
||||
"label": "Hauteur de détection",
|
||||
"description": "Hauteur (en pixels) des images utilisées pour le flux de détection ; garder vide pour utiliser la résolution native du flux."
|
||||
},
|
||||
"width": {
|
||||
"label": "Largeur de détection",
|
||||
"description": "Largeur (en pixels) des images utilisées pour le flux de détection ; garder vide pour utiliser la résolution native du flux."
|
||||
},
|
||||
"fps": {
|
||||
"label": "IPS de la détection",
|
||||
"description": "Nombre cible d'images par seconde à utiliser pour la détection ; des valeurs plus faibles réduisent l'utilisation de l'UCT (la valeur recommandée est 5, ne la définir à une valeur supérieure - au maximum 10, uniquement lors du suivi d'objets se déplaçant extrêmement rapidement)."
|
||||
},
|
||||
"min_initialized": {
|
||||
"label": "Minimum d'images d'initialisation",
|
||||
"description": "Nombre de détections consécutives requises avant de créer un objet suivi. Augmenter pour réduire les initialisations erronées. La valeur par défaut est fps divisé par 2."
|
||||
},
|
||||
"max_disappeared": {
|
||||
"label": "Nombre maximal d'images disparues",
|
||||
"description": "Nombre d'images sans détection avant qu'un objet suivi est considéré comme étant disparu."
|
||||
},
|
||||
"stationary": {
|
||||
"label": "Configuration des objets stationnaires",
|
||||
"description": "Réglages pour la détection et la gestion des objets qui restent stationnaires pendant un certain temps.",
|
||||
"interval": {
|
||||
"label": "Intervalle stationnaire",
|
||||
"description": "À quelle fréquence (en images) effectuer une détection pour la confirmation d'un objet stationnaire."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Seuil d'activation stationnaire",
|
||||
"description": "Nombre d'images sans changement d'emplacement requis pour marquer un objet en tant que stationnaire."
|
||||
},
|
||||
"max_frames": {
|
||||
"label": "Nombre max. d'images",
|
||||
"description": "Limite le temps pour lequel les objets stationnaires sont suivis avant d'être supprimés.",
|
||||
"default": {
|
||||
"label": "Nombre max. d'images par défaut",
|
||||
"description": "Nombre maximal d'images pour suivre un objet stationnaire avant d'arrêter."
|
||||
},
|
||||
"objects": {
|
||||
"label": "Nombre max. d'images pour l'objet",
|
||||
"description": "Remplacement des réglages par défaut par objet pour le nombre maximal d'images requis pour suivre les objets stationnaires."
|
||||
}
|
||||
},
|
||||
"classifier": {
|
||||
"label": "Activer le classificateur visuel",
|
||||
"description": "Utiliser un classificateur visuel pour détecter les objets véritablement stationnaires même lorsque les boîtes englobantes tremblent."
|
||||
}
|
||||
},
|
||||
"annotation_offset": {
|
||||
"label": "Décalage de l'annotation",
|
||||
"description": "Millisecondes pour le décalage des annotations afin de mieux aligner les boîtes englobantes de la ligne du temps avec les enregistrements ; peut être positif ou négatif."
|
||||
}
|
||||
},
|
||||
"face_recognition": {
|
||||
"label": "Reconnaissance faciale",
|
||||
"description": "Réglages pour la détection et reconnaissance faciale pour cette caméra.",
|
||||
"enabled": {
|
||||
"label": "Activer la reconnaissance faciale",
|
||||
"description": "Activer ou désactiver la reconnaissance faciale."
|
||||
},
|
||||
"min_area": {
|
||||
"label": "Surface minimale du visage",
|
||||
"description": "Surface minimale (en pixels) d'une boîte faciale détectée requise pour tenter la reconnaissance."
|
||||
}
|
||||
},
|
||||
"ffmpeg": {
|
||||
"label": "FFmpeg",
|
||||
"description": "Réglages de FFmpeg incluant l'emplacement du fichier binaire, les arguments, les options pour hwaccel et les arguments de sortie par rôle.",
|
||||
"path": {
|
||||
"label": "Emplacement de FFmpeg",
|
||||
"description": "Emplacement du fichier binaire de FFmpeg à utiliser ou un alias de version (peut être «5.0» ou «7.0»)."
|
||||
},
|
||||
"global_args": {
|
||||
"label": "Arguments globaux de FFmpeg",
|
||||
"description": "Arguments globaux transmis aux processus de FFmpeg."
|
||||
},
|
||||
"hwaccel_args": {
|
||||
"label": "Arguments pour l'accélération matérielle",
|
||||
"description": "Arguments de l'accélération matérielle pour FFmpeg. Les préréglages spécifiques au fournisseur sont recommandés."
|
||||
},
|
||||
"input_args": {
|
||||
"label": "Arguments d'entrée",
|
||||
"description": "Arguments d'entrée appliqués aux flux d'entrée FFmpeg."
|
||||
},
|
||||
"output_args": {
|
||||
"label": "Arguments de sortie",
|
||||
"description": "Arguments de sortie par défaut utilisés pour les différents rôles FFmpeg, tels que detect et record.",
|
||||
"detect": {
|
||||
"label": "Détecter les arguments de sortie",
|
||||
"description": "Arguments de sortie par défaut pour les flux du rôle detect."
|
||||
},
|
||||
"record": {
|
||||
"label": "Arguments de sortie pour l'enregistrement",
|
||||
"description": "Arguments de sortie par défaut pour les flux du rôle record."
|
||||
}
|
||||
},
|
||||
"retry_interval": {
|
||||
"label": "Temps de réessai FFmpeg",
|
||||
"description": "Nombre de secondes à attendre avant de tenter de reconnecter un flux de caméra après un échec. La valeur par défaut est 10."
|
||||
},
|
||||
"apple_compatibility": {
|
||||
"label": "Compatibilité avec Apple",
|
||||
"description": "Activer l'étiquetage HEVC pour une meilleure compatibilité avec les lecteurs Apple lors de l'enregistrement H.265."
|
||||
},
|
||||
"gpu": {
|
||||
"label": "Index de l'UTG",
|
||||
"description": "Index par défaut de l'UTG utilisé pour l'accélération matérielle si disponible."
|
||||
},
|
||||
"inputs": {
|
||||
"label": "Entrées des caméras",
|
||||
"description": "Liste des définitions des flux entrants (emplacements et rôles) pour cette caméra.",
|
||||
"path": {
|
||||
"label": "Emplacement d'entrée",
|
||||
"description": "URL ou emplacement du flux d'entrée de la caméra."
|
||||
},
|
||||
"roles": {
|
||||
"label": "Rôles d'entrée",
|
||||
"description": "Rôles pour ce flux entrant."
|
||||
},
|
||||
"global_args": {
|
||||
"label": "Arguments globaux de FFmpeg",
|
||||
"description": "Arguments globaux de FFmpeg pour ce flux entrant."
|
||||
},
|
||||
"hwaccel_args": {
|
||||
"label": "Arguments pour l'accélération matérielle",
|
||||
"description": "Arguments de l'accélération matérielle pour ce flux entrant."
|
||||
},
|
||||
"input_args": {
|
||||
"label": "Arguments d'entrée",
|
||||
"description": "Arguments d'entrée spéficiques à ce flux."
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"label": "Lecture en direct",
|
||||
"description": "Réglages utilisés par l'IU Web afin de contrôler la sélection, la résolution et la qualité des flux en direct.",
|
||||
"streams": {
|
||||
"label": "Nom des flux en direct",
|
||||
"description": "Mappage des noms des flux configurés vers les noms de restream et go2rtc utilisés pour la lecture en direct."
|
||||
},
|
||||
"height": {
|
||||
"label": "Hauteur de la diffusion en direct",
|
||||
"description": "Hauteur (en pixels) à laquelle afficher le flux en direct jsmpeg dans l'IU Web ; doit être inférieure ou égale à la hauteur détectée du flux."
|
||||
},
|
||||
"quality": {
|
||||
"label": "Qualité de la diffusion en direct",
|
||||
"description": "Qualité de l'encodage pour le flux jsmpeg (1 étant la plus élevée, 31 la plus faible)."
|
||||
}
|
||||
},
|
||||
"lpr": {
|
||||
"label": "Reconnaissance des plaques d'immatriculation",
|
||||
"description": "Réglages de la reconnaissance des plaques d'immatriculation incluant les seuils de détection, le formatage et les plaques connues.",
|
||||
"enabled": {
|
||||
"label": "Activer la RPI",
|
||||
"description": "Activer ou désactiver la RPI sur cette caméra."
|
||||
},
|
||||
"expire_time": {
|
||||
"label": "Expiration en secondes",
|
||||
"description": "Temps en secondes après lequel une plaque non vue expire du système de suivi (seulement pour les caméras dédiées à la RPI)."
|
||||
},
|
||||
"min_area": {
|
||||
"label": "Surface minimale de la plaque",
|
||||
"description": "Surface minimale de la plaque (en pixels) requise pour tenter la reconnaissance."
|
||||
},
|
||||
"enhancement": {
|
||||
"label": "Niveau de l'enrichissement",
|
||||
"description": "Niveau de l'enrichissement (de 0 à 10) à appliquer aux recadrages des plaques avant la ROC. Des valeurs plus élevées n'améliorent pas nécessairement les résultats, les niveaux supérieurs à 5 peuvent ne fonctionner qu'avec des plaques la nuit et doivent être utilisés avec prudence."
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "Détection du mouvement",
|
||||
"description": "Réglages par défaut de la détection de mouvement pour cette caméra.",
|
||||
"enabled": {
|
||||
"label": "Activer la détection de mouvement",
|
||||
"description": "Activer ou désactiver la détection de mouvement pour cette caméra."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Seuil de détection du mouvement",
|
||||
"description": "Seuil de différence de pixels utilisé par le détecteur de mouvement ; les valeurs plus élevées réduisent la sensibilité (plage de 1 à 255)."
|
||||
},
|
||||
"lightning_threshold": {
|
||||
"label": "Seuil d'éclairage",
|
||||
"description": "Seuil permettant de détecter et d'ignorer les brusques pointes d'éclairage (plus la valeur est faible, plus la sensibilité est élevée, valeurs comprises entre 0.3 et 1.0)."
|
||||
},
|
||||
"improve_contrast": {
|
||||
"label": "Améliorer le contraste",
|
||||
"description": "Appliquer les amélioration du contraste aux images avant l'analyse de mouvement afin d'améliorer la détection."
|
||||
},
|
||||
"contour_area": {
|
||||
"label": "Zone de contour",
|
||||
"description": "Aire de la zone de contour minimale en pixels requise pour qu'un contour de mouvement soit comptabilisé."
|
||||
},
|
||||
"delta_alpha": {
|
||||
"label": "Delta pour alpha",
|
||||
"description": "Facteur de mélange alpha utilisé dans la différenciation d'images pour le calcul du mouvement."
|
||||
},
|
||||
"frame_alpha": {
|
||||
"label": "Alpha pour l'image",
|
||||
"description": "Valeur alpha utilisée lors du mélange d'images pour le prétraitement du mouvement."
|
||||
},
|
||||
"frame_height": {
|
||||
"label": "Hauteur de l'image",
|
||||
"description": "Hauteur en pixels à laquelle mettre à l'échelle les images lors du traitement du mouvement."
|
||||
},
|
||||
"mask": {
|
||||
"label": "Moordonnées du masque",
|
||||
"description": "Coordonnées ordonnés x et y définissant le polygone du masque de mouvement utilisé pour inclure ou exclure des aires."
|
||||
},
|
||||
"mqtt_off_delay": {
|
||||
"label": "Délai de désactivation de MQTT",
|
||||
"description": "Nombre de secondes à attendre après le dernier mouvement avant de publier un état « off » MQTT."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "État original du mouvement",
|
||||
"description": "Indique si la détection de mouvement a été activée dans la configuration originale statique."
|
||||
},
|
||||
"raw_mask": {
|
||||
"label": "Masque brut"
|
||||
}
|
||||
},
|
||||
"objects": {
|
||||
"label": "Objets",
|
||||
"description": "Réglages par défaut pour le suivi des objets incluant les étiquettes à suivre et les filtres par objets.",
|
||||
"track": {
|
||||
"label": "Objets à suivre",
|
||||
"description": "Liste des étiquettes d'objets à suivre pour cette caméra."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Filtres d'objets",
|
||||
"description": "Filtres appliqués aux objets détectés afin de réduire les faux positifs (aire, rapport, facteur de confiance).",
|
||||
"min_area": {
|
||||
"label": "Aire minimal de l'objet"
|
||||
}
|
||||
}
|
||||
},
|
||||
"label": "ConfigurationCamera"
|
||||
}
|
||||
5
web/public/locales/fr/config/global.json
Normal file
5
web/public/locales/fr/config/global.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": {
|
||||
"label": "Version actuelle de la configuration"
|
||||
}
|
||||
}
|
||||
7
web/public/locales/fr/config/groups.json
Normal file
7
web/public/locales/fr/config/groups.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"audio": {
|
||||
"global": {
|
||||
"detection": "Détection globale"
|
||||
}
|
||||
}
|
||||
}
|
||||
3
web/public/locales/fr/config/validation.json
Normal file
3
web/public/locales/fr/config/validation.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"minimum": "Doit être au minimum {{limit}}"
|
||||
}
|
||||
@ -11,13 +11,27 @@
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "Échec du renommage de l'exportation : {{errorMessage}}"
|
||||
"renameExportFailed": "Échec du renommage de l'exportation : {{errorMessage}}",
|
||||
"assignCaseFailed": "Échec de la mise à jour de l'affectation au dossier : {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"tooltip": {
|
||||
"shareExport": "Partager l'exportation",
|
||||
"downloadVideo": "Télécharger la vidéo",
|
||||
"editName": "Modifier le nom",
|
||||
"deleteExport": "Supprimer l'exportation"
|
||||
"deleteExport": "Supprimer l'exportation",
|
||||
"assignToCase": "Ajouter à un dossier"
|
||||
},
|
||||
"headings": {
|
||||
"cases": "Dossiers",
|
||||
"uncategorizedExports": "Exportations non classées"
|
||||
},
|
||||
"caseDialog": {
|
||||
"title": "Ajouter à un dossier",
|
||||
"description": "Choisissez un dossier existant ou créez en un nouveau.",
|
||||
"selectLabel": "Dossier",
|
||||
"newCaseOption": "Créer un nouveau dossier",
|
||||
"nameLabel": "Nom du dossier",
|
||||
"descriptionLabel": "Description"
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,20 +5,23 @@
|
||||
"camera": "Paramètres des caméras - Frigate",
|
||||
"classification": "Paramètres de classification - Frigate",
|
||||
"motionTuner": "Réglage de la détection de mouvement - Frigate",
|
||||
"general": "Paramètres de l'interface utilisateur - Frigate",
|
||||
"general": "Paramètres du profil - Frigate",
|
||||
"masksAndZones": "Éditeur de masques et de zones - Frigate",
|
||||
"object": "Débogage - Frigate",
|
||||
"frigatePlus": "Paramètres Frigate+ - Frigate",
|
||||
"notifications": "Paramètres de notification - Frigate",
|
||||
"enrichments": "Paramètres d'enrichissements - Frigate",
|
||||
"cameraManagement": "Gestion des caméras - Frigate",
|
||||
"cameraReview": "Paramètres des activités caméra - Frigate"
|
||||
"cameraReview": "Paramètres des activités caméra - Frigate",
|
||||
"globalConfig": "Configuration globale - Frigate",
|
||||
"cameraConfig": "Configuration de la caméra - Frigate",
|
||||
"maintenance": "Maintenance - Frigate"
|
||||
},
|
||||
"menu": {
|
||||
"ui": "Interface utilisateur",
|
||||
"classification": "Classification",
|
||||
"masksAndZones": "Masques / Zones",
|
||||
"motionTuner": "Réglage de la détection de mouvement",
|
||||
"motionTuner": "Ajusteur de la détection de mouvement",
|
||||
"debug": "Débogage",
|
||||
"cameras": "Paramètres des caméras",
|
||||
"users": "Utilisateurs",
|
||||
@ -28,7 +31,62 @@
|
||||
"triggers": "Déclencheurs",
|
||||
"roles": "Rôles",
|
||||
"cameraManagement": "Gestion",
|
||||
"cameraReview": "Activités"
|
||||
"cameraReview": "Activités",
|
||||
"general": "Général",
|
||||
"globalConfig": "Configuration globale",
|
||||
"system": "Système",
|
||||
"integrations": "Intégrations",
|
||||
"profileSettings": "Paramètres du profil",
|
||||
"globalDetect": "Détection d'objets",
|
||||
"globalRecording": "Enregistrement",
|
||||
"globalSnapshots": "Instantanés",
|
||||
"globalFfmpeg": "FFmpeg",
|
||||
"globalMotion": "Détection de mouvement",
|
||||
"globalObjects": "Objets",
|
||||
"globalReview": "Activités",
|
||||
"globalAudioEvents": "Événements audio",
|
||||
"globalLivePlayback": "Lecture en direct",
|
||||
"globalTimestampStyle": "Format d'horodatage",
|
||||
"systemDatabase": "Base de données",
|
||||
"systemTls": "TLS",
|
||||
"systemAuthentication": "Authentification",
|
||||
"systemNetworking": "Réseau",
|
||||
"systemProxy": "Proxy",
|
||||
"systemUi": "Interface",
|
||||
"systemLogging": "Journalisation",
|
||||
"systemEnvironmentVariables": "Variables d'environnement",
|
||||
"systemTelemetry": "Télémétrie",
|
||||
"systemBirdseye": "Birdseye",
|
||||
"systemFfmpeg": "FFmpeg",
|
||||
"systemDetectorHardware": "Matériel de détection",
|
||||
"systemDetectionModel": "Modèle de détection",
|
||||
"systemMqtt": "MQTT",
|
||||
"integrationSemanticSearch": "Recherche sémantique",
|
||||
"integrationGenerativeAi": "IA générative",
|
||||
"integrationFaceRecognition": "Reconnaissance faciale",
|
||||
"integrationLpr": "Lecture de plaques d'immatriculation",
|
||||
"integrationObjectClassification": "Classification d'objets",
|
||||
"integrationAudioTranscription": "Transcription audio",
|
||||
"cameraDetect": "Détection d'objets",
|
||||
"cameraFfmpeg": "FFmpeg",
|
||||
"cameraRecording": "Enregistrement",
|
||||
"cameraSnapshots": "Instantanés",
|
||||
"cameraMotion": "Détection de mouvement",
|
||||
"cameraObjects": "Objets",
|
||||
"cameraConfigReview": "Activités",
|
||||
"cameraAudioEvents": "Évènements audio",
|
||||
"cameraAudioTranscription": "Transcription audio",
|
||||
"cameraNotifications": "Notifications",
|
||||
"cameraLivePlayback": "Lecture en direct",
|
||||
"cameraBirdseye": "Birdseye",
|
||||
"cameraFaceRecognition": "Reconnaissance faciale",
|
||||
"cameraLpr": "Lecture de plaques d'immatriculation",
|
||||
"cameraMqttConfig": "MQTT",
|
||||
"cameraOnvif": "ONVIF",
|
||||
"cameraUi": "Interface de la caméra",
|
||||
"cameraTimestampStyle": "Style d'horodatage",
|
||||
"cameraMqtt": "MQTT de la caméra",
|
||||
"maintenance": "Maintenance"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
@ -41,7 +99,7 @@
|
||||
"noCamera": "Aucune caméra"
|
||||
},
|
||||
"general": {
|
||||
"title": "Paramètres de l'interface utilisateur",
|
||||
"title": "Paramètres du profil",
|
||||
"liveDashboard": {
|
||||
"title": "Tableau de bord en direct",
|
||||
"automaticLiveView": {
|
||||
@ -723,7 +781,7 @@
|
||||
"readTheDocumentation": "Lire la documentation",
|
||||
"reindexNow": {
|
||||
"label": "Réindexer maintenant",
|
||||
"desc": "La réindexation va régénérer les embeddings pour tous les objets suivis. Ce processus s'exécute en arrière-plan et peut saturer votre processeur et prendre un temps considérable en fonction du nombre d'objets suivis.",
|
||||
"desc": "La réindexation va régénérer les intégrations pour tous les objets suivis. Ce processus s'exécute en arrière-plan et peut saturer votre processeur et prendre un temps considérable en fonction du nombre d'objets suivis.",
|
||||
"confirmTitle": "Confirmer la réindexation",
|
||||
"confirmButton": "Réindexer",
|
||||
"success": "La réindexation a démarré avec succès.",
|
||||
@ -1315,5 +1373,22 @@
|
||||
"success": "La configuration de la classification des activités a été enregistrée. Redémarrez Frigate pour appliquer les modifications."
|
||||
}
|
||||
}
|
||||
},
|
||||
"saveAllPreview": {
|
||||
"title": "Modifications à enregistrer",
|
||||
"triggerLabel": "Examiner les modifications en attente",
|
||||
"empty": "Aucune modification en attente",
|
||||
"scope": {
|
||||
"label": "Portée",
|
||||
"global": "Global",
|
||||
"camera": "Caméra : {{cameraName}}"
|
||||
},
|
||||
"field": {
|
||||
"label": "Champ"
|
||||
},
|
||||
"value": {
|
||||
"label": "Nouvelle valeur",
|
||||
"reset": "Réinitialiser"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,7 +81,9 @@
|
||||
"title": "Avertissement relatif aux statistiques du GPU Intel",
|
||||
"message": "Statistiques du GPU non disponibles",
|
||||
"description": "Il s'agit d'un bug connu de l'outil de statistiques GPU d'Intel (intel_gpu_top) : il peut afficher à tort une utilisation de 0 %, même lorsque l'accélération matérielle et la détection d'objets fonctionnent correctement sur l'iGPU. Ce problème ne vient pas de Frigate. Vous pouvez redémarrer l'hôte pour rétablir temporairement l'affichage et confirmer le fonctionnement du GPU. Les performances ne sont pas affectées."
|
||||
}
|
||||
},
|
||||
"gpuTemperature": "Température du GPU",
|
||||
"npuTemperature": "Température du NPU"
|
||||
},
|
||||
"otherProcesses": {
|
||||
"title": "Autres processus",
|
||||
@ -165,6 +167,17 @@
|
||||
"error": {
|
||||
"unableToProbeCamera": "Impossible d'interroger la caméra : {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"connectionQuality": {
|
||||
"title": "Qualité de la connexion",
|
||||
"excellent": "Excellente",
|
||||
"fair": "Acceptable",
|
||||
"poor": "Médiocre",
|
||||
"unusable": "Inutilisable",
|
||||
"fps": "IPS",
|
||||
"expectedFps": "IPS attendues",
|
||||
"reconnectsLastHour": "Reconnexions (dernière heure)",
|
||||
"stallsLastHour": "Baisses de qualité (dernière heure)"
|
||||
}
|
||||
},
|
||||
"lastRefreshed": "Dernier rafraichissement : ",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user