mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-01-24 13:08:29 +03:00
Compare commits
20 Commits
28e3aa39f0
...
8307fe31aa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8307fe31aa | ||
|
|
1f061a8e73 | ||
|
|
55d6383234 | ||
|
|
caa187e4ed | ||
|
|
4331ed0d7b | ||
|
|
08309793d4 | ||
|
|
c7a4e6bcc4 | ||
|
|
c94446a472 | ||
|
|
17b6128314 | ||
|
|
117a878533 | ||
|
|
ff5ebcf94d | ||
|
|
24c519f032 | ||
|
|
90fbb77ee0 | ||
|
|
9f1d8b0e31 | ||
|
|
875d20b195 | ||
|
|
48056ac15c | ||
|
|
993459152b | ||
|
|
8430fbc705 | ||
|
|
f7c4ff12f7 | ||
|
|
8f0be18422 |
@ -17,7 +17,9 @@ http {
|
||||
|
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||
'$status $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||
'"$http_user_agent" "$http_x_forwarded_for" '
|
||||
'request_time="$request_time" upstream_response_time="$upstream_response_time"';
|
||||
|
||||
|
||||
access_log /dev/stdout main;
|
||||
|
||||
|
||||
@ -17,7 +17,11 @@ from frigate.camera import PTZMetrics
|
||||
from frigate.config import CameraConfig
|
||||
from frigate.ptz.autotrack import PtzMotionEstimator
|
||||
from frigate.track import ObjectTracker
|
||||
from frigate.track.stationary_classifier import StationaryMotionClassifier
|
||||
from frigate.track.stationary_classifier import (
|
||||
StationaryMotionClassifier,
|
||||
StationaryThresholds,
|
||||
get_stationary_threshold,
|
||||
)
|
||||
from frigate.util.image import (
|
||||
SharedMemoryFrameManager,
|
||||
get_histogram,
|
||||
@ -28,12 +32,6 @@ from frigate.util.object import average_boxes, median_of_boxes
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
THRESHOLD_KNOWN_ACTIVE_IOU = 0.2
|
||||
THRESHOLD_STATIONARY_CHECK_IOU = 0.6
|
||||
THRESHOLD_ACTIVE_CHECK_IOU = 0.9
|
||||
MAX_STATIONARY_HISTORY = 10
|
||||
|
||||
|
||||
# Normalizes distance from estimate relative to object size
|
||||
# Other ideas:
|
||||
# - if estimates are inaccurate for first N detections, compare with last_detection (may be fine)
|
||||
@ -328,6 +326,7 @@ class NorfairTracker(ObjectTracker):
|
||||
id: str,
|
||||
box: list[int],
|
||||
stationary: bool,
|
||||
thresholds: StationaryThresholds,
|
||||
yuv_frame: np.ndarray | None,
|
||||
) -> bool:
|
||||
def reset_position(xmin: int, ymin: int, xmax: int, ymax: int) -> None:
|
||||
@ -346,9 +345,9 @@ class NorfairTracker(ObjectTracker):
|
||||
position = self.positions[id]
|
||||
self.stationary_box_history[id].append(box)
|
||||
|
||||
if len(self.stationary_box_history[id]) > MAX_STATIONARY_HISTORY:
|
||||
if len(self.stationary_box_history[id]) > thresholds.max_stationary_history:
|
||||
self.stationary_box_history[id] = self.stationary_box_history[id][
|
||||
-MAX_STATIONARY_HISTORY:
|
||||
-thresholds.max_stationary_history :
|
||||
]
|
||||
|
||||
avg_box = average_boxes(self.stationary_box_history[id])
|
||||
@ -367,7 +366,7 @@ class NorfairTracker(ObjectTracker):
|
||||
|
||||
# object has minimal or zero iou
|
||||
# assume object is active
|
||||
if avg_iou < THRESHOLD_KNOWN_ACTIVE_IOU:
|
||||
if avg_iou < thresholds.known_active_iou:
|
||||
if stationary and yuv_frame is not None:
|
||||
if not self.stationary_classifier.evaluate(
|
||||
id, yuv_frame, cast(tuple[int, int, int, int], tuple(box))
|
||||
@ -379,7 +378,9 @@ class NorfairTracker(ObjectTracker):
|
||||
return False
|
||||
|
||||
threshold = (
|
||||
THRESHOLD_STATIONARY_CHECK_IOU if stationary else THRESHOLD_ACTIVE_CHECK_IOU
|
||||
thresholds.stationary_check_iou
|
||||
if stationary
|
||||
else thresholds.active_check_iou
|
||||
)
|
||||
|
||||
# object has iou below threshold, check median and optionally crop similarity
|
||||
@ -447,6 +448,7 @@ class NorfairTracker(ObjectTracker):
|
||||
self,
|
||||
track_id: str,
|
||||
obj: dict[str, Any],
|
||||
thresholds: StationaryThresholds,
|
||||
yuv_frame: np.ndarray | None,
|
||||
) -> None:
|
||||
id = self.track_id_map[track_id]
|
||||
@ -456,7 +458,7 @@ class NorfairTracker(ObjectTracker):
|
||||
>= self.detect_config.stationary.threshold
|
||||
)
|
||||
# update the motionless count if the object has not moved to a new position
|
||||
if self.update_position(id, obj["box"], stationary, yuv_frame):
|
||||
if self.update_position(id, obj["box"], stationary, thresholds, yuv_frame):
|
||||
self.tracked_objects[id]["motionless_count"] += 1
|
||||
if self.is_expired(id):
|
||||
self.deregister(id, track_id)
|
||||
@ -502,9 +504,9 @@ class NorfairTracker(ObjectTracker):
|
||||
detections_by_type: dict[str, list[Detection]] = {}
|
||||
yuv_frame: np.ndarray | None = None
|
||||
|
||||
if self.ptz_metrics.autotracker_enabled.value or (
|
||||
self.detect_config.stationary.classifier
|
||||
and any(obj[0] == "car" for obj in detections)
|
||||
if (
|
||||
self.ptz_metrics.autotracker_enabled.value
|
||||
or self.detect_config.stationary.classifier
|
||||
):
|
||||
yuv_frame = self.frame_manager.get(
|
||||
frame_name, self.camera_config.frame_shape_yuv
|
||||
@ -614,10 +616,12 @@ class NorfairTracker(ObjectTracker):
|
||||
self.tracked_objects[id]["estimate"] = new_obj["estimate"]
|
||||
# else update it
|
||||
else:
|
||||
thresholds = get_stationary_threshold(new_obj["label"])
|
||||
self.update(
|
||||
str(t.global_id),
|
||||
new_obj,
|
||||
yuv_frame if new_obj["label"] == "car" else None,
|
||||
thresholds,
|
||||
yuv_frame if thresholds.motion_classifier_enabled else None,
|
||||
)
|
||||
|
||||
# clear expired tracks
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
"""Tools for determining if an object is stationary."""
|
||||
|
||||
import logging
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any, cast
|
||||
|
||||
import cv2
|
||||
@ -10,10 +11,61 @@ from scipy.ndimage import gaussian_filter
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
THRESHOLD_KNOWN_ACTIVE_IOU = 0.2
|
||||
THRESHOLD_STATIONARY_CHECK_IOU = 0.6
|
||||
THRESHOLD_ACTIVE_CHECK_IOU = 0.9
|
||||
MAX_STATIONARY_HISTORY = 10
|
||||
@dataclass
|
||||
class StationaryThresholds:
|
||||
"""IOU thresholds and history parameters for stationary object classification.
|
||||
|
||||
This allows different sensitivity settings for different object types.
|
||||
"""
|
||||
|
||||
# Objects to apply these thresholds to
|
||||
# If None, apply to all objects
|
||||
objects: list[str] = field(default_factory=list)
|
||||
|
||||
# Threshold of IoU that causes the object to immediately be considered active
|
||||
# Below this threshold, assume object is active
|
||||
known_active_iou: float = 0.2
|
||||
|
||||
# IOU threshold for checking if stationary object has moved
|
||||
# If mean and median IOU drops below this, assume object is no longer stationary
|
||||
stationary_check_iou: float = 0.6
|
||||
|
||||
# IOU threshold for checking if active object has changed position
|
||||
# Higher threshold makes it more difficult for the object to be considered stationary
|
||||
active_check_iou: float = 0.9
|
||||
|
||||
# Maximum number of bounding boxes to keep in stationary history
|
||||
max_stationary_history: int = 10
|
||||
|
||||
# Whether to use the motion classifier
|
||||
motion_classifier_enabled: bool = False
|
||||
|
||||
|
||||
# Thresholds for objects that are expected to be stationary
|
||||
STATIONARY_OBJECT_THRESHOLDS = StationaryThresholds(
|
||||
objects=["bbq_grill", "package", "waste_bin"],
|
||||
known_active_iou=0.0,
|
||||
motion_classifier_enabled=True,
|
||||
)
|
||||
|
||||
# Thresholds for objects that are active but can be stationary for longer periods of time
|
||||
DYNAMIC_OBJECT_THRESHOLDS = StationaryThresholds(
|
||||
objects=["bicycle", "boat", "car", "motorcycle", "tractor", "truck"],
|
||||
active_check_iou=0.75,
|
||||
motion_classifier_enabled=True,
|
||||
)
|
||||
|
||||
|
||||
def get_stationary_threshold(label: str) -> StationaryThresholds:
|
||||
"""Get the stationary thresholds for a given object label."""
|
||||
|
||||
if label in STATIONARY_OBJECT_THRESHOLDS.objects:
|
||||
return STATIONARY_OBJECT_THRESHOLDS
|
||||
|
||||
if label in DYNAMIC_OBJECT_THRESHOLDS.objects:
|
||||
return DYNAMIC_OBJECT_THRESHOLDS
|
||||
|
||||
return StationaryThresholds()
|
||||
|
||||
|
||||
class StationaryMotionClassifier:
|
||||
|
||||
163
generate_config_translations.py
Normal file
163
generate_config_translations.py
Normal file
@ -0,0 +1,163 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generate English translation JSON files from Pydantic config models.
|
||||
|
||||
This script dynamically extracts all top-level config sections from FrigateConfig
|
||||
and generates JSON translation files with titles and descriptions for the web UI.
|
||||
"""
|
||||
|
||||
import json
|
||||
import logging
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, Optional, get_args, get_origin
|
||||
|
||||
from pydantic import BaseModel
|
||||
from pydantic.fields import FieldInfo
|
||||
|
||||
from frigate.config.config import FrigateConfig
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_field_translations(field_info: FieldInfo) -> Dict[str, str]:
|
||||
"""Extract title and description from a Pydantic field."""
|
||||
translations = {}
|
||||
|
||||
if field_info.title:
|
||||
translations["label"] = field_info.title
|
||||
|
||||
if field_info.description:
|
||||
translations["description"] = field_info.description
|
||||
|
||||
return translations
|
||||
|
||||
|
||||
def process_model_fields(model: type[BaseModel]) -> Dict[str, Any]:
|
||||
"""
|
||||
Recursively process a Pydantic model to extract translations.
|
||||
|
||||
Returns a nested dictionary structure matching the config schema,
|
||||
with title and description for each field.
|
||||
"""
|
||||
translations = {}
|
||||
|
||||
model_fields = model.model_fields
|
||||
|
||||
for field_name, field_info in model_fields.items():
|
||||
field_translations = get_field_translations(field_info)
|
||||
|
||||
# Get the field's type annotation
|
||||
field_type = field_info.annotation
|
||||
|
||||
# Handle Optional types
|
||||
origin = get_origin(field_type)
|
||||
|
||||
if origin is Optional or (
|
||||
hasattr(origin, "__name__") and origin.__name__ == "UnionType"
|
||||
):
|
||||
args = get_args(field_type)
|
||||
field_type = next(
|
||||
(arg for arg in args if arg is not type(None)), field_type
|
||||
)
|
||||
|
||||
# Handle Dict types (like Dict[str, CameraConfig])
|
||||
if get_origin(field_type) is dict:
|
||||
dict_args = get_args(field_type)
|
||||
|
||||
if len(dict_args) >= 2:
|
||||
value_type = dict_args[1]
|
||||
|
||||
if isinstance(value_type, type) and issubclass(value_type, BaseModel):
|
||||
nested_translations = process_model_fields(value_type)
|
||||
|
||||
if nested_translations:
|
||||
field_translations["properties"] = nested_translations
|
||||
elif isinstance(field_type, type) and issubclass(field_type, BaseModel):
|
||||
nested_translations = process_model_fields(field_type)
|
||||
if nested_translations:
|
||||
field_translations["properties"] = nested_translations
|
||||
|
||||
if field_translations:
|
||||
translations[field_name] = field_translations
|
||||
|
||||
return translations
|
||||
|
||||
|
||||
def generate_section_translation(
|
||||
section_name: str, field_info: FieldInfo
|
||||
) -> Dict[str, Any]:
|
||||
"""
|
||||
Generate translation structure for a top-level config section.
|
||||
"""
|
||||
section_translations = get_field_translations(field_info)
|
||||
field_type = field_info.annotation
|
||||
origin = get_origin(field_type)
|
||||
|
||||
if origin is Optional or (
|
||||
hasattr(origin, "__name__") and origin.__name__ == "UnionType"
|
||||
):
|
||||
args = get_args(field_type)
|
||||
field_type = next((arg for arg in args if arg is not type(None)), field_type)
|
||||
|
||||
# Handle Dict types (like detectors, cameras, camera_groups)
|
||||
if get_origin(field_type) is dict:
|
||||
dict_args = get_args(field_type)
|
||||
if len(dict_args) >= 2:
|
||||
value_type = dict_args[1]
|
||||
if isinstance(value_type, type) and issubclass(value_type, BaseModel):
|
||||
nested = process_model_fields(value_type)
|
||||
if nested:
|
||||
section_translations["properties"] = nested
|
||||
|
||||
# If the field itself is a BaseModel, process it
|
||||
elif isinstance(field_type, type) and issubclass(field_type, BaseModel):
|
||||
nested = process_model_fields(field_type)
|
||||
if nested:
|
||||
section_translations["properties"] = nested
|
||||
|
||||
return section_translations
|
||||
|
||||
|
||||
def main():
|
||||
"""Main function to generate config translations."""
|
||||
|
||||
# Define output directory
|
||||
output_dir = Path(__file__).parent / "web" / "public" / "locales" / "en" / "config"
|
||||
|
||||
logger.info(f"Output directory: {output_dir}")
|
||||
|
||||
# Clean and recreate the output directory
|
||||
if output_dir.exists():
|
||||
logger.info(f"Removing existing directory: {output_dir}")
|
||||
shutil.rmtree(output_dir)
|
||||
|
||||
logger.info(f"Creating directory: {output_dir}")
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
config_fields = FrigateConfig.model_fields
|
||||
logger.info(f"Found {len(config_fields)} top-level config sections")
|
||||
|
||||
for field_name, field_info in config_fields.items():
|
||||
if field_name.startswith("_"):
|
||||
continue
|
||||
|
||||
logger.info(f"Processing section: {field_name}")
|
||||
section_data = generate_section_translation(field_name, field_info)
|
||||
|
||||
if not section_data:
|
||||
logger.warning(f"No translations found for section: {field_name}")
|
||||
continue
|
||||
|
||||
output_file = output_dir / f"{field_name}.json"
|
||||
with open(output_file, "w", encoding="utf-8") as f:
|
||||
json.dump(section_data, f, indent=2, ensure_ascii=False)
|
||||
|
||||
logger.info(f"Generated: {output_file}")
|
||||
|
||||
logger.info("Translation generation complete!")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@ -56,7 +56,14 @@
|
||||
"formattedTimestampMonthDayYear": {
|
||||
"12hour": "МММ д, гггг",
|
||||
"24hour": "МММ д, гггг"
|
||||
}
|
||||
},
|
||||
"ago": "Преди {{timeAgo}}",
|
||||
"untilForTime": "До {{time}}",
|
||||
"untilForRestart": "Докато Frigate рестартира.",
|
||||
"untilRestart": "До рестарт",
|
||||
"mo": "{{time}}мес",
|
||||
"m": "{{time}}м",
|
||||
"s": "{{time}}с"
|
||||
},
|
||||
"button": {
|
||||
"apply": "Приложи",
|
||||
|
||||
@ -423,7 +423,7 @@
|
||||
"paths": {
|
||||
"title": "Cesty",
|
||||
"desc": "Zobrazit významné body trasy sledovaného objektu",
|
||||
"tips": "<p><strong>Cesty</strong></p><br><p>Čáry a kruhy označují významné body, kterými se sledovaný objekt během svého životního cyklu pohyboval."
|
||||
"tips": "<p><strong>Cesty</strong></p><br><p>Čáry a kruhy označují významné body, kterými se sledovaný objekt během svého životního cyklu pohyboval.</p>"
|
||||
}
|
||||
},
|
||||
"camera": {
|
||||
@ -604,7 +604,8 @@
|
||||
"admin": "Správce",
|
||||
"adminDesc": "Plný přístup ke všem funkcím.",
|
||||
"viewer": "Divák",
|
||||
"viewerDesc": "Omezení pouze na Živé dashboardy, Revize, Průzkumníka a Exporty."
|
||||
"viewerDesc": "Omezení pouze na Živé dashboardy, Revize, Průzkumníka a Exporty.",
|
||||
"customDesc": "Vlastní role s konkrétním přístupem ke kameře."
|
||||
},
|
||||
"title": "Změnit Roli Uživatele",
|
||||
"desc": "Aktualizovat oprávnění pro <strong>{{username}}</strong>",
|
||||
@ -794,9 +795,99 @@
|
||||
"title": "Obsah",
|
||||
"imagePlaceholder": "Vybrat obrázek",
|
||||
"textPlaceholder": "Zadat textový obsah",
|
||||
"imageDesc": "Vybrat obrázek, který spustí tuto akci, když bude detekován podobný obrázek."
|
||||
"imageDesc": "Vybrat obrázek, který spustí tuto akci, když bude detekován podobný obrázek.",
|
||||
"textDesc": "Zadejte text, který spustí tuto akci, když bude zjištěn podobný popis sledovaného objektu.",
|
||||
"error": {
|
||||
"required": "Obsah je povinný."
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"title": "Akce",
|
||||
"desc": "Ve výchozím nastavení Frigate odesílá MQTT zprávu pro všechny spouštěče. Zvolte dodatečnou akci, která se má provést, když se tento spouštěč aktivuje.",
|
||||
"error": {
|
||||
"min": "Musí být vybrána alespoň jedna akce."
|
||||
}
|
||||
},
|
||||
"threshold": {
|
||||
"title": "Práh",
|
||||
"error": {
|
||||
"min": "Práh musí být alespoň 0",
|
||||
"max": "Práh musí být nanejvýš 1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"createTrigger": "Spouštěč {{name}} byl úspěšně vytvořen.",
|
||||
"updateTrigger": "Spouštěč {{name}} byl úspěšně aktualizován.",
|
||||
"deleteTrigger": "Spouštěč {{name}} byl úspěšně smazán."
|
||||
},
|
||||
"error": {
|
||||
"createTriggerFailed": "Nepodařilo se vytvořit spouštěč: {{errorMessage}}",
|
||||
"updateTriggerFailed": "Nepodařilo se aktualizovat spouštěč: {{errorMessage}}",
|
||||
"deleteTriggerFailed": "Nepodařilo se smazat spouštěč: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"roles": {
|
||||
"addRole": "Přidat roli",
|
||||
"table": {
|
||||
"role": "Role",
|
||||
"cameras": "Kamery",
|
||||
"actions": "Akce",
|
||||
"noRoles": "Nebyly nalezeny žádné vlastní role.",
|
||||
"editCameras": "Upravit kamery",
|
||||
"deleteRole": "Smazat roli"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"createRole": "Role {{role}} byla úspěšně vytvořena",
|
||||
"updateCameras": "Kamery byly aktualizovány pro roli {{role}}",
|
||||
"deleteRole": "Role {{role}} byla úspěšně smazána",
|
||||
"userRolesUpdated": "{{count}} uživatel(ů) přiřazených k této roli bylo aktualizováno na „Divák“, který má přístup ke všem kamerám."
|
||||
},
|
||||
"error": {
|
||||
"createRoleFailed": "Nepodařilo se vytvořit roli: {{errorMessage}}",
|
||||
"updateCamerasFailed": "Nepodařilo se aktualizovat kamery: {{errorMessage}}",
|
||||
"deleteRoleFailed": "Nepodařilo se smazat roli: {{errorMessage}}",
|
||||
"userUpdateFailed": "Nepodařilo se aktualizovat role uživatele: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"createRole": {
|
||||
"title": "Vytvořit novou roli",
|
||||
"desc": "Přidejte novou roli a určete oprávnění k přístupu ke kamerám."
|
||||
},
|
||||
"deleteRole": {
|
||||
"title": "Smazat roli",
|
||||
"warn": "Opravdu chcete smazat roli <strong>{{role}}</strong>?",
|
||||
"deleting": "Mazání...",
|
||||
"desc": "Tuto akci nelze vrátit zpět. Role bude trvale smazána a všichni uživatelé s touto rolí budou přeřazeni do role „Divák“, která poskytne přístup ke všem kamerám."
|
||||
},
|
||||
"form": {
|
||||
"role": {
|
||||
"title": "Název role",
|
||||
"placeholder": "Zadejte název role",
|
||||
"desc": "Povolena jsou pouze písmena, čísla, tečky a podtržítka.",
|
||||
"roleIsRequired": "Název role je povinný",
|
||||
"roleOnlyInclude": "Název role smí obsahovat pouze písmena, čísla, . nebo _",
|
||||
"roleExists": "Role s tímto názvem již existuje."
|
||||
},
|
||||
"cameras": {
|
||||
"title": "Kamery",
|
||||
"desc": "Vyberte kamery, ke kterým má tato role přístup. Je vyžadována alespoň jedna kamera.",
|
||||
"required": "Musí být vybrána alespoň jedna kamera."
|
||||
}
|
||||
},
|
||||
"editCameras": {
|
||||
"desc": "Aktualizujte přístup ke kamerám pro roli <strong>{{role}}</strong>.",
|
||||
"title": "Upravit kamery role"
|
||||
}
|
||||
},
|
||||
"management": {
|
||||
"title": "Správa role diváka",
|
||||
"desc": "Spravujte vlastní role diváků a jejich oprávnění k přístupu ke kamerám pro tuto instanci Frigate."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,5 +5,80 @@
|
||||
"moo": "Bučanie",
|
||||
"cowbell": "Kravský zvonec",
|
||||
"pig": "Prasa",
|
||||
"speech": "Tale"
|
||||
"speech": "Tale",
|
||||
"bicycle": "Cykel",
|
||||
"car": "Bil",
|
||||
"bellow": "Under",
|
||||
"motorcycle": "Motorcykel",
|
||||
"whispering": "Hvisker",
|
||||
"bus": "Bus",
|
||||
"laughter": "Latter",
|
||||
"train": "Tog",
|
||||
"boat": "Båd",
|
||||
"crying": "Græder",
|
||||
"tambourine": "Tambourin",
|
||||
"marimba": "Marimba",
|
||||
"trumpet": "Trumpet",
|
||||
"trombone": "Trombone",
|
||||
"violin": "Violin",
|
||||
"flute": "Fløjte",
|
||||
"saxophone": "Saxofon",
|
||||
"clarinet": "Klarinet",
|
||||
"harp": "Harpe",
|
||||
"bell": "Klokke",
|
||||
"harmonica": "Harmonika",
|
||||
"bagpipes": "Sækkepibe",
|
||||
"didgeridoo": "Didgeridoo",
|
||||
"jazz": "Jazz",
|
||||
"opera": "Opera",
|
||||
"dubstep": "Dubstep",
|
||||
"blues": "Blues",
|
||||
"song": "Sang",
|
||||
"lullaby": "Vuggevise",
|
||||
"wind": "Vind",
|
||||
"thunderstorm": "Tordenvejr",
|
||||
"thunder": "Torden",
|
||||
"water": "Vand",
|
||||
"rain": "Regn",
|
||||
"raindrop": "Regndråbe",
|
||||
"waterfall": "Vandfald",
|
||||
"waves": "Bølger",
|
||||
"fire": "Ild",
|
||||
"vehicle": "Køretøj",
|
||||
"sailboat": "Sejlbåd",
|
||||
"rowboat": "Robåd",
|
||||
"motorboat": "Motorbåd",
|
||||
"ship": "Skib",
|
||||
"ambulance": "Ambulance",
|
||||
"helicopter": "Helikopter",
|
||||
"skateboard": "Skateboard",
|
||||
"chainsaw": "Motorsav",
|
||||
"door": "Dør",
|
||||
"doorbell": "Dørklokke",
|
||||
"slam": "Smæk",
|
||||
"knock": "Bank",
|
||||
"squeak": "Knirke",
|
||||
"dishes": "Tallerkener",
|
||||
"cutlery": "Bestik",
|
||||
"sink": "Håndvask",
|
||||
"bathtub": "Badekar",
|
||||
"toothbrush": "Tandbørste",
|
||||
"zipper": "Lynlås",
|
||||
"coin": "Mønt",
|
||||
"scissors": "Saks",
|
||||
"typewriter": "Skrivemaskine",
|
||||
"alarm": "Alarm",
|
||||
"telephone": "Telefon",
|
||||
"ringtone": "Ringetone",
|
||||
"siren": "Sirene",
|
||||
"foghorn": "Tågehorn",
|
||||
"whistle": "Fløjte",
|
||||
"clock": "Ur",
|
||||
"printer": "Printer",
|
||||
"camera": "Kamera",
|
||||
"tools": "Værktøj",
|
||||
"hammer": "Hammer",
|
||||
"drill": "Bore",
|
||||
"explosion": "Eksplosion",
|
||||
"fireworks": "Nytårskrudt"
|
||||
}
|
||||
|
||||
@ -5,7 +5,9 @@
|
||||
"login": "Log ind",
|
||||
"errors": {
|
||||
"usernameRequired": "Brugernavn kræves",
|
||||
"passwordRequired": "Kodeord kræves"
|
||||
"passwordRequired": "Kodeord kræves",
|
||||
"loginFailed": "Login fejlede",
|
||||
"unknownError": "Ukendt fejl. Tjek logs."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,17 @@
|
||||
{
|
||||
"group": {
|
||||
"label": "Kamera Grupper",
|
||||
"add": "Tilføj Kameragruppe"
|
||||
"add": "Tilføj Kameragruppe",
|
||||
"edit": "Rediger Kamera Gruppe",
|
||||
"delete": {
|
||||
"label": "Slet kamera gruppe",
|
||||
"confirm": {
|
||||
"title": "Bekræft sletning",
|
||||
"desc": "Er du sikker på at du vil slette kamera gruppen <em>{{name}}</em>?"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"label": "Navn"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1,9 @@
|
||||
{}
|
||||
{
|
||||
"restart": {
|
||||
"title": "Er du sikker på at du vil genstarte Frigate?",
|
||||
"button": "Genstart",
|
||||
"restarting": {
|
||||
"title": "Frigate genstarter"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1,17 @@
|
||||
{}
|
||||
{
|
||||
"filter": "Filter",
|
||||
"classes": {
|
||||
"label": "Klasser",
|
||||
"all": {
|
||||
"title": "Alle klasser"
|
||||
},
|
||||
"count_one": "{{count}} Klasse",
|
||||
"count_other": "{{count}} Klasser"
|
||||
},
|
||||
"labels": {
|
||||
"all": {
|
||||
"short": "Labels"
|
||||
},
|
||||
"count_one": "{{count}} Label"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
{
|
||||
"iconPicker": {
|
||||
"selectIcon": "Vælg et ikon"
|
||||
"selectIcon": "Vælg et ikon",
|
||||
"search": {
|
||||
"placeholder": "Søg efter ikoner…"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1,7 @@
|
||||
{}
|
||||
{
|
||||
"button": {
|
||||
"downloadVideo": {
|
||||
"label": "Download Video"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1,5 @@
|
||||
{}
|
||||
{
|
||||
"noRecordingsFoundForThisTime": "Ingen optagelser fundet i det angivet tidsrum",
|
||||
"noPreviewFound": "Ingen forhåndsvisning fundet",
|
||||
"cameraDisabled": "Kamera er deaktiveret"
|
||||
}
|
||||
|
||||
@ -1,3 +1,18 @@
|
||||
{
|
||||
"person": "Person"
|
||||
"person": "Person",
|
||||
"bicycle": "Cykel",
|
||||
"car": "Bil",
|
||||
"motorcycle": "Motorcykel",
|
||||
"airplane": "Flyvemaskine",
|
||||
"bus": "Bus",
|
||||
"train": "Tog",
|
||||
"boat": "Båd",
|
||||
"traffic_light": "Trafiklys",
|
||||
"vehicle": "Køretøj",
|
||||
"skateboard": "Skateboard",
|
||||
"door": "Dør",
|
||||
"sink": "Håndvask",
|
||||
"toothbrush": "Tandbørste",
|
||||
"scissors": "Saks",
|
||||
"clock": "Ur"
|
||||
}
|
||||
|
||||
@ -1 +1,6 @@
|
||||
{}
|
||||
{
|
||||
"documentTitle": "Konfigurationsstyring - Frigate",
|
||||
"copyConfig": "Kopiér konfiguration",
|
||||
"saveAndRestart": "Gem & Genstart",
|
||||
"saveOnly": "Kun gem"
|
||||
}
|
||||
|
||||
@ -1 +1,11 @@
|
||||
{}
|
||||
{
|
||||
"alerts": "Alarmer",
|
||||
"detections": "Detekteringer",
|
||||
"motion": {
|
||||
"label": "Bevægelse",
|
||||
"only": "Kun bevægelse"
|
||||
},
|
||||
"allCameras": "Alle kameraer",
|
||||
"timeline": "Tidslinje",
|
||||
"camera": "Kamera"
|
||||
}
|
||||
|
||||
@ -9,5 +9,11 @@
|
||||
"lifecycleItemDesc": {
|
||||
"active": "{{label}} blev aktiv"
|
||||
}
|
||||
},
|
||||
"exploreIsUnavailable": {
|
||||
"embeddingsReindexing": {
|
||||
"startingUp": "Starter…",
|
||||
"estimatedTime": "Estimeret tid tilbage:"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,9 @@
|
||||
{
|
||||
"documentTitle": "Eksporter - Frigate",
|
||||
"search": "Søg"
|
||||
"search": "Søg",
|
||||
"deleteExport.desc": "Er du sikker på at du vil slette {{exportName}}?",
|
||||
"editExport": {
|
||||
"title": "Omdøb Eksport",
|
||||
"saveExport": "Gem Eksport"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,3 +1,10 @@
|
||||
{
|
||||
"selectItem": "Vælg {{item}}"
|
||||
"selectItem": "Vælg {{item}}",
|
||||
"description": {
|
||||
"addFace": "Gennemgang af tilføjelse til ansigts bibliotek",
|
||||
"placeholder": "Angiv et navn for bibliotek"
|
||||
},
|
||||
"details": {
|
||||
"person": "Person"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1,12 @@
|
||||
{}
|
||||
{
|
||||
"documentTitle": "Live - Frigate",
|
||||
"documentTitle.withCamera": "{{camera}} - Live - Frigate",
|
||||
"twoWayTalk": {
|
||||
"enable": "Aktivér tovejskommunikation",
|
||||
"disable": "Deaktiver tovejskommunikation"
|
||||
},
|
||||
"cameraAudio": {
|
||||
"enable": "Aktivér kameralyd",
|
||||
"disable": "Deaktivér kamera lyd"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1,11 @@
|
||||
{}
|
||||
{
|
||||
"filter": "Filter",
|
||||
"export": "Eksporter",
|
||||
"calendar": "Kalender",
|
||||
"filters": "Filtere",
|
||||
"toast": {
|
||||
"error": {
|
||||
"endTimeMustAfterStartTime": "Sluttidspunkt skal være efter starttidspunkt"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,3 +1,11 @@
|
||||
{
|
||||
"search": "Søg"
|
||||
"search": "Søg",
|
||||
"savedSearches": "Gemte Søgninger",
|
||||
"searchFor": "Søg efter {{inputValue}}",
|
||||
"button": {
|
||||
"save": "Gem søgning",
|
||||
"delete": "Slet gemt søgning",
|
||||
"filterInformation": "Filter information",
|
||||
"filterActive": "Filtre aktiv"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"default": "Indstillinger - Frigate"
|
||||
"default": "Indstillinger - Frigate",
|
||||
"authentication": "Bruger Indstillinger - Frigate",
|
||||
"camera": "Kamera indstillinger - Frigate",
|
||||
"object": "Debug - Frigate"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1,12 @@
|
||||
{}
|
||||
{
|
||||
"documentTitle": {
|
||||
"cameras": "Kamera Statistik - Frigate",
|
||||
"storage": "Lagrings Statistik - Frigate",
|
||||
"logs": {
|
||||
"frigate": "Frigate Logs - Frigate",
|
||||
"go2rtc": "Go2RTC Logs - Frigate",
|
||||
"nginx": "Nginx Logs - Frigate"
|
||||
}
|
||||
},
|
||||
"title": "System"
|
||||
}
|
||||
|
||||
26
web/public/locales/en/config/audio.json
Normal file
26
web/public/locales/en/config/audio.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"label": "Global Audio events configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable audio events."
|
||||
},
|
||||
"max_not_heard": {
|
||||
"label": "Seconds of not hearing the type of audio to end the event."
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Min volume required to run audio detection."
|
||||
},
|
||||
"listen": {
|
||||
"label": "Audio to listen for."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Audio filters."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of audio detection."
|
||||
},
|
||||
"num_threads": {
|
||||
"label": "Number of detection threads"
|
||||
}
|
||||
}
|
||||
}
|
||||
23
web/public/locales/en/config/audio_transcription.json
Normal file
23
web/public/locales/en/config/audio_transcription.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"label": "Audio transcription config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable audio transcription."
|
||||
},
|
||||
"language": {
|
||||
"label": "Language abbreviation to use for audio event transcription/translation."
|
||||
},
|
||||
"device": {
|
||||
"label": "The device used for license plate recognition."
|
||||
},
|
||||
"model_size": {
|
||||
"label": "The size of the embeddings model used."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of camera."
|
||||
},
|
||||
"live_enabled": {
|
||||
"label": "Enable live transcriptions."
|
||||
}
|
||||
}
|
||||
}
|
||||
35
web/public/locales/en/config/auth.json
Normal file
35
web/public/locales/en/config/auth.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"label": "Auth configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable authentication"
|
||||
},
|
||||
"reset_admin_password": {
|
||||
"label": "Reset the admin password on startup"
|
||||
},
|
||||
"cookie_name": {
|
||||
"label": "Name for jwt token cookie"
|
||||
},
|
||||
"cookie_secure": {
|
||||
"label": "Set secure flag on cookie"
|
||||
},
|
||||
"session_length": {
|
||||
"label": "Session length for jwt session tokens"
|
||||
},
|
||||
"refresh_time": {
|
||||
"label": "Refresh the session if it is going to expire in this many seconds"
|
||||
},
|
||||
"failed_login_rate_limit": {
|
||||
"label": "Rate limits for failed login attempts."
|
||||
},
|
||||
"trusted_proxies": {
|
||||
"label": "Trusted proxies for determining IP address to rate limit"
|
||||
},
|
||||
"hash_iterations": {
|
||||
"label": "Password hash iterations"
|
||||
},
|
||||
"roles": {
|
||||
"label": "Role to camera mappings. Empty list grants access to all cameras."
|
||||
}
|
||||
}
|
||||
}
|
||||
37
web/public/locales/en/config/birdseye.json
Normal file
37
web/public/locales/en/config/birdseye.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"label": "Birdseye configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable birdseye view."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Tracking mode."
|
||||
},
|
||||
"restream": {
|
||||
"label": "Restream birdseye via RTSP."
|
||||
},
|
||||
"width": {
|
||||
"label": "Birdseye width."
|
||||
},
|
||||
"height": {
|
||||
"label": "Birdseye height."
|
||||
},
|
||||
"quality": {
|
||||
"label": "Encoding quality."
|
||||
},
|
||||
"inactivity_threshold": {
|
||||
"label": "Birdseye Inactivity Threshold"
|
||||
},
|
||||
"layout": {
|
||||
"label": "Birdseye Layout Config",
|
||||
"properties": {
|
||||
"scaling_factor": {
|
||||
"label": "Birdseye Scaling Factor"
|
||||
},
|
||||
"max_cameras": {
|
||||
"label": "Max cameras"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
14
web/public/locales/en/config/camera_groups.json
Normal file
14
web/public/locales/en/config/camera_groups.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"label": "Camera group configuration",
|
||||
"properties": {
|
||||
"cameras": {
|
||||
"label": "List of cameras in this group."
|
||||
},
|
||||
"icon": {
|
||||
"label": "Icon that represents camera group."
|
||||
},
|
||||
"order": {
|
||||
"label": "Sort order for group."
|
||||
}
|
||||
}
|
||||
}
|
||||
761
web/public/locales/en/config/cameras.json
Normal file
761
web/public/locales/en/config/cameras.json
Normal file
@ -0,0 +1,761 @@
|
||||
{
|
||||
"label": "Camera configuration.",
|
||||
"properties": {
|
||||
"name": {
|
||||
"label": "Camera name."
|
||||
},
|
||||
"friendly_name": {
|
||||
"label": "Camera friendly name used in the Frigate UI."
|
||||
},
|
||||
"enabled": {
|
||||
"label": "Enable camera."
|
||||
},
|
||||
"audio": {
|
||||
"label": "Audio events configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable audio events."
|
||||
},
|
||||
"max_not_heard": {
|
||||
"label": "Seconds of not hearing the type of audio to end the event."
|
||||
},
|
||||
"min_volume": {
|
||||
"label": "Min volume required to run audio detection."
|
||||
},
|
||||
"listen": {
|
||||
"label": "Audio to listen for."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Audio filters."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of audio detection."
|
||||
},
|
||||
"num_threads": {
|
||||
"label": "Number of detection threads"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio_transcription": {
|
||||
"label": "Audio transcription config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable audio transcription."
|
||||
},
|
||||
"language": {
|
||||
"label": "Language abbreviation to use for audio event transcription/translation."
|
||||
},
|
||||
"device": {
|
||||
"label": "The device used for license plate recognition."
|
||||
},
|
||||
"model_size": {
|
||||
"label": "The size of the embeddings model used."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of camera."
|
||||
},
|
||||
"live_enabled": {
|
||||
"label": "Enable live transcriptions."
|
||||
}
|
||||
}
|
||||
},
|
||||
"birdseye": {
|
||||
"label": "Birdseye camera configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable birdseye view for camera."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Tracking mode for camera."
|
||||
},
|
||||
"order": {
|
||||
"label": "Position of the camera in the birdseye view."
|
||||
}
|
||||
}
|
||||
},
|
||||
"detect": {
|
||||
"label": "Object detection configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Detection Enabled."
|
||||
},
|
||||
"height": {
|
||||
"label": "Height of the stream for the detect role."
|
||||
},
|
||||
"width": {
|
||||
"label": "Width of the stream for the detect role."
|
||||
},
|
||||
"fps": {
|
||||
"label": "Number of frames per second to process through detection."
|
||||
},
|
||||
"min_initialized": {
|
||||
"label": "Minimum number of consecutive hits for an object to be initialized by the tracker."
|
||||
},
|
||||
"max_disappeared": {
|
||||
"label": "Maximum number of frames the object can disappear before detection ends."
|
||||
},
|
||||
"stationary": {
|
||||
"label": "Stationary objects config.",
|
||||
"properties": {
|
||||
"interval": {
|
||||
"label": "Frame interval for checking stationary objects."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Number of frames without a position change for an object to be considered stationary"
|
||||
},
|
||||
"max_frames": {
|
||||
"label": "Max frames for stationary objects.",
|
||||
"properties": {
|
||||
"default": {
|
||||
"label": "Default max frames."
|
||||
},
|
||||
"objects": {
|
||||
"label": "Object specific max frames."
|
||||
}
|
||||
}
|
||||
},
|
||||
"classifier": {
|
||||
"label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary."
|
||||
}
|
||||
}
|
||||
},
|
||||
"annotation_offset": {
|
||||
"label": "Milliseconds to offset detect annotations by."
|
||||
}
|
||||
}
|
||||
},
|
||||
"face_recognition": {
|
||||
"label": "Face recognition config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable face recognition."
|
||||
},
|
||||
"min_area": {
|
||||
"label": "Min area of face box to consider running face recognition."
|
||||
}
|
||||
}
|
||||
},
|
||||
"ffmpeg": {
|
||||
"label": "FFmpeg configuration for the camera.",
|
||||
"properties": {
|
||||
"path": {
|
||||
"label": "FFmpeg path"
|
||||
},
|
||||
"global_args": {
|
||||
"label": "Global FFmpeg arguments."
|
||||
},
|
||||
"hwaccel_args": {
|
||||
"label": "FFmpeg hardware acceleration arguments."
|
||||
},
|
||||
"input_args": {
|
||||
"label": "FFmpeg input arguments."
|
||||
},
|
||||
"output_args": {
|
||||
"label": "FFmpeg output arguments per role.",
|
||||
"properties": {
|
||||
"detect": {
|
||||
"label": "Detect role FFmpeg output arguments."
|
||||
},
|
||||
"record": {
|
||||
"label": "Record role FFmpeg output arguments."
|
||||
}
|
||||
}
|
||||
},
|
||||
"retry_interval": {
|
||||
"label": "Time in seconds to wait before FFmpeg retries connecting to the camera."
|
||||
},
|
||||
"apple_compatibility": {
|
||||
"label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players."
|
||||
},
|
||||
"inputs": {
|
||||
"label": "Camera inputs."
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"label": "Live playback settings.",
|
||||
"properties": {
|
||||
"streams": {
|
||||
"label": "Friendly names and restream names to use for live view."
|
||||
},
|
||||
"height": {
|
||||
"label": "Live camera view height"
|
||||
},
|
||||
"quality": {
|
||||
"label": "Live camera view quality"
|
||||
}
|
||||
}
|
||||
},
|
||||
"lpr": {
|
||||
"label": "LPR config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable license plate recognition."
|
||||
},
|
||||
"expire_time": {
|
||||
"label": "Expire plates not seen after number of seconds (for dedicated LPR cameras only)."
|
||||
},
|
||||
"min_area": {
|
||||
"label": "Minimum area of license plate to begin running recognition."
|
||||
},
|
||||
"enhancement": {
|
||||
"label": "Amount of contrast adjustment and denoising to apply to license plate images before recognition."
|
||||
}
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "Motion detection configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable motion on all cameras."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Motion detection threshold (1-255)."
|
||||
},
|
||||
"lightning_threshold": {
|
||||
"label": "Lightning detection threshold (0.3-1.0)."
|
||||
},
|
||||
"improve_contrast": {
|
||||
"label": "Improve Contrast"
|
||||
},
|
||||
"contour_area": {
|
||||
"label": "Contour Area"
|
||||
},
|
||||
"delta_alpha": {
|
||||
"label": "Delta Alpha"
|
||||
},
|
||||
"frame_alpha": {
|
||||
"label": "Frame Alpha"
|
||||
},
|
||||
"frame_height": {
|
||||
"label": "Frame Height"
|
||||
},
|
||||
"mask": {
|
||||
"label": "Coordinates polygon for the motion mask."
|
||||
},
|
||||
"mqtt_off_delay": {
|
||||
"label": "Delay for updating MQTT with no motion detected."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of motion detection."
|
||||
}
|
||||
}
|
||||
},
|
||||
"objects": {
|
||||
"label": "Object configuration.",
|
||||
"properties": {
|
||||
"track": {
|
||||
"label": "Objects to track."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Object filters.",
|
||||
"properties": {
|
||||
"min_area": {
|
||||
"label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
||||
},
|
||||
"max_area": {
|
||||
"label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
||||
},
|
||||
"min_ratio": {
|
||||
"label": "Minimum ratio of bounding box's width/height for object to be counted."
|
||||
},
|
||||
"max_ratio": {
|
||||
"label": "Maximum ratio of bounding box's width/height for object to be counted."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Average detection confidence threshold for object to be counted."
|
||||
},
|
||||
"min_score": {
|
||||
"label": "Minimum detection confidence for object to be counted."
|
||||
},
|
||||
"mask": {
|
||||
"label": "Detection area polygon mask for this filter configuration."
|
||||
}
|
||||
}
|
||||
},
|
||||
"mask": {
|
||||
"label": "Object mask."
|
||||
},
|
||||
"genai": {
|
||||
"label": "Config for using genai to analyze objects.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable GenAI for camera."
|
||||
},
|
||||
"use_snapshot": {
|
||||
"label": "Use snapshots for generating descriptions."
|
||||
},
|
||||
"prompt": {
|
||||
"label": "Default caption prompt."
|
||||
},
|
||||
"object_prompts": {
|
||||
"label": "Object specific prompts."
|
||||
},
|
||||
"objects": {
|
||||
"label": "List of objects to run generative AI for."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to run generative AI."
|
||||
},
|
||||
"debug_save_thumbnails": {
|
||||
"label": "Save thumbnails sent to generative AI for debugging purposes."
|
||||
},
|
||||
"send_triggers": {
|
||||
"label": "What triggers to use to send frames to generative AI for a tracked object.",
|
||||
"properties": {
|
||||
"tracked_object_end": {
|
||||
"label": "Send once the object is no longer tracked."
|
||||
},
|
||||
"after_significant_updates": {
|
||||
"label": "Send an early request to generative AI when X frames accumulated."
|
||||
}
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of generative AI."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"label": "Record configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable record on all cameras."
|
||||
},
|
||||
"sync_recordings": {
|
||||
"label": "Sync recordings with disk on startup and once a day."
|
||||
},
|
||||
"expire_interval": {
|
||||
"label": "Number of minutes to wait between cleanup runs."
|
||||
},
|
||||
"continuous": {
|
||||
"label": "Continuous recording retention settings.",
|
||||
"properties": {
|
||||
"days": {
|
||||
"label": "Default retention period."
|
||||
}
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "Motion recording retention settings.",
|
||||
"properties": {
|
||||
"days": {
|
||||
"label": "Default retention period."
|
||||
}
|
||||
}
|
||||
},
|
||||
"detections": {
|
||||
"label": "Detection specific retention settings.",
|
||||
"properties": {
|
||||
"pre_capture": {
|
||||
"label": "Seconds to retain before event starts."
|
||||
},
|
||||
"post_capture": {
|
||||
"label": "Seconds to retain after event ends."
|
||||
},
|
||||
"retain": {
|
||||
"label": "Event retention settings.",
|
||||
"properties": {
|
||||
"days": {
|
||||
"label": "Default retention period."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Retain mode."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alerts": {
|
||||
"label": "Alert specific retention settings.",
|
||||
"properties": {
|
||||
"pre_capture": {
|
||||
"label": "Seconds to retain before event starts."
|
||||
},
|
||||
"post_capture": {
|
||||
"label": "Seconds to retain after event ends."
|
||||
},
|
||||
"retain": {
|
||||
"label": "Event retention settings.",
|
||||
"properties": {
|
||||
"days": {
|
||||
"label": "Default retention period."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Retain mode."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"export": {
|
||||
"label": "Recording Export Config",
|
||||
"properties": {
|
||||
"timelapse_args": {
|
||||
"label": "Timelapse Args"
|
||||
}
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
"label": "Recording Preview Config",
|
||||
"properties": {
|
||||
"quality": {
|
||||
"label": "Quality of recording preview."
|
||||
}
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of recording."
|
||||
}
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
"label": "Review configuration.",
|
||||
"properties": {
|
||||
"alerts": {
|
||||
"label": "Review alerts config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable alerts."
|
||||
},
|
||||
"labels": {
|
||||
"label": "Labels to create alerts for."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to save the event as an alert."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of alerts."
|
||||
},
|
||||
"cutoff_time": {
|
||||
"label": "Time to cutoff alerts after no alert-causing activity has occurred."
|
||||
}
|
||||
}
|
||||
},
|
||||
"detections": {
|
||||
"label": "Review detections config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable detections."
|
||||
},
|
||||
"labels": {
|
||||
"label": "Labels to create detections for."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to save the event as a detection."
|
||||
},
|
||||
"cutoff_time": {
|
||||
"label": "Time to cutoff detection after no detection-causing activity has occurred."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of detections."
|
||||
}
|
||||
}
|
||||
},
|
||||
"genai": {
|
||||
"label": "Review description genai config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable GenAI descriptions for review items."
|
||||
},
|
||||
"alerts": {
|
||||
"label": "Enable GenAI for alerts."
|
||||
},
|
||||
"detections": {
|
||||
"label": "Enable GenAI for detections."
|
||||
},
|
||||
"additional_concerns": {
|
||||
"label": "Additional concerns that GenAI should make note of on this camera."
|
||||
},
|
||||
"debug_save_thumbnails": {
|
||||
"label": "Save thumbnails sent to generative AI for debugging purposes."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of generative AI."
|
||||
},
|
||||
"preferred_language": {
|
||||
"label": "Preferred language for GenAI Response"
|
||||
},
|
||||
"activity_context_prompt": {
|
||||
"label": "Custom activity context prompt defining normal activity patterns for this property."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"semantic_search": {
|
||||
"label": "Semantic search configuration.",
|
||||
"properties": {
|
||||
"triggers": {
|
||||
"label": "Trigger actions on tracked objects that match existing thumbnails or descriptions",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable this trigger"
|
||||
},
|
||||
"type": {
|
||||
"label": "Type of trigger"
|
||||
},
|
||||
"data": {
|
||||
"label": "Trigger content (text phrase or image ID)"
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Confidence score required to run the trigger"
|
||||
},
|
||||
"actions": {
|
||||
"label": "Actions to perform when trigger is matched"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"snapshots": {
|
||||
"label": "Snapshot configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Snapshots enabled."
|
||||
},
|
||||
"clean_copy": {
|
||||
"label": "Create a clean copy of the snapshot image."
|
||||
},
|
||||
"timestamp": {
|
||||
"label": "Add a timestamp overlay on the snapshot."
|
||||
},
|
||||
"bounding_box": {
|
||||
"label": "Add a bounding box overlay on the snapshot."
|
||||
},
|
||||
"crop": {
|
||||
"label": "Crop the snapshot to the detected object."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to save a snapshot."
|
||||
},
|
||||
"height": {
|
||||
"label": "Snapshot image height."
|
||||
},
|
||||
"retain": {
|
||||
"label": "Snapshot retention.",
|
||||
"properties": {
|
||||
"default": {
|
||||
"label": "Default retention period."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Retain mode."
|
||||
},
|
||||
"objects": {
|
||||
"label": "Object retention period."
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Quality of the encoded jpeg (0-100)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"timestamp_style": {
|
||||
"label": "Timestamp style configuration.",
|
||||
"properties": {
|
||||
"position": {
|
||||
"label": "Timestamp position."
|
||||
},
|
||||
"format": {
|
||||
"label": "Timestamp format."
|
||||
},
|
||||
"color": {
|
||||
"label": "Timestamp color.",
|
||||
"properties": {
|
||||
"red": {
|
||||
"label": "Red"
|
||||
},
|
||||
"green": {
|
||||
"label": "Green"
|
||||
},
|
||||
"blue": {
|
||||
"label": "Blue"
|
||||
}
|
||||
}
|
||||
},
|
||||
"thickness": {
|
||||
"label": "Timestamp thickness."
|
||||
},
|
||||
"effect": {
|
||||
"label": "Timestamp effect."
|
||||
}
|
||||
}
|
||||
},
|
||||
"best_image_timeout": {
|
||||
"label": "How long to wait for the image with the highest confidence score."
|
||||
},
|
||||
"mqtt": {
|
||||
"label": "MQTT configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Send image over MQTT."
|
||||
},
|
||||
"timestamp": {
|
||||
"label": "Add timestamp to MQTT image."
|
||||
},
|
||||
"bounding_box": {
|
||||
"label": "Add bounding box to MQTT image."
|
||||
},
|
||||
"crop": {
|
||||
"label": "Crop MQTT image to detected object."
|
||||
},
|
||||
"height": {
|
||||
"label": "MQTT image height."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to send the image."
|
||||
},
|
||||
"quality": {
|
||||
"label": "Quality of the encoded jpeg (0-100)."
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"label": "Notifications configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable notifications"
|
||||
},
|
||||
"email": {
|
||||
"label": "Email required for push."
|
||||
},
|
||||
"cooldown": {
|
||||
"label": "Cooldown period for notifications (time in seconds)."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of notifications."
|
||||
}
|
||||
}
|
||||
},
|
||||
"onvif": {
|
||||
"label": "Camera Onvif Configuration.",
|
||||
"properties": {
|
||||
"host": {
|
||||
"label": "Onvif Host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Onvif Port"
|
||||
},
|
||||
"user": {
|
||||
"label": "Onvif Username"
|
||||
},
|
||||
"password": {
|
||||
"label": "Onvif Password"
|
||||
},
|
||||
"tls_insecure": {
|
||||
"label": "Onvif Disable TLS verification"
|
||||
},
|
||||
"autotracking": {
|
||||
"label": "PTZ auto tracking config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable PTZ object autotracking."
|
||||
},
|
||||
"calibrate_on_startup": {
|
||||
"label": "Perform a camera calibration when Frigate starts."
|
||||
},
|
||||
"zooming": {
|
||||
"label": "Autotracker zooming mode."
|
||||
},
|
||||
"zoom_factor": {
|
||||
"label": "Zooming factor (0.1-0.75)."
|
||||
},
|
||||
"track": {
|
||||
"label": "Objects to track."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to begin autotracking."
|
||||
},
|
||||
"return_preset": {
|
||||
"label": "Name of camera preset to return to when object tracking is over."
|
||||
},
|
||||
"timeout": {
|
||||
"label": "Seconds to delay before returning to preset."
|
||||
},
|
||||
"movement_weights": {
|
||||
"label": "Internal value used for PTZ movements based on the speed of your camera's motor."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of autotracking."
|
||||
}
|
||||
}
|
||||
},
|
||||
"ignore_time_mismatch": {
|
||||
"label": "Onvif Ignore Time Synchronization Mismatch Between Camera and Server"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": {
|
||||
"label": "Camera Type"
|
||||
},
|
||||
"ui": {
|
||||
"label": "Camera UI Modifications.",
|
||||
"properties": {
|
||||
"order": {
|
||||
"label": "Order of camera in UI."
|
||||
},
|
||||
"dashboard": {
|
||||
"label": "Show this camera in Frigate dashboard UI."
|
||||
}
|
||||
}
|
||||
},
|
||||
"webui_url": {
|
||||
"label": "URL to visit the camera directly from system page"
|
||||
},
|
||||
"zones": {
|
||||
"label": "Zone configuration.",
|
||||
"properties": {
|
||||
"filters": {
|
||||
"label": "Zone filters.",
|
||||
"properties": {
|
||||
"min_area": {
|
||||
"label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
||||
},
|
||||
"max_area": {
|
||||
"label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
||||
},
|
||||
"min_ratio": {
|
||||
"label": "Minimum ratio of bounding box's width/height for object to be counted."
|
||||
},
|
||||
"max_ratio": {
|
||||
"label": "Maximum ratio of bounding box's width/height for object to be counted."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Average detection confidence threshold for object to be counted."
|
||||
},
|
||||
"min_score": {
|
||||
"label": "Minimum detection confidence for object to be counted."
|
||||
},
|
||||
"mask": {
|
||||
"label": "Detection area polygon mask for this filter configuration."
|
||||
}
|
||||
}
|
||||
},
|
||||
"coordinates": {
|
||||
"label": "Coordinates polygon for the defined zone."
|
||||
},
|
||||
"distances": {
|
||||
"label": "Real-world distances for the sides of quadrilateral for the defined zone."
|
||||
},
|
||||
"inertia": {
|
||||
"label": "Number of consecutive frames required for object to be considered present in the zone."
|
||||
},
|
||||
"loitering_time": {
|
||||
"label": "Number of seconds that an object must loiter to be considered in the zone."
|
||||
},
|
||||
"speed_threshold": {
|
||||
"label": "Minimum speed value for an object to be considered in the zone."
|
||||
},
|
||||
"objects": {
|
||||
"label": "List of objects that can trigger the zone."
|
||||
}
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of camera."
|
||||
}
|
||||
}
|
||||
}
|
||||
58
web/public/locales/en/config/classification.json
Normal file
58
web/public/locales/en/config/classification.json
Normal file
@ -0,0 +1,58 @@
|
||||
{
|
||||
"label": "Object classification config.",
|
||||
"properties": {
|
||||
"bird": {
|
||||
"label": "Bird classification config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable bird classification."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Minimum classification score required to be considered a match."
|
||||
}
|
||||
}
|
||||
},
|
||||
"custom": {
|
||||
"label": "Custom Classification Model Configs.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable running the model."
|
||||
},
|
||||
"name": {
|
||||
"label": "Name of classification model."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Classification score threshold to change the state."
|
||||
},
|
||||
"object_config": {
|
||||
"properties": {
|
||||
"objects": {
|
||||
"label": "Object types to classify."
|
||||
},
|
||||
"classification_type": {
|
||||
"label": "Type of classification that is applied."
|
||||
}
|
||||
}
|
||||
},
|
||||
"state_config": {
|
||||
"properties": {
|
||||
"cameras": {
|
||||
"label": "Cameras to run classification on.",
|
||||
"properties": {
|
||||
"crop": {
|
||||
"label": "Crop of image frame on this camera to run classification on."
|
||||
}
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "If classification should be run when motion is detected in the crop."
|
||||
},
|
||||
"interval": {
|
||||
"label": "Interval to run classification on in seconds."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8
web/public/locales/en/config/database.json
Normal file
8
web/public/locales/en/config/database.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"label": "Database configuration.",
|
||||
"properties": {
|
||||
"path": {
|
||||
"label": "Database path."
|
||||
}
|
||||
}
|
||||
}
|
||||
51
web/public/locales/en/config/detect.json
Normal file
51
web/public/locales/en/config/detect.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"label": "Global object tracking configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Detection Enabled."
|
||||
},
|
||||
"height": {
|
||||
"label": "Height of the stream for the detect role."
|
||||
},
|
||||
"width": {
|
||||
"label": "Width of the stream for the detect role."
|
||||
},
|
||||
"fps": {
|
||||
"label": "Number of frames per second to process through detection."
|
||||
},
|
||||
"min_initialized": {
|
||||
"label": "Minimum number of consecutive hits for an object to be initialized by the tracker."
|
||||
},
|
||||
"max_disappeared": {
|
||||
"label": "Maximum number of frames the object can disappear before detection ends."
|
||||
},
|
||||
"stationary": {
|
||||
"label": "Stationary objects config.",
|
||||
"properties": {
|
||||
"interval": {
|
||||
"label": "Frame interval for checking stationary objects."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Number of frames without a position change for an object to be considered stationary"
|
||||
},
|
||||
"max_frames": {
|
||||
"label": "Max frames for stationary objects.",
|
||||
"properties": {
|
||||
"default": {
|
||||
"label": "Default max frames."
|
||||
},
|
||||
"objects": {
|
||||
"label": "Object specific max frames."
|
||||
}
|
||||
}
|
||||
},
|
||||
"classifier": {
|
||||
"label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary."
|
||||
}
|
||||
}
|
||||
},
|
||||
"annotation_offset": {
|
||||
"label": "Milliseconds to offset detect annotations by."
|
||||
}
|
||||
}
|
||||
}
|
||||
14
web/public/locales/en/config/detectors.json
Normal file
14
web/public/locales/en/config/detectors.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"label": "Detector hardware configuration.",
|
||||
"properties": {
|
||||
"type": {
|
||||
"label": "Detector Type"
|
||||
},
|
||||
"model": {
|
||||
"label": "Detector specific model configuration."
|
||||
},
|
||||
"model_path": {
|
||||
"label": "Detector specific model path."
|
||||
}
|
||||
}
|
||||
}
|
||||
3
web/public/locales/en/config/environment_vars.json
Normal file
3
web/public/locales/en/config/environment_vars.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"label": "Frigate environment variables."
|
||||
}
|
||||
36
web/public/locales/en/config/face_recognition.json
Normal file
36
web/public/locales/en/config/face_recognition.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"label": "Face recognition config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable face recognition."
|
||||
},
|
||||
"model_size": {
|
||||
"label": "The size of the embeddings model used."
|
||||
},
|
||||
"unknown_score": {
|
||||
"label": "Minimum face distance score required to be marked as a potential match."
|
||||
},
|
||||
"detection_threshold": {
|
||||
"label": "Minimum face detection score required to be considered a face."
|
||||
},
|
||||
"recognition_threshold": {
|
||||
"label": "Minimum face distance score required to be considered a match."
|
||||
},
|
||||
"min_area": {
|
||||
"label": "Min area of face box to consider running face recognition."
|
||||
},
|
||||
"min_faces": {
|
||||
"label": "Min face recognitions for the sub label to be applied to the person object."
|
||||
},
|
||||
"save_attempts": {
|
||||
"label": "Number of face attempts to save in the train tab."
|
||||
},
|
||||
"blur_confidence_filter": {
|
||||
"label": "Apply blur quality filter to face confidence."
|
||||
},
|
||||
"device": {
|
||||
"label": "The device key to use for face recognition.",
|
||||
"description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information"
|
||||
}
|
||||
}
|
||||
}
|
||||
34
web/public/locales/en/config/ffmpeg.json
Normal file
34
web/public/locales/en/config/ffmpeg.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"label": "Global FFmpeg configuration.",
|
||||
"properties": {
|
||||
"path": {
|
||||
"label": "FFmpeg path"
|
||||
},
|
||||
"global_args": {
|
||||
"label": "Global FFmpeg arguments."
|
||||
},
|
||||
"hwaccel_args": {
|
||||
"label": "FFmpeg hardware acceleration arguments."
|
||||
},
|
||||
"input_args": {
|
||||
"label": "FFmpeg input arguments."
|
||||
},
|
||||
"output_args": {
|
||||
"label": "FFmpeg output arguments per role.",
|
||||
"properties": {
|
||||
"detect": {
|
||||
"label": "Detect role FFmpeg output arguments."
|
||||
},
|
||||
"record": {
|
||||
"label": "Record role FFmpeg output arguments."
|
||||
}
|
||||
}
|
||||
},
|
||||
"retry_interval": {
|
||||
"label": "Time in seconds to wait before FFmpeg retries connecting to the camera."
|
||||
},
|
||||
"apple_compatibility": {
|
||||
"label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players."
|
||||
}
|
||||
}
|
||||
}
|
||||
20
web/public/locales/en/config/genai.json
Normal file
20
web/public/locales/en/config/genai.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"label": "Generative AI configuration.",
|
||||
"properties": {
|
||||
"api_key": {
|
||||
"label": "Provider API key."
|
||||
},
|
||||
"base_url": {
|
||||
"label": "Provider base url."
|
||||
},
|
||||
"model": {
|
||||
"label": "GenAI model."
|
||||
},
|
||||
"provider": {
|
||||
"label": "GenAI provider."
|
||||
},
|
||||
"provider_options": {
|
||||
"label": "GenAI Provider extra options."
|
||||
}
|
||||
}
|
||||
}
|
||||
3
web/public/locales/en/config/go2rtc.json
Normal file
3
web/public/locales/en/config/go2rtc.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"label": "Global restream configuration."
|
||||
}
|
||||
14
web/public/locales/en/config/live.json
Normal file
14
web/public/locales/en/config/live.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"label": "Live playback settings.",
|
||||
"properties": {
|
||||
"streams": {
|
||||
"label": "Friendly names and restream names to use for live view."
|
||||
},
|
||||
"height": {
|
||||
"label": "Live camera view height"
|
||||
},
|
||||
"quality": {
|
||||
"label": "Live camera view quality"
|
||||
}
|
||||
}
|
||||
}
|
||||
11
web/public/locales/en/config/logger.json
Normal file
11
web/public/locales/en/config/logger.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"label": "Logging configuration.",
|
||||
"properties": {
|
||||
"default": {
|
||||
"label": "Default logging level."
|
||||
},
|
||||
"logs": {
|
||||
"label": "Log level for specified processes."
|
||||
}
|
||||
}
|
||||
}
|
||||
45
web/public/locales/en/config/lpr.json
Normal file
45
web/public/locales/en/config/lpr.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"label": "License Plate recognition config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable license plate recognition."
|
||||
},
|
||||
"model_size": {
|
||||
"label": "The size of the embeddings model used."
|
||||
},
|
||||
"detection_threshold": {
|
||||
"label": "License plate object confidence score required to begin running recognition."
|
||||
},
|
||||
"min_area": {
|
||||
"label": "Minimum area of license plate to begin running recognition."
|
||||
},
|
||||
"recognition_threshold": {
|
||||
"label": "Recognition confidence score required to add the plate to the object as a sub label."
|
||||
},
|
||||
"min_plate_length": {
|
||||
"label": "Minimum number of characters a license plate must have to be added to the object as a sub label."
|
||||
},
|
||||
"format": {
|
||||
"label": "Regular expression for the expected format of license plate."
|
||||
},
|
||||
"match_distance": {
|
||||
"label": "Allow this number of missing/incorrect characters to still cause a detected plate to match a known plate."
|
||||
},
|
||||
"known_plates": {
|
||||
"label": "Known plates to track (strings or regular expressions)."
|
||||
},
|
||||
"enhancement": {
|
||||
"label": "Amount of contrast adjustment and denoising to apply to license plate images before recognition."
|
||||
},
|
||||
"debug_save_plates": {
|
||||
"label": "Save plates captured for LPR for debugging purposes."
|
||||
},
|
||||
"device": {
|
||||
"label": "The device key to use for LPR.",
|
||||
"description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information"
|
||||
},
|
||||
"replace_rules": {
|
||||
"label": "List of regex replacement rules for normalizing detected plates. Each rule has 'pattern' and 'replacement'."
|
||||
}
|
||||
}
|
||||
}
|
||||
35
web/public/locales/en/config/model.json
Normal file
35
web/public/locales/en/config/model.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"label": "Detection model configuration.",
|
||||
"properties": {
|
||||
"path": {
|
||||
"label": "Custom Object detection model path."
|
||||
},
|
||||
"labelmap_path": {
|
||||
"label": "Label map for custom object detector."
|
||||
},
|
||||
"width": {
|
||||
"label": "Object detection model input width."
|
||||
},
|
||||
"height": {
|
||||
"label": "Object detection model input height."
|
||||
},
|
||||
"labelmap": {
|
||||
"label": "Labelmap customization."
|
||||
},
|
||||
"attributes_map": {
|
||||
"label": "Map of object labels to their attribute labels."
|
||||
},
|
||||
"input_tensor": {
|
||||
"label": "Model Input Tensor Shape"
|
||||
},
|
||||
"input_pixel_format": {
|
||||
"label": "Model Input Pixel Color Format"
|
||||
},
|
||||
"input_dtype": {
|
||||
"label": "Model Input D Type"
|
||||
},
|
||||
"model_type": {
|
||||
"label": "Object Detection Model Type"
|
||||
}
|
||||
}
|
||||
}
|
||||
3
web/public/locales/en/config/motion.json
Normal file
3
web/public/locales/en/config/motion.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"label": "Global motion detection configuration."
|
||||
}
|
||||
44
web/public/locales/en/config/mqtt.json
Normal file
44
web/public/locales/en/config/mqtt.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"label": "MQTT configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable MQTT Communication."
|
||||
},
|
||||
"host": {
|
||||
"label": "MQTT Host"
|
||||
},
|
||||
"port": {
|
||||
"label": "MQTT Port"
|
||||
},
|
||||
"topic_prefix": {
|
||||
"label": "MQTT Topic Prefix"
|
||||
},
|
||||
"client_id": {
|
||||
"label": "MQTT Client ID"
|
||||
},
|
||||
"stats_interval": {
|
||||
"label": "MQTT Camera Stats Interval"
|
||||
},
|
||||
"user": {
|
||||
"label": "MQTT Username"
|
||||
},
|
||||
"password": {
|
||||
"label": "MQTT Password"
|
||||
},
|
||||
"tls_ca_certs": {
|
||||
"label": "MQTT TLS CA Certificates"
|
||||
},
|
||||
"tls_client_cert": {
|
||||
"label": "MQTT TLS Client Certificate"
|
||||
},
|
||||
"tls_client_key": {
|
||||
"label": "MQTT TLS Client Key"
|
||||
},
|
||||
"tls_insecure": {
|
||||
"label": "MQTT TLS Insecure"
|
||||
},
|
||||
"qos": {
|
||||
"label": "MQTT QoS"
|
||||
}
|
||||
}
|
||||
}
|
||||
13
web/public/locales/en/config/networking.json
Normal file
13
web/public/locales/en/config/networking.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"label": "Networking configuration",
|
||||
"properties": {
|
||||
"ipv6": {
|
||||
"label": "Network configuration",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable IPv6 for port 5000 and/or 8971"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
web/public/locales/en/config/notifications.json
Normal file
17
web/public/locales/en/config/notifications.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"label": "Global notification configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable notifications"
|
||||
},
|
||||
"email": {
|
||||
"label": "Email required for push."
|
||||
},
|
||||
"cooldown": {
|
||||
"label": "Cooldown period for notifications (time in seconds)."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of notifications."
|
||||
}
|
||||
}
|
||||
}
|
||||
77
web/public/locales/en/config/objects.json
Normal file
77
web/public/locales/en/config/objects.json
Normal file
@ -0,0 +1,77 @@
|
||||
{
|
||||
"label": "Global object configuration.",
|
||||
"properties": {
|
||||
"track": {
|
||||
"label": "Objects to track."
|
||||
},
|
||||
"filters": {
|
||||
"label": "Object filters.",
|
||||
"properties": {
|
||||
"min_area": {
|
||||
"label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
||||
},
|
||||
"max_area": {
|
||||
"label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
|
||||
},
|
||||
"min_ratio": {
|
||||
"label": "Minimum ratio of bounding box's width/height for object to be counted."
|
||||
},
|
||||
"max_ratio": {
|
||||
"label": "Maximum ratio of bounding box's width/height for object to be counted."
|
||||
},
|
||||
"threshold": {
|
||||
"label": "Average detection confidence threshold for object to be counted."
|
||||
},
|
||||
"min_score": {
|
||||
"label": "Minimum detection confidence for object to be counted."
|
||||
},
|
||||
"mask": {
|
||||
"label": "Detection area polygon mask for this filter configuration."
|
||||
}
|
||||
}
|
||||
},
|
||||
"mask": {
|
||||
"label": "Object mask."
|
||||
},
|
||||
"genai": {
|
||||
"label": "Config for using genai to analyze objects.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable GenAI for camera."
|
||||
},
|
||||
"use_snapshot": {
|
||||
"label": "Use snapshots for generating descriptions."
|
||||
},
|
||||
"prompt": {
|
||||
"label": "Default caption prompt."
|
||||
},
|
||||
"object_prompts": {
|
||||
"label": "Object specific prompts."
|
||||
},
|
||||
"objects": {
|
||||
"label": "List of objects to run generative AI for."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to run generative AI."
|
||||
},
|
||||
"debug_save_thumbnails": {
|
||||
"label": "Save thumbnails sent to generative AI for debugging purposes."
|
||||
},
|
||||
"send_triggers": {
|
||||
"label": "What triggers to use to send frames to generative AI for a tracked object.",
|
||||
"properties": {
|
||||
"tracked_object_end": {
|
||||
"label": "Send once the object is no longer tracked."
|
||||
},
|
||||
"after_significant_updates": {
|
||||
"label": "Send an early request to generative AI when X frames accumulated."
|
||||
}
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of generative AI."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
web/public/locales/en/config/proxy.json
Normal file
31
web/public/locales/en/config/proxy.json
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"label": "Proxy configuration.",
|
||||
"properties": {
|
||||
"header_map": {
|
||||
"label": "Header mapping definitions for proxy user passing.",
|
||||
"properties": {
|
||||
"user": {
|
||||
"label": "Header name from upstream proxy to identify user."
|
||||
},
|
||||
"role": {
|
||||
"label": "Header name from upstream proxy to identify user role."
|
||||
},
|
||||
"role_map": {
|
||||
"label": "Mapping of Frigate roles to upstream group values. "
|
||||
}
|
||||
}
|
||||
},
|
||||
"logout_url": {
|
||||
"label": "Redirect url for logging out with proxy."
|
||||
},
|
||||
"auth_secret": {
|
||||
"label": "Secret value for proxy authentication."
|
||||
},
|
||||
"default_role": {
|
||||
"label": "Default role for proxy users."
|
||||
},
|
||||
"separator": {
|
||||
"label": "The character used to separate values in a mapped header."
|
||||
}
|
||||
}
|
||||
}
|
||||
93
web/public/locales/en/config/record.json
Normal file
93
web/public/locales/en/config/record.json
Normal file
@ -0,0 +1,93 @@
|
||||
{
|
||||
"label": "Global record configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable record on all cameras."
|
||||
},
|
||||
"sync_recordings": {
|
||||
"label": "Sync recordings with disk on startup and once a day."
|
||||
},
|
||||
"expire_interval": {
|
||||
"label": "Number of minutes to wait between cleanup runs."
|
||||
},
|
||||
"continuous": {
|
||||
"label": "Continuous recording retention settings.",
|
||||
"properties": {
|
||||
"days": {
|
||||
"label": "Default retention period."
|
||||
}
|
||||
}
|
||||
},
|
||||
"motion": {
|
||||
"label": "Motion recording retention settings.",
|
||||
"properties": {
|
||||
"days": {
|
||||
"label": "Default retention period."
|
||||
}
|
||||
}
|
||||
},
|
||||
"detections": {
|
||||
"label": "Detection specific retention settings.",
|
||||
"properties": {
|
||||
"pre_capture": {
|
||||
"label": "Seconds to retain before event starts."
|
||||
},
|
||||
"post_capture": {
|
||||
"label": "Seconds to retain after event ends."
|
||||
},
|
||||
"retain": {
|
||||
"label": "Event retention settings.",
|
||||
"properties": {
|
||||
"days": {
|
||||
"label": "Default retention period."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Retain mode."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"alerts": {
|
||||
"label": "Alert specific retention settings.",
|
||||
"properties": {
|
||||
"pre_capture": {
|
||||
"label": "Seconds to retain before event starts."
|
||||
},
|
||||
"post_capture": {
|
||||
"label": "Seconds to retain after event ends."
|
||||
},
|
||||
"retain": {
|
||||
"label": "Event retention settings.",
|
||||
"properties": {
|
||||
"days": {
|
||||
"label": "Default retention period."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Retain mode."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"export": {
|
||||
"label": "Recording Export Config",
|
||||
"properties": {
|
||||
"timelapse_args": {
|
||||
"label": "Timelapse Args"
|
||||
}
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
"label": "Recording Preview Config",
|
||||
"properties": {
|
||||
"quality": {
|
||||
"label": "Quality of recording preview."
|
||||
}
|
||||
}
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of recording."
|
||||
}
|
||||
}
|
||||
}
|
||||
74
web/public/locales/en/config/review.json
Normal file
74
web/public/locales/en/config/review.json
Normal file
@ -0,0 +1,74 @@
|
||||
{
|
||||
"label": "Review configuration.",
|
||||
"properties": {
|
||||
"alerts": {
|
||||
"label": "Review alerts config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable alerts."
|
||||
},
|
||||
"labels": {
|
||||
"label": "Labels to create alerts for."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to save the event as an alert."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of alerts."
|
||||
},
|
||||
"cutoff_time": {
|
||||
"label": "Time to cutoff alerts after no alert-causing activity has occurred."
|
||||
}
|
||||
}
|
||||
},
|
||||
"detections": {
|
||||
"label": "Review detections config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable detections."
|
||||
},
|
||||
"labels": {
|
||||
"label": "Labels to create detections for."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to save the event as a detection."
|
||||
},
|
||||
"cutoff_time": {
|
||||
"label": "Time to cutoff detection after no detection-causing activity has occurred."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of detections."
|
||||
}
|
||||
}
|
||||
},
|
||||
"genai": {
|
||||
"label": "Review description genai config.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable GenAI descriptions for review items."
|
||||
},
|
||||
"alerts": {
|
||||
"label": "Enable GenAI for alerts."
|
||||
},
|
||||
"detections": {
|
||||
"label": "Enable GenAI for detections."
|
||||
},
|
||||
"additional_concerns": {
|
||||
"label": "Additional concerns that GenAI should make note of on this camera."
|
||||
},
|
||||
"debug_save_thumbnails": {
|
||||
"label": "Save thumbnails sent to generative AI for debugging purposes."
|
||||
},
|
||||
"enabled_in_config": {
|
||||
"label": "Keep track of original state of generative AI."
|
||||
},
|
||||
"preferred_language": {
|
||||
"label": "Preferred language for GenAI Response"
|
||||
},
|
||||
"activity_context_prompt": {
|
||||
"label": "Custom activity context prompt defining normal activity patterns for this property."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
3
web/public/locales/en/config/safe_mode.json
Normal file
3
web/public/locales/en/config/safe_mode.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"label": "If Frigate should be started in safe mode."
|
||||
}
|
||||
21
web/public/locales/en/config/semantic_search.json
Normal file
21
web/public/locales/en/config/semantic_search.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"label": "Semantic search configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable semantic search."
|
||||
},
|
||||
"reindex": {
|
||||
"label": "Reindex all tracked objects on startup."
|
||||
},
|
||||
"model": {
|
||||
"label": "The CLIP model to use for semantic search."
|
||||
},
|
||||
"model_size": {
|
||||
"label": "The size of the embeddings model used."
|
||||
},
|
||||
"device": {
|
||||
"label": "The device key to use for semantic search.",
|
||||
"description": "This is an override, to target a specific device. See https://onnxruntime.ai/docs/execution-providers/ for more information"
|
||||
}
|
||||
}
|
||||
}
|
||||
43
web/public/locales/en/config/snapshots.json
Normal file
43
web/public/locales/en/config/snapshots.json
Normal file
@ -0,0 +1,43 @@
|
||||
{
|
||||
"label": "Global snapshots configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Snapshots enabled."
|
||||
},
|
||||
"clean_copy": {
|
||||
"label": "Create a clean copy of the snapshot image."
|
||||
},
|
||||
"timestamp": {
|
||||
"label": "Add a timestamp overlay on the snapshot."
|
||||
},
|
||||
"bounding_box": {
|
||||
"label": "Add a bounding box overlay on the snapshot."
|
||||
},
|
||||
"crop": {
|
||||
"label": "Crop the snapshot to the detected object."
|
||||
},
|
||||
"required_zones": {
|
||||
"label": "List of required zones to be entered in order to save a snapshot."
|
||||
},
|
||||
"height": {
|
||||
"label": "Snapshot image height."
|
||||
},
|
||||
"retain": {
|
||||
"label": "Snapshot retention.",
|
||||
"properties": {
|
||||
"default": {
|
||||
"label": "Default retention period."
|
||||
},
|
||||
"mode": {
|
||||
"label": "Retain mode."
|
||||
},
|
||||
"objects": {
|
||||
"label": "Object retention period."
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Quality of the encoded jpeg (0-100)."
|
||||
}
|
||||
}
|
||||
}
|
||||
28
web/public/locales/en/config/telemetry.json
Normal file
28
web/public/locales/en/config/telemetry.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"label": "Telemetry configuration.",
|
||||
"properties": {
|
||||
"network_interfaces": {
|
||||
"label": "Enabled network interfaces for bandwidth calculation."
|
||||
},
|
||||
"stats": {
|
||||
"label": "System Stats Configuration",
|
||||
"properties": {
|
||||
"amd_gpu_stats": {
|
||||
"label": "Enable AMD GPU stats."
|
||||
},
|
||||
"intel_gpu_stats": {
|
||||
"label": "Enable Intel GPU stats."
|
||||
},
|
||||
"network_bandwidth": {
|
||||
"label": "Enable network bandwidth for ffmpeg processes."
|
||||
},
|
||||
"intel_gpu_device": {
|
||||
"label": "Define the device to use when gathering SR-IOV stats."
|
||||
}
|
||||
}
|
||||
},
|
||||
"version_check": {
|
||||
"label": "Enable latest version check."
|
||||
}
|
||||
}
|
||||
}
|
||||
31
web/public/locales/en/config/timestamp_style.json
Normal file
31
web/public/locales/en/config/timestamp_style.json
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"label": "Global timestamp style configuration.",
|
||||
"properties": {
|
||||
"position": {
|
||||
"label": "Timestamp position."
|
||||
},
|
||||
"format": {
|
||||
"label": "Timestamp format."
|
||||
},
|
||||
"color": {
|
||||
"label": "Timestamp color.",
|
||||
"properties": {
|
||||
"red": {
|
||||
"label": "Red"
|
||||
},
|
||||
"green": {
|
||||
"label": "Green"
|
||||
},
|
||||
"blue": {
|
||||
"label": "Blue"
|
||||
}
|
||||
}
|
||||
},
|
||||
"thickness": {
|
||||
"label": "Timestamp thickness."
|
||||
},
|
||||
"effect": {
|
||||
"label": "Timestamp effect."
|
||||
}
|
||||
}
|
||||
}
|
||||
8
web/public/locales/en/config/tls.json
Normal file
8
web/public/locales/en/config/tls.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"label": "TLS configuration.",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"label": "Enable TLS for port 8971"
|
||||
}
|
||||
}
|
||||
}
|
||||
23
web/public/locales/en/config/ui.json
Normal file
23
web/public/locales/en/config/ui.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"label": "UI configuration.",
|
||||
"properties": {
|
||||
"timezone": {
|
||||
"label": "Override UI timezone."
|
||||
},
|
||||
"time_format": {
|
||||
"label": "Override UI time format."
|
||||
},
|
||||
"date_style": {
|
||||
"label": "Override UI dateStyle."
|
||||
},
|
||||
"time_style": {
|
||||
"label": "Override UI timeStyle."
|
||||
},
|
||||
"strftime_fmt": {
|
||||
"label": "Override date and time format using strftime syntax."
|
||||
},
|
||||
"unit_system": {
|
||||
"label": "The unit system to use for measurements."
|
||||
}
|
||||
}
|
||||
}
|
||||
3
web/public/locales/en/config/version.json
Normal file
3
web/public/locales/en/config/version.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"label": "Current config version."
|
||||
}
|
||||
@ -66,7 +66,7 @@
|
||||
"selectImage": "Please select an image file."
|
||||
},
|
||||
"dropActive": "Drop the image here…",
|
||||
"dropInstructions": "Drag and drop an image here, or click to select",
|
||||
"dropInstructions": "Drag and drop or paste an image here, or click to select",
|
||||
"maxSize": "Max size: {{size}}MB"
|
||||
},
|
||||
"nofaces": "No faces available",
|
||||
|
||||
@ -192,6 +192,10 @@
|
||||
"audioTranscription": {
|
||||
"label": "Transcribir",
|
||||
"aria": "Solicitar transcripción de audio"
|
||||
},
|
||||
"addTrigger": {
|
||||
"label": "Añadir disparador",
|
||||
"aria": "Añadir disparador para el objeto seguido"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
|
||||
@ -134,6 +134,9 @@
|
||||
"playInBackground": {
|
||||
"label": "Reproducir en segundo plano",
|
||||
"tips": "Habilita esta opción para continuar la transmisión cuando el reproductor esté oculto."
|
||||
},
|
||||
"debug": {
|
||||
"picker": "Selección de transmisión no disponible en mode de debug. La vista de debug siempre usa la transmisión con el rol de deteccción asignado."
|
||||
}
|
||||
},
|
||||
"cameraSettings": {
|
||||
|
||||
@ -562,7 +562,8 @@
|
||||
"adminDesc": "Acceso completo a todas las funciones.",
|
||||
"viewerDesc": "Limitado a paneles en vivo, revisión, exploración y exportaciones únicamente.",
|
||||
"viewer": "Espectador",
|
||||
"admin": "Administrador"
|
||||
"admin": "Administrador",
|
||||
"customDesc": "Rol personalizado con acceso a cámaras."
|
||||
},
|
||||
"select": "Selecciona un rol"
|
||||
},
|
||||
@ -741,6 +742,99 @@
|
||||
"management": {
|
||||
"title": "Gestión de disparadores",
|
||||
"desc": "Gestionar disparadores para {{camera}}. Usa el tipo de miniatura para activar en miniaturas similares al objeto rastreado seleccionado, y el tipo de descripción para activar en descripciones similares al texto que especifiques."
|
||||
},
|
||||
"addTrigger": "Añadir Disparador",
|
||||
"table": {
|
||||
"name": "Nombre",
|
||||
"type": "Tipo",
|
||||
"content": "Contenido",
|
||||
"threshold": "Umbral",
|
||||
"actions": "Acciones",
|
||||
"noTriggers": "No hay disparadores configurados para esta cámara.",
|
||||
"edit": "Editar",
|
||||
"deleteTrigger": "Eliminar Disparador",
|
||||
"lastTriggered": "Última activación"
|
||||
},
|
||||
"type": {
|
||||
"description": "Descripción",
|
||||
"thumbnail": "Miniatura"
|
||||
},
|
||||
"actions": {
|
||||
"alert": "Marcar como Alerta",
|
||||
"notification": "Enviar Notificación"
|
||||
},
|
||||
"dialog": {
|
||||
"createTrigger": {
|
||||
"title": "Crear Disparador",
|
||||
"desc": "Crear un disparador par la cámara {{camera}}"
|
||||
},
|
||||
"editTrigger": {
|
||||
"title": "Editar Disparador",
|
||||
"desc": "Editar configuractión del disparador para cámara {{camera}}"
|
||||
},
|
||||
"deleteTrigger": {
|
||||
"title": "Eliminar Disparador"
|
||||
}
|
||||
}
|
||||
},
|
||||
"roles": {
|
||||
"management": {
|
||||
"title": "Administración del rol de visor",
|
||||
"desc": "Administra roles de visor personalizados y sus permisos de acceso a cámaras para esta instancia de Frigate."
|
||||
},
|
||||
"addRole": "Añade un rol",
|
||||
"table": {
|
||||
"role": "Rol",
|
||||
"cameras": "Cámaras",
|
||||
"actions": "Acciones",
|
||||
"noRoles": "No se encontraron roles personalizados.",
|
||||
"editCameras": "Edita Cámaras",
|
||||
"deleteRole": "Eliminar Rol"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"createRole": "Rol {{role}} creado exitosamente",
|
||||
"updateCameras": "Cámara actualizada para el rol {{role}}",
|
||||
"deleteRole": "Rol {{role}} eliminado exitosamente",
|
||||
"userRolesUpdated": "{{count}} usuarios asignados a este rol han sido actualizados a 'visor', que tiene acceso a todas las cámaras."
|
||||
},
|
||||
"error": {
|
||||
"createRoleFailed": "Creación de rol fallida: {{errorMessage}}",
|
||||
"updateCamerasFailed": "Actualización de cámaras fallida: {{errorMessage}}",
|
||||
"deleteRoleFailed": "Eliminación de rol fallida: {{errorMessage}}",
|
||||
"userUpdateFailed": "Actualización de roles de usuario fallida: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"createRole": {
|
||||
"title": "Crear Nuevo Rol",
|
||||
"desc": "Añadir nuevo rol y especificar permisos de acceso a cámaras."
|
||||
},
|
||||
"deleteRole": {
|
||||
"title": "Eliminar Rol",
|
||||
"deleting": "Eliminando...",
|
||||
"desc": "Esta acción no se puede deshacer. El rol va a ser eliminado permanentemente y usuarios associados serán asignados a rol de 'Visor', que les da acceso a ver todas las cámaras.",
|
||||
"warn": "Estás seguro de que quieres eliminar <strong>{{role}}</strong>?"
|
||||
},
|
||||
"editCameras": {
|
||||
"title": "Editar cámaras de rol",
|
||||
"desc": "Actualizar acceso de cámara para el rol <strong>{{role}}</strong>."
|
||||
},
|
||||
"form": {
|
||||
"role": {
|
||||
"title": "Nombre de rol",
|
||||
"placeholder": "Entre el nombre del rol",
|
||||
"desc": "Solo se permiten letras, números, puntos y guión bajo.",
|
||||
"roleIsRequired": "El nombre del rol es requerido",
|
||||
"roleOnlyInclude": "El nombre del rol solo incluye letras, números, . o _",
|
||||
"roleExists": "Un rol con este nombre ya existe."
|
||||
},
|
||||
"cameras": {
|
||||
"title": "Cámaras",
|
||||
"desc": "Seleccione las cámaras a las que este rol tiene accceso. Al menos una cámara es requerida.",
|
||||
"required": "Al menos una cámara debe ser seleccionada."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,7 +125,10 @@
|
||||
"tips": "Activer cette option pour continuer le streaming lorsque le lecteur est masqué.",
|
||||
"label": "Jouer en arrière plan"
|
||||
},
|
||||
"title": "Flux"
|
||||
"title": "Flux",
|
||||
"debug": {
|
||||
"picker": "La sélection de flux est indisponible en mode débogage. La vue de débogage utilise systématiquement le flux attribué au rôle de détection."
|
||||
}
|
||||
},
|
||||
"cameraSettings": {
|
||||
"objectDetection": "Détection d'objets",
|
||||
|
||||
3
web/public/locales/hr/audio.json
Normal file
3
web/public/locales/hr/audio.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"speech": "Govor"
|
||||
}
|
||||
5
web/public/locales/hr/common.json
Normal file
5
web/public/locales/hr/common.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"time": {
|
||||
"untilForTime": "Do {{time}}"
|
||||
}
|
||||
}
|
||||
5
web/public/locales/hr/components/auth.json
Normal file
5
web/public/locales/hr/components/auth.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"form": {
|
||||
"user": "Korisničko ime"
|
||||
}
|
||||
}
|
||||
40
web/public/locales/hr/components/camera.json
Normal file
40
web/public/locales/hr/components/camera.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"group": {
|
||||
"label": "Grupe kamera",
|
||||
"add": "Dodaj grupu kamera",
|
||||
"edit": "Uredi grupu kamera",
|
||||
"delete": {
|
||||
"label": "Izbriši grupu kamera",
|
||||
"confirm": {
|
||||
"title": "Potvrda brisanja",
|
||||
"desc": "Da li ste sigurni da želite obrisati grupu kamera <em>{{name}}</em>?"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"label": "Ime",
|
||||
"placeholder": "Unesite ime…",
|
||||
"errorMessage": {
|
||||
"mustLeastCharacters": "Ime grupe kamera mora sadržavati barem 2 karaktera.",
|
||||
"exists": "Grupa kamera sa ovim imenom već postoji.",
|
||||
"nameMustNotPeriod": "Naziv grupe kamera ne smije sadržavati točku.",
|
||||
"invalid": "Nevažeći naziv grupe kamera."
|
||||
}
|
||||
},
|
||||
"cameras": {
|
||||
"label": "Kamere",
|
||||
"desc": "Izaberite kamere za ovu grupu."
|
||||
},
|
||||
"icon": "Ikona",
|
||||
"success": "Grupa kamera ({{name}}) je pohranjena.",
|
||||
"camera": {
|
||||
"birdseye": "Ptičja perspektiva",
|
||||
"setting": {
|
||||
"label": "Postavke streamanja kamere",
|
||||
"title": "{{cameraName}} Streaming Postavke",
|
||||
"desc": "Promijenite opcije streamanja uživo za nadzornu ploču ove grupe kamera. <em>Ove postavke su specifične za uređaj/preglednik.</em>",
|
||||
"audioIsAvailable": "Za ovaj prijenos dostupan je zvuk",
|
||||
"audioIsUnavailable": "Za ovaj prijenos zvuk nije dostupan"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
5
web/public/locales/hr/components/dialog.json
Normal file
5
web/public/locales/hr/components/dialog.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"restart": {
|
||||
"title": "Jeste li sigurni da želite ponovno pokrenuti Frigate?"
|
||||
}
|
||||
}
|
||||
6
web/public/locales/hr/components/filter.json
Normal file
6
web/public/locales/hr/components/filter.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"filter": "Filtar",
|
||||
"classes": {
|
||||
"label": "Klase"
|
||||
}
|
||||
}
|
||||
5
web/public/locales/hr/components/icons.json
Normal file
5
web/public/locales/hr/components/icons.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"iconPicker": {
|
||||
"selectIcon": "Odaberite ikonu"
|
||||
}
|
||||
}
|
||||
7
web/public/locales/hr/components/input.json
Normal file
7
web/public/locales/hr/components/input.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"button": {
|
||||
"downloadVideo": {
|
||||
"label": "Preuzmi video"
|
||||
}
|
||||
}
|
||||
}
|
||||
3
web/public/locales/hr/components/player.json
Normal file
3
web/public/locales/hr/components/player.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"noRecordingsFoundForThisTime": "Nisu pronađene snimke za ovo vrijeme"
|
||||
}
|
||||
3
web/public/locales/hr/objects.json
Normal file
3
web/public/locales/hr/objects.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"person": "Osoba"
|
||||
}
|
||||
3
web/public/locales/hr/views/configEditor.json
Normal file
3
web/public/locales/hr/views/configEditor.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"documentTitle": "Uređivač konfiguracije - Frigate"
|
||||
}
|
||||
3
web/public/locales/hr/views/events.json
Normal file
3
web/public/locales/hr/views/events.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"alerts": "Upozorenja"
|
||||
}
|
||||
3
web/public/locales/hr/views/explore.json
Normal file
3
web/public/locales/hr/views/explore.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"documentTitle": "Istražite - Frigate"
|
||||
}
|
||||
4
web/public/locales/hr/views/exports.json
Normal file
4
web/public/locales/hr/views/exports.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"documentTitle": "Izvoz - Frigate",
|
||||
"search": "Pretraga"
|
||||
}
|
||||
5
web/public/locales/hr/views/faceLibrary.json
Normal file
5
web/public/locales/hr/views/faceLibrary.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"description": {
|
||||
"addFace": "Vodič za dodavanje nove kolekcije u Biblioteku lica."
|
||||
}
|
||||
}
|
||||
3
web/public/locales/hr/views/live.json
Normal file
3
web/public/locales/hr/views/live.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"documentTitle": "Uživo - Frigate"
|
||||
}
|
||||
4
web/public/locales/hr/views/recording.json
Normal file
4
web/public/locales/hr/views/recording.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"filter": "Filtar",
|
||||
"export": "Izvoz"
|
||||
}
|
||||
3
web/public/locales/hr/views/search.json
Normal file
3
web/public/locales/hr/views/search.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"search": "Pretraga"
|
||||
}
|
||||
5
web/public/locales/hr/views/settings.json
Normal file
5
web/public/locales/hr/views/settings.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"default": "Postavke - Frigate"
|
||||
}
|
||||
}
|
||||
5
web/public/locales/hr/views/system.json
Normal file
5
web/public/locales/hr/views/system.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"documentTitle": {
|
||||
"cameras": "Statistika kamera - Frigate"
|
||||
}
|
||||
}
|
||||
@ -22,7 +22,7 @@
|
||||
"users": "Felhasználók",
|
||||
"notifications": "Értesítések",
|
||||
"frigateplus": "Frigate+",
|
||||
"enrichments": "Gazdagítások",
|
||||
"enrichments": "Extra funkciók",
|
||||
"triggers": "Triggerek"
|
||||
},
|
||||
"dialog": {
|
||||
|
||||
@ -1,5 +1,429 @@
|
||||
{
|
||||
"speech": "スピーチ",
|
||||
"car": "自動車",
|
||||
"bicycle": "自転車"
|
||||
"speech": "話し声",
|
||||
"car": "車",
|
||||
"bicycle": "自転車",
|
||||
"yell": "叫び声",
|
||||
"motorcycle": "オートバイ",
|
||||
"babbling": "赤ちゃんの喃語",
|
||||
"bellow": "怒鳴り声",
|
||||
"whoop": "歓声",
|
||||
"whispering": "ささやき声",
|
||||
"laughter": "笑い声",
|
||||
"snicker": "くすくす笑い",
|
||||
"crying": "泣き声",
|
||||
"sigh": "ため息",
|
||||
"singing": "歌声",
|
||||
"choir": "合唱",
|
||||
"yodeling": "ヨーデル",
|
||||
"chant": "詠唱",
|
||||
"mantra": "マントラ",
|
||||
"child_singing": "子供の歌声",
|
||||
"synthetic_singing": "合成音声の歌",
|
||||
"rapping": "ラップ",
|
||||
"humming": "ハミング",
|
||||
"groan": "うめき声",
|
||||
"grunt": "うなり声",
|
||||
"whistling": "口笛",
|
||||
"breathing": "呼吸音",
|
||||
"wheeze": "ぜいぜい声",
|
||||
"snoring": "いびき",
|
||||
"gasp": "はっと息をのむ音",
|
||||
"pant": "荒い息",
|
||||
"snort": "鼻を鳴らす音",
|
||||
"cough": "咳",
|
||||
"throat_clearing": "咳払い",
|
||||
"sneeze": "くしゃみ",
|
||||
"sniff": "鼻をすする音",
|
||||
"run": "走る音",
|
||||
"shuffle": "足を引きずる音",
|
||||
"footsteps": "足音",
|
||||
"chewing": "咀嚼音",
|
||||
"biting": "かみつく音",
|
||||
"gargling": "うがい",
|
||||
"stomach_rumble": "お腹の音",
|
||||
"burping": "げっぷ",
|
||||
"hiccup": "しゃっくり",
|
||||
"fart": "おなら",
|
||||
"hands": "手の音",
|
||||
"finger_snapping": "指を鳴らす音",
|
||||
"clapping": "拍手",
|
||||
"heartbeat": "心臓の鼓動",
|
||||
"heart_murmur": "心雑音",
|
||||
"cheering": "歓声",
|
||||
"applause": "拍手喝采",
|
||||
"chatter": "おしゃべり",
|
||||
"crowd": "群衆",
|
||||
"children_playing": "子供の遊ぶ声",
|
||||
"animal": "動物",
|
||||
"pets": "ペット",
|
||||
"dog": "犬",
|
||||
"bark": "樹皮",
|
||||
"yip": "キャンキャン鳴く声",
|
||||
"howl": "遠吠え",
|
||||
"bow_wow": "ワンワン",
|
||||
"growling": "うなり声",
|
||||
"whimper_dog": "犬の鳴き声(クンクン)",
|
||||
"cat": "猫",
|
||||
"purr": "ゴロゴロ音",
|
||||
"meow": "ニャー",
|
||||
"hiss": "シャー",
|
||||
"caterwaul": "猫のけんか声",
|
||||
"livestock": "家畜",
|
||||
"horse": "馬",
|
||||
"clip_clop": "カツカツ音",
|
||||
"neigh": "いななき",
|
||||
"cattle": "牛",
|
||||
"moo": "モー",
|
||||
"cowbell": "カウベル",
|
||||
"pig": "豚",
|
||||
"oink": "ブーブー",
|
||||
"goat": "ヤギ",
|
||||
"bleat": "メェー",
|
||||
"sheep": "羊",
|
||||
"fowl": "家禽",
|
||||
"chicken": "鶏",
|
||||
"cluck": "コッコッ",
|
||||
"cock_a_doodle_doo": "コケコッコー",
|
||||
"turkey": "七面鳥",
|
||||
"gobble": "グルル",
|
||||
"duck": "アヒル",
|
||||
"quack": "ガーガー",
|
||||
"goose": "ガチョウ",
|
||||
"honk": "ホンク",
|
||||
"wild_animals": "野生動物",
|
||||
"roaring_cats": "猛獣の鳴き声",
|
||||
"roar": "咆哮",
|
||||
"bird": "鳥",
|
||||
"chirp": "さえずり",
|
||||
"squawk": "ギャーギャー",
|
||||
"pigeon": "ハト",
|
||||
"coo": "クークー",
|
||||
"crow": "カラス",
|
||||
"caw": "カーカー",
|
||||
"owl": "フクロウ",
|
||||
"hoot": "ホーホー",
|
||||
"flapping_wings": "羽ばたき",
|
||||
"dogs": "犬たち",
|
||||
"rats": "ネズミ",
|
||||
"mouse": "マウス",
|
||||
"patter": "パタパタ音",
|
||||
"insect": "昆虫",
|
||||
"cricket": "コオロギ",
|
||||
"mosquito": "蚊",
|
||||
"fly": "ハエ",
|
||||
"buzz": "ブーン",
|
||||
"frog": "カエル",
|
||||
"croak": "ゲロゲロ",
|
||||
"snake": "ヘビ",
|
||||
"rattle": "ガラガラ音",
|
||||
"whale_vocalization": "クジラの鳴き声",
|
||||
"music": "音楽",
|
||||
"musical_instrument": "楽器",
|
||||
"plucked_string_instrument": "撥弦楽器",
|
||||
"guitar": "ギター",
|
||||
"electric_guitar": "エレキギター",
|
||||
"bass_guitar": "ベースギター",
|
||||
"acoustic_guitar": "アコースティックギター",
|
||||
"steel_guitar": "スティールギター",
|
||||
"tapping": "タッピング",
|
||||
"strum": "ストローク",
|
||||
"banjo": "バンジョー",
|
||||
"sitar": "シタール",
|
||||
"mandolin": "マンドリン",
|
||||
"zither": "ツィター",
|
||||
"ukulele": "ウクレレ",
|
||||
"keyboard": "キーボード",
|
||||
"piano": "ピアノ",
|
||||
"electric_piano": "エレクトリックピアノ",
|
||||
"organ": "オルガン",
|
||||
"electronic_organ": "電子オルガン",
|
||||
"hammond_organ": "ハモンドオルガン",
|
||||
"synthesizer": "シンセサイザー",
|
||||
"sampler": "サンプラー",
|
||||
"harpsichord": "チェンバロ",
|
||||
"percussion": "打楽器",
|
||||
"drum_kit": "ドラムセット",
|
||||
"drum_machine": "ドラムマシン",
|
||||
"drum": "ドラム",
|
||||
"snare_drum": "スネアドラム",
|
||||
"rimshot": "リムショット",
|
||||
"drum_roll": "ドラムロール",
|
||||
"bass_drum": "バスドラム",
|
||||
"timpani": "ティンパニ",
|
||||
"tabla": "タブラ",
|
||||
"cymbal": "シンバル",
|
||||
"hi_hat": "ハイハット",
|
||||
"wood_block": "ウッドブロック",
|
||||
"tambourine": "タンバリン",
|
||||
"maraca": "マラカス",
|
||||
"gong": "ゴング",
|
||||
"tubular_bells": "チューブラーベル",
|
||||
"mallet_percussion": "マレット打楽器",
|
||||
"marimba": "マリンバ",
|
||||
"glockenspiel": "グロッケンシュピール",
|
||||
"vibraphone": "ビブラフォン",
|
||||
"steelpan": "スティールパン",
|
||||
"orchestra": "オーケストラ",
|
||||
"brass_instrument": "金管楽器",
|
||||
"french_horn": "フレンチホルン",
|
||||
"trumpet": "トランペット",
|
||||
"trombone": "トロンボーン",
|
||||
"bowed_string_instrument": "擦弦楽器",
|
||||
"string_section": "弦楽セクション",
|
||||
"violin": "バイオリン",
|
||||
"pizzicato": "ピチカート",
|
||||
"cello": "チェロ",
|
||||
"double_bass": "コントラバス",
|
||||
"wind_instrument": "木管楽器",
|
||||
"flute": "フルート",
|
||||
"saxophone": "サックス",
|
||||
"clarinet": "クラリネット",
|
||||
"harp": "ハープ",
|
||||
"bell": "鐘",
|
||||
"church_bell": "教会の鐘",
|
||||
"jingle_bell": "ジングルベル",
|
||||
"bicycle_bell": "自転車ベル",
|
||||
"tuning_fork": "音叉",
|
||||
"chime": "チャイム",
|
||||
"wind_chime": "風鈴",
|
||||
"harmonica": "ハーモニカ",
|
||||
"accordion": "アコーディオン",
|
||||
"bagpipes": "バグパイプ",
|
||||
"didgeridoo": "ディジュリドゥ",
|
||||
"theremin": "テルミン",
|
||||
"singing_bowl": "シンギングボウル",
|
||||
"scratching": "スクラッチ音",
|
||||
"pop_music": "ポップ音楽",
|
||||
"hip_hop_music": "ヒップホップ音楽",
|
||||
"beatboxing": "ボイスパーカッション",
|
||||
"rock_music": "ロック音楽",
|
||||
"heavy_metal": "ヘビーメタル",
|
||||
"punk_rock": "パンクロック",
|
||||
"grunge": "グランジ",
|
||||
"progressive_rock": "プログレッシブロック",
|
||||
"rock_and_roll": "ロックンロール",
|
||||
"psychedelic_rock": "サイケデリックロック",
|
||||
"rhythm_and_blues": "リズム・アンド・ブルース",
|
||||
"soul_music": "ソウル音楽",
|
||||
"reggae": "レゲエ",
|
||||
"country": "カントリー",
|
||||
"swing_music": "スウィング音楽",
|
||||
"bluegrass": "ブルーグラス",
|
||||
"funk": "ファンク",
|
||||
"folk_music": "フォーク音楽",
|
||||
"middle_eastern_music": "中東音楽",
|
||||
"jazz": "ジャズ",
|
||||
"disco": "ディスコ",
|
||||
"classical_music": "クラシック音楽",
|
||||
"opera": "オペラ",
|
||||
"electronic_music": "電子音楽",
|
||||
"house_music": "ハウス",
|
||||
"techno": "テクノ",
|
||||
"dubstep": "ダブステップ",
|
||||
"drum_and_bass": "ドラムンベース",
|
||||
"electronica": "エレクトロニカ",
|
||||
"electronic_dance_music": "EDM",
|
||||
"ambient_music": "アンビエント",
|
||||
"trance_music": "トランス",
|
||||
"music_of_latin_america": "ラテン音楽",
|
||||
"salsa_music": "サルサ",
|
||||
"flamenco": "フラメンコ",
|
||||
"blues": "ブルース",
|
||||
"music_for_children": "子供向け音楽",
|
||||
"new-age_music": "ニューエイジ音楽",
|
||||
"vocal_music": "声楽",
|
||||
"a_capella": "アカペラ",
|
||||
"music_of_africa": "アフリカ音楽",
|
||||
"afrobeat": "アフロビート",
|
||||
"christian_music": "キリスト教音楽",
|
||||
"gospel_music": "ゴスペル",
|
||||
"music_of_asia": "アジア音楽",
|
||||
"carnatic_music": "カルナータカ音楽",
|
||||
"music_of_bollywood": "ボリウッド音楽",
|
||||
"ska": "スカ",
|
||||
"traditional_music": "伝統音楽",
|
||||
"independent_music": "インディーズ音楽",
|
||||
"song": "歌",
|
||||
"background_music": "BGM",
|
||||
"theme_music": "テーマ音楽",
|
||||
"jingle": "ジングル",
|
||||
"soundtrack_music": "サウンドトラック",
|
||||
"lullaby": "子守唄",
|
||||
"video_game_music": "ゲーム音楽",
|
||||
"christmas_music": "クリスマス音楽",
|
||||
"dance_music": "ダンス音楽",
|
||||
"wedding_music": "結婚式音楽",
|
||||
"happy_music": "明るい音楽",
|
||||
"sad_music": "悲しい音楽",
|
||||
"tender_music": "優しい音楽",
|
||||
"exciting_music": "ワクワクする音楽",
|
||||
"angry_music": "怒りの音楽",
|
||||
"scary_music": "怖い音楽",
|
||||
"wind": "風",
|
||||
"rustling_leaves": "木の葉のざわめき",
|
||||
"wind_noise": "風の音",
|
||||
"thunderstorm": "雷雨",
|
||||
"thunder": "雷鳴",
|
||||
"water": "水",
|
||||
"rain": "雨",
|
||||
"raindrop": "雨粒",
|
||||
"rain_on_surface": "雨が当たる音",
|
||||
"stream": "小川",
|
||||
"waterfall": "滝",
|
||||
"ocean": "海",
|
||||
"waves": "波",
|
||||
"steam": "蒸気",
|
||||
"gurgling": "ゴボゴボ音",
|
||||
"fire": "火",
|
||||
"crackle": "パチパチ音",
|
||||
"vehicle": "車両",
|
||||
"boat": "ボート",
|
||||
"sailboat": "帆船",
|
||||
"rowboat": "手漕ぎボート",
|
||||
"motorboat": "モーターボート",
|
||||
"ship": "船",
|
||||
"motor_vehicle": "自動車",
|
||||
"toot": "クラクション",
|
||||
"car_alarm": "車のアラーム",
|
||||
"power_windows": "パワーウィンドウ",
|
||||
"skidding": "スリップ音",
|
||||
"tire_squeal": "タイヤの悲鳴",
|
||||
"car_passing_by": "車が通る音",
|
||||
"race_car": "レーシングカー",
|
||||
"truck": "トラック",
|
||||
"air_brake": "エアブレーキ",
|
||||
"air_horn": "エアホーン",
|
||||
"reversing_beeps": "バック警告音",
|
||||
"ice_cream_truck": "アイスクリームトラック",
|
||||
"bus": "バス",
|
||||
"emergency_vehicle": "緊急車両",
|
||||
"police_car": "パトカー",
|
||||
"ambulance": "救急車",
|
||||
"fire_engine": "消防車",
|
||||
"traffic_noise": "交通騒音",
|
||||
"rail_transport": "鉄道輸送",
|
||||
"train": "電車",
|
||||
"train_whistle": "汽笛",
|
||||
"train_horn": "列車のホーン",
|
||||
"railroad_car": "鉄道車両",
|
||||
"train_wheels_squealing": "車輪のきしむ音",
|
||||
"subway": "地下鉄",
|
||||
"aircraft": "航空機",
|
||||
"aircraft_engine": "航空機エンジン",
|
||||
"jet_engine": "ジェットエンジン",
|
||||
"propeller": "プロペラ",
|
||||
"helicopter": "ヘリコプター",
|
||||
"fixed-wing_aircraft": "固定翼機",
|
||||
"skateboard": "スケートボード",
|
||||
"engine": "エンジン",
|
||||
"light_engine": "小型エンジン",
|
||||
"dental_drill's_drill": "歯科用ドリル",
|
||||
"lawn_mower": "芝刈り機",
|
||||
"chainsaw": "チェーンソー",
|
||||
"medium_engine": "中型エンジン",
|
||||
"heavy_engine": "大型エンジン",
|
||||
"engine_knocking": "ノッキング音",
|
||||
"engine_starting": "エンジン始動",
|
||||
"idling": "アイドリング",
|
||||
"accelerating": "加速音",
|
||||
"door": "ドア",
|
||||
"doorbell": "ドアベル",
|
||||
"ding-dong": "ピンポン",
|
||||
"sliding_door": "引き戸",
|
||||
"slam": "ドアをバタンと閉める音",
|
||||
"knock": "ノック",
|
||||
"tap": "トントン音",
|
||||
"squeak": "きしみ音",
|
||||
"cupboard_open_or_close": "戸棚の開閉",
|
||||
"drawer_open_or_close": "引き出しの開閉",
|
||||
"dishes": "食器",
|
||||
"cutlery": "カトラリー",
|
||||
"chopping": "包丁で切る音",
|
||||
"frying": "揚げ物の音",
|
||||
"microwave_oven": "電子レンジ",
|
||||
"blender": "ミキサー",
|
||||
"water_tap": "水道の蛇口",
|
||||
"sink": "流し台",
|
||||
"bathtub": "浴槽",
|
||||
"hair_dryer": "ヘアドライヤー",
|
||||
"toilet_flush": "トイレの水流",
|
||||
"toothbrush": "歯ブラシ",
|
||||
"electric_toothbrush": "電動歯ブラシ",
|
||||
"vacuum_cleaner": "掃除機",
|
||||
"zipper": "ファスナー",
|
||||
"keys_jangling": "鍵のジャラジャラ音",
|
||||
"coin": "コイン",
|
||||
"scissors": "はさみ",
|
||||
"electric_shaver": "電気シェーバー",
|
||||
"shuffling_cards": "カードを切る音",
|
||||
"typing": "タイピング音",
|
||||
"typewriter": "タイプライター",
|
||||
"computer_keyboard": "コンピュータキーボード",
|
||||
"writing": "書く音",
|
||||
"alarm": "アラーム",
|
||||
"telephone": "電話",
|
||||
"telephone_bell_ringing": "電話のベル音",
|
||||
"ringtone": "着信音",
|
||||
"telephone_dialing": "ダイヤル音",
|
||||
"dial_tone": "発信音",
|
||||
"busy_signal": "話中音",
|
||||
"alarm_clock": "目覚まし時計",
|
||||
"siren": "サイレン",
|
||||
"civil_defense_siren": "防災サイレン",
|
||||
"buzzer": "ブザー",
|
||||
"smoke_detector": "火災警報器",
|
||||
"fire_alarm": "火災報知器",
|
||||
"foghorn": "霧笛",
|
||||
"whistle": "ホイッスル",
|
||||
"steam_whistle": "蒸気笛",
|
||||
"mechanisms": "機械仕掛け",
|
||||
"ratchet": "ラチェット",
|
||||
"clock": "時計",
|
||||
"tick": "カチカチ音",
|
||||
"tick-tock": "チクタク音",
|
||||
"gears": "歯車",
|
||||
"pulleys": "滑車",
|
||||
"sewing_machine": "ミシン",
|
||||
"mechanical_fan": "扇風機",
|
||||
"air_conditioning": "エアコン",
|
||||
"cash_register": "レジ",
|
||||
"printer": "プリンター",
|
||||
"camera": "カメラ",
|
||||
"single-lens_reflex_camera": "一眼レフカメラ",
|
||||
"tools": "工具",
|
||||
"hammer": "ハンマー",
|
||||
"jackhammer": "削岩機",
|
||||
"sawing": "のこぎり",
|
||||
"filing": "やすりがけ",
|
||||
"sanding": "研磨",
|
||||
"power_tool": "電動工具",
|
||||
"drill": "ドリル",
|
||||
"explosion": "爆発",
|
||||
"gunshot": "銃声",
|
||||
"machine_gun": "機関銃",
|
||||
"fusillade": "一斉射撃",
|
||||
"artillery_fire": "砲撃",
|
||||
"cap_gun": "おもちゃのピストル",
|
||||
"fireworks": "花火",
|
||||
"firecracker": "爆竹",
|
||||
"burst": "破裂音",
|
||||
"eruption": "噴火",
|
||||
"boom": "ドカン",
|
||||
"wood": "木材",
|
||||
"chop": "伐採音",
|
||||
"splinter": "裂ける音",
|
||||
"crack": "割れる音",
|
||||
"glass": "ガラス",
|
||||
"chink": "チリン音",
|
||||
"shatter": "粉々に割れる音",
|
||||
"silence": "静寂",
|
||||
"sound_effect": "効果音",
|
||||
"environmental_noise": "環境音",
|
||||
"static": "ノイズ",
|
||||
"white_noise": "ホワイトノイズ",
|
||||
"pink_noise": "ピンクノイズ",
|
||||
"television": "テレビ",
|
||||
"radio": "ラジオ",
|
||||
"field_recording": "フィールド録音",
|
||||
"scream": "悲鳴"
|
||||
}
|
||||
|
||||
@ -1,8 +1,260 @@
|
||||
{
|
||||
"time": {
|
||||
"untilForRestart": "Frigateが再起動するまで.",
|
||||
"untilForRestart": "Frigate が再起動するまで。",
|
||||
"untilRestart": "再起動まで",
|
||||
"untilForTime": "{{time}} まで"
|
||||
"untilForTime": "{{time}} まで",
|
||||
"ago": "{{timeAgo}} 前",
|
||||
"justNow": "今",
|
||||
"today": "本日",
|
||||
"yesterday": "昨日",
|
||||
"last7": "7日間",
|
||||
"last14": "14日間",
|
||||
"last30": "30日間",
|
||||
"thisWeek": "今週",
|
||||
"lastWeek": "先週",
|
||||
"thisMonth": "今月",
|
||||
"lastMonth": "先月",
|
||||
"5minutes": "5 分",
|
||||
"10minutes": "10 分",
|
||||
"30minutes": "30 分",
|
||||
"1hour": "1 時間",
|
||||
"12hours": "12 時間",
|
||||
"24hours": "24 時間",
|
||||
"pm": "午後",
|
||||
"am": "午前",
|
||||
"yr": "{{time}}年",
|
||||
"year_other": "{{time}} 年",
|
||||
"mo": "{{time}}ヶ月",
|
||||
"month_other": "{{time}} ヶ月",
|
||||
"d": "{{time}}日",
|
||||
"day_other": "{{time}} 日",
|
||||
"h": "{{time}}時間",
|
||||
"hour_other": "{{time}} 時間",
|
||||
"m": "{{time}}分",
|
||||
"minute_other": "{{time}} 分",
|
||||
"s": "{{time}}秒",
|
||||
"second_other": "{{time}} 秒",
|
||||
"formattedTimestamp": {
|
||||
"12hour": "MMM d, h:mm:ss aaa",
|
||||
"24hour": "MMM d, HH:mm:ss"
|
||||
},
|
||||
"formattedTimestamp2": {
|
||||
"12hour": "MM/dd h:mm:ssa",
|
||||
"24hour": "d MMM HH:mm:ss"
|
||||
},
|
||||
"formattedTimestampHourMinute": {
|
||||
"12hour": "h:mm aaa",
|
||||
"24hour": "HH:mm"
|
||||
},
|
||||
"formattedTimestampHourMinuteSecond": {
|
||||
"12hour": "h:mm:ss aaa",
|
||||
"24hour": "HH:mm:ss"
|
||||
},
|
||||
"formattedTimestampMonthDayHourMinute": {
|
||||
"12hour": "MMM d, h:mm aaa",
|
||||
"24hour": "MMM d, HH:mm"
|
||||
},
|
||||
"formattedTimestampMonthDayYear": {
|
||||
"12hour": "MMM d, yyyy",
|
||||
"24hour": "MMM d, yyyy"
|
||||
},
|
||||
"formattedTimestampMonthDayYearHourMinute": {
|
||||
"12hour": "MMM d yyyy, h:mm aaa",
|
||||
"24hour": "MMM d yyyy, HH:mm"
|
||||
},
|
||||
"formattedTimestampMonthDay": "MMM d",
|
||||
"formattedTimestampFilename": {
|
||||
"12hour": "MM-dd-yy-h-mm-ss-a",
|
||||
"24hour": "MM-dd-yy-HH-mm-ss"
|
||||
}
|
||||
},
|
||||
"readTheDocumentation": "ドキュメントを読む"
|
||||
"readTheDocumentation": "ドキュメントを見る",
|
||||
"unit": {
|
||||
"speed": {
|
||||
"mph": "mph",
|
||||
"kph": "Km/h"
|
||||
},
|
||||
"length": {
|
||||
"feet": "フィート",
|
||||
"meters": "メートル"
|
||||
}
|
||||
},
|
||||
"label": {
|
||||
"back": "戻る"
|
||||
},
|
||||
"button": {
|
||||
"apply": "適用",
|
||||
"reset": "リセット",
|
||||
"done": "完了",
|
||||
"enabled": "有効",
|
||||
"enable": "有効にする",
|
||||
"disabled": "無効",
|
||||
"disable": "無効にする",
|
||||
"save": "保存",
|
||||
"saving": "保存中…",
|
||||
"cancel": "キャンセル",
|
||||
"close": "閉じる",
|
||||
"copy": "コピー",
|
||||
"back": "戻る",
|
||||
"history": "履歴",
|
||||
"fullscreen": "全画面",
|
||||
"exitFullscreen": "全画面解除",
|
||||
"pictureInPicture": "ピクチャーインピクチャー",
|
||||
"twoWayTalk": "双方向通話",
|
||||
"cameraAudio": "カメラ音声",
|
||||
"on": "オン",
|
||||
"off": "オフ",
|
||||
"edit": "編集",
|
||||
"copyCoordinates": "座標をコピー",
|
||||
"delete": "削除",
|
||||
"yes": "はい",
|
||||
"no": "いいえ",
|
||||
"download": "ダウンロード",
|
||||
"info": "情報",
|
||||
"suspended": "一時停止",
|
||||
"unsuspended": "再開",
|
||||
"play": "再生",
|
||||
"unselect": "選択解除",
|
||||
"export": "書き出し",
|
||||
"deleteNow": "今すぐ削除",
|
||||
"next": "次へ"
|
||||
},
|
||||
"menu": {
|
||||
"system": "システム",
|
||||
"systemMetrics": "システムモニター",
|
||||
"configuration": "設定",
|
||||
"systemLogs": "システムログ",
|
||||
"settings": "設定",
|
||||
"configurationEditor": "設定エディタ",
|
||||
"languages": "言語",
|
||||
"appearance": "外観",
|
||||
"darkMode": {
|
||||
"label": "ダークモード",
|
||||
"light": "ライト",
|
||||
"dark": "ダーク",
|
||||
"withSystem": {
|
||||
"label": "システム設定に従う"
|
||||
}
|
||||
},
|
||||
"withSystem": "システム",
|
||||
"theme": {
|
||||
"label": "テーマ",
|
||||
"blue": "青",
|
||||
"green": "緑",
|
||||
"nord": "ノルド",
|
||||
"red": "赤",
|
||||
"highcontrast": "ハイコントラスト",
|
||||
"default": "デフォルト"
|
||||
},
|
||||
"help": "ヘルプ",
|
||||
"documentation": {
|
||||
"title": "ドキュメント",
|
||||
"label": "Frigate ドキュメント"
|
||||
},
|
||||
"restart": "Frigate を再起動",
|
||||
"live": {
|
||||
"title": "ライブ",
|
||||
"allCameras": "全カメラ",
|
||||
"cameras": {
|
||||
"title": "カメラ",
|
||||
"count_other": "{{count}} 台のカメラ"
|
||||
}
|
||||
},
|
||||
"review": "レビュー",
|
||||
"explore": "ブラウズ",
|
||||
"export": "書き出し",
|
||||
"uiPlayground": "UI テスト環境",
|
||||
"faceLibrary": "顔データベース",
|
||||
"user": {
|
||||
"title": "ユーザー",
|
||||
"account": "アカウント",
|
||||
"current": "現在のユーザー: {{user}}",
|
||||
"anonymous": "未ログイン",
|
||||
"logout": "ログアウト",
|
||||
"setPassword": "パスワードを設定"
|
||||
},
|
||||
"language": {
|
||||
"en": "English (英語)",
|
||||
"es": "Español (スペイン語)",
|
||||
"zhCN": "简体中文 (簡体字中国語)",
|
||||
"hi": "हिन्दी (ヒンディー語)",
|
||||
"fr": "Français (フランス語)",
|
||||
"ar": "العربية (アラビア語)",
|
||||
"pt": "Português (ポルトガル語)",
|
||||
"ptBR": "Português brasileiro (ブラジルポルトガル語)",
|
||||
"ru": "Русский (ロシア語)",
|
||||
"de": "Deutsch (ドイツ語)",
|
||||
"ja": "日本語 (日本語)",
|
||||
"tr": "Türkçe (トルコ語)",
|
||||
"it": "Italiano (イタリア語)",
|
||||
"nl": "Nederlands (オランダ語)",
|
||||
"sv": "Svenska (スウェーデン語)",
|
||||
"cs": "Čeština (チェコ語)",
|
||||
"nb": "Norsk Bokmål (ノルウェー語)",
|
||||
"ko": "한국어 (韓国語)",
|
||||
"vi": "Tiếng Việt (ベトナム語)",
|
||||
"fa": "فارسی (ペルシア語)",
|
||||
"pl": "Polski (ポーランド語)",
|
||||
"uk": "Українська (ウクライナ語)",
|
||||
"he": "עברית (ヘブライ語)",
|
||||
"el": "Ελληνικά (ギリシャ語)",
|
||||
"ro": "Română (ルーマニア語)",
|
||||
"hu": "Magyar (ハンガリー語)",
|
||||
"fi": "Suomi (フィンランド語)",
|
||||
"da": "Dansk (デンマーク語)",
|
||||
"sk": "Slovenčina (スロバキア語)",
|
||||
"yue": "粵語 (広東語)",
|
||||
"th": "ไทย (タイ語)",
|
||||
"ca": "Català (カタルーニャ語)",
|
||||
"sr": "Српски (セルビア語)",
|
||||
"sl": "Slovenščina (スロベニア語)",
|
||||
"lt": "Lietuvių (リトアニア語)",
|
||||
"bg": "Български (ブルガリア語)",
|
||||
"gl": "Galego (ガリシア語)",
|
||||
"id": "Bahasa Indonesia (インドネシア語)",
|
||||
"ur": "اردو (ウルドゥー語)",
|
||||
"withSystem": {
|
||||
"label": "システム設定に従う"
|
||||
}
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"copyUrlToClipboard": "URLをクリップボードにコピーしました。",
|
||||
"save": {
|
||||
"title": "保存",
|
||||
"error": {
|
||||
"title": "設定変更の保存に失敗しました: {{errorMessage}}",
|
||||
"noMessage": "設定変更の保存に失敗しました"
|
||||
}
|
||||
}
|
||||
},
|
||||
"role": {
|
||||
"title": "役割",
|
||||
"admin": "管理者",
|
||||
"viewer": "閲覧者",
|
||||
"desc": "管理者はFrigate UIのすべての機能に完全にアクセスできます。閲覧者はカメラ、レビュー項目、履歴映像の閲覧に制限されます。"
|
||||
},
|
||||
"pagination": {
|
||||
"label": "ページ移動",
|
||||
"previous": {
|
||||
"title": "前へ",
|
||||
"label": "前のページへ"
|
||||
},
|
||||
"next": {
|
||||
"title": "次へ",
|
||||
"label": "次のページへ"
|
||||
},
|
||||
"more": "さらにページ"
|
||||
},
|
||||
"accessDenied": {
|
||||
"documentTitle": "アクセス拒否 - Frigate",
|
||||
"title": "アクセス拒否",
|
||||
"desc": "このページを表示する権限がありません。"
|
||||
},
|
||||
"notFound": {
|
||||
"documentTitle": "ページが見つかりません - Frigate",
|
||||
"title": "404",
|
||||
"desc": "ページが見つかりません"
|
||||
},
|
||||
"selectItem": "{{item}} を選択"
|
||||
}
|
||||
|
||||
@ -2,6 +2,14 @@
|
||||
"form": {
|
||||
"user": "ユーザー名",
|
||||
"password": "パスワード",
|
||||
"login": "ログイン"
|
||||
"login": "ログイン",
|
||||
"errors": {
|
||||
"usernameRequired": "ユーザー名が必要です",
|
||||
"passwordRequired": "パスワードが必要です",
|
||||
"rateLimit": "リクエスト制限を超えました。後でもう一度お試しください。",
|
||||
"loginFailed": "ログインに失敗しました",
|
||||
"unknownError": "不明なエラー。ログを確認してください。",
|
||||
"webUnknownError": "不明なエラー。コンソールログを確認してください。"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,85 @@
|
||||
"group": {
|
||||
"label": "カメラグループ",
|
||||
"add": "カメラグループを追加",
|
||||
"edit": "カメラグループを編集"
|
||||
"edit": "カメラグループを編集",
|
||||
"delete": {
|
||||
"label": "カメラグループを削除",
|
||||
"confirm": {
|
||||
"title": "削除の確認",
|
||||
"desc": "カメラグループ <em>{{name}}</em> を削除してもよろしいですか?"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"label": "名前",
|
||||
"placeholder": "名前を入力…",
|
||||
"errorMessage": {
|
||||
"mustLeastCharacters": "カメラグループ名は2文字以上である必要があります。",
|
||||
"exists": "このカメラグループ名は既に存在します。",
|
||||
"nameMustNotPeriod": "カメラグループ名にピリオドは使用できません。",
|
||||
"invalid": "無効なカメラグループ名です。"
|
||||
}
|
||||
},
|
||||
"cameras": {
|
||||
"label": "カメラ",
|
||||
"desc": "このグループに含めるカメラを選択します。"
|
||||
},
|
||||
"icon": "アイコン",
|
||||
"success": "カメラグループ({{name}})を保存しました。",
|
||||
"camera": {
|
||||
"birdseye": "バードアイ",
|
||||
"setting": {
|
||||
"label": "カメラのストリーミング設定",
|
||||
"title": "{{cameraName}} のストリーミング設定",
|
||||
"desc": "このカメラグループのダッシュボードでのライブストリーミングオプションを変更します。<em>これらの設定はデバイス/ブラウザごとに異なります。</em>",
|
||||
"audioIsAvailable": "このストリームでは音声が利用可能です",
|
||||
"audioIsUnavailable": "このストリームでは音声は利用できません",
|
||||
"audio": {
|
||||
"tips": {
|
||||
"title": "このストリームで音声を使用するには、カメラから音声が出力され、go2rtc で設定されている必要があります。"
|
||||
}
|
||||
},
|
||||
"stream": "ストリーム",
|
||||
"placeholder": "ストリームを選択",
|
||||
"streamMethod": {
|
||||
"label": "ストリーミング方式",
|
||||
"placeholder": "方式を選択",
|
||||
"method": {
|
||||
"noStreaming": {
|
||||
"label": "ストリーミングなし",
|
||||
"desc": "カメラ画像は1分に1回のみ更新され、ライブストリーミングは行われません。"
|
||||
},
|
||||
"smartStreaming": {
|
||||
"label": "スマートストリーミング(推奨)",
|
||||
"desc": "検知可能なアクティビティがない場合は、帯域とリソース節約のため画像を1分に1回更新します。アクティビティが検知されると、画像はシームレスにライブストリームへ切り替わります。"
|
||||
},
|
||||
"continuousStreaming": {
|
||||
"label": "常時ストリーミング",
|
||||
"desc": {
|
||||
"title": "ダッシュボードで表示されている間は、アクティビティが検知されていなくても常にライブストリームになります。",
|
||||
"warning": "常時ストリーミングは高い帯域幅使用やパフォーマンス問題の原因となる場合があります。注意して使用してください。"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"compatibilityMode": {
|
||||
"label": "互換モード",
|
||||
"desc": "このオプションは、ライブストリームに色のアーティファクトが表示され、画像右側に斜めの線が出る場合にのみ有効にしてください。"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"options": {
|
||||
"label": "設定",
|
||||
"title": "オプション",
|
||||
"showOptions": "オプションを表示",
|
||||
"hideOptions": "オプションを非表示"
|
||||
},
|
||||
"boundingBox": "バウンディングボックス",
|
||||
"timestamp": "タイムスタンプ",
|
||||
"zones": "ゾーン",
|
||||
"mask": "マスク",
|
||||
"motion": "モーション",
|
||||
"regions": "領域"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,9 +1,118 @@
|
||||
{
|
||||
"restart": {
|
||||
"title": "Frigateを再起動しますか?",
|
||||
"title": "Frigate を再起動してもよろしいですか?",
|
||||
"restarting": {
|
||||
"title": "Frigateは再起動中です"
|
||||
"title": "Frigate を再起動中",
|
||||
"content": "このページは {{countdown}} 秒後に再読み込みされます。",
|
||||
"button": "今すぐ強制再読み込み"
|
||||
},
|
||||
"button": "再起動"
|
||||
},
|
||||
"explore": {
|
||||
"plus": {
|
||||
"submitToPlus": {
|
||||
"label": "Frigate+ に送信",
|
||||
"desc": "回避したい場所でのオブジェクトは誤検出ではありません。誤検出として送信するとモデルが混乱します。"
|
||||
},
|
||||
"review": {
|
||||
"question": {
|
||||
"label": "Frigate Plus 用ラベルの確認",
|
||||
"ask_a": "このオブジェクトは <code>{{label}}</code> ですか?",
|
||||
"ask_an": "このオブジェクトは <code>{{label}}</code> ですか?",
|
||||
"ask_full": "このオブジェクトは <code>{{untranslatedLabel}}</code>({{translatedLabel}})ですか?"
|
||||
},
|
||||
"state": {
|
||||
"submitted": "送信済み"
|
||||
}
|
||||
}
|
||||
},
|
||||
"video": {
|
||||
"viewInHistory": "履歴で表示"
|
||||
}
|
||||
},
|
||||
"export": {
|
||||
"time": {
|
||||
"fromTimeline": "タイムラインから選択",
|
||||
"lastHour_other": "直近{{count}}時間",
|
||||
"custom": "カスタム",
|
||||
"start": {
|
||||
"title": "開始時刻",
|
||||
"label": "開始時刻を選択"
|
||||
},
|
||||
"end": {
|
||||
"title": "終了時刻",
|
||||
"label": "終了時刻を選択"
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"placeholder": "書き出しに名前を付ける"
|
||||
},
|
||||
"select": "選択",
|
||||
"export": "書き出し",
|
||||
"selectOrExport": "選択または書き出し",
|
||||
"toast": {
|
||||
"success": "書き出しを開始しました。/exports フォルダでファイルを確認できます。",
|
||||
"error": {
|
||||
"failed": "書き出しの開始に失敗しました: {{error}}",
|
||||
"endTimeMustAfterStartTime": "終了時間は開始時間より後である必要があります",
|
||||
"noVaildTimeSelected": "有効な時間範囲が選択されていません"
|
||||
}
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "書き出しを保存",
|
||||
"previewExport": "書き出しをプレビュー"
|
||||
}
|
||||
},
|
||||
"streaming": {
|
||||
"label": "ストリーム",
|
||||
"restreaming": {
|
||||
"disabled": "このカメラではリストリーミングは有効になっていません。",
|
||||
"desc": {
|
||||
"title": "このカメラで追加のライブビューと音声を利用するには go2rtc をセットアップしてください。"
|
||||
}
|
||||
},
|
||||
"showStats": {
|
||||
"label": "ストリーム統計を表示",
|
||||
"desc": "有効にすると、カメラ映像に統計情報をオーバーレイ表示します。"
|
||||
},
|
||||
"debugView": "デバッグビュー"
|
||||
},
|
||||
"search": {
|
||||
"saveSearch": {
|
||||
"label": "検索を保存",
|
||||
"desc": "この保存済み検索の名前を入力してください。",
|
||||
"placeholder": "検索名を入力",
|
||||
"overwrite": "{{searchName}} は既に存在します。保存すると上書きされます。",
|
||||
"success": "検索({{searchName}})を保存しました。",
|
||||
"button": {
|
||||
"save": {
|
||||
"label": "この検索を保存"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"confirmDelete": {
|
||||
"title": "削除の確認",
|
||||
"desc": {
|
||||
"selected": "このレビュー項目に関連付けられた録画動画をすべて削除してもよろしいですか?<br /><br />今後このダイアログを表示しない場合は <em>Shift</em> キーを押しながら操作してください。"
|
||||
},
|
||||
"toast": {
|
||||
"success": "選択したレビュー項目に関連する動画を削除しました。",
|
||||
"error": "削除に失敗しました: {{error}}"
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"export": "書き出し",
|
||||
"markAsReviewed": "レビュー済みにする",
|
||||
"deleteNow": "今すぐ削除"
|
||||
}
|
||||
},
|
||||
"imagePicker": {
|
||||
"selectImage": "追跡オブジェクトのサムネイルを選択",
|
||||
"search": {
|
||||
"placeholder": "ラベルまたはサブラベルで検索…"
|
||||
},
|
||||
"noImages": "このカメラのサムネイルは見つかりません"
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,8 +2,135 @@
|
||||
"labels": {
|
||||
"label": "ラベル",
|
||||
"all": {
|
||||
"title": "すべてのラベル"
|
||||
"title": "すべてのラベル",
|
||||
"short": "ラベル"
|
||||
},
|
||||
"count_one": "{{count}} ラベル",
|
||||
"count_other": "{{count}} ラベル"
|
||||
},
|
||||
"filter": "フィルター",
|
||||
"classes": {
|
||||
"label": "クラス",
|
||||
"all": {
|
||||
"title": "すべてのクラス"
|
||||
},
|
||||
"count_one": "{{count}} クラス",
|
||||
"count_other": "{{count}} クラス"
|
||||
},
|
||||
"zones": {
|
||||
"label": "ゾーン",
|
||||
"all": {
|
||||
"title": "すべてのゾーン",
|
||||
"short": "ゾーン"
|
||||
}
|
||||
},
|
||||
"filter": "フィルタ"
|
||||
"dates": {
|
||||
"selectPreset": "プリセットを選択…",
|
||||
"all": {
|
||||
"title": "すべての日付",
|
||||
"short": "日付"
|
||||
}
|
||||
},
|
||||
"more": "その他のフィルター",
|
||||
"reset": {
|
||||
"label": "フィルターを既定値にリセット"
|
||||
},
|
||||
"timeRange": "期間",
|
||||
"subLabels": {
|
||||
"label": "サブラベル",
|
||||
"all": "すべてのサブラベル"
|
||||
},
|
||||
"score": "スコア",
|
||||
"estimatedSpeed": "推定速度({{unit}})",
|
||||
"features": {
|
||||
"label": "機能",
|
||||
"hasSnapshot": "スナップショットあり",
|
||||
"hasVideoClip": "ビデオクリップあり",
|
||||
"submittedToFrigatePlus": {
|
||||
"label": "Frigate+ に送信済み",
|
||||
"tips": "まずスナップショットのある追跡オブジェクトでフィルターしてください。<br /><br />スナップショットのない追跡オブジェクトは Frigate+ に送信できません。"
|
||||
}
|
||||
},
|
||||
"sort": {
|
||||
"label": "並び替え",
|
||||
"dateAsc": "日付(昇順)",
|
||||
"dateDesc": "日付(降順)",
|
||||
"scoreAsc": "オブジェクトスコア(昇順)",
|
||||
"scoreDesc": "オブジェクトスコア(降順)",
|
||||
"speedAsc": "推定速度(昇順)",
|
||||
"speedDesc": "推定速度(降順)",
|
||||
"relevance": "関連度"
|
||||
},
|
||||
"cameras": {
|
||||
"label": "カメラフィルター",
|
||||
"all": {
|
||||
"title": "すべてのカメラ",
|
||||
"short": "カメラ"
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
"showReviewed": "レビュー済みを表示"
|
||||
},
|
||||
"motion": {
|
||||
"showMotionOnly": "モーションのみ表示"
|
||||
},
|
||||
"explore": {
|
||||
"settings": {
|
||||
"title": "設定",
|
||||
"defaultView": {
|
||||
"title": "既定の表示",
|
||||
"desc": "フィルター未選択時、ラベルごとの最新追跡オブジェクトの概要を表示するか、未フィルタのグリッドを表示するかを選びます。",
|
||||
"summary": "概要",
|
||||
"unfilteredGrid": "未フィルタグリッド"
|
||||
},
|
||||
"gridColumns": {
|
||||
"title": "グリッド列数",
|
||||
"desc": "グリッド表示の列数を選択します。"
|
||||
},
|
||||
"searchSource": {
|
||||
"label": "検索対象",
|
||||
"desc": "追跡オブジェクトのサムネイル画像と説明文のどちらを検索するかを選択します。",
|
||||
"options": {
|
||||
"thumbnailImage": "サムネイル画像",
|
||||
"description": "説明"
|
||||
}
|
||||
}
|
||||
},
|
||||
"date": {
|
||||
"selectDateBy": {
|
||||
"label": "フィルターする日付を選択"
|
||||
}
|
||||
}
|
||||
},
|
||||
"logSettings": {
|
||||
"label": "ログレベルでフィルター",
|
||||
"filterBySeverity": "重大度でログをフィルター",
|
||||
"loading": {
|
||||
"title": "読み込み中",
|
||||
"desc": "ログペインが最下部にあると、新しいログが追加され次第自動でストリーミング表示されます。"
|
||||
},
|
||||
"disableLogStreaming": "ログのストリーミングを無効化",
|
||||
"allLogs": "すべてのログ"
|
||||
},
|
||||
"trackedObjectDelete": {
|
||||
"title": "削除の確認",
|
||||
"desc": "これら {{objectLength}} 件の追跡オブジェクトを削除すると、スナップショット、保存された埋め込み、関連するオブジェクトのライフサイクル項目が削除されます。履歴ビューの録画映像は削除<em>されません</em>。<br /><br />続行してもよろしいですか?<br /><br />今後このダイアログを表示しない場合は <em>Shift</em> キーを押しながら操作してください。",
|
||||
"toast": {
|
||||
"success": "追跡オブジェクトを削除しました。",
|
||||
"error": "追跡オブジェクトの削除に失敗しました: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"zoneMask": {
|
||||
"filterBy": "ゾーンマスクでフィルター"
|
||||
},
|
||||
"recognizedLicensePlates": {
|
||||
"title": "認識されたナンバープレート",
|
||||
"loadFailed": "認識済みナンバープレートの読み込みに失敗しました。",
|
||||
"loading": "認識済みナンバープレートを読み込み中…",
|
||||
"placeholder": "ナンバープレートを入力して検索…",
|
||||
"noLicensePlatesFound": "ナンバープレートが見つかりません。",
|
||||
"selectPlatesFromList": "リストから1件以上選択してください。",
|
||||
"selectAll": "すべて選択",
|
||||
"clearAll": "すべてクリア"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
{
|
||||
"button": {
|
||||
"downloadVideo": {
|
||||
"label": "ビデオをダウンロード",
|
||||
"label": "動画をダウンロード",
|
||||
"toast": {
|
||||
"success": "あなたのレビュー項目ビデオのダウンロードを開始しました."
|
||||
"success": "レビュー項目の動画のダウンロードを開始しました。"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,51 @@
|
||||
{
|
||||
"noPreviewFound": "プレビューが見つかりません",
|
||||
"noRecordingsFoundForThisTime": "この時間帯に録画は見つかりませんでした",
|
||||
"noPreviewFoundFor": "{{cameraName}} のプレビューが見つかりません"
|
||||
"noRecordingsFoundForThisTime": "この時間の録画は見つかりません",
|
||||
"noPreviewFoundFor": "{{cameraName}} のプレビューが見つかりません",
|
||||
"streamOffline": {
|
||||
"title": "ストリームオフライン",
|
||||
"desc": "{{cameraName}} の <code>detect</code> ストリームでフレームが受信されていません。エラーログを確認してください"
|
||||
},
|
||||
"submitFrigatePlus": {
|
||||
"title": "このフレームを Frigate+ に送信しますか?",
|
||||
"submit": "送信"
|
||||
},
|
||||
"livePlayerRequiredIOSVersion": "このライブストリームタイプには iOS 17.1 以上が必要です。",
|
||||
"cameraDisabled": "カメラは無効です",
|
||||
"stats": {
|
||||
"streamType": {
|
||||
"title": "ストリームタイプ:",
|
||||
"short": "タイプ"
|
||||
},
|
||||
"bandwidth": {
|
||||
"title": "帯域:",
|
||||
"short": "帯域"
|
||||
},
|
||||
"latency": {
|
||||
"title": "遅延:",
|
||||
"value": "{{seconds}} 秒",
|
||||
"short": {
|
||||
"title": "遅延",
|
||||
"value": "{{seconds}} 秒"
|
||||
}
|
||||
},
|
||||
"totalFrames": "総フレーム:",
|
||||
"droppedFrames": {
|
||||
"title": "ドロップしたフレーム:",
|
||||
"short": {
|
||||
"title": "ドロップ",
|
||||
"value": "{{droppedFrames}} フレーム"
|
||||
}
|
||||
},
|
||||
"decodedFrames": "デコードしたフレーム:",
|
||||
"droppedFrameRate": "ドロップしたフレームレート:"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"submittedFrigatePlus": "フレームを Frigate+ に送信しました"
|
||||
},
|
||||
"error": {
|
||||
"submitFrigatePlusFailed": "フレームの Frigate+ への送信に失敗しました"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,120 @@
|
||||
{
|
||||
"bicycle": "自転車",
|
||||
"car": "自動車",
|
||||
"person": "人物"
|
||||
"car": "車",
|
||||
"person": "人",
|
||||
"motorcycle": "オートバイ",
|
||||
"airplane": "飛行機",
|
||||
"animal": "動物",
|
||||
"dog": "犬",
|
||||
"bark": "樹皮",
|
||||
"cat": "猫",
|
||||
"horse": "馬",
|
||||
"goat": "ヤギ",
|
||||
"sheep": "羊",
|
||||
"bird": "鳥",
|
||||
"mouse": "マウス",
|
||||
"keyboard": "キーボード",
|
||||
"vehicle": "車両",
|
||||
"boat": "ボート",
|
||||
"bus": "バス",
|
||||
"train": "電車",
|
||||
"skateboard": "スケートボード",
|
||||
"door": "ドア",
|
||||
"blender": "ミキサー",
|
||||
"sink": "流し台",
|
||||
"hair_dryer": "ヘアドライヤー",
|
||||
"toothbrush": "歯ブラシ",
|
||||
"scissors": "はさみ",
|
||||
"clock": "時計",
|
||||
"traffic_light": "信号機",
|
||||
"fire_hydrant": "消火栓",
|
||||
"street_sign": "道路標識",
|
||||
"stop_sign": "一時停止標識",
|
||||
"parking_meter": "駐車メーター",
|
||||
"bench": "ベンチ",
|
||||
"cow": "牛",
|
||||
"elephant": "象",
|
||||
"bear": "クマ",
|
||||
"zebra": "シマウマ",
|
||||
"giraffe": "キリン",
|
||||
"hat": "帽子",
|
||||
"backpack": "バックパック",
|
||||
"umbrella": "傘",
|
||||
"shoe": "靴",
|
||||
"eye_glasses": "メガネ",
|
||||
"handbag": "ハンドバッグ",
|
||||
"tie": "ネクタイ",
|
||||
"suitcase": "スーツケース",
|
||||
"frisbee": "フリスビー",
|
||||
"skis": "スキー板",
|
||||
"snowboard": "スノーボード",
|
||||
"sports_ball": "スポーツボール",
|
||||
"kite": "凧",
|
||||
"baseball_bat": "野球バット",
|
||||
"baseball_glove": "野球グローブ",
|
||||
"surfboard": "サーフボード",
|
||||
"tennis_racket": "テニスラケット",
|
||||
"bottle": "ボトル",
|
||||
"plate": "皿",
|
||||
"wine_glass": "ワイングラス",
|
||||
"cup": "コップ",
|
||||
"fork": "フォーク",
|
||||
"knife": "ナイフ",
|
||||
"spoon": "スプーン",
|
||||
"bowl": "ボウル",
|
||||
"banana": "バナナ",
|
||||
"apple": "リンゴ",
|
||||
"sandwich": "サンドイッチ",
|
||||
"orange": "オレンジ",
|
||||
"broccoli": "ブロッコリー",
|
||||
"carrot": "ニンジン",
|
||||
"hot_dog": "ホットドッグ",
|
||||
"pizza": "ピザ",
|
||||
"donut": "ドーナツ",
|
||||
"cake": "ケーキ",
|
||||
"chair": "椅子",
|
||||
"couch": "ソファ",
|
||||
"potted_plant": "鉢植え",
|
||||
"bed": "ベッド",
|
||||
"mirror": "鏡",
|
||||
"dining_table": "ダイニングテーブル",
|
||||
"window": "窓",
|
||||
"desk": "机",
|
||||
"toilet": "トイレ",
|
||||
"tv": "テレビ",
|
||||
"laptop": "ノートパソコン",
|
||||
"remote": "リモコン",
|
||||
"cell_phone": "携帯電話",
|
||||
"microwave": "電子レンジ",
|
||||
"oven": "オーブン",
|
||||
"toaster": "トースター",
|
||||
"refrigerator": "冷蔵庫",
|
||||
"book": "本",
|
||||
"vase": "花瓶",
|
||||
"teddy_bear": "テディベア",
|
||||
"hair_brush": "ヘアブラシ",
|
||||
"squirrel": "リス",
|
||||
"deer": "シカ",
|
||||
"fox": "キツネ",
|
||||
"rabbit": "ウサギ",
|
||||
"raccoon": "アライグマ",
|
||||
"robot_lawnmower": "ロボット芝刈り機",
|
||||
"waste_bin": "ゴミ箱",
|
||||
"on_demand": "オンデマンド",
|
||||
"face": "顔",
|
||||
"license_plate": "ナンバープレート",
|
||||
"package": "荷物",
|
||||
"bbq_grill": "バーベキューグリル",
|
||||
"amazon": "Amazon",
|
||||
"usps": "USPS",
|
||||
"ups": "UPS",
|
||||
"fedex": "FedEx",
|
||||
"dhl": "DHL",
|
||||
"an_post": "An Post",
|
||||
"purolator": "Purolator",
|
||||
"postnl": "PostNL",
|
||||
"nzpost": "NZPost",
|
||||
"postnord": "PostNord",
|
||||
"gls": "GLS",
|
||||
"dpd": "DPD"
|
||||
}
|
||||
|
||||
@ -10,6 +10,9 @@
|
||||
"toast": {
|
||||
"success": {
|
||||
"copyToClipboard": "コンフィグをクリップボードにコピー。"
|
||||
},
|
||||
"error": {
|
||||
"savingError": "設定の保存に失敗しました"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,40 @@
|
||||
{
|
||||
"detections": "検出",
|
||||
"motion": {
|
||||
"label": "動作"
|
||||
"label": "モーション",
|
||||
"only": "モーションのみ"
|
||||
},
|
||||
"alerts": "アラート"
|
||||
"alerts": "アラート",
|
||||
"empty": {
|
||||
"detection": "レビューする検出はありません",
|
||||
"alert": "レビューするアラートはありません",
|
||||
"motion": "モーションデータは見つかりません"
|
||||
},
|
||||
"camera": "カメラ",
|
||||
"allCameras": "全カメラ",
|
||||
"timeline": "タイムライン",
|
||||
"timeline.aria": "タイムラインを選択",
|
||||
"events": {
|
||||
"label": "イベント",
|
||||
"aria": "イベントを選択",
|
||||
"noFoundForTimePeriod": "この期間のイベントは見つかりません。"
|
||||
},
|
||||
"documentTitle": "レビュー - Frigate",
|
||||
"recordings": {
|
||||
"documentTitle": "録画 - Frigate"
|
||||
},
|
||||
"calendarFilter": {
|
||||
"last24Hours": "直近24時間"
|
||||
},
|
||||
"markAsReviewed": "レビュー済みにする",
|
||||
"markTheseItemsAsReviewed": "これらの項目をレビュー済みにする",
|
||||
"newReviewItems": {
|
||||
"label": "新しいレビュー項目を表示",
|
||||
"button": "レビューすべき新規項目"
|
||||
},
|
||||
"selected_one": "{{count}} 件選択",
|
||||
"selected_other": "{{count}} 件選択",
|
||||
"detected": "検出",
|
||||
"suspiciousActivity": "不審なアクティビティ",
|
||||
"threateningActivity": "脅威となるアクティビティ"
|
||||
}
|
||||
|
||||
@ -1,4 +1,222 @@
|
||||
{
|
||||
"generativeAI": "生成AI",
|
||||
"documentTitle": "検索 - Frigate"
|
||||
"documentTitle": "探索 - Frigate",
|
||||
"details": {
|
||||
"timestamp": "タイムスタンプ",
|
||||
"item": {
|
||||
"title": "レビュー項目の詳細",
|
||||
"desc": "レビュー項目の詳細",
|
||||
"button": {
|
||||
"share": "このレビュー項目を共有",
|
||||
"viewInExplore": "探索で表示"
|
||||
},
|
||||
"tips": {
|
||||
"mismatch_other": "利用不可のオブジェクトが {{count}} 件、このレビュー項目に含まれています。これらはアラートまたは検出の条件を満たしていないか、既にクリーンアップ/削除されています。",
|
||||
"hasMissingObjects": "次のラベルの追跡オブジェクトを保存したい場合は設定を調整してください: <em>{{objects}}</em>"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"regenerate": "{{provider}} に新しい説明をリクエストしました。プロバイダの速度により再生成に時間がかかる場合があります。",
|
||||
"updatedSublabel": "サブラベルを更新しました。",
|
||||
"updatedLPR": "ナンバープレートを更新しました。",
|
||||
"audioTranscription": "音声文字起こしをリクエストしました。"
|
||||
},
|
||||
"error": {
|
||||
"regenerate": "{{provider}} への新しい説明の呼び出しに失敗しました: {{errorMessage}}",
|
||||
"updatedSublabelFailed": "サブラベルの更新に失敗しました: {{errorMessage}}",
|
||||
"updatedLPRFailed": "ナンバープレートの更新に失敗しました: {{errorMessage}}",
|
||||
"audioTranscription": "音声文字起こしのリクエストに失敗しました: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"label": "ラベル",
|
||||
"editSubLabel": {
|
||||
"title": "サブラベルを編集",
|
||||
"desc": "この {{label}} の新しいサブラベルを入力",
|
||||
"descNoLabel": "この追跡オブジェクトの新しいサブラベルを入力"
|
||||
},
|
||||
"editLPR": {
|
||||
"title": "ナンバープレートを編集",
|
||||
"desc": "この {{label}} の新しいナンバープレート値を入力",
|
||||
"descNoLabel": "この追跡オブジェクトの新しいナンバープレート値を入力"
|
||||
},
|
||||
"snapshotScore": {
|
||||
"label": "スナップショットスコア"
|
||||
},
|
||||
"topScore": {
|
||||
"label": "トップスコア",
|
||||
"info": "トップスコアは追跡オブジェクトの最高中央値スコアであり、検索結果のサムネイルに表示されるスコアとは異なる場合があります。"
|
||||
},
|
||||
"score": {
|
||||
"label": "スコア"
|
||||
},
|
||||
"recognizedLicensePlate": "認識されたナンバープレート",
|
||||
"estimatedSpeed": "推定速度",
|
||||
"objects": "オブジェクト",
|
||||
"camera": "カメラ",
|
||||
"zones": "ゾーン",
|
||||
"button": {
|
||||
"findSimilar": "類似を検索",
|
||||
"regenerate": {
|
||||
"title": "再生成",
|
||||
"label": "追跡オブジェクトの説明を再生成"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"label": "説明",
|
||||
"placeholder": "追跡オブジェクトの説明",
|
||||
"aiTips": "追跡オブジェクトのライフサイクルが終了するまで、生成AIプロバイダに説明はリクエストされません。"
|
||||
},
|
||||
"expandRegenerationMenu": "再生成メニューを展開",
|
||||
"regenerateFromSnapshot": "スナップショットから再生成",
|
||||
"regenerateFromThumbnails": "サムネイルから再生成",
|
||||
"tips": {
|
||||
"descriptionSaved": "説明を保存しました",
|
||||
"saveDescriptionFailed": "説明の更新に失敗しました: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"exploreMore": "{{label}} のオブジェクトをさらに探索",
|
||||
"exploreIsUnavailable": {
|
||||
"title": "探索は利用できません",
|
||||
"embeddingsReindexing": {
|
||||
"context": "追跡オブジェクトの埋め込みの再インデックスが完了すると「探索」を使用できます。",
|
||||
"startingUp": "起動中…",
|
||||
"estimatedTime": "残りの推定時間:",
|
||||
"finishingShortly": "まもなく完了",
|
||||
"step": {
|
||||
"thumbnailsEmbedded": "埋め込み済みサムネイル: ",
|
||||
"descriptionsEmbedded": "埋め込み済み説明: ",
|
||||
"trackedObjectsProcessed": "処理済み追跡オブジェクト: "
|
||||
}
|
||||
},
|
||||
"downloadingModels": {
|
||||
"context": "Frigate はセマンティック検索をサポートするために必要な埋め込みモデルをダウンロードしています。ネットワーク速度により数分かかる場合があります。",
|
||||
"setup": {
|
||||
"visionModel": "ビジョンモデル",
|
||||
"visionModelFeatureExtractor": "ビジョンモデル特徴抽出器",
|
||||
"textModel": "テキストモデル",
|
||||
"textTokenizer": "テキストトークナイザー"
|
||||
},
|
||||
"tips": {
|
||||
"context": "モデルのダウンロード後、追跡オブジェクトの埋め込みを再インデックスすることを検討してください。"
|
||||
},
|
||||
"error": "エラーが発生しました。Frigate のログを確認してください。"
|
||||
}
|
||||
},
|
||||
"trackedObjectDetails": "追跡オブジェクトの詳細",
|
||||
"type": {
|
||||
"details": "詳細",
|
||||
"snapshot": "スナップショット",
|
||||
"video": "動画",
|
||||
"object_lifecycle": "オブジェクトのライフサイクル"
|
||||
},
|
||||
"objectLifecycle": {
|
||||
"title": "オブジェクトのライフサイクル",
|
||||
"noImageFound": "このタイムスタンプの画像は見つかりません。",
|
||||
"createObjectMask": "オブジェクトマスクを作成",
|
||||
"adjustAnnotationSettings": "アノテーション設定を調整",
|
||||
"scrollViewTips": "スクロールしてこのオブジェクトのライフサイクルの重要な瞬間を表示します。",
|
||||
"autoTrackingTips": "オートトラッキングカメラではバウンディングボックスの位置が正確でない場合があります。",
|
||||
"count": "{{first}} / {{second}}",
|
||||
"trackedPoint": "追跡ポイント",
|
||||
"lifecycleItemDesc": {
|
||||
"visible": "{{label}} を検出",
|
||||
"entered_zone": "{{label}} が {{zones}} に進入",
|
||||
"active": "{{label}} がアクティブになりました",
|
||||
"stationary": "{{label}} が静止しました",
|
||||
"attribute": {
|
||||
"faceOrLicense_plate": "{{label}} の {{attribute}} を検出",
|
||||
"other": "{{label}} を {{attribute}} として認識"
|
||||
},
|
||||
"gone": "{{label}} が離脱",
|
||||
"heard": "{{label}} を検知(音声)",
|
||||
"external": "{{label}} を検出",
|
||||
"header": {
|
||||
"zones": "ゾーン",
|
||||
"ratio": "比率",
|
||||
"area": "面積"
|
||||
}
|
||||
},
|
||||
"annotationSettings": {
|
||||
"title": "アノテーション設定",
|
||||
"showAllZones": {
|
||||
"title": "すべてのゾーンを表示",
|
||||
"desc": "オブジェクトがゾーンに入ったフレームでは常にゾーンを表示します。"
|
||||
},
|
||||
"offset": {
|
||||
"label": "アノテーションオフセット",
|
||||
"desc": "このデータはカメラの detect フィードから来ていますが、record フィードの画像に重ねて表示されます。2つのストリームが完全に同期していない可能性があるため、バウンディングボックスと映像が完全には一致しないことがあります。<code>annotation_offset</code> フィールドで調整できます。",
|
||||
"millisecondsToOffset": "detect のアノテーションをオフセットするミリ秒数。<em>既定: 0</em>",
|
||||
"tips": "ヒント: 左から右へ歩く人物のイベントクリップを想像してください。タイムラインのバウンディングボックスが人物より常に左側にあるなら値を小さく、常に先行しているなら値を大きくします。",
|
||||
"toast": {
|
||||
"success": "{{camera}} のアノテーションオフセットを設定ファイルに保存しました。変更を適用するには Frigate を再起動してください。"
|
||||
}
|
||||
}
|
||||
},
|
||||
"carousel": {
|
||||
"previous": "前のスライド",
|
||||
"next": "次のスライド"
|
||||
}
|
||||
},
|
||||
"itemMenu": {
|
||||
"downloadVideo": {
|
||||
"label": "動画をダウンロード",
|
||||
"aria": "動画をダウンロード"
|
||||
},
|
||||
"downloadSnapshot": {
|
||||
"label": "スナップショットをダウンロード",
|
||||
"aria": "スナップショットをダウンロード"
|
||||
},
|
||||
"viewObjectLifecycle": {
|
||||
"label": "オブジェクトのライフサイクルを表示",
|
||||
"aria": "オブジェクトのライフサイクルを表示"
|
||||
},
|
||||
"findSimilar": {
|
||||
"label": "類似を検索",
|
||||
"aria": "類似する追跡オブジェクトを検索"
|
||||
},
|
||||
"addTrigger": {
|
||||
"label": "トリガーを追加",
|
||||
"aria": "この追跡オブジェクトのトリガーを追加"
|
||||
},
|
||||
"audioTranscription": {
|
||||
"label": "文字起こし",
|
||||
"aria": "音声文字起こしをリクエスト"
|
||||
},
|
||||
"submitToPlus": {
|
||||
"label": "Frigate+ に送信",
|
||||
"aria": "Frigate Plus に送信"
|
||||
},
|
||||
"viewInHistory": {
|
||||
"label": "履歴で表示",
|
||||
"aria": "履歴で表示"
|
||||
},
|
||||
"deleteTrackedObject": {
|
||||
"label": "この追跡オブジェクトを削除"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"confirmDelete": {
|
||||
"title": "削除の確認",
|
||||
"desc": "この追跡オブジェクトを削除すると、スナップショット、保存された埋め込み、および関連するライフサイクル項目が削除されます。履歴ビューの録画映像は削除<em>されません</em>。<br /><br />続行してもよろしいですか?"
|
||||
}
|
||||
},
|
||||
"noTrackedObjects": "追跡オブジェクトは見つかりませんでした",
|
||||
"fetchingTrackedObjectsFailed": "追跡オブジェクトの取得エラー: {{errorMessage}}",
|
||||
"trackedObjectsCount_other": "{{count}} 件の追跡オブジェクト ",
|
||||
"searchResult": {
|
||||
"tooltip": "{{type}} と一致({{confidence}}%)",
|
||||
"deleteTrackedObject": {
|
||||
"toast": {
|
||||
"success": "追跡オブジェクトを削除しました。",
|
||||
"error": "追跡オブジェクトの削除に失敗しました: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aiAnalysis": {
|
||||
"title": "AI 解析"
|
||||
},
|
||||
"concerns": {
|
||||
"label": "懸念"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,17 @@
|
||||
{
|
||||
"documentTitle": "エクスポート - Frigate",
|
||||
"noExports": "エクスポートがありません",
|
||||
"search": "検索"
|
||||
"documentTitle": "書き出し - Frigate",
|
||||
"noExports": "書き出しは見つかりません",
|
||||
"search": "検索",
|
||||
"deleteExport": "書き出しを削除",
|
||||
"deleteExport.desc": "{{exportName}} を削除してもよろしいですか?",
|
||||
"editExport": {
|
||||
"title": "書き出し名を変更",
|
||||
"desc": "この書き出しの新しい名前を入力してください。",
|
||||
"saveExport": "書き出しを保存"
|
||||
},
|
||||
"toast": {
|
||||
"error": {
|
||||
"renameExportFailed": "書き出し名の変更に失敗しました: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,95 @@
|
||||
{
|
||||
"description": {
|
||||
"placeholder": "このコレクションの名前を入力してください",
|
||||
"addFace": "フェイスライブラリに新しいコレクションを追加する手順を説明します。"
|
||||
"placeholder": "このコレクションの名前を入力",
|
||||
"addFace": "顔データベースに新しいコレクションを追加する手順を案内します。",
|
||||
"invalidName": "無効な名前です。名前に使用できるのは英数字、スペース、アポストロフィ、アンダースコア、ハイフンのみです。"
|
||||
},
|
||||
"details": {
|
||||
"person": "人物",
|
||||
"face": "顔の詳細",
|
||||
"timestamp": "タイムスタンプ",
|
||||
"unknown": "不明",
|
||||
"subLabelScore": "サブラベルスコア",
|
||||
"scoreInfo": "サブラベルスコアは、認識された顔の信頼度の加重スコアです。スナップショットに表示されるスコアとは異なる場合があります。",
|
||||
"faceDesc": "この顔を生成した追跡オブジェクトの詳細"
|
||||
},
|
||||
"documentTitle": "顔データベース - Frigate",
|
||||
"uploadFaceImage": {
|
||||
"title": "顔画像をアップロード",
|
||||
"desc": "顔を検出するために画像をアップロードし、{{pageToggle}} に追加します"
|
||||
},
|
||||
"collections": "コレクション",
|
||||
"createFaceLibrary": {
|
||||
"title": "コレクションを作成",
|
||||
"desc": "新しいコレクションを作成",
|
||||
"new": "新しい顔を作成",
|
||||
"nextSteps": "強固な基盤を作るために:<li>[学習]タブで各人物に対して画像を選択し学習させてください。</li><li>最良の結果のため、正面を向いた画像に集中し、斜めからの顔画像は学習に使わないでください。</li></ul>"
|
||||
},
|
||||
"selectItem": "{{item}} を選択",
|
||||
"steps": {
|
||||
"faceName": "顔の名前を入力",
|
||||
"uploadFace": "顔画像をアップロード",
|
||||
"nextSteps": "次のステップ",
|
||||
"description": {
|
||||
"uploadFace": "{{name}} の正面を向いた顔が写っている画像をアップロードしてください。顔部分だけにトリミングする必要はありません。"
|
||||
}
|
||||
},
|
||||
"train": {
|
||||
"title": "学習",
|
||||
"aria": "学習を選択",
|
||||
"empty": "最近の顔認識の試行はありません"
|
||||
},
|
||||
"selectFace": "顔を選択",
|
||||
"deleteFaceLibrary": {
|
||||
"title": "名前を削除",
|
||||
"desc": "コレクション {{name}} を削除してもよろしいですか?関連する顔はすべて完全に削除されます。"
|
||||
},
|
||||
"deleteFaceAttempts": {
|
||||
"title": "顔を削除",
|
||||
"desc_other": "{{count}} 件の顔を削除してもよろしいですか?この操作は元に戻せません。"
|
||||
},
|
||||
"renameFace": {
|
||||
"title": "顔の名前を変更",
|
||||
"desc": "{{name}} の新しい名前を入力"
|
||||
},
|
||||
"button": {
|
||||
"deleteFaceAttempts": "顔を削除",
|
||||
"addFace": "顔を追加",
|
||||
"renameFace": "顔の名前を変更",
|
||||
"deleteFace": "顔を削除",
|
||||
"uploadImage": "画像をアップロード",
|
||||
"reprocessFace": "顔を再処理"
|
||||
},
|
||||
"imageEntry": {
|
||||
"validation": {
|
||||
"selectImage": "画像ファイルを選択してください。"
|
||||
},
|
||||
"dropActive": "ここに画像をドロップ…",
|
||||
"dropInstructions": "画像をここにドラッグ&ドロップ、またはクリックして選択",
|
||||
"maxSize": "最大サイズ: {{size}}MB"
|
||||
},
|
||||
"nofaces": "顔はありません",
|
||||
"pixels": "{{area}}px",
|
||||
"trainFaceAs": "顔を次として学習:",
|
||||
"trainFace": "顔を学習",
|
||||
"toast": {
|
||||
"success": {
|
||||
"uploadedImage": "画像をアップロードしました。",
|
||||
"addFaceLibrary": "{{name}} を顔データベースに追加しました!",
|
||||
"deletedFace_other": "{{count}} 件の顔を削除しました。",
|
||||
"deletedName_other": "{{count}} 件の顔を削除しました。",
|
||||
"renamedFace": "顔の名前を {{name}} に変更しました",
|
||||
"trainedFace": "顔の学習が完了しました。",
|
||||
"updatedFaceScore": "顔のスコアを更新しました。"
|
||||
},
|
||||
"error": {
|
||||
"uploadingImageFailed": "画像のアップロードに失敗しました: {{errorMessage}}",
|
||||
"addFaceLibraryFailed": "顔名の設定に失敗しました: {{errorMessage}}",
|
||||
"deleteFaceFailed": "削除に失敗しました: {{errorMessage}}",
|
||||
"deleteNameFailed": "名前の削除に失敗しました: {{errorMessage}}",
|
||||
"renameFaceFailed": "顔の名前変更に失敗しました: {{errorMessage}}",
|
||||
"trainFailed": "学習に失敗しました: {{errorMessage}}",
|
||||
"updateFaceScoreFailed": "顔スコアの更新に失敗しました: {{errorMessage}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user