mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-12-06 13:34:13 +03:00
Merge branch 'dev' into dev-zones-friendly-name
This commit is contained in:
commit
5e6ffd62a3
@ -68,6 +68,36 @@ The mere presence of an unidentified person in private areas during late night h
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
### Camera Spatial Context
|
||||||
|
|
||||||
|
In addition to defining activity patterns, you can provide spatial context for specific cameras to help the LLM generate more accurate and descriptive titles and scene descriptions. The `camera_context` field allows you to describe physical features and locations that are outside the camera's field of view but are relevant for understanding the scene.
|
||||||
|
|
||||||
|
**Important Guidelines:**
|
||||||
|
|
||||||
|
- This context is used **only for descriptive purposes** to help the LLM write better titles and scene descriptions
|
||||||
|
- It should describe **physical features and spatial relationships** (e.g., "front door is to the right", "driveway on the left")
|
||||||
|
- It should **NOT** include subjective assessments or threat evaluations (e.g., "high-crime area")
|
||||||
|
- Threat level determination remains based solely on observable actions defined in the activity patterns
|
||||||
|
|
||||||
|
Example configuration:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
cameras:
|
||||||
|
front_door:
|
||||||
|
review:
|
||||||
|
genai:
|
||||||
|
enabled: true
|
||||||
|
camera_context: |
|
||||||
|
- Front door entrance is to the right of the frame
|
||||||
|
- Driveway and street are to the left
|
||||||
|
- Steps in the center lead from the sidewalk to the front door
|
||||||
|
- Garage is located beyond the left edge of the frame
|
||||||
|
```
|
||||||
|
|
||||||
|
This helps the LLM generate more natural descriptions like "Person approaching front door" instead of "Person walking toward right side of frame".
|
||||||
|
|
||||||
|
The `camera_context` can be defined globally under `genai.review` and overridden per camera for specific spatial details.
|
||||||
|
|
||||||
### Image Source
|
### Image Source
|
||||||
|
|
||||||
By default, review summaries use preview images (cached preview frames) which have a lower resolution but use fewer tokens per image. For better image quality and more detailed analysis, you can configure Frigate to extract frames directly from recordings at a higher resolution:
|
By default, review summaries use preview images (cached preview frames) which have a lower resolution but use fewer tokens per image. For better image quality and more detailed analysis, you can configure Frigate to extract frames directly from recordings at a higher resolution:
|
||||||
|
|||||||
@ -912,7 +912,7 @@ def events_summary(
|
|||||||
"count": int(g.count or 0),
|
"count": int(g.count or 0),
|
||||||
}
|
}
|
||||||
|
|
||||||
return JSONResponse(content=list(grouped.values()))
|
return JSONResponse(content=sorted(grouped.values(), key=lambda x: x["day"]))
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
@router.get(
|
||||||
|
|||||||
@ -496,7 +496,7 @@ def all_recordings_summary(
|
|||||||
for g in period_query:
|
for g in period_query:
|
||||||
days[g.day] = True
|
days[g.day] = True
|
||||||
|
|
||||||
return JSONResponse(content=days)
|
return JSONResponse(content=dict(sorted(days.items())))
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
@router.get(
|
||||||
|
|||||||
@ -140,6 +140,10 @@ Evaluate in this order:
|
|||||||
The mere presence of an unidentified person in private areas during late night hours is inherently suspicious and warrants human review, regardless of what activity they appear to be doing or how brief the sequence is.""",
|
The mere presence of an unidentified person in private areas during late night hours is inherently suspicious and warrants human review, regardless of what activity they appear to be doing or how brief the sequence is.""",
|
||||||
title="Custom activity context prompt defining normal and suspicious activity patterns for this property.",
|
title="Custom activity context prompt defining normal and suspicious activity patterns for this property.",
|
||||||
)
|
)
|
||||||
|
camera_context: str = Field(
|
||||||
|
default="",
|
||||||
|
title="Spatial context about the camera's field of view to help with descriptive accuracy. Should describe physical features and locations outside the frame.",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ReviewConfig(FrigateBaseModel):
|
class ReviewConfig(FrigateBaseModel):
|
||||||
|
|||||||
@ -458,6 +458,7 @@ def run_analysis(
|
|||||||
genai_config.preferred_language,
|
genai_config.preferred_language,
|
||||||
genai_config.debug_save_thumbnails,
|
genai_config.debug_save_thumbnails,
|
||||||
genai_config.activity_context_prompt,
|
genai_config.activity_context_prompt,
|
||||||
|
genai_config.camera_context,
|
||||||
)
|
)
|
||||||
review_inference_speed.update(datetime.datetime.now().timestamp() - start)
|
review_inference_speed.update(datetime.datetime.now().timestamp() - start)
|
||||||
|
|
||||||
|
|||||||
@ -234,7 +234,10 @@ class OpenVINOModelRunner(BaseModelRunner):
|
|||||||
# Import here to avoid circular imports
|
# Import here to avoid circular imports
|
||||||
from frigate.embeddings.types import EnrichmentModelTypeEnum
|
from frigate.embeddings.types import EnrichmentModelTypeEnum
|
||||||
|
|
||||||
return model_type in [EnrichmentModelTypeEnum.paddleocr.value]
|
return model_type in [
|
||||||
|
EnrichmentModelTypeEnum.paddleocr.value,
|
||||||
|
EnrichmentModelTypeEnum.jina_v2.value,
|
||||||
|
]
|
||||||
|
|
||||||
def __init__(self, model_path: str, device: str, model_type: str, **kwargs):
|
def __init__(self, model_path: str, device: str, model_type: str, **kwargs):
|
||||||
self.model_path = model_path
|
self.model_path = model_path
|
||||||
@ -345,6 +348,16 @@ class OpenVINOModelRunner(BaseModelRunner):
|
|||||||
|
|
||||||
# Create tensor with the correct element type
|
# Create tensor with the correct element type
|
||||||
input_element_type = input_port.get_element_type()
|
input_element_type = input_port.get_element_type()
|
||||||
|
|
||||||
|
# Ensure input data matches the expected dtype to prevent type mismatches
|
||||||
|
# that can occur with models like Jina-CLIP v2 running on OpenVINO
|
||||||
|
expected_dtype = input_element_type.to_dtype()
|
||||||
|
if input_data.dtype != expected_dtype:
|
||||||
|
logger.debug(
|
||||||
|
f"Converting input '{input_name}' from {input_data.dtype} to {expected_dtype}"
|
||||||
|
)
|
||||||
|
input_data = input_data.astype(expected_dtype)
|
||||||
|
|
||||||
input_tensor = ov.Tensor(input_element_type, input_data.shape)
|
input_tensor = ov.Tensor(input_element_type, input_data.shape)
|
||||||
np.copyto(input_tensor.data, input_data)
|
np.copyto(input_tensor.data, input_data)
|
||||||
|
|
||||||
|
|||||||
@ -45,6 +45,7 @@ class GenAIClient:
|
|||||||
preferred_language: str | None,
|
preferred_language: str | None,
|
||||||
debug_save: bool,
|
debug_save: bool,
|
||||||
activity_context_prompt: str,
|
activity_context_prompt: str,
|
||||||
|
camera_context: str = "",
|
||||||
) -> ReviewMetadata | None:
|
) -> ReviewMetadata | None:
|
||||||
"""Generate a description for the review item activity."""
|
"""Generate a description for the review item activity."""
|
||||||
|
|
||||||
@ -69,6 +70,16 @@ class GenAIClient:
|
|||||||
else:
|
else:
|
||||||
return "\n- (No objects detected)"
|
return "\n- (No objects detected)"
|
||||||
|
|
||||||
|
def get_camera_context_section() -> str:
|
||||||
|
if camera_context:
|
||||||
|
return f"""## Camera Spatial Context
|
||||||
|
|
||||||
|
Use this spatial information when writing the title and scene description to provide more accurate context about where activity is occurring or where people/objects are moving to/from.
|
||||||
|
|
||||||
|
{camera_context}"""
|
||||||
|
return ""
|
||||||
|
|
||||||
|
camera_context_section = get_camera_context_section()
|
||||||
context_prompt = f"""
|
context_prompt = f"""
|
||||||
Your task is to analyze the sequence of images ({len(thumbnails)} total) taken in chronological order from the perspective of the {review_data["camera"].replace("_", " ")} security camera.
|
Your task is to analyze the sequence of images ({len(thumbnails)} total) taken in chronological order from the perspective of the {review_data["camera"].replace("_", " ")} security camera.
|
||||||
|
|
||||||
@ -76,6 +87,8 @@ Your task is to analyze the sequence of images ({len(thumbnails)} total) taken i
|
|||||||
|
|
||||||
{activity_context_prompt}
|
{activity_context_prompt}
|
||||||
|
|
||||||
|
{camera_context_section}
|
||||||
|
|
||||||
## Task Instructions
|
## Task Instructions
|
||||||
|
|
||||||
Your task is to provide a clear, accurate description of the scene that:
|
Your task is to provide a clear, accurate description of the scene that:
|
||||||
@ -100,7 +113,7 @@ When forming your description:
|
|||||||
## Response Format
|
## Response Format
|
||||||
|
|
||||||
Your response MUST be a flat JSON object with:
|
Your response MUST be a flat JSON object with:
|
||||||
- `title` (string): A concise, direct title that describes the purpose or overall action, not just what you literally see. Use names from "Objects in Scene" based on what you visually observe. If you see both a name and an unidentified object of the same type but visually observe only one person/object, use ONLY the name. Examples: "Joe walking dog", "Person taking out trash", "Joe accessing vehicle", "Joe and person on front porch".
|
- `title` (string): A concise, direct title that describes the purpose or overall action, not just what you literally see. {"Use spatial context when available to make titles more meaningful." if camera_context_section else ""} Use names from "Objects in Scene" based on what you visually observe. If you see both a name and an unidentified object of the same type but visually observe only one person/object, use ONLY the name. Examples: "Joe walking dog", "Person taking out trash", "Joe accessing vehicle", "Person leaving porch for driveway", "Joe and person on front porch".
|
||||||
- `scene` (string): A narrative description of what happens across the sequence from start to finish. **Only describe actions you can actually observe happening in the frames provided.** Do not infer or assume actions that aren't visible (e.g., if you see someone walking but never see them sit, don't say they sat down). Include setting, detected objects, and their observable actions. Avoid speculation or filling in assumed behaviors. Your description should align with and support the threat level you assign.
|
- `scene` (string): A narrative description of what happens across the sequence from start to finish. **Only describe actions you can actually observe happening in the frames provided.** Do not infer or assume actions that aren't visible (e.g., if you see someone walking but never see them sit, don't say they sat down). Include setting, detected objects, and their observable actions. Avoid speculation or filling in assumed behaviors. Your description should align with and support the threat level you assign.
|
||||||
- `confidence` (float): 0-1 confidence in your analysis. Higher confidence when objects/actions are clearly visible and context is unambiguous. Lower confidence when the sequence is unclear, objects are partially obscured, or context is ambiguous.
|
- `confidence` (float): 0-1 confidence in your analysis. Higher confidence when objects/actions are clearly visible and context is unambiguous. Lower confidence when the sequence is unclear, objects are partially obscured, or context is ambiguous.
|
||||||
- `potential_threat_level` (integer): 0, 1, or 2 as defined in "Normal Activity Patterns for This Property" above. Your threat level must be consistent with your scene description and the guidance above.
|
- `potential_threat_level` (integer): 0, 1, or 2 as defined in "Normal Activity Patterns for This Property" above. Your threat level must be consistent with your scene description and the guidance above.
|
||||||
|
|||||||
379
frigate/test/http_api/test_http_media.py
Normal file
379
frigate/test/http_api/test_http_media.py
Normal file
@ -0,0 +1,379 @@
|
|||||||
|
"""Unit tests for recordings/media API endpoints."""
|
||||||
|
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
import pytz
|
||||||
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
|
from frigate.api.auth import get_allowed_cameras_for_filter, get_current_user
|
||||||
|
from frigate.models import Recordings
|
||||||
|
from frigate.test.http_api.base_http_test import BaseTestHttp
|
||||||
|
|
||||||
|
|
||||||
|
class TestHttpMedia(BaseTestHttp):
|
||||||
|
"""Test media API endpoints, particularly recordings with DST handling."""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
"""Set up test fixtures."""
|
||||||
|
super().setUp([Recordings])
|
||||||
|
self.app = super().create_app()
|
||||||
|
|
||||||
|
# Mock auth to bypass camera access for tests
|
||||||
|
async def mock_get_current_user(request: Any):
|
||||||
|
return {"username": "test_user", "role": "admin"}
|
||||||
|
|
||||||
|
self.app.dependency_overrides[get_current_user] = mock_get_current_user
|
||||||
|
self.app.dependency_overrides[get_allowed_cameras_for_filter] = lambda: [
|
||||||
|
"front_door",
|
||||||
|
"back_door",
|
||||||
|
]
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
"""Clean up after tests."""
|
||||||
|
self.app.dependency_overrides.clear()
|
||||||
|
super().tearDown()
|
||||||
|
|
||||||
|
def test_recordings_summary_across_dst_spring_forward(self):
|
||||||
|
"""
|
||||||
|
Test recordings summary across spring DST transition (spring forward).
|
||||||
|
|
||||||
|
In 2024, DST in America/New_York transitions on March 10, 2024 at 2:00 AM
|
||||||
|
Clocks spring forward from 2:00 AM to 3:00 AM (EST to EDT)
|
||||||
|
"""
|
||||||
|
tz = pytz.timezone("America/New_York")
|
||||||
|
|
||||||
|
# March 9, 2024 at 12:00 PM EST (before DST)
|
||||||
|
march_9_noon = tz.localize(datetime(2024, 3, 9, 12, 0, 0)).timestamp()
|
||||||
|
|
||||||
|
# March 10, 2024 at 12:00 PM EDT (after DST transition)
|
||||||
|
march_10_noon = tz.localize(datetime(2024, 3, 10, 12, 0, 0)).timestamp()
|
||||||
|
|
||||||
|
# March 11, 2024 at 12:00 PM EDT (after DST)
|
||||||
|
march_11_noon = tz.localize(datetime(2024, 3, 11, 12, 0, 0)).timestamp()
|
||||||
|
|
||||||
|
with TestClient(self.app) as client:
|
||||||
|
# Insert recordings for each day
|
||||||
|
Recordings.insert(
|
||||||
|
id="recording_march_9",
|
||||||
|
path="/media/recordings/march_9.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=march_9_noon,
|
||||||
|
end_time=march_9_noon + 3600, # 1 hour recording
|
||||||
|
duration=3600,
|
||||||
|
motion=100,
|
||||||
|
objects=5,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
Recordings.insert(
|
||||||
|
id="recording_march_10",
|
||||||
|
path="/media/recordings/march_10.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=march_10_noon,
|
||||||
|
end_time=march_10_noon + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=150,
|
||||||
|
objects=8,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
Recordings.insert(
|
||||||
|
id="recording_march_11",
|
||||||
|
path="/media/recordings/march_11.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=march_11_noon,
|
||||||
|
end_time=march_11_noon + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=200,
|
||||||
|
objects=10,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
# Test recordings summary with America/New_York timezone
|
||||||
|
response = client.get(
|
||||||
|
"/recordings/summary",
|
||||||
|
params={"timezone": "America/New_York", "cameras": "all"},
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
summary = response.json()
|
||||||
|
|
||||||
|
# Verify we get exactly 3 days
|
||||||
|
assert len(summary) == 3, f"Expected 3 days, got {len(summary)}"
|
||||||
|
|
||||||
|
# Verify the correct dates are returned (API returns dict with True values)
|
||||||
|
assert "2024-03-09" in summary, f"Expected 2024-03-09 in {summary}"
|
||||||
|
assert "2024-03-10" in summary, f"Expected 2024-03-10 in {summary}"
|
||||||
|
assert "2024-03-11" in summary, f"Expected 2024-03-11 in {summary}"
|
||||||
|
assert summary["2024-03-09"] is True
|
||||||
|
assert summary["2024-03-10"] is True
|
||||||
|
assert summary["2024-03-11"] is True
|
||||||
|
|
||||||
|
def test_recordings_summary_across_dst_fall_back(self):
|
||||||
|
"""
|
||||||
|
Test recordings summary across fall DST transition (fall back).
|
||||||
|
|
||||||
|
In 2024, DST in America/New_York transitions on November 3, 2024 at 2:00 AM
|
||||||
|
Clocks fall back from 2:00 AM to 1:00 AM (EDT to EST)
|
||||||
|
"""
|
||||||
|
tz = pytz.timezone("America/New_York")
|
||||||
|
|
||||||
|
# November 2, 2024 at 12:00 PM EDT (before DST transition)
|
||||||
|
nov_2_noon = tz.localize(datetime(2024, 11, 2, 12, 0, 0)).timestamp()
|
||||||
|
|
||||||
|
# November 3, 2024 at 12:00 PM EST (after DST transition)
|
||||||
|
# Need to specify is_dst=False to get the time after fall back
|
||||||
|
nov_3_noon = tz.localize(
|
||||||
|
datetime(2024, 11, 3, 12, 0, 0), is_dst=False
|
||||||
|
).timestamp()
|
||||||
|
|
||||||
|
# November 4, 2024 at 12:00 PM EST (after DST)
|
||||||
|
nov_4_noon = tz.localize(datetime(2024, 11, 4, 12, 0, 0)).timestamp()
|
||||||
|
|
||||||
|
with TestClient(self.app) as client:
|
||||||
|
# Insert recordings for each day
|
||||||
|
Recordings.insert(
|
||||||
|
id="recording_nov_2",
|
||||||
|
path="/media/recordings/nov_2.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=nov_2_noon,
|
||||||
|
end_time=nov_2_noon + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=100,
|
||||||
|
objects=5,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
Recordings.insert(
|
||||||
|
id="recording_nov_3",
|
||||||
|
path="/media/recordings/nov_3.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=nov_3_noon,
|
||||||
|
end_time=nov_3_noon + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=150,
|
||||||
|
objects=8,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
Recordings.insert(
|
||||||
|
id="recording_nov_4",
|
||||||
|
path="/media/recordings/nov_4.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=nov_4_noon,
|
||||||
|
end_time=nov_4_noon + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=200,
|
||||||
|
objects=10,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
# Test recordings summary with America/New_York timezone
|
||||||
|
response = client.get(
|
||||||
|
"/recordings/summary",
|
||||||
|
params={"timezone": "America/New_York", "cameras": "all"},
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
summary = response.json()
|
||||||
|
|
||||||
|
# Verify we get exactly 3 days
|
||||||
|
assert len(summary) == 3, f"Expected 3 days, got {len(summary)}"
|
||||||
|
|
||||||
|
# Verify the correct dates are returned (API returns dict with True values)
|
||||||
|
assert "2024-11-02" in summary, f"Expected 2024-11-02 in {summary}"
|
||||||
|
assert "2024-11-03" in summary, f"Expected 2024-11-03 in {summary}"
|
||||||
|
assert "2024-11-04" in summary, f"Expected 2024-11-04 in {summary}"
|
||||||
|
assert summary["2024-11-02"] is True
|
||||||
|
assert summary["2024-11-03"] is True
|
||||||
|
assert summary["2024-11-04"] is True
|
||||||
|
|
||||||
|
def test_recordings_summary_multiple_cameras_across_dst(self):
|
||||||
|
"""
|
||||||
|
Test recordings summary with multiple cameras across DST boundary.
|
||||||
|
"""
|
||||||
|
tz = pytz.timezone("America/New_York")
|
||||||
|
|
||||||
|
# March 9, 2024 at 10:00 AM EST (before DST)
|
||||||
|
march_9_morning = tz.localize(datetime(2024, 3, 9, 10, 0, 0)).timestamp()
|
||||||
|
|
||||||
|
# March 10, 2024 at 3:00 PM EDT (after DST transition)
|
||||||
|
march_10_afternoon = tz.localize(datetime(2024, 3, 10, 15, 0, 0)).timestamp()
|
||||||
|
|
||||||
|
with TestClient(self.app) as client:
|
||||||
|
# Insert recordings for front_door on March 9
|
||||||
|
Recordings.insert(
|
||||||
|
id="front_march_9",
|
||||||
|
path="/media/recordings/front_march_9.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=march_9_morning,
|
||||||
|
end_time=march_9_morning + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=100,
|
||||||
|
objects=5,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
# Insert recordings for back_door on March 10
|
||||||
|
Recordings.insert(
|
||||||
|
id="back_march_10",
|
||||||
|
path="/media/recordings/back_march_10.mp4",
|
||||||
|
camera="back_door",
|
||||||
|
start_time=march_10_afternoon,
|
||||||
|
end_time=march_10_afternoon + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=150,
|
||||||
|
objects=8,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
# Test with all cameras
|
||||||
|
response = client.get(
|
||||||
|
"/recordings/summary",
|
||||||
|
params={"timezone": "America/New_York", "cameras": "all"},
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
summary = response.json()
|
||||||
|
|
||||||
|
# Verify we get both days
|
||||||
|
assert len(summary) == 2, f"Expected 2 days, got {len(summary)}"
|
||||||
|
assert "2024-03-09" in summary
|
||||||
|
assert "2024-03-10" in summary
|
||||||
|
assert summary["2024-03-09"] is True
|
||||||
|
assert summary["2024-03-10"] is True
|
||||||
|
|
||||||
|
def test_recordings_summary_at_dst_transition_time(self):
|
||||||
|
"""
|
||||||
|
Test recordings that span the exact DST transition time.
|
||||||
|
"""
|
||||||
|
tz = pytz.timezone("America/New_York")
|
||||||
|
|
||||||
|
# March 10, 2024 at 1:00 AM EST (1 hour before DST transition)
|
||||||
|
# At 2:00 AM, clocks jump to 3:00 AM
|
||||||
|
before_transition = tz.localize(datetime(2024, 3, 10, 1, 0, 0)).timestamp()
|
||||||
|
|
||||||
|
# Recording that spans the transition (1:00 AM to 3:30 AM EDT)
|
||||||
|
# This is 1.5 hours of actual time but spans the "missing" hour
|
||||||
|
after_transition = tz.localize(datetime(2024, 3, 10, 3, 30, 0)).timestamp()
|
||||||
|
|
||||||
|
with TestClient(self.app) as client:
|
||||||
|
Recordings.insert(
|
||||||
|
id="recording_during_transition",
|
||||||
|
path="/media/recordings/transition.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=before_transition,
|
||||||
|
end_time=after_transition,
|
||||||
|
duration=after_transition - before_transition,
|
||||||
|
motion=100,
|
||||||
|
objects=5,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
response = client.get(
|
||||||
|
"/recordings/summary",
|
||||||
|
params={"timezone": "America/New_York", "cameras": "all"},
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
summary = response.json()
|
||||||
|
|
||||||
|
# The recording should appear on March 10
|
||||||
|
assert len(summary) == 1
|
||||||
|
assert "2024-03-10" in summary
|
||||||
|
assert summary["2024-03-10"] is True
|
||||||
|
|
||||||
|
def test_recordings_summary_utc_timezone(self):
|
||||||
|
"""
|
||||||
|
Test recordings summary with UTC timezone (no DST).
|
||||||
|
"""
|
||||||
|
# Use UTC timestamps directly
|
||||||
|
march_9_utc = datetime(2024, 3, 9, 17, 0, 0, tzinfo=timezone.utc).timestamp()
|
||||||
|
march_10_utc = datetime(2024, 3, 10, 17, 0, 0, tzinfo=timezone.utc).timestamp()
|
||||||
|
|
||||||
|
with TestClient(self.app) as client:
|
||||||
|
Recordings.insert(
|
||||||
|
id="recording_march_9_utc",
|
||||||
|
path="/media/recordings/march_9_utc.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=march_9_utc,
|
||||||
|
end_time=march_9_utc + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=100,
|
||||||
|
objects=5,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
Recordings.insert(
|
||||||
|
id="recording_march_10_utc",
|
||||||
|
path="/media/recordings/march_10_utc.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=march_10_utc,
|
||||||
|
end_time=march_10_utc + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=150,
|
||||||
|
objects=8,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
# Test with UTC timezone
|
||||||
|
response = client.get(
|
||||||
|
"/recordings/summary", params={"timezone": "utc", "cameras": "all"}
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
summary = response.json()
|
||||||
|
|
||||||
|
# Verify we get both days
|
||||||
|
assert len(summary) == 2
|
||||||
|
assert "2024-03-09" in summary
|
||||||
|
assert "2024-03-10" in summary
|
||||||
|
assert summary["2024-03-09"] is True
|
||||||
|
assert summary["2024-03-10"] is True
|
||||||
|
|
||||||
|
def test_recordings_summary_no_recordings(self):
|
||||||
|
"""
|
||||||
|
Test recordings summary when no recordings exist.
|
||||||
|
"""
|
||||||
|
with TestClient(self.app) as client:
|
||||||
|
response = client.get(
|
||||||
|
"/recordings/summary",
|
||||||
|
params={"timezone": "America/New_York", "cameras": "all"},
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
summary = response.json()
|
||||||
|
assert len(summary) == 0
|
||||||
|
|
||||||
|
def test_recordings_summary_single_camera_filter(self):
|
||||||
|
"""
|
||||||
|
Test recordings summary filtered to a single camera.
|
||||||
|
"""
|
||||||
|
tz = pytz.timezone("America/New_York")
|
||||||
|
march_10_noon = tz.localize(datetime(2024, 3, 10, 12, 0, 0)).timestamp()
|
||||||
|
|
||||||
|
with TestClient(self.app) as client:
|
||||||
|
# Insert recordings for both cameras
|
||||||
|
Recordings.insert(
|
||||||
|
id="front_recording",
|
||||||
|
path="/media/recordings/front.mp4",
|
||||||
|
camera="front_door",
|
||||||
|
start_time=march_10_noon,
|
||||||
|
end_time=march_10_noon + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=100,
|
||||||
|
objects=5,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
Recordings.insert(
|
||||||
|
id="back_recording",
|
||||||
|
path="/media/recordings/back.mp4",
|
||||||
|
camera="back_door",
|
||||||
|
start_time=march_10_noon,
|
||||||
|
end_time=march_10_noon + 3600,
|
||||||
|
duration=3600,
|
||||||
|
motion=150,
|
||||||
|
objects=8,
|
||||||
|
).execute()
|
||||||
|
|
||||||
|
# Test with only front_door camera
|
||||||
|
response = client.get(
|
||||||
|
"/recordings/summary",
|
||||||
|
params={"timezone": "America/New_York", "cameras": "front_door"},
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
summary = response.json()
|
||||||
|
assert len(summary) == 1
|
||||||
|
assert "2024-03-10" in summary
|
||||||
|
assert summary["2024-03-10"] is True
|
||||||
@ -196,7 +196,9 @@ class CameraWatchdog(threading.Thread):
|
|||||||
self.sleeptime = self.config.ffmpeg.retry_interval
|
self.sleeptime = self.config.ffmpeg.retry_interval
|
||||||
|
|
||||||
self.config_subscriber = CameraConfigUpdateSubscriber(
|
self.config_subscriber = CameraConfigUpdateSubscriber(
|
||||||
None, {config.name: config}, [CameraConfigUpdateEnum.enabled]
|
None,
|
||||||
|
{config.name: config},
|
||||||
|
[CameraConfigUpdateEnum.enabled, CameraConfigUpdateEnum.record],
|
||||||
)
|
)
|
||||||
self.requestor = InterProcessRequestor()
|
self.requestor = InterProcessRequestor()
|
||||||
self.was_enabled = self.config.enabled
|
self.was_enabled = self.config.enabled
|
||||||
|
|||||||
@ -218,7 +218,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"label": {
|
"label": {
|
||||||
"back": "Torna enrere"
|
"back": "Torna enrere",
|
||||||
|
"hide": "Oculta {{item}}",
|
||||||
|
"show": "Mostra {{item}}",
|
||||||
|
"ID": "ID"
|
||||||
},
|
},
|
||||||
"button": {
|
"button": {
|
||||||
"apply": "Aplicar",
|
"apply": "Aplicar",
|
||||||
@ -281,5 +284,14 @@
|
|||||||
"readTheDocumentation": "Llegir la documentació",
|
"readTheDocumentation": "Llegir la documentació",
|
||||||
"information": {
|
"information": {
|
||||||
"pixels": "{{area}}px"
|
"pixels": "{{area}}px"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"two": "{{0}} i {{1}}",
|
||||||
|
"many": "{{items}}, i {{last}}",
|
||||||
|
"separatorWithSpace": ",· "
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"optional": "Opcional",
|
||||||
|
"internalID": "L'ID intern que Frigate s'utilitza a la configuració i a la base de dades"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -117,6 +117,7 @@
|
|||||||
"search": {
|
"search": {
|
||||||
"placeholder": "Cerca per etiqueta o subetiqueta..."
|
"placeholder": "Cerca per etiqueta o subetiqueta..."
|
||||||
},
|
},
|
||||||
"noImages": "No s'han trobat miniatures per a aquesta càmera"
|
"noImages": "No s'han trobat miniatures per a aquesta càmera",
|
||||||
|
"unknownLabel": "Imatge activadora desada"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,10 @@
|
|||||||
"renameCategory": "Reanomena la classe",
|
"renameCategory": "Reanomena la classe",
|
||||||
"deleteCategory": "Suprimeix la classe",
|
"deleteCategory": "Suprimeix la classe",
|
||||||
"deleteImages": "Suprimeix les imatges",
|
"deleteImages": "Suprimeix les imatges",
|
||||||
"trainModel": "Model de tren"
|
"trainModel": "Model de tren",
|
||||||
|
"addClassification": "Afegeix una classificació",
|
||||||
|
"deleteModels": "Suprimeix els models",
|
||||||
|
"editModel": "Edita el model"
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": {
|
"success": {
|
||||||
@ -13,13 +16,19 @@
|
|||||||
"deletedImage": "Imatges suprimides",
|
"deletedImage": "Imatges suprimides",
|
||||||
"categorizedImage": "Imatge classificada amb èxit",
|
"categorizedImage": "Imatge classificada amb èxit",
|
||||||
"trainedModel": "Model entrenat amb èxit.",
|
"trainedModel": "Model entrenat amb èxit.",
|
||||||
"trainingModel": "S'ha iniciat amb èxit la formació de models."
|
"trainingModel": "S'ha iniciat amb èxit la formació de models.",
|
||||||
|
"deletedModel_one": "S'ha suprimit correctament el model {{count}}",
|
||||||
|
"deletedModel_many": "S'han suprimit correctament {{count}} models",
|
||||||
|
"deletedModel_other": "",
|
||||||
|
"updatedModel": "S'ha actualitzat correctament la configuració del model"
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"deleteImageFailed": "No s'ha pogut suprimir: {{errorMessage}}",
|
"deleteImageFailed": "No s'ha pogut suprimir: {{errorMessage}}",
|
||||||
"deleteCategoryFailed": "No s'ha pogut suprimir la classe: {{errorMessage}}",
|
"deleteCategoryFailed": "No s'ha pogut suprimir la classe: {{errorMessage}}",
|
||||||
"categorizeFailed": "No s'ha pogut categoritzar la imatge: {{errorMessage}}",
|
"categorizeFailed": "No s'ha pogut categoritzar la imatge: {{errorMessage}}",
|
||||||
"trainingFailed": "No s'ha pogut iniciar l'entrenament del model: {{errorMessage}}"
|
"trainingFailed": "No s'ha pogut iniciar l'entrenament del model: {{errorMessage}}",
|
||||||
|
"deleteModelFailed": "No s'ha pogut suprimir el model: {{errorMessage}}",
|
||||||
|
"updateModelFailed": "No s'ha pogut actualitzar el model: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"deleteCategory": {
|
"deleteCategory": {
|
||||||
@ -43,7 +52,8 @@
|
|||||||
},
|
},
|
||||||
"train": {
|
"train": {
|
||||||
"title": "Classificacions recents",
|
"title": "Classificacions recents",
|
||||||
"aria": "Selecciona les classificacions recents"
|
"aria": "Selecciona les classificacions recents",
|
||||||
|
"titleShort": "Recent"
|
||||||
},
|
},
|
||||||
"categories": "Classes",
|
"categories": "Classes",
|
||||||
"createCategory": {
|
"createCategory": {
|
||||||
@ -98,7 +108,8 @@
|
|||||||
"stateRequiresTwoClasses": "Els models d'estat requereixen almenys 2 classes",
|
"stateRequiresTwoClasses": "Els models d'estat requereixen almenys 2 classes",
|
||||||
"objectLabelRequired": "Seleccioneu una etiqueta d'objecte",
|
"objectLabelRequired": "Seleccioneu una etiqueta d'objecte",
|
||||||
"objectTypeRequired": "Seleccioneu un tipus de classificació"
|
"objectTypeRequired": "Seleccioneu un tipus de classificació"
|
||||||
}
|
},
|
||||||
|
"states": "Estats"
|
||||||
},
|
},
|
||||||
"step2": {
|
"step2": {
|
||||||
"description": "Seleccioneu les càmeres i definiu l'àrea a monitoritzar per a cada càmera. El model classificarà l'estat d'aquestes àrees.",
|
"description": "Seleccioneu les càmeres i definiu l'àrea a monitoritzar per a cada càmera. El model classificarà l'estat d'aquestes àrees.",
|
||||||
@ -131,5 +142,23 @@
|
|||||||
},
|
},
|
||||||
"generateSuccess": "Imatges de mostra generades amb èxit"
|
"generateSuccess": "Imatges de mostra generades amb èxit"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"title": "Suprimeix el model de classificació",
|
||||||
|
"single": "Esteu segur que voleu suprimir {{name}}? Això suprimirà permanentment totes les dades associades, incloses les imatges i les dades d'entrenament. Aquesta acció no es pot desfer.",
|
||||||
|
"desc": "Esteu segur que voleu suprimir {{count}} model(s)? Això suprimirà permanentment totes les dades associades, incloses les imatges i les dades d'entrenament. Aquesta acció no es pot desfer."
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"objects": "Objectes",
|
||||||
|
"states": "Estats"
|
||||||
|
},
|
||||||
|
"details": {
|
||||||
|
"scoreInfo": "La puntuació representa la confiança mitjana de la classificació en totes les deteccions d'aquest objecte."
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"title": "Edita el model de classificació",
|
||||||
|
"descriptionState": "Edita les classes per a aquest model de classificació d'estats. Els canvis requeriran tornar a entrenar el model.",
|
||||||
|
"descriptionObject": "Edita el tipus d'objecte i el tipus de classificació per a aquest model de classificació d'objectes.",
|
||||||
|
"stateClassesInfo": "Nota: Canviar les classes d'estat requereix tornar a entrenar el model amb les classes actualitzades."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,10 +43,17 @@
|
|||||||
"aria": "Canvia la vista de detall",
|
"aria": "Canvia la vista de detall",
|
||||||
"trackedObject_other": "objectes",
|
"trackedObject_other": "objectes",
|
||||||
"noObjectDetailData": "No hi ha dades de detall d'objecte disponibles.",
|
"noObjectDetailData": "No hi ha dades de detall d'objecte disponibles.",
|
||||||
"label": "Detall"
|
"label": "Detall",
|
||||||
|
"settings": "Configuració de la vista detallada",
|
||||||
|
"alwaysExpandActive": {
|
||||||
|
"title": "Expandeix sempre actiu",
|
||||||
|
"desc": "Expandeix sempre els detalls de l'objecte de la revisió activa quan estigui disponible."
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"objectTrack": {
|
"objectTrack": {
|
||||||
"clickToSeek": "Feu clic per cercar aquesta hora",
|
"clickToSeek": "Feu clic per cercar aquesta hora",
|
||||||
"trackedPoint": "Punt de seguiment"
|
"trackedPoint": "Punt de seguiment"
|
||||||
}
|
},
|
||||||
|
"zoomIn": "Amplia",
|
||||||
|
"zoomOut": "Redueix"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,7 +84,8 @@
|
|||||||
"details": "detalls",
|
"details": "detalls",
|
||||||
"snapshot": "instantània",
|
"snapshot": "instantània",
|
||||||
"video": "vídeo",
|
"video": "vídeo",
|
||||||
"object_lifecycle": "cicle de vida de l'objecte"
|
"object_lifecycle": "cicle de vida de l'objecte",
|
||||||
|
"thumbnail": "miniatura"
|
||||||
},
|
},
|
||||||
"details": {
|
"details": {
|
||||||
"timestamp": "Marca temporal",
|
"timestamp": "Marca temporal",
|
||||||
@ -240,7 +241,7 @@
|
|||||||
"noImageFound": "No s'ha trobat cap imatge amb aquesta hora.",
|
"noImageFound": "No s'ha trobat cap imatge amb aquesta hora.",
|
||||||
"createObjectMask": "Crear màscara d'objecte",
|
"createObjectMask": "Crear màscara d'objecte",
|
||||||
"adjustAnnotationSettings": "Ajustar configuració d'anotacions",
|
"adjustAnnotationSettings": "Ajustar configuració d'anotacions",
|
||||||
"scrollViewTips": "Desplaça per veure els moments significants del cicle de vida d'aquest objecte.",
|
"scrollViewTips": "Feu clic per veure els moments significatius del cicle de vida d'aquest objecte.",
|
||||||
"autoTrackingTips": "Limitar les posicións de la caixa serà inacurat per càmeras de seguiment automàtic.",
|
"autoTrackingTips": "Limitar les posicións de la caixa serà inacurat per càmeras de seguiment automàtic.",
|
||||||
"count": "{{first}} de {{second}}",
|
"count": "{{first}} de {{second}}",
|
||||||
"trackedPoint": "Punt Seguit",
|
"trackedPoint": "Punt Seguit",
|
||||||
@ -270,7 +271,7 @@
|
|||||||
},
|
},
|
||||||
"offset": {
|
"offset": {
|
||||||
"label": "Òfset d'Anotació",
|
"label": "Òfset d'Anotació",
|
||||||
"desc": "Aquestes dades provenen del flux de detecció de la càmera, però se superposen a les imatges del flux de gravació. És poc probable que els dos fluxos estiguin perfectament sincronitzats. Com a resultat, el quadre delimitador i el metratge no s'alinearan perfectament. Tanmateix, es pot utilitzar el camp <code>annotation_offset</code> per ajustar-ho.",
|
"desc": "Aquestes dades provenen del flux de detecció de la càmera, però se superposen a les imatges del flux de gravació. És poc probable que els dos fluxos estiguin perfectament sincronitzats. Com a resultat, el quadre delimitador i les imatges no s'alinearan perfectament. Tanmateix, es pot utilitzar el camp <code>annotation_offset</code> per ajustar-ho.",
|
||||||
"millisecondsToOffset": "Millisegons per l'òfset de detecció d'anotacions per. <em>Per defecte: 0</em>",
|
"millisecondsToOffset": "Millisegons per l'òfset de detecció d'anotacions per. <em>Per defecte: 0</em>",
|
||||||
"tips": "CONSELL: Imagineu-vos que hi ha un clip d'esdeveniment amb una persona caminant d'esquerra a dreta. Si el quadre delimitador de la cronologia de l'esdeveniment està constantment a l'esquerra de la persona, aleshores s'hauria de disminuir el valor. De la mateixa manera, si una persona camina d'esquerra a dreta i el quadre delimitador està constantment per davant de la persona, aleshores s'hauria d'augmentar el valor.",
|
"tips": "CONSELL: Imagineu-vos que hi ha un clip d'esdeveniment amb una persona caminant d'esquerra a dreta. Si el quadre delimitador de la cronologia de l'esdeveniment està constantment a l'esquerra de la persona, aleshores s'hauria de disminuir el valor. De la mateixa manera, si una persona camina d'esquerra a dreta i el quadre delimitador està constantment per davant de la persona, aleshores s'hauria d'augmentar el valor.",
|
||||||
"toast": {
|
"toast": {
|
||||||
|
|||||||
@ -13,5 +13,11 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"renameExportFailed": "Error al canviar el nom de l’exportació: {{errorMessage}}"
|
"renameExportFailed": "Error al canviar el nom de l’exportació: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"shareExport": "Comparteix l'exportació",
|
||||||
|
"downloadVideo": "Baixa el vídeo",
|
||||||
|
"editName": "Edita el nom",
|
||||||
|
"deleteExport": "Suprimeix l'exportació"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,12 +55,12 @@
|
|||||||
"searchFor": "Buscar {{inputValue}}",
|
"searchFor": "Buscar {{inputValue}}",
|
||||||
"button": {
|
"button": {
|
||||||
"clear": "Netejar cerca",
|
"clear": "Netejar cerca",
|
||||||
"save": "Desar la cerca",
|
"save": "Desa la cerca",
|
||||||
"delete": "Suprimeix la recerca desada",
|
"delete": "Elimina la recerca desada",
|
||||||
"filterInformation": "Informació de filtre",
|
"filterInformation": "Informació del filtre",
|
||||||
"filterActive": "Filtres actius"
|
"filterActive": "Filtres actius"
|
||||||
},
|
},
|
||||||
"trackedObjectId": "ID d'objecte rastrejat",
|
"trackedObjectId": "ID de l'objecte rastrejat",
|
||||||
"placeholder": {
|
"placeholder": {
|
||||||
"search": "Cercar…"
|
"search": "Cercar…"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -49,6 +49,10 @@
|
|||||||
"playAlertVideos": {
|
"playAlertVideos": {
|
||||||
"label": "Reproduir vídeos d’alerta",
|
"label": "Reproduir vídeos d’alerta",
|
||||||
"desc": "Per defecte, les alertes recents al tauler en directe es reprodueixen com a vídeos petits en bucle. Desactiva aquesta opció per mostrar només una imatge estàtica de les alertes recents en aquest dispositiu/navegador."
|
"desc": "Per defecte, les alertes recents al tauler en directe es reprodueixen com a vídeos petits en bucle. Desactiva aquesta opció per mostrar només una imatge estàtica de les alertes recents en aquest dispositiu/navegador."
|
||||||
|
},
|
||||||
|
"displayCameraNames": {
|
||||||
|
"label": "Mostra sempre els noms de la càmera",
|
||||||
|
"desc": "Mostra sempre els noms de les càmeres en un xip al tauler de visualització en directe multicàmera."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"storedLayouts": {
|
"storedLayouts": {
|
||||||
@ -695,7 +699,9 @@
|
|||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"alert": "Marcar com Alerta",
|
"alert": "Marcar com Alerta",
|
||||||
"notification": "Enviar Notificació"
|
"notification": "Enviar Notificació",
|
||||||
|
"sub_label": "Afegeix una subetiqueta",
|
||||||
|
"attribute": "Afegeix un atribut"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"createTrigger": {
|
"createTrigger": {
|
||||||
@ -713,25 +719,28 @@
|
|||||||
"form": {
|
"form": {
|
||||||
"name": {
|
"name": {
|
||||||
"title": "Nom",
|
"title": "Nom",
|
||||||
"placeholder": "Entrar el nom del disparador",
|
"placeholder": "Anomena aquest activador",
|
||||||
"error": {
|
"error": {
|
||||||
"minLength": "El nom ha de tenir almenys 2 caràcters de llargada.",
|
"minLength": "El camp ha de tenir almenys 2 caràcters.",
|
||||||
"invalidCharacters": "El nom només pot contenir lletres, números, guions i guinons baixos.",
|
"invalidCharacters": "El camp només pot contenir lletres, números, guions baixos i guions.",
|
||||||
"alreadyExists": "El disparador amb aquest nom ja existeix per aquesta càmera."
|
"alreadyExists": "El disparador amb aquest nom ja existeix per aquesta càmera."
|
||||||
}
|
},
|
||||||
|
"description": "Introduïu un nom o una descripció únics per a identificar aquest activador"
|
||||||
},
|
},
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"description": "Activar o desactivar aquest disparador"
|
"description": "Activar o desactivar aquest disparador"
|
||||||
},
|
},
|
||||||
"type": {
|
"type": {
|
||||||
"title": "Tipus",
|
"title": "Tipus",
|
||||||
"placeholder": "Selecciona un tipus de disparador"
|
"placeholder": "Selecciona un tipus de disparador",
|
||||||
|
"description": "Activa quan es detecta una descripció similar d'un objecte rastrejat",
|
||||||
|
"thumbnail": "Activa quan es detecti una miniatura d'objecte rastrejada similar"
|
||||||
},
|
},
|
||||||
"content": {
|
"content": {
|
||||||
"title": "Contingut",
|
"title": "Contingut",
|
||||||
"imagePlaceholder": "Selecciona una imatge",
|
"imagePlaceholder": "Selecciona una miniatura",
|
||||||
"textPlaceholder": "Entra el contingut de text",
|
"textPlaceholder": "Entra el contingut de text",
|
||||||
"imageDesc": "Selecciona una imatge per disparar aquesta acció quan una imatge similar sigui detectada.",
|
"imageDesc": "Només es mostren les 100 miniatures més recents. Si no podeu trobar la miniatura desitjada, reviseu els objectes anteriors a Explora i configureu un activador des del menú.",
|
||||||
"textDesc": "Entra el text per disparar aquesta acció quan es detecti una descripció d'objecte a rastrejar similar.",
|
"textDesc": "Entra el text per disparar aquesta acció quan es detecti una descripció d'objecte a rastrejar similar.",
|
||||||
"error": {
|
"error": {
|
||||||
"required": "Contigunt requerit."
|
"required": "Contigunt requerit."
|
||||||
@ -742,11 +751,12 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"min": "El llindar ha de ser mínim 0",
|
"min": "El llindar ha de ser mínim 0",
|
||||||
"max": "El llindar ha de ser máxim 1"
|
"max": "El llindar ha de ser máxim 1"
|
||||||
}
|
},
|
||||||
|
"desc": "Estableix el llindar de similitud per a aquest activador. Un llindar més alt significa que es requereix una coincidència més propera per disparar el disparador."
|
||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"title": "Accions",
|
"title": "Accions",
|
||||||
"desc": "Per defecte, Frigate dispara un missatge MQTT per tots els disparadors. Tria una acció adicional per realitzar quan aquest disparador dispari.",
|
"desc": "Per defecte, Frigate dispara un missatge MQTT per a tots els activadors. Subetiquetes afegeix el nom de l'activador a l'etiqueta de l'objecte. Els atributs són metadades cercables emmagatzemades per separat a les metadades de l'objecte rastrejat.",
|
||||||
"error": {
|
"error": {
|
||||||
"min": "S'ha de seleccionar una acció com a mínim."
|
"min": "S'ha de seleccionar una acció com a mínim."
|
||||||
}
|
}
|
||||||
@ -772,13 +782,30 @@
|
|||||||
},
|
},
|
||||||
"documentTitle": "Disparadors",
|
"documentTitle": "Disparadors",
|
||||||
"management": {
|
"management": {
|
||||||
"title": "Gestió de disparadors",
|
"title": "Activadors",
|
||||||
"desc": "Gestionar els disparadors de {{camera}}. Usa les tipus de miniatures per disparar miniatures similars a l'objecte a seguir seleccionat, i el tipus de descripció per disparar en cas de descripcions similars a l'especificada."
|
"desc": "Gestionar els disparadors de {{camera}}. Usa les tipus de miniatures per disparar miniatures similars a l'objecte a seguir seleccionat, i el tipus de descripció per disparar en cas de descripcions similars a l'especificada."
|
||||||
},
|
},
|
||||||
"addTrigger": "Afegir disaprador",
|
"addTrigger": "Afegir disaprador",
|
||||||
"semanticSearch": {
|
"semanticSearch": {
|
||||||
"desc": "La cerca semàntica ha d'estar activada per a utilitzar els activadors.",
|
"desc": "La cerca semàntica ha d'estar activada per a utilitzar els activadors.",
|
||||||
"title": "La cerca semàntica està desactivada"
|
"title": "La cerca semàntica està desactivada"
|
||||||
|
},
|
||||||
|
"wizard": {
|
||||||
|
"title": "Crea un activador",
|
||||||
|
"step1": {
|
||||||
|
"description": "Configura la configuració bàsica per al vostre activador."
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"description": "Configura el contingut que activarà aquesta acció."
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"description": "Configura el llindar i les accions d'aquest activador."
|
||||||
|
},
|
||||||
|
"steps": {
|
||||||
|
"nameAndType": "Nom i tipus",
|
||||||
|
"configureData": "Configura les dades",
|
||||||
|
"thresholdAndActions": "Llindar i accions"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"roles": {
|
"roles": {
|
||||||
@ -831,7 +858,9 @@
|
|||||||
"createRole": "Rol {{role}} creat exitosament",
|
"createRole": "Rol {{role}} creat exitosament",
|
||||||
"updateCameras": "Càmeres actualitzades per al rol {{role}}",
|
"updateCameras": "Càmeres actualitzades per al rol {{role}}",
|
||||||
"deleteRole": "Rol {{role}} eliminat exitosament",
|
"deleteRole": "Rol {{role}} eliminat exitosament",
|
||||||
"userRolesUpdated": "{{count}} usuari(s) asignats a aquest rol s'han actualitzat a 'visor', i tenen accés a totes les càmeres."
|
"userRolesUpdated_one": "{{count}} usuari(s) asignats a aquest rol s'han actualitzat a 'visor', i tenen accés a totes les càmeres.",
|
||||||
|
"userRolesUpdated_many": "",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Error al crear el rol: {{errorMessage}}",
|
"createRoleFailed": "Error al crear el rol: {{errorMessage}}",
|
||||||
@ -985,7 +1014,9 @@
|
|||||||
"estimatedBandwidth": "Amplada de banda estimad",
|
"estimatedBandwidth": "Amplada de banda estimad",
|
||||||
"roles": "Rols",
|
"roles": "Rols",
|
||||||
"streamValidated": "El flux {{number}} s'ha validat correctament",
|
"streamValidated": "El flux {{number}} s'ha validat correctament",
|
||||||
"streamValidationFailed": "Ha fallat la validació del flux {{number}}"
|
"streamValidationFailed": "Ha fallat la validació del flux {{number}}",
|
||||||
|
"ffmpegModule": "Usa el mode de compatibilitat del flux",
|
||||||
|
"ffmpegModuleDescription": "Si el flux no es carrega després de diversos intents, proveu d'activar-ho. Quan està activat, Frigate utilitzarà el mòdul ffmpeg amb go2rtc. Això pot proporcionar una millor compatibilitat amb alguns fluxos de càmera."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cameraManagement": {
|
"cameraManagement": {
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
"unknownError": "Neznámá chyba. Zkontrolujte logy.",
|
"unknownError": "Neznámá chyba. Zkontrolujte logy.",
|
||||||
"webUnknownError": "Neznámá chuba. Zkontrolujte logy konzoly.",
|
"webUnknownError": "Neznámá chuba. Zkontrolujte logy konzoly.",
|
||||||
"rateLimit": "Limit požadavků překročen. Zkuste to znovu později."
|
"rateLimit": "Limit požadavků překročen. Zkuste to znovu později."
|
||||||
}
|
},
|
||||||
|
"firstTimeLogin": "Přihlašujete se poprvé? Přihlašovací údaje jsou vypsány v logu Frigate."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1 +1,7 @@
|
|||||||
{}
|
{
|
||||||
|
"documentTitle": "Klasifikační modely",
|
||||||
|
"button": {
|
||||||
|
"deleteClassificationAttempts": "Odstranit Klasifikační obrazy",
|
||||||
|
"renameCategory": "Přejmenovat třídu"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -41,7 +41,7 @@
|
|||||||
"aria": "Vybrat trénink"
|
"aria": "Vybrat trénink"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"addFace": "Prúvodce přidání nové kolekce do Knižnice obličejů.",
|
"addFace": "Přidejte novou kolekci do Knihovny obličejů nahráním prvního obrázku.",
|
||||||
"placeholder": "Zadejte název pro tuto kolekci",
|
"placeholder": "Zadejte název pro tuto kolekci",
|
||||||
"invalidName": "Neplatný název. Názvy mohou obsahovat pouze písmena, čísla, mezery, apostrofy, podtržítka a pomlčky."
|
"invalidName": "Neplatný název. Názvy mohou obsahovat pouze písmena, čísla, mezery, apostrofy, podtržítka a pomlčky."
|
||||||
},
|
},
|
||||||
|
|||||||
@ -11,7 +11,8 @@
|
|||||||
"general": "Obecné nastavení - Frigate",
|
"general": "Obecné nastavení - Frigate",
|
||||||
"frigatePlus": "Frigate+ nastavení - Frigate",
|
"frigatePlus": "Frigate+ nastavení - Frigate",
|
||||||
"enrichments": "Nastavení obohacení - Frigate",
|
"enrichments": "Nastavení obohacení - Frigate",
|
||||||
"cameraManagement": "Správa kamer - Frigate"
|
"cameraManagement": "Správa kamer - Frigate",
|
||||||
|
"cameraReview": "Nastavení kontroly kamery - Frigate"
|
||||||
},
|
},
|
||||||
"frigatePlus": {
|
"frigatePlus": {
|
||||||
"toast": {
|
"toast": {
|
||||||
@ -846,7 +847,9 @@
|
|||||||
"createRole": "Role {{role}} byla úspěšně vytvořena",
|
"createRole": "Role {{role}} byla úspěšně vytvořena",
|
||||||
"updateCameras": "Kamery byly aktualizovány pro roli {{role}}",
|
"updateCameras": "Kamery byly aktualizovány pro roli {{role}}",
|
||||||
"deleteRole": "Role {{role}} byla úspěšně smazána",
|
"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."
|
"userRolesUpdated_one": "{{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.",
|
||||||
|
"userRolesUpdated_few": "",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Nepodařilo se vytvořit roli: {{errorMessage}}",
|
"createRoleFailed": "Nepodařilo se vytvořit roli: {{errorMessage}}",
|
||||||
|
|||||||
@ -892,7 +892,8 @@
|
|||||||
"createRole": "Rolle {{role}} erfolgreich erstellt",
|
"createRole": "Rolle {{role}} erfolgreich erstellt",
|
||||||
"updateCameras": "Kameras für Rolle {{role}} aktualisiert",
|
"updateCameras": "Kameras für Rolle {{role}} aktualisiert",
|
||||||
"deleteRole": "Rolle {{role}} erfolgreich gelöscht",
|
"deleteRole": "Rolle {{role}} erfolgreich gelöscht",
|
||||||
"userRolesUpdated": "{{count}} Benutzer, denen diese Rolle zugewiesen wurde, wurden auf „Zuschauer“ aktualisiert, der Zugriff auf alle Kameras hat."
|
"userRolesUpdated_one": "{{count}} Benutzer, denen diese Rolle zugewiesen wurde, wurden auf „Zuschauer“ aktualisiert, der Zugriff auf alle Kameras hat.",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Fehler beim Erstellen der Rolle: {{errorMessage}}",
|
"createRoleFailed": "Fehler beim Erstellen der Rolle: {{errorMessage}}",
|
||||||
|
|||||||
@ -67,8 +67,11 @@
|
|||||||
},
|
},
|
||||||
"activity_context_prompt": {
|
"activity_context_prompt": {
|
||||||
"label": "Custom activity context prompt defining normal activity patterns for this property."
|
"label": "Custom activity context prompt defining normal activity patterns for this property."
|
||||||
|
},
|
||||||
|
"camera_context": {
|
||||||
|
"label": "Spatial context about the camera's field of view to help with descriptive accuracy. Should describe physical features and locations outside the frame. This is for spatial reference only and should NOT include subjective assessments."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,7 +74,7 @@
|
|||||||
"label": "Annotation Offset",
|
"label": "Annotation Offset",
|
||||||
"desc": "This data comes from your camera's detect feed but is overlayed on images from the the record feed. It is unlikely that the two streams are perfectly in sync. As a result, the bounding box and the footage will not line up perfectly. You can use this setting to offset the annotations forward or backward in time to better align them with the recorded footage.",
|
"desc": "This data comes from your camera's detect feed but is overlayed on images from the the record feed. It is unlikely that the two streams are perfectly in sync. As a result, the bounding box and the footage will not line up perfectly. You can use this setting to offset the annotations forward or backward in time to better align them with the recorded footage.",
|
||||||
"millisecondsToOffset": "Milliseconds to offset detect annotations by. <em>Default: 0</em>",
|
"millisecondsToOffset": "Milliseconds to offset detect annotations by. <em>Default: 0</em>",
|
||||||
"tips": "TIP: Imagine there is an event clip with a person walking from left to right. If the event timeline bounding box is consistently to the left of the person then the value should be decreased. Similarly, if a person is walking from left to right and the bounding box is consistently ahead of the person then the value should be increased.",
|
"tips": "Lower the value if the video playback is ahead of the boxes and path points, and increase the value if the video playback is behind them. This value can be negative.",
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Annotation offset for {{camera}} has been saved to the config file. Restart Frigate to apply your changes."
|
"success": "Annotation offset for {{camera}} has been saved to the config file. Restart Frigate to apply your changes."
|
||||||
}
|
}
|
||||||
@ -215,6 +215,8 @@
|
|||||||
"trackedObjectsCount_other": "{{count}} tracked objects ",
|
"trackedObjectsCount_other": "{{count}} tracked objects ",
|
||||||
"searchResult": {
|
"searchResult": {
|
||||||
"tooltip": "Matched {{type}} at {{confidence}}%",
|
"tooltip": "Matched {{type}} at {{confidence}}%",
|
||||||
|
"previousTrackedObject": "Previous tracked object",
|
||||||
|
"nextTrackedObject": "Next tracked object",
|
||||||
"deleteTrackedObject": {
|
"deleteTrackedObject": {
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Tracked object deleted successfully.",
|
"success": "Tracked object deleted successfully.",
|
||||||
|
|||||||
@ -745,7 +745,8 @@
|
|||||||
"createRole": "Role {{role}} created successfully",
|
"createRole": "Role {{role}} created successfully",
|
||||||
"updateCameras": "Cameras updated for role {{role}}",
|
"updateCameras": "Cameras updated for role {{role}}",
|
||||||
"deleteRole": "Role {{role}} deleted successfully",
|
"deleteRole": "Role {{role}} deleted successfully",
|
||||||
"userRolesUpdated": "{{count}} user(s) assigned to this role have been updated to 'viewer', which has access to all cameras."
|
"userRolesUpdated_one": "{{count}} user assigned to this role has been updated to 'viewer', which has access to all cameras.",
|
||||||
|
"userRolesUpdated_other": "{{count}} users assigned to this role have been updated to 'viewer', which has access to all cameras."
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Failed to create role: {{errorMessage}}",
|
"createRoleFailed": "Failed to create role: {{errorMessage}}",
|
||||||
|
|||||||
@ -69,7 +69,7 @@
|
|||||||
"noVaildTimeSelected": "No se seleccionó un rango de tiempo válido.",
|
"noVaildTimeSelected": "No se seleccionó un rango de tiempo válido.",
|
||||||
"endTimeMustAfterStartTime": "La hora de finalización debe ser posterior a la hora de inicio."
|
"endTimeMustAfterStartTime": "La hora de finalización debe ser posterior a la hora de inicio."
|
||||||
},
|
},
|
||||||
"success": "Exportación iniciada con éxito. Ver el archivo en la carpeta /exports."
|
"success": "Exportación iniciada con éxito. Ver el archivo en la página exportaciones."
|
||||||
},
|
},
|
||||||
"fromTimeline": {
|
"fromTimeline": {
|
||||||
"saveExport": "Guardar exportación",
|
"saveExport": "Guardar exportación",
|
||||||
|
|||||||
@ -1 +1,40 @@
|
|||||||
{}
|
{
|
||||||
|
"documentTitle": "Modelos de Clasificación",
|
||||||
|
"button": {
|
||||||
|
"deleteClassificationAttempts": "Borrar Imágenes de Clasificación.",
|
||||||
|
"renameCategory": "Renombrar Clase",
|
||||||
|
"deleteCategory": "Borrar Clase",
|
||||||
|
"deleteImages": "Borrar Imágenes",
|
||||||
|
"trainModel": "Entrenar Modelo",
|
||||||
|
"addClassification": "Añadir Clasificación",
|
||||||
|
"deleteModels": "Borrar Modelos",
|
||||||
|
"editModel": "Editar Modelo"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"success": {
|
||||||
|
"deletedCategory": "Clase Borrada",
|
||||||
|
"deletedImage": "Imágenes Borradas",
|
||||||
|
"deletedModel_one": "Borrado con éxito {{count}} modelo",
|
||||||
|
"deletedModel_many": "Borrados con éxito {{count}} modelos",
|
||||||
|
"deletedModel_other": "Borrados con éxito {{count}} modelos",
|
||||||
|
"categorizedImage": "Imagen Clasificada Correctamente",
|
||||||
|
"trainedModel": "Modelo entrenado correctamente."
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"deleteImageFailed": "Fallo al borrar: {{errorMessage}}",
|
||||||
|
"deleteCategoryFailed": "Fallo al borrar clase: {{errorMessage}}",
|
||||||
|
"deleteModelFailed": "Fallo al borrar modelo: {{errorMessage}}",
|
||||||
|
"categorizeFailed": "Fallo al categorizar imagen: {{errorMessage}}",
|
||||||
|
"trainingFailed": "Fallo al iniciar el entrenamiento del modelo: {{errorMessage}}",
|
||||||
|
"updateModelFailed": "Fallo al actualizar modelo: {{errorMessage}}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deleteCategory": {
|
||||||
|
"title": "Borrar Clase",
|
||||||
|
"desc": "¿Esta seguro de que quiere borrar la clase {{name}}? Esto borrará permanentemente todas las imágenes asociadas y requerirá reentrenar el modelo."
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"title": "Borrar Modelo de Clasificación",
|
||||||
|
"single": "¿Está seguro de que quiere eliminar {{name}}? Esto borrar permanentemente todos los datos asociados incluidas las imágenes y los datos de entrenamiento. Esta acción no se puede deshacer."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -37,5 +37,17 @@
|
|||||||
"selected_other": "{{count}} seleccionados",
|
"selected_other": "{{count}} seleccionados",
|
||||||
"detected": "detectado",
|
"detected": "detectado",
|
||||||
"suspiciousActivity": "Actividad Sospechosa",
|
"suspiciousActivity": "Actividad Sospechosa",
|
||||||
"threateningActivity": "Actividad Amenzadora"
|
"threateningActivity": "Actividad Amenzadora",
|
||||||
|
"zoomIn": "Agrandar",
|
||||||
|
"zoomOut": "Alejar",
|
||||||
|
"detail": {
|
||||||
|
"label": "Detalle",
|
||||||
|
"trackedObject_one": "objeto",
|
||||||
|
"trackedObject_other": "objetos",
|
||||||
|
"noObjectDetailData": "No hay datos detallados del objeto.",
|
||||||
|
"settings": "Configuración de la Vista Detalle"
|
||||||
|
},
|
||||||
|
"objectTrack": {
|
||||||
|
"clickToSeek": "Clic para ir a este momento"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -110,7 +110,8 @@
|
|||||||
"snapshot": "captura instantánea",
|
"snapshot": "captura instantánea",
|
||||||
"video": "vídeo",
|
"video": "vídeo",
|
||||||
"object_lifecycle": "ciclo de vida del objeto",
|
"object_lifecycle": "ciclo de vida del objeto",
|
||||||
"details": "detalles"
|
"details": "detalles",
|
||||||
|
"thumbnail": "miniatura"
|
||||||
},
|
},
|
||||||
"objectLifecycle": {
|
"objectLifecycle": {
|
||||||
"title": "Ciclo de vida del objeto",
|
"title": "Ciclo de vida del objeto",
|
||||||
@ -224,5 +225,11 @@
|
|||||||
},
|
},
|
||||||
"concerns": {
|
"concerns": {
|
||||||
"label": "Preocupaciones"
|
"label": "Preocupaciones"
|
||||||
|
},
|
||||||
|
"trackingDetails": {
|
||||||
|
"title": "Detalles del Seguimiento",
|
||||||
|
"noImageFound": "No se ha encontrado imagen en este momento.",
|
||||||
|
"createObjectMask": "Crear Máscara de Objeto",
|
||||||
|
"adjustAnnotationSettings": "Ajustar configuración de anotaciones"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,5 +13,11 @@
|
|||||||
"renameExportFailed": "No se pudo renombrar la exportación: {{errorMessage}}"
|
"renameExportFailed": "No se pudo renombrar la exportación: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"deleteExport.desc": "¿Estás seguro de que quieres eliminar {{exportName}}?"
|
"deleteExport.desc": "¿Estás seguro de que quieres eliminar {{exportName}}?",
|
||||||
|
"tooltip": {
|
||||||
|
"shareExport": "Compartir exportación",
|
||||||
|
"downloadVideo": "Descargar video",
|
||||||
|
"editName": "Editar nombre",
|
||||||
|
"deleteExport": "Eliminar exportación"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"description": {
|
"description": {
|
||||||
"addFace": "Guía para agregar una nueva colección a la Biblioteca de Rostros.",
|
"addFace": "Agregar una nueva colección a la Biblioteca de Rostros subiendo tu primera imagen.",
|
||||||
"placeholder": "Introduce un nombre para esta colección",
|
"placeholder": "Introduce un nombre para esta colección",
|
||||||
"invalidName": "Nombre inválido. Los nombres solo pueden incluir letras, números, espacios, apóstrofes, guiones bajos y guiones."
|
"invalidName": "Nombre inválido. Los nombres solo pueden incluir letras, números, espacios, apóstrofes, guiones bajos y guiones."
|
||||||
},
|
},
|
||||||
@ -23,11 +23,11 @@
|
|||||||
"title": "Crear colección",
|
"title": "Crear colección",
|
||||||
"desc": "Crear una nueva colección",
|
"desc": "Crear una nueva colección",
|
||||||
"new": "Crear nuevo rostro",
|
"new": "Crear nuevo rostro",
|
||||||
"nextSteps": "Para construir una base sólida: <li>Usa la pestaña Entrenar para seleccionar y entrenar con imágenes de cada persona detectada.</li> <li>Enfócate en imágenes frontales para obtener los mejores resultados; evita entrenar con imágenes que capturen rostros en ángulo.</li>"
|
"nextSteps": "Para construir una base sólida: <li>Usa la pestaña Reconocimientos Recientes para seleccionar y entrenar con imágenes de cada persona detectada.</li> <li>Céntrate en imágenes frontales para obtener los mejores resultados; evita entrenar con imágenes que capturen rostros de perfil.</li>"
|
||||||
},
|
},
|
||||||
"train": {
|
"train": {
|
||||||
"title": "Entrenar",
|
"title": "Reconocimientos Recientes",
|
||||||
"aria": "Seleccionar entrenamiento",
|
"aria": "Seleccionar reconocimientos recientes",
|
||||||
"empty": "No hay intentos recientes de reconocimiento facial"
|
"empty": "No hay intentos recientes de reconocimiento facial"
|
||||||
},
|
},
|
||||||
"selectItem": "Seleccionar {{item}}",
|
"selectItem": "Seleccionar {{item}}",
|
||||||
|
|||||||
@ -27,7 +27,8 @@
|
|||||||
"enrichments": "Análisis avanzado",
|
"enrichments": "Análisis avanzado",
|
||||||
"triggers": "Disparadores",
|
"triggers": "Disparadores",
|
||||||
"roles": "Rols",
|
"roles": "Rols",
|
||||||
"cameraManagement": "Administración"
|
"cameraManagement": "Administración",
|
||||||
|
"cameraReview": "Revisar"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"unsavedChanges": {
|
"unsavedChanges": {
|
||||||
@ -864,7 +865,9 @@
|
|||||||
"createRole": "Rol {{role}} creado exitosamente",
|
"createRole": "Rol {{role}} creado exitosamente",
|
||||||
"updateCameras": "Cámara actualizada para el rol {{role}}",
|
"updateCameras": "Cámara actualizada para el rol {{role}}",
|
||||||
"deleteRole": "Rol {{role}} eliminado exitosamente",
|
"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."
|
"userRolesUpdated_one": "{{count}} usuarios asignados a este rol han sido actualizados a 'visor', que tiene acceso a todas las cámaras.",
|
||||||
|
"userRolesUpdated_many": "",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Creación de rol fallida: {{errorMessage}}",
|
"createRoleFailed": "Creación de rol fallida: {{errorMessage}}",
|
||||||
|
|||||||
@ -301,6 +301,7 @@
|
|||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"two": "{{0}} et {{1}}",
|
"two": "{{0}} et {{1}}",
|
||||||
"many": "{{items}}, et {{last}}"
|
"many": "{{items}}, et {{last}}",
|
||||||
|
"separatorWithSpace": ", "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,10 @@
|
|||||||
"renameCategory": "Renommer la classe",
|
"renameCategory": "Renommer la classe",
|
||||||
"deleteCategory": "Supprimer la classe",
|
"deleteCategory": "Supprimer la classe",
|
||||||
"deleteImages": "Supprimer les images",
|
"deleteImages": "Supprimer les images",
|
||||||
"trainModel": "Entraîner le modèle"
|
"trainModel": "Entraîner le modèle",
|
||||||
|
"addClassification": "Ajouter une classification",
|
||||||
|
"deleteModels": "Supprimer les modèles",
|
||||||
|
"editModel": "Modifier le modèle"
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": {
|
"success": {
|
||||||
@ -13,13 +16,19 @@
|
|||||||
"deletedImage": "Images supprimées",
|
"deletedImage": "Images supprimées",
|
||||||
"categorizedImage": "Image classifiée avec succès",
|
"categorizedImage": "Image classifiée avec succès",
|
||||||
"trainedModel": "Modèle entraîné avec succès.",
|
"trainedModel": "Modèle entraîné avec succès.",
|
||||||
"trainingModel": "L'entraînement du modèle a démarré avec succès."
|
"trainingModel": "L'entraînement du modèle a démarré avec succès.",
|
||||||
|
"deletedModel_one": "{{count}} modèle supprimé avec succès",
|
||||||
|
"deletedModel_many": "{{count}} modèles supprimés avec succès",
|
||||||
|
"deletedModel_other": "{{count}} modèles supprimés avec succès",
|
||||||
|
"updatedModel": "Configuration du modèle mise à jour avec succès"
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"deleteImageFailed": "Échec de la suppression : {{errorMessage}}",
|
"deleteImageFailed": "Échec de la suppression : {{errorMessage}}",
|
||||||
"deleteCategoryFailed": "Échec de la suppression de la classe : {{errorMessage}}",
|
"deleteCategoryFailed": "Échec de la suppression de la classe : {{errorMessage}}",
|
||||||
"categorizeFailed": "Échec de la catégorisation de l'image : {{errorMessage}}",
|
"categorizeFailed": "Échec de la catégorisation de l'image : {{errorMessage}}",
|
||||||
"trainingFailed": "Échec du démarrage de l'entraînement du modèle : {{errorMessage}}"
|
"trainingFailed": "Échec du démarrage de l'entraînement du modèle : {{errorMessage}}",
|
||||||
|
"deleteModelFailed": "Impossible de supprimer le modèle : {{errorMessage}}",
|
||||||
|
"updateModelFailed": "Impossible de mettre à jour le modèle : {{errorMessage}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"deleteCategory": {
|
"deleteCategory": {
|
||||||
@ -43,7 +52,8 @@
|
|||||||
},
|
},
|
||||||
"train": {
|
"train": {
|
||||||
"title": "Classifications récentes",
|
"title": "Classifications récentes",
|
||||||
"aria": "Sélectionner des classifications récentes"
|
"aria": "Sélectionner des classifications récentes",
|
||||||
|
"titleShort": "Récent"
|
||||||
},
|
},
|
||||||
"categories": "Classes",
|
"categories": "Classes",
|
||||||
"createCategory": {
|
"createCategory": {
|
||||||
@ -98,7 +108,8 @@
|
|||||||
"stateRequiresTwoClasses": "Les modèles d'état nécessitent au moins deux classes.",
|
"stateRequiresTwoClasses": "Les modèles d'état nécessitent au moins deux classes.",
|
||||||
"objectLabelRequired": "Veuillez sélectionner une étiquette d'objet.",
|
"objectLabelRequired": "Veuillez sélectionner une étiquette d'objet.",
|
||||||
"objectTypeRequired": "Veuillez sélectionner un type de classification."
|
"objectTypeRequired": "Veuillez sélectionner un type de classification."
|
||||||
}
|
},
|
||||||
|
"states": "États"
|
||||||
},
|
},
|
||||||
"step2": {
|
"step2": {
|
||||||
"description": "Sélectionnez les caméras et définissez la zone à surveiller pour chaque caméra. Le modèle classifiera l'état de ces zones.",
|
"description": "Sélectionnez les caméras et définissez la zone à surveiller pour chaque caméra. Le modèle classifiera l'état de ces zones.",
|
||||||
@ -131,5 +142,23 @@
|
|||||||
},
|
},
|
||||||
"generateSuccess": "Génération des images d'exemple réussie"
|
"generateSuccess": "Génération des images d'exemple réussie"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"title": "Supprimer le modèle de classification",
|
||||||
|
"single": "Voulez-vous vraiment supprimer {{name}} ? Cela supprimera définitivement toutes les données associées, y compris les images et les données d'entraînement. Cette action est irréversible.",
|
||||||
|
"desc": "Voulez-vous vraiment supprimer {{count}} modèle(s) ? Cela supprimera définitivement toutes les données associées, y compris les images et les données d'entraînement. Cette action est irréversible."
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"objects": "Objets",
|
||||||
|
"states": "États"
|
||||||
|
},
|
||||||
|
"details": {
|
||||||
|
"scoreInfo": "Le score représente la moyenne de la confiance de classification pour toutes les détections de cet objet."
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"title": "Modifier le modèle de classification",
|
||||||
|
"descriptionState": "Modifier les classes pour ce modèle de classification d'état. Les modifications nécessiteront un réentraînement du modèle.",
|
||||||
|
"descriptionObject": "Modifier le type d'objet et le type de classification pour ce modèle de classification d'objet",
|
||||||
|
"stateClassesInfo": "Note : La modification des classes d'état nécessite un réentraînement du modèle avec les classes mises à jour."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,10 +44,17 @@
|
|||||||
"trackedObject_one": "objet",
|
"trackedObject_one": "objet",
|
||||||
"trackedObject_other": "objets",
|
"trackedObject_other": "objets",
|
||||||
"noObjectDetailData": "Aucun détail d'objet disponible",
|
"noObjectDetailData": "Aucun détail d'objet disponible",
|
||||||
"label": "Détail"
|
"label": "Détail",
|
||||||
|
"settings": "Paramètres de la vue Détail",
|
||||||
|
"alwaysExpandActive": {
|
||||||
|
"title": "Toujours développer l'élément actif",
|
||||||
|
"desc": "Toujours développer les détails de l'objet de l'événement actif si disponibles"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"objectTrack": {
|
"objectTrack": {
|
||||||
"trackedPoint": "Point suivi",
|
"trackedPoint": "Point suivi",
|
||||||
"clickToSeek": "Cliquez pour atteindre ce moment."
|
"clickToSeek": "Cliquez pour atteindre ce moment."
|
||||||
}
|
},
|
||||||
|
"zoomIn": "Zoom avant",
|
||||||
|
"zoomOut": "Zoom arrière"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -109,7 +109,8 @@
|
|||||||
"details": "détails",
|
"details": "détails",
|
||||||
"video": "vidéo",
|
"video": "vidéo",
|
||||||
"object_lifecycle": "cycle de vie de l'objet",
|
"object_lifecycle": "cycle de vie de l'objet",
|
||||||
"snapshot": "instantané"
|
"snapshot": "instantané",
|
||||||
|
"thumbnail": "Miniature"
|
||||||
},
|
},
|
||||||
"objectLifecycle": {
|
"objectLifecycle": {
|
||||||
"title": "Cycle de vie de l'objet",
|
"title": "Cycle de vie de l'objet",
|
||||||
@ -240,7 +241,7 @@
|
|||||||
"noImageFound": "Aucune image trouvée pour cet horodatage",
|
"noImageFound": "Aucune image trouvée pour cet horodatage",
|
||||||
"createObjectMask": "Créer un masque d'objet",
|
"createObjectMask": "Créer un masque d'objet",
|
||||||
"adjustAnnotationSettings": "Ajuster les paramètres d'annotation",
|
"adjustAnnotationSettings": "Ajuster les paramètres d'annotation",
|
||||||
"scrollViewTips": "Défilez pour voir les moments significatifs du cycle de vie de cet objet.",
|
"scrollViewTips": "Cliquez pour voir les moments significatifs du cycle de vie de cet objet.",
|
||||||
"autoTrackingTips": "Les positions des cadres de détection seront imprécises pour les caméras à suivi automatique.",
|
"autoTrackingTips": "Les positions des cadres de détection seront imprécises pour les caméras à suivi automatique.",
|
||||||
"count": "{{first}} sur {{second}}",
|
"count": "{{first}} sur {{second}}",
|
||||||
"trackedPoint": "Point suivi",
|
"trackedPoint": "Point suivi",
|
||||||
@ -264,7 +265,7 @@
|
|||||||
},
|
},
|
||||||
"annotationSettings": {
|
"annotationSettings": {
|
||||||
"offset": {
|
"offset": {
|
||||||
"desc": "Ces données proviennent du flux de détection de votre caméra mais sont superposées aux images du flux d'enregistrement. Il est peu probable que les deux flux soient parfaitement synchronisés. Par conséquent, le cadre de détection et l'enregistrement ne seront pas parfaitement alignés. Cependant, le champ <code>annotation_offset</code> peut être utilisé pour corriger cela.",
|
"desc": "Ces données proviennent du flux de détection de votre caméra, mais elles sont superposées aux images du flux d'enregistrement. Il est peu probable que les deux flux soient parfaitement synchronisés. Par conséquent, le cadre de délimitation et la vidéo ne s'aligneront pas parfaitement. Vous pouvez utiliser ce paramètre pour décaler les annotations vers l'avant ou vers l'arrière dans le temps afin de mieux les aligner avec la vidéo enregistrée.",
|
||||||
"millisecondsToOffset": "Millisecondes de décalage pour les annotations de détection. <em>Par défaut : 0</em>",
|
"millisecondsToOffset": "Millisecondes de décalage pour les annotations de détection. <em>Par défaut : 0</em>",
|
||||||
"tips": "ASTUCE : Imaginez une séquence d'événement avec une personne marchant de gauche à droite. Si le cadre de détection sur la chronologie de l'événement est constamment à gauche de la personne, la valeur doit être diminuée. De même, si une personne marche de gauche à droite et que le cadre de détection est constamment devant la personne, la valeur doit être augmentée.",
|
"tips": "ASTUCE : Imaginez une séquence d'événement avec une personne marchant de gauche à droite. Si le cadre de détection sur la chronologie de l'événement est constamment à gauche de la personne, la valeur doit être diminuée. De même, si une personne marche de gauche à droite et que le cadre de détection est constamment devant la personne, la valeur doit être augmentée.",
|
||||||
"toast": {
|
"toast": {
|
||||||
|
|||||||
@ -51,6 +51,10 @@
|
|||||||
"playAlertVideos": {
|
"playAlertVideos": {
|
||||||
"label": "Lire les vidéos d'alerte",
|
"label": "Lire les vidéos d'alerte",
|
||||||
"desc": "Par défaut, les alertes récentes du tableau de bord en direct sont diffusées sous forme de petites vidéos en boucle. Désactivez cette option pour afficher uniquement une image statique des alertes récentes sur cet appareil/navigateur."
|
"desc": "Par défaut, les alertes récentes du tableau de bord en direct sont diffusées sous forme de petites vidéos en boucle. Désactivez cette option pour afficher uniquement une image statique des alertes récentes sur cet appareil/navigateur."
|
||||||
|
},
|
||||||
|
"displayCameraNames": {
|
||||||
|
"label": "Toujours afficher les noms des caméras",
|
||||||
|
"desc": "Toujours afficher les noms des caméras dans une puce sur le tableau de bord de la vue en direct multi-caméras"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"storedLayouts": {
|
"storedLayouts": {
|
||||||
@ -767,7 +771,9 @@
|
|||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"alert": "Marquer comme alerte",
|
"alert": "Marquer comme alerte",
|
||||||
"notification": "Envoyer une notification"
|
"notification": "Envoyer une notification",
|
||||||
|
"sub_label": "Ajouter une sous-étiquette",
|
||||||
|
"attribute": "Ajouter un attribut"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"createTrigger": {
|
"createTrigger": {
|
||||||
@ -822,7 +828,7 @@
|
|||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"title": "Actions",
|
"title": "Actions",
|
||||||
"desc": "Par défaut, Frigate publie un message MQTT à chaque déclenchement. Sélectionnez une action complémentaire à exécuter lors de ce déclenchement.",
|
"desc": "Par défaut, Frigate envoie un message MQTT pour tous les déclencheurs. Les sous-étiquettes ajoutent le nom du déclencheur à l'étiquette de l'objet. Les attributs sont des métadonnées recherchables stockées séparément dans les métadonnées de l'objet suivi.",
|
||||||
"error": {
|
"error": {
|
||||||
"min": "Au moins une action doit être sélectionnée."
|
"min": "Au moins une action doit être sélectionnée."
|
||||||
}
|
}
|
||||||
@ -887,7 +893,9 @@
|
|||||||
"createRole": "Rôle {{role}} créé avec succès",
|
"createRole": "Rôle {{role}} créé avec succès",
|
||||||
"updateCameras": "Caméras mis à jour pour le rôle {{role}}",
|
"updateCameras": "Caméras mis à jour pour le rôle {{role}}",
|
||||||
"deleteRole": "Rôle {{role}} supprimé avec succès",
|
"deleteRole": "Rôle {{role}} supprimé avec succès",
|
||||||
"userRolesUpdated": "{{count}} utilisateurs affectés à ce rôle ont été mis à jour avec des droits \"Observateur\", et ont accès à toutes les caméras."
|
"userRolesUpdated_one": "{{count}} utilisateurs affectés à ce rôle ont été mis à jour avec des droits \"Observateur\", et ont accès à toutes les caméras.",
|
||||||
|
"userRolesUpdated_many": "",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Échec dans la création du rôle : {{errorMessage}}",
|
"createRoleFailed": "Échec dans la création du rôle : {{errorMessage}}",
|
||||||
@ -1072,7 +1080,9 @@
|
|||||||
"resolutionHigh": "La résolution {{resolution}} risque d'augmenter l'utilisation des ressources.",
|
"resolutionHigh": "La résolution {{resolution}} risque d'augmenter l'utilisation des ressources.",
|
||||||
"resolutionLow": "La résolution {{resolution}} risque d'être trop faible pour détecter les petits objets de manière fiable."
|
"resolutionLow": "La résolution {{resolution}} risque d'être trop faible pour détecter les petits objets de manière fiable."
|
||||||
},
|
},
|
||||||
"valid": "Valide"
|
"valid": "Valide",
|
||||||
|
"ffmpegModule": "Utiliser le mode de compatibilité du flux",
|
||||||
|
"ffmpegModuleDescription": "Si le flux ne se charge pas après plusieurs tentatives, essayez d'activer cette option. Lorsqu'elle est activée, Frigate utilisera le module ffmpeg avec go2rtc. Cela peut offrir une meilleure compatibilité avec certains flux de caméra."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cameraManagement": {
|
"cameraManagement": {
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
"unknownError": "Ismeretlen hiba. Ellenőrizze a naplókat.",
|
"unknownError": "Ismeretlen hiba. Ellenőrizze a naplókat.",
|
||||||
"webUnknownError": "Ismeretlen hiba. Ellenőrizze a konzol naplókat.",
|
"webUnknownError": "Ismeretlen hiba. Ellenőrizze a konzol naplókat.",
|
||||||
"rateLimit": "Túl sokszor próbálkozott. Próbálja meg később."
|
"rateLimit": "Túl sokszor próbálkozott. Próbálja meg később."
|
||||||
}
|
},
|
||||||
|
"firstTimeLogin": "Először próbálsz bejelentkezni? A hitelesítési adatok a Frigate naplóiban vannak feltüntetve."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1 +1,17 @@
|
|||||||
{}
|
{
|
||||||
|
"documentTitle": "Osztályozási modellek",
|
||||||
|
"button": {
|
||||||
|
"deleteClassificationAttempts": "Osztályozási képek törlése",
|
||||||
|
"deleteImages": "Képek törlése",
|
||||||
|
"trainModel": "Modell betanítása",
|
||||||
|
"deleteModels": "Modellek törlése"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"success": {
|
||||||
|
"deletedImage": "Törölt képek",
|
||||||
|
"deletedModel_one": "Sikeresen törölt {{count}} modellt",
|
||||||
|
"deletedModel_other": "",
|
||||||
|
"categorizedImage": "A kép sikeresen osztályozva"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -36,5 +36,6 @@
|
|||||||
"selected_one": "{{count}} kiválasztva",
|
"selected_one": "{{count}} kiválasztva",
|
||||||
"selected_other": "{{count}} kiválasztva",
|
"selected_other": "{{count}} kiválasztva",
|
||||||
"suspiciousActivity": "Gyanús Tevékenység",
|
"suspiciousActivity": "Gyanús Tevékenység",
|
||||||
"threateningActivity": "Fenyegető Tevékenység"
|
"threateningActivity": "Fenyegető Tevékenység",
|
||||||
|
"zoomIn": "Nagyítás"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,5 +13,11 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"renameExportFailed": "Sikertelen export átnevezés: {{errorMessage}}"
|
"renameExportFailed": "Sikertelen export átnevezés: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"downloadVideo": "Videó letöltése",
|
||||||
|
"editName": "Név szerkesztése",
|
||||||
|
"deleteExport": "Export törlése",
|
||||||
|
"shareExport": "Export megosztása"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,12 +42,12 @@
|
|||||||
"title": "Gyűjtemény létrehozása",
|
"title": "Gyűjtemény létrehozása",
|
||||||
"desc": "Új gyűjtemény létrehozása",
|
"desc": "Új gyűjtemény létrehozása",
|
||||||
"new": "Új arc létrhozása",
|
"new": "Új arc létrhozása",
|
||||||
"nextSteps": "A jó alap készítéséhez:<li>Használja a Tanítás fület az egyes észlelt személyekhez tartozó képek kiválasztására és betanítására.</li>A legjobb eredmény érdekében válassza az egyenesen előre néző arcokat ábrázoló képeket és kerülje a ferde szögből készült arcképeket a tanításhoz.</li></ul>"
|
"nextSteps": "A jó alap készítéséhez:<li>Használja a Legutóbbi felismerések fület az egyes észlelt személyekhez tartozó képek kiválasztásához és betanításához.</li>A legjobb eredmény érdekében válassza az egyenesen előre néző arcokat ábrázoló képeket és kerülje a ferde szögből készült arcképeket a tanításhoz.</li></ul>"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"placeholder": "Adj nevet ennek a gyűjteménynek",
|
"placeholder": "Adj nevet ennek a gyűjteménynek",
|
||||||
"invalidName": "Nem megfelelő név. A nevek csak betűket, számokat, szóközöket, aposztrófokat, alulhúzásokat és kötőjeleket tartalmazhatnak.",
|
"invalidName": "Nem megfelelő név. A nevek csak betűket, számokat, szóközöket, aposztrófokat, alulhúzásokat és kötőjeleket tartalmazhatnak.",
|
||||||
"addFace": "Segédlet új gyűjtemény hozzáadásához az arckép könyvtárban."
|
"addFace": "Adj hozzá egy új gyűjteményt az Arcképtárhoz az első képed feltöltésével."
|
||||||
},
|
},
|
||||||
"selectFace": "Arc kiválasztása",
|
"selectFace": "Arc kiválasztása",
|
||||||
"deleteFaceLibrary": {
|
"deleteFaceLibrary": {
|
||||||
|
|||||||
@ -799,7 +799,8 @@
|
|||||||
"createRole": "Szerepkör létrehozva: {{role}}",
|
"createRole": "Szerepkör létrehozva: {{role}}",
|
||||||
"updateCameras": "Kamerák frissítve a szerepkörhöz: {{role}}",
|
"updateCameras": "Kamerák frissítve a szerepkörhöz: {{role}}",
|
||||||
"deleteRole": "Szerepkör sikeresen törölve: {{role}}",
|
"deleteRole": "Szerepkör sikeresen törölve: {{role}}",
|
||||||
"userRolesUpdated": "{{count}} felhasználó, akit ehhez a szerepkörhöz rendeltünk, frissült „néző”-re, amely hozzáféréssel rendelkezik az összes kamerához."
|
"userRolesUpdated_one": "{{count}} felhasználó, akit ehhez a szerepkörhöz rendeltünk, frissült „néző”-re, amely hozzáféréssel rendelkezik az összes kamerához.",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Nem sikerült létrehozni a szerepkört: {{errorMessage}}",
|
"createRoleFailed": "Nem sikerült létrehozni a szerepkört: {{errorMessage}}",
|
||||||
|
|||||||
@ -84,5 +84,6 @@
|
|||||||
"banjo": "Banjo",
|
"banjo": "Banjo",
|
||||||
"snoring": "Ngorok",
|
"snoring": "Ngorok",
|
||||||
"cough": "Batuk",
|
"cough": "Batuk",
|
||||||
"clapping": "Tepukan"
|
"clapping": "Tepukan",
|
||||||
|
"camera": "Kamera"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,12 +4,13 @@
|
|||||||
"password": "Kata sandi",
|
"password": "Kata sandi",
|
||||||
"login": "Masuk",
|
"login": "Masuk",
|
||||||
"errors": {
|
"errors": {
|
||||||
"usernameRequired": "Wajib Menggunakan Username",
|
"usernameRequired": "Username diperlukan",
|
||||||
"passwordRequired": "Wajib memakai Password",
|
"passwordRequired": "Password diperlukan",
|
||||||
"rateLimit": "Melewati batas permintaan. Coba lagi nanti.",
|
"rateLimit": "Melewati batas permintaan. Coba lagi nanti.",
|
||||||
"loginFailed": "Gagal Masuk",
|
"loginFailed": "Gagal Masuk",
|
||||||
"unknownError": "Eror tidak diketahui. Mohon lihat log.",
|
"unknownError": "Eror tidak diketahui. Mohon lihat log.",
|
||||||
"webUnknownError": "Eror tidak diketahui. Mohon lihat log konsol."
|
"webUnknownError": "Eror tidak diketahui. Mohon lihat log konsol."
|
||||||
}
|
},
|
||||||
|
"firstTimeLogin": "Mencoba masuk untuk pertama kali? Kredensial sudah dicetak di dalam riwayat Frigate."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,5 +13,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"confirm": "Keluar tanpa menyimpan?",
|
"confirm": "Keluar tanpa menyimpan?",
|
||||||
"safeModeDescription": "Frigate sedang dalam mode aman karena kesalahan validasi konfigurasi."
|
"safeModeDescription": "Frigate sedang dalam mode aman karena kesalahan validasi konfigurasi.",
|
||||||
|
"safeConfigEditor": "Editor Konfigurasi(Mode Aman)"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,5 +12,48 @@
|
|||||||
"motion": "Data gerakan tidak ditemukan"
|
"motion": "Data gerakan tidak ditemukan"
|
||||||
},
|
},
|
||||||
"timeline.aria": "Pilih timeline",
|
"timeline.aria": "Pilih timeline",
|
||||||
"timeline": "Linimasa"
|
"timeline": "Linimasa",
|
||||||
|
"zoomIn": "Perbesar",
|
||||||
|
"zoomOut": "Perkecil",
|
||||||
|
"events": {
|
||||||
|
"label": "Peristiwa-Peristiwa",
|
||||||
|
"aria": "Pilih peristiwa",
|
||||||
|
"noFoundForTimePeriod": "Tidak ada peristiwa dalam periode waktu berikut."
|
||||||
|
},
|
||||||
|
"detail": {
|
||||||
|
"label": "Detil",
|
||||||
|
"noDataFound": "Tidak ada detil data untuk di review",
|
||||||
|
"aria": "Beralih tampilan detil",
|
||||||
|
"trackedObject_one": "objek",
|
||||||
|
"trackedObject_other": "objek-objek",
|
||||||
|
"noObjectDetailData": "Tidak ada data objek detil tersedia.",
|
||||||
|
"settings": "Pengaturan Tampilan Detil",
|
||||||
|
"alwaysExpandActive": {
|
||||||
|
"title": "Selalu lebarkan yang aktif",
|
||||||
|
"desc": "Selalu perluas detil objek item tinjauan aktif jika tersedia."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"objectTrack": {
|
||||||
|
"trackedPoint": "Titik terlacak",
|
||||||
|
"clickToSeek": "Klik untuk mencari waktu ini"
|
||||||
|
},
|
||||||
|
"documentTitle": "Tinjauan - Frigate",
|
||||||
|
"recordings": {
|
||||||
|
"documentTitle": "Rekaman - Frigate"
|
||||||
|
},
|
||||||
|
"calendarFilter": {
|
||||||
|
"last24Hours": "24 Jam Terakhir"
|
||||||
|
},
|
||||||
|
"markAsReviewed": "Tandai sebagai sudah ditinjau",
|
||||||
|
"markTheseItemsAsReviewed": "Tandai item-item berikut sebagai sudah ditinjau",
|
||||||
|
"newReviewItems": {
|
||||||
|
"button": "Item Batu Untuk Ditinjau",
|
||||||
|
"label": "Lihat item ulasan baru"
|
||||||
|
},
|
||||||
|
"selected_one": "{{count}} terpilih",
|
||||||
|
"selected_other": "{{count}} terpilih",
|
||||||
|
"camera": "Kamera",
|
||||||
|
"detected": "terdeteksi",
|
||||||
|
"suspiciousActivity": "Aktivitas Mencurigakan",
|
||||||
|
"threateningActivity": "Aktivitas yang Mengancam"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +1,23 @@
|
|||||||
{
|
{
|
||||||
"documentTitle": "Expor - Frigate",
|
"documentTitle": "Expor - Frigate",
|
||||||
"search": "Cari",
|
"search": "Cari",
|
||||||
"noExports": "Tidak bisa mengekspor",
|
"noExports": "Ekspor tidak ditemukan",
|
||||||
"deleteExport": "Hapus Ekspor",
|
"deleteExport": "Hapus Ekspor",
|
||||||
"deleteExport.desc": "Apakah Anda yakin ingin menghapus {{exportName}}?",
|
"deleteExport.desc": "Apakah Anda yakin ingin menghapus {{exportName}}?",
|
||||||
"editExport": {
|
"editExport": {
|
||||||
"title": "Ganti Nama saat Ekspor",
|
"title": "Ganti Nama Ekspor",
|
||||||
"desc": "Masukkan nama baru untuk mengekspor.",
|
"desc": "Masukkan nama baru untuk ekspor ini.",
|
||||||
"saveExport": "Simpan Ekspor"
|
"saveExport": "Simpan Ekspor"
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"error": {
|
"error": {
|
||||||
"renameExportFailed": "Gagal mengganti nama export: {{errorMessage}}"
|
"renameExportFailed": "Gagal mengganti nama ekspor: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"shareExport": "Bagikan Ekspor",
|
||||||
|
"downloadVideo": "Unduh Video",
|
||||||
|
"editName": "Ubah nama",
|
||||||
|
"deleteExport": "Hapus ekspor"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"description": {
|
"description": {
|
||||||
"addFace": "Tambah ke koleksi Pustaka Wajah.",
|
"addFace": "Tambah ke koleksi Pustaka Wajah dengan men-upload gambar pertama anda.",
|
||||||
"placeholder": "Masukkan Nama untuk koleksi ini",
|
"placeholder": "Masukkan Nama untuk koleksi ini",
|
||||||
"invalidName": "Nama tidak valid. Nama hanya dapat berisi huruf, angka, spasi, apostrof, garis bawah, dan tanda hubung."
|
"invalidName": "Nama tidak valid. Nama hanya dapat berisi huruf, angka, spasi, apostrof, garis bawah, dan tanda hubung."
|
||||||
},
|
},
|
||||||
@ -18,13 +18,75 @@
|
|||||||
"createFaceLibrary": {
|
"createFaceLibrary": {
|
||||||
"desc": "Buat koleksi baru",
|
"desc": "Buat koleksi baru",
|
||||||
"title": "Buat Koleksi",
|
"title": "Buat Koleksi",
|
||||||
"nextSteps": "Untuk membangun fondasi yang kuat:<li>Gunakan tab Latih untuk memilih dan melatih gambar untuk setiap orang yang terdeteksi.</li><li>Fokus pada gambar lurus untuk hasil terbaik; hindari melatih gambar yang menangkap wajah pada sudut tertentu.</li></ul>"
|
"nextSteps": "Untuk membangun fondasi yang kuat:<li>Gunakan tab Pengenalan Terbaru untuk memilih dan melatih gambar untuk setiap orang yang terdeteksi.</li><li>Fokus pada gambar langsung untuk hasil terbaik; hindari melatih gambar yang menangkap wajah pada sudut tertentu.</li></ul>",
|
||||||
|
"new": "Buat Wajah Baru"
|
||||||
},
|
},
|
||||||
"uploadFaceImage": {
|
"uploadFaceImage": {
|
||||||
"desc": "Unggah gambar untuk dipindai wajah dan sertakan untuk {{pageToggle}}",
|
"desc": "Unggah gambar untuk dipindai wajah dan sertakan untuk {{pageToggle}}",
|
||||||
"title": "Unggah Gambar Wajah"
|
"title": "Unggah Gambar Wajah"
|
||||||
},
|
},
|
||||||
"steps": {
|
"steps": {
|
||||||
"faceName": "Masukkan Nama Wajah"
|
"faceName": "Masukkan Nama Wajah",
|
||||||
|
"uploadFace": "Unggah Gambar Wajah",
|
||||||
|
"nextSteps": "Langkah Berikutnya",
|
||||||
|
"description": {
|
||||||
|
"uploadFace": "Upload sebuah gambar dari {{name}} yang menunjukkan wajah mereka dari sisi depan. Gambar tidak perlu dipotong ke wajah mereka."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"train": {
|
||||||
|
"title": "Pengenalan Terkini",
|
||||||
|
"aria": "Pilih pengenalan terkini",
|
||||||
|
"empty": "Tidak ada percobaan pengenalan wajah baru-baru ini"
|
||||||
|
},
|
||||||
|
"deleteFaceLibrary": {
|
||||||
|
"title": "Hapus Nama",
|
||||||
|
"desc": "Apakah anda yakin ingin menghapus koleksi {{name}}? Ini akan menghapus semua wajah terkait secara permanen."
|
||||||
|
},
|
||||||
|
"deleteFaceAttempts": {
|
||||||
|
"title": "Hapus Wajah-Wajah",
|
||||||
|
"desc_other": "Apakah anda yakin ingin menghapis {{count}} wajah? Aksi ini tidak dapat diurungkan."
|
||||||
|
},
|
||||||
|
"renameFace": {
|
||||||
|
"title": "Ganti Nama Wajah",
|
||||||
|
"desc": "Masukkan nama baru untuk {{name}}"
|
||||||
|
},
|
||||||
|
"button": {
|
||||||
|
"deleteFaceAttempts": "Hapus Wajah",
|
||||||
|
"addFace": "Tambah Wajah",
|
||||||
|
"renameFace": "Ganti Nama Wajah",
|
||||||
|
"deleteFace": "Hapus Wajah",
|
||||||
|
"uploadImage": "Unggah Gambar",
|
||||||
|
"reprocessFace": "Proses Ulang Wajah"
|
||||||
|
},
|
||||||
|
"imageEntry": {
|
||||||
|
"validation": {
|
||||||
|
"selectImage": "Silahkan pilih sebuah file gambar."
|
||||||
|
},
|
||||||
|
"dropActive": "Letakkan gambar di sini…",
|
||||||
|
"dropInstructions": "Seret dan lepaskan atau tempel gambar di sini, atau klik untuk memilih",
|
||||||
|
"maxSize": "Ukuran maksimum: {{size}}MB"
|
||||||
|
},
|
||||||
|
"nofaces": "Tidak ada wajah tersedia",
|
||||||
|
"trainFaceAs": "Latih Gambar sebagai:",
|
||||||
|
"trainFace": "Latih Wajah",
|
||||||
|
"toast": {
|
||||||
|
"success": {
|
||||||
|
"uploadedImage": "Berhasil men unggah gambar.",
|
||||||
|
"addFaceLibrary": "{{name}} telah berhasil ditambahkan ke Pustaka Wajah!",
|
||||||
|
"deletedFace_other": "Berhasil menghapus {{count}} wajah.",
|
||||||
|
"deletedName_other": "{{count}} wajah telah berhasil dihapus.",
|
||||||
|
"renamedFace": "Berhasil mengganti nama wajah ke {{name}}",
|
||||||
|
"trainedFace": "Berhasil melatih wajah.",
|
||||||
|
"updatedFaceScore": "Berhasil memperbaharui nilai wajah."
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"uploadingImageFailed": "Gagal menunggah gambar: {{errorMessage}}",
|
||||||
|
"addFaceLibraryFailed": "Gagal mengatur nama wajah: {{errorMessage}}",
|
||||||
|
"deleteFaceFailed": "Gagal untuk menghapus: {{errorMessage}}",
|
||||||
|
"deleteNameFailed": "Gagal menghapus nama: {{errorMessage}}",
|
||||||
|
"renameFaceFailed": "Gagal mengganti nama wajah: {{errorMessage}}",
|
||||||
|
"trainFailed": "Gagal untuk melatih: {{errorMessage}}",
|
||||||
|
"updateFaceScoreFailed": "Gagal untuk memperbaharui nilai wajah: {{errorMessage}}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -145,7 +145,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"label": {
|
"label": {
|
||||||
"back": "Vai indietro"
|
"back": "Vai indietro",
|
||||||
|
"hide": "Nascondi {{item}}",
|
||||||
|
"show": "Mostra {{item}}",
|
||||||
|
"ID": "ID"
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"configuration": "Configurazione",
|
"configuration": "Configurazione",
|
||||||
@ -265,7 +268,7 @@
|
|||||||
"title": "Ruolo",
|
"title": "Ruolo",
|
||||||
"admin": "Amministratore",
|
"admin": "Amministratore",
|
||||||
"viewer": "Spettatore",
|
"viewer": "Spettatore",
|
||||||
"desc": "Gli Amministratori hanno accesso completo a tutte le funzionalità dell'interfaccia di Frigate. Gli Spettatori sono limitati alla sola visualizzazione delle telecamere, rivedono gli oggetti e le registrazioni storiche nell'interfaccia utente."
|
"desc": "Gli amministratori hanno accesso completo a tutte le funzionalità dell'interfaccia utente di Frigate. Gli spettatori possono visualizzare solo le telecamere, gli elementi di revisione e i filmati storici nell'interfaccia utente."
|
||||||
},
|
},
|
||||||
"accessDenied": {
|
"accessDenied": {
|
||||||
"desc": "Non hai i permessi per visualizzare questa pagina.",
|
"desc": "Non hai i permessi per visualizzare questa pagina.",
|
||||||
@ -291,5 +294,14 @@
|
|||||||
"readTheDocumentation": "Leggi la documentazione",
|
"readTheDocumentation": "Leggi la documentazione",
|
||||||
"information": {
|
"information": {
|
||||||
"pixels": "{{area}}px"
|
"pixels": "{{area}}px"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"two": "{{0}} e {{1}}",
|
||||||
|
"many": "{{items}}, e {{last}}",
|
||||||
|
"separatorWithSpace": ", "
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"optional": "Opzionale",
|
||||||
|
"internalID": "L'ID interno che Frigate utilizza nella configurazione e nel database"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -61,7 +61,7 @@
|
|||||||
"export": "Esporta",
|
"export": "Esporta",
|
||||||
"selectOrExport": "Seleziona o esporta",
|
"selectOrExport": "Seleziona o esporta",
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Esportazione avviata correttamente. Visualizza il file nella cartella /exports.",
|
"success": "Esportazione avviata correttamente. Visualizza il file nella pagina delle esportazioni.",
|
||||||
"error": {
|
"error": {
|
||||||
"failed": "Impossibile avviare l'esportazione: {{error}}",
|
"failed": "Impossibile avviare l'esportazione: {{error}}",
|
||||||
"endTimeMustAfterStartTime": "L'ora di fine deve essere successiva all'ora di inizio",
|
"endTimeMustAfterStartTime": "L'ora di fine deve essere successiva all'ora di inizio",
|
||||||
@ -129,6 +129,7 @@
|
|||||||
"search": {
|
"search": {
|
||||||
"placeholder": "Cerca per etichetta o sottoetichetta..."
|
"placeholder": "Cerca per etichetta o sottoetichetta..."
|
||||||
},
|
},
|
||||||
"noImages": "Nessuna miniatura trovata per questa fotocamera"
|
"noImages": "Nessuna miniatura trovata per questa fotocamera",
|
||||||
|
"unknownLabel": "Immagine di attivazione salvata"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,7 +63,7 @@
|
|||||||
"label": "Cerca la fonte",
|
"label": "Cerca la fonte",
|
||||||
"desc": "Scegli se cercare nelle miniature o nelle descrizioni degli oggetti tracciati.",
|
"desc": "Scegli se cercare nelle miniature o nelle descrizioni degli oggetti tracciati.",
|
||||||
"options": {
|
"options": {
|
||||||
"thumbnailImage": "Immagine anteprima",
|
"thumbnailImage": "Immagine in miniatura",
|
||||||
"description": "Descrizione"
|
"description": "Descrizione"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1 +1,164 @@
|
|||||||
{}
|
{
|
||||||
|
"documentTitle": "Modelli di classificazione",
|
||||||
|
"button": {
|
||||||
|
"deleteClassificationAttempts": "Elimina immagini di classificazione",
|
||||||
|
"renameCategory": "Rinomina classe",
|
||||||
|
"deleteCategory": "Elimina classe",
|
||||||
|
"deleteImages": "Elimina immagini",
|
||||||
|
"trainModel": "Modello di addestramento",
|
||||||
|
"addClassification": "Aggiungi classificazione",
|
||||||
|
"deleteModels": "Elimina modelli",
|
||||||
|
"editModel": "Modifica modello"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"success": {
|
||||||
|
"deletedCategory": "Classe eliminata",
|
||||||
|
"deletedImage": "Immagini eliminate",
|
||||||
|
"categorizedImage": "Immagine classificata con successo",
|
||||||
|
"trainedModel": "Modello addestrato con successo.",
|
||||||
|
"trainingModel": "Avviato con successo l'addestramento del modello.",
|
||||||
|
"deletedModel_one": "Eliminato con successo {{count}} modello",
|
||||||
|
"deletedModel_many": "Eliminati con successo {{count}} modelli",
|
||||||
|
"deletedModel_other": "Eliminati con successo {{count}} modelli",
|
||||||
|
"updatedModel": "Configurazione del modello aggiornata correttamente"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"deleteImageFailed": "Impossibile eliminare: {{errorMessage}}",
|
||||||
|
"deleteCategoryFailed": "Impossibile eliminare la classe: {{errorMessage}}",
|
||||||
|
"categorizeFailed": "Impossibile categorizzare l'immagine: {{errorMessage}}",
|
||||||
|
"trainingFailed": "Impossibile avviare l'addestramento del modello: {{errorMessage}}",
|
||||||
|
"deleteModelFailed": "Impossibile eliminare il modello: {{errorMessage}}",
|
||||||
|
"updateModelFailed": "Impossibile aggiornare il modello: {{errorMessage}}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deleteCategory": {
|
||||||
|
"title": "Elimina classe",
|
||||||
|
"desc": "Vuoi davvero eliminare la classe {{name}}? Questa operazione eliminerà definitivamente tutte le immagini associate e richiederà un nuovo addestramento del modello."
|
||||||
|
},
|
||||||
|
"deleteDatasetImages": {
|
||||||
|
"title": "Elimina immagini della base dati",
|
||||||
|
"desc": "Vuoi davvero eliminare {{count}} immagini da {{dataset}}? Questa azione non può essere annullata e richiederà un nuovo addestramento del modello."
|
||||||
|
},
|
||||||
|
"deleteTrainImages": {
|
||||||
|
"title": "Elimina le immagini di addestramento",
|
||||||
|
"desc": "Vuoi davvero eliminare {{count}} immagini? Questa azione non può essere annullata."
|
||||||
|
},
|
||||||
|
"renameCategory": {
|
||||||
|
"title": "Rinomina classe",
|
||||||
|
"desc": "Inserisci un nuovo nome per {{name}}. Sarà necessario riaddestrare il modello affinché la modifica del nome abbia effetto."
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"invalidName": "Nome non valido. I nomi possono contenere solo lettere, numeri, spazi, apostrofi, caratteri di sottolineatura e trattini."
|
||||||
|
},
|
||||||
|
"train": {
|
||||||
|
"title": "Classificazioni recenti",
|
||||||
|
"titleShort": "Recente",
|
||||||
|
"aria": "Seleziona classificazioni recenti"
|
||||||
|
},
|
||||||
|
"categories": "Classi",
|
||||||
|
"createCategory": {
|
||||||
|
"new": "Crea nuova classe"
|
||||||
|
},
|
||||||
|
"categorizeImageAs": "Classifica immagine come:",
|
||||||
|
"categorizeImage": "Classifica immagine",
|
||||||
|
"noModels": {
|
||||||
|
"object": {
|
||||||
|
"title": "Nessun modello di classificazione degli oggetti",
|
||||||
|
"description": "Crea un modello personalizzato per classificare gli oggetti rilevati.",
|
||||||
|
"buttonText": "Crea modello oggetto"
|
||||||
|
},
|
||||||
|
"state": {
|
||||||
|
"title": "Nessun modello di classificazione dello stato",
|
||||||
|
"description": "Crea un modello personalizzato per monitorare e classificare i cambiamenti di stato in aree specifiche della telecamera.",
|
||||||
|
"buttonText": "Crea modello di stato"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wizard": {
|
||||||
|
"title": "Crea nuova classificazione",
|
||||||
|
"steps": {
|
||||||
|
"nameAndDefine": "Nome e definizione",
|
||||||
|
"stateArea": "Area di stato",
|
||||||
|
"chooseExamples": "Scegli esempi"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"description": "I modelli di stato monitorano le aree fisse delle telecamere per rilevare eventuali cambiamenti (ad esempio, porta aperta/chiusa). I modelli di oggetti aggiungono classificazioni agli oggetti rilevati (ad esempio, animali noti, addetti alle consegne, ecc.).",
|
||||||
|
"name": "Nome",
|
||||||
|
"namePlaceholder": "Inserisci il nome del modello...",
|
||||||
|
"type": "Tipo",
|
||||||
|
"typeState": "Stato",
|
||||||
|
"typeObject": "Oggetto",
|
||||||
|
"objectLabel": "Etichetta oggetto",
|
||||||
|
"objectLabelPlaceholder": "Seleziona il tipo di oggetto...",
|
||||||
|
"classificationType": "Tipo di classificazione",
|
||||||
|
"classificationTypeTip": "Scopri i tipi di classificazione",
|
||||||
|
"classificationTypeDesc": "Le sottoetichette aggiungono testo aggiuntivo all'etichetta dell'oggetto (ad esempio, \"Persona: UPS\"). Gli attributi sono metadati ricercabili, archiviati separatamente nei metadati dell'oggetto.",
|
||||||
|
"classificationSubLabel": "Etichetta secondaria",
|
||||||
|
"classificationAttribute": "Attributo",
|
||||||
|
"classes": "Classi",
|
||||||
|
"classesTip": "Scopri di più sulle classi",
|
||||||
|
"classesStateDesc": "Definisci i diversi stati in cui può trovarsi l'area della tua telecamera. Ad esempio: \"aperto\" e \"chiuso\" per una porta del garage.",
|
||||||
|
"classesObjectDesc": "Definisci le diverse categorie in cui classificare gli oggetti rilevati. Ad esempio: \"corriere\", \"residente\", \"straniero\" per la classificazione delle persone.",
|
||||||
|
"classPlaceholder": "Inserisci il nome della classe...",
|
||||||
|
"errors": {
|
||||||
|
"nameRequired": "Il nome del modello è obbligatorio",
|
||||||
|
"nameLength": "Il nome del modello deve contenere al massimo 64 caratteri",
|
||||||
|
"nameOnlyNumbers": "Il nome del modello non può contenere solo numeri",
|
||||||
|
"classRequired": "È richiesta almeno 1 classe",
|
||||||
|
"classesUnique": "I nomi delle classi devono essere univoci",
|
||||||
|
"stateRequiresTwoClasses": "I modelli di stato richiedono almeno 2 classi",
|
||||||
|
"objectLabelRequired": "Seleziona un'etichetta per l'oggetto",
|
||||||
|
"objectTypeRequired": "Seleziona un tipo di classificazione"
|
||||||
|
},
|
||||||
|
"states": "Stati"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"description": "Seleziona le telecamere e definisci l'area da monitorare per ciascuna telecamera. Il modello classificherà lo stato di queste aree.",
|
||||||
|
"cameras": "Telecamere",
|
||||||
|
"selectCamera": "Seleziona telecamera",
|
||||||
|
"noCameras": "Fai clic su + per aggiungere telecamere",
|
||||||
|
"selectCameraPrompt": "Selezionare una telecamera dall'elenco per definire la sua area di monitoraggio"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"selectImagesPrompt": "Seleziona tutte le immagini con: {{className}}",
|
||||||
|
"selectImagesDescription": "Clicca sulle immagini per selezionarle. Clicca su Continua quando hai finito con questa classe.",
|
||||||
|
"generating": {
|
||||||
|
"title": "Generazione di immagini campione",
|
||||||
|
"description": "Frigate sta estraendo immagini rappresentative dalle registrazioni. L'operazione potrebbe richiedere qualche istante..."
|
||||||
|
},
|
||||||
|
"training": {
|
||||||
|
"title": "Modello di addestramento",
|
||||||
|
"description": "Il tuo modello è in fase di addestramento in sottofondo. Chiudi questa finestra di dialogo e il tuo modello inizierà a funzionare non appena l'addestramento sarà completato."
|
||||||
|
},
|
||||||
|
"retryGenerate": "Riprova generazione",
|
||||||
|
"noImages": "Nessuna immagine campione generata",
|
||||||
|
"classifying": "Classificazione e addestramento...",
|
||||||
|
"trainingStarted": "Addestramento iniziato con successo",
|
||||||
|
"errors": {
|
||||||
|
"noCameras": "Nessuna telecamera configurata",
|
||||||
|
"noObjectLabel": "Nessuna etichetta oggetto selezionata",
|
||||||
|
"generateFailed": "Impossibile generare esempi: {{error}}",
|
||||||
|
"generationFailed": "Generazione fallita. Per favore riprova.",
|
||||||
|
"classifyFailed": "Impossibile classificare le immagini: {{error}}"
|
||||||
|
},
|
||||||
|
"generateSuccess": "Immagini campione generate correttamente"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"title": "Elimina modello di classificazione",
|
||||||
|
"single": "Vuoi davvero eliminare {{name}}? Questa operazione eliminerà definitivamente tutti i dati associati, comprese le immagini e i dati di allenamento. Questa azione non può essere annullata.",
|
||||||
|
"desc": "Vuoi davvero eliminare {{count}} modello/i? Questa operazione eliminerà definitivamente tutti i dati associati, comprese le immagini e i dati di addestramento. Questa azione non può essere annullata."
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"objects": "Oggetti",
|
||||||
|
"states": "Stati"
|
||||||
|
},
|
||||||
|
"details": {
|
||||||
|
"scoreInfo": "Il punteggio rappresenta la confidenza media della classificazione in tutti i rilevamenti di questo oggetto."
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"title": "Modifica modello di classificazione",
|
||||||
|
"descriptionState": "Modifica le classi per questo modello di classificazione dello stato. Le modifiche richiederanno un nuovo addestramento del modello.",
|
||||||
|
"descriptionObject": "Modifica il tipo di oggetto e il tipo di classificazione per questo modello di classificazione degli oggetti.",
|
||||||
|
"stateClassesInfo": "Nota: la modifica delle classi di stato richiede il riaddestramento del modello con le classi aggiornate."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -44,10 +44,17 @@
|
|||||||
"trackedObject_one": "oggetto",
|
"trackedObject_one": "oggetto",
|
||||||
"trackedObject_other": "oggetti",
|
"trackedObject_other": "oggetti",
|
||||||
"noObjectDetailData": "Non sono disponibili dati dettagliati sull'oggetto.",
|
"noObjectDetailData": "Non sono disponibili dati dettagliati sull'oggetto.",
|
||||||
"label": "Dettaglio"
|
"label": "Dettaglio",
|
||||||
|
"settings": "Impostazioni di visualizzazione dettagliata",
|
||||||
|
"alwaysExpandActive": {
|
||||||
|
"title": "Espandi sempre attivo",
|
||||||
|
"desc": "Espandere sempre i dettagli dell'oggetto dell'elemento di revisione attivo quando disponibili."
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"objectTrack": {
|
"objectTrack": {
|
||||||
"trackedPoint": "Punto tracciato",
|
"trackedPoint": "Punto tracciato",
|
||||||
"clickToSeek": "Premi per cercare in questo momento"
|
"clickToSeek": "Premi per cercare in questo momento"
|
||||||
}
|
},
|
||||||
|
"zoomIn": "Ingrandisci",
|
||||||
|
"zoomOut": "Rimpicciolisci"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -158,7 +158,8 @@
|
|||||||
"snapshot": "istantanea",
|
"snapshot": "istantanea",
|
||||||
"object_lifecycle": "ciclo di vita dell'oggetto",
|
"object_lifecycle": "ciclo di vita dell'oggetto",
|
||||||
"details": "dettagli",
|
"details": "dettagli",
|
||||||
"video": "video"
|
"video": "video",
|
||||||
|
"thumbnail": "miniatura"
|
||||||
},
|
},
|
||||||
"itemMenu": {
|
"itemMenu": {
|
||||||
"downloadSnapshot": {
|
"downloadSnapshot": {
|
||||||
@ -201,11 +202,15 @@
|
|||||||
},
|
},
|
||||||
"hideObjectDetails": {
|
"hideObjectDetails": {
|
||||||
"label": "Nascondi il percorso dell'oggetto"
|
"label": "Nascondi il percorso dell'oggetto"
|
||||||
|
},
|
||||||
|
"viewTrackingDetails": {
|
||||||
|
"label": "Visualizza i dettagli di tracciamento",
|
||||||
|
"aria": "Mostra i dettagli di tracciamento"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"confirmDelete": {
|
"confirmDelete": {
|
||||||
"desc": "L'eliminazione di questo oggetto tracciato rimuove l'istantanea, eventuali incorporamenti salvati e tutte le voci associate al ciclo di vita dell'oggetto. Il filmato registrato di questo oggetto tracciato nella vista Storico <em>NON</em> verrà eliminato.<br /><br />Vuoi davvero procedere?",
|
"desc": "L'eliminazione di questo oggetto tracciato rimuove l'istantanea, eventuali incorporamenti salvati e tutte le voci associate ai dettagli di tracciamento. Il filmato registrato di questo oggetto tracciato nella vista Storico <em>NON</em> verrà eliminato.<br /><br />Vuoi davvero procedere?",
|
||||||
"title": "Conferma eliminazione"
|
"title": "Conferma eliminazione"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -230,5 +235,53 @@
|
|||||||
},
|
},
|
||||||
"concerns": {
|
"concerns": {
|
||||||
"label": "Preoccupazioni"
|
"label": "Preoccupazioni"
|
||||||
|
},
|
||||||
|
"trackingDetails": {
|
||||||
|
"title": "Dettagli di tracciamento",
|
||||||
|
"noImageFound": "Nessuna immagine trovata per questo orario.",
|
||||||
|
"createObjectMask": "Crea maschera oggetto",
|
||||||
|
"adjustAnnotationSettings": "Regola le impostazioni di annotazione",
|
||||||
|
"scrollViewTips": "Clicca per visualizzare i momenti più significativi del ciclo di vita di questo oggetto.",
|
||||||
|
"autoTrackingTips": "Le posizioni dei riquadri di delimitazione saranno imprecise per le telecamere con tracciamento automatico.",
|
||||||
|
"count": "{{first}} di {{second}}",
|
||||||
|
"trackedPoint": "Punto tracciato",
|
||||||
|
"lifecycleItemDesc": {
|
||||||
|
"visible": "{{label}} rilevato",
|
||||||
|
"entered_zone": "{{label}} è entrato in {{zones}}",
|
||||||
|
"active": "{{label}} è diventato attivo",
|
||||||
|
"stationary": "{{label}} è diventato stazionario",
|
||||||
|
"attribute": {
|
||||||
|
"faceOrLicense_plate": "{{attribute}} rilevato per {{label}}",
|
||||||
|
"other": "{{label}} riconosciuto come {{attribute}}"
|
||||||
|
},
|
||||||
|
"gone": "{{label}} lasciato",
|
||||||
|
"heard": "{{label}} sentito",
|
||||||
|
"external": "{{label}} rilevato",
|
||||||
|
"header": {
|
||||||
|
"zones": "Zone",
|
||||||
|
"ratio": "Rapporto",
|
||||||
|
"area": "Area"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"annotationSettings": {
|
||||||
|
"title": "Impostazioni di annotazione",
|
||||||
|
"showAllZones": {
|
||||||
|
"title": "Mostra tutte le zone",
|
||||||
|
"desc": "Mostra sempre le zone nei fotogrammi in cui gli oggetti sono entrati in una zona."
|
||||||
|
},
|
||||||
|
"offset": {
|
||||||
|
"label": "Differenza annotazione",
|
||||||
|
"desc": "Questi dati provengono dal flusso di rilevamento della telecamera, ma vengono sovrapposti alle immagini del flusso di registrazione. È improbabile che i due flussi siano perfettamente sincronizzati. Di conseguenza, il riquadro di delimitazione e il filmato non saranno perfettamente allineati. È possibile utilizzare questa impostazione per spostare le annotazioni in avanti o indietro nel tempo per allinearle meglio al filmato registrato.",
|
||||||
|
"millisecondsToOffset": "Millisecondi per compensare il rilevamento delle annotazioni. <em>Predefinito: 0</em>",
|
||||||
|
"tips": "SUGGERIMENTO: Immagina un video evento con una persona che cammina da sinistra a destra. Se il riquadro di delimitazione della cronologia dell'evento si trova costantemente a sinistra della persona, il valore dovrebbe essere diminuito. Allo stesso modo, se una persona cammina da sinistra a destra e il riquadro di delimitazione si trova costantemente davanti alla persona, il valore dovrebbe essere aumentato.",
|
||||||
|
"toast": {
|
||||||
|
"success": "La differenza dell'annotazione per {{camera}} è stato salvato nel file di configurazione. Riavvia Frigate per applicare le modifiche."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"carousel": {
|
||||||
|
"previous": "Diapositiva precedente",
|
||||||
|
"next": "Diapositiva successiva"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,5 +13,11 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"renameExportFailed": "Impossibile rinominare l'esportazione: {{errorMessage}}"
|
"renameExportFailed": "Impossibile rinominare l'esportazione: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"shareExport": "Condividi esportazione",
|
||||||
|
"downloadVideo": "Scarica video",
|
||||||
|
"editName": "Modifica nome",
|
||||||
|
"deleteExport": "Elimina esportazione"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"selectItem": "Seleziona {{item}}",
|
"selectItem": "Seleziona {{item}}",
|
||||||
"description": {
|
"description": {
|
||||||
"addFace": "Procedura per aggiungere una nuova raccolta alla Libreria dei Volti.",
|
"addFace": "Aggiungi una nuova raccolta alla Libreria dei Volti caricando la tua prima immagine.",
|
||||||
"placeholder": "Inserisci un nome per questa raccolta",
|
"placeholder": "Inserisci un nome per questa raccolta",
|
||||||
"invalidName": "Nome non valido. I nomi possono contenere solo lettere, numeri, spazi, apostrofi, caratteri di sottolineatura e trattini."
|
"invalidName": "Nome non valido. I nomi possono contenere solo lettere, numeri, spazi, apostrofi, caratteri di sottolineatura e trattini."
|
||||||
},
|
},
|
||||||
|
|||||||
@ -494,7 +494,11 @@
|
|||||||
"label": "Riproduci video di avvisi",
|
"label": "Riproduci video di avvisi",
|
||||||
"desc": "Per impostazione predefinita, gli avvisi recenti nella schermata dal vivo vengono riprodotti come brevi video in ciclo. Disattiva questa opzione per visualizzare solo un'immagine statica degli avvisi recenti su questo dispositivo/browser."
|
"desc": "Per impostazione predefinita, gli avvisi recenti nella schermata dal vivo vengono riprodotti come brevi video in ciclo. Disattiva questa opzione per visualizzare solo un'immagine statica degli avvisi recenti su questo dispositivo/browser."
|
||||||
},
|
},
|
||||||
"title": "Schermata dal vivo"
|
"title": "Schermata dal vivo",
|
||||||
|
"displayCameraNames": {
|
||||||
|
"label": "Mostra sempre i nomi delle telecamere",
|
||||||
|
"desc": "Mostra sempre i nomi delle telecamere in una scheda nel cruscotto della visualizzazione dal vivo multi telecamera."
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"title": "Impostazioni generali",
|
"title": "Impostazioni generali",
|
||||||
"storedLayouts": {
|
"storedLayouts": {
|
||||||
@ -745,7 +749,7 @@
|
|||||||
"triggers": {
|
"triggers": {
|
||||||
"documentTitle": "Inneschi",
|
"documentTitle": "Inneschi",
|
||||||
"management": {
|
"management": {
|
||||||
"title": "Gestione inneschi",
|
"title": "Inneschi",
|
||||||
"desc": "Gestisci gli inneschi per {{camera}}. Utilizza il tipo miniatura per attivare miniature simili all'oggetto tracciato selezionato e il tipo descrizione per attivare descrizioni simili al testo specificato."
|
"desc": "Gestisci gli inneschi per {{camera}}. Utilizza il tipo miniatura per attivare miniature simili all'oggetto tracciato selezionato e il tipo descrizione per attivare descrizioni simili al testo specificato."
|
||||||
},
|
},
|
||||||
"addTrigger": "Aggiungi innesco",
|
"addTrigger": "Aggiungi innesco",
|
||||||
@ -766,7 +770,9 @@
|
|||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"alert": "Contrassegna come avviso",
|
"alert": "Contrassegna come avviso",
|
||||||
"notification": "Invia notifica"
|
"notification": "Invia notifica",
|
||||||
|
"sub_label": "Aggiungi sottoetichetta",
|
||||||
|
"attribute": "Aggiungi attributo"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"createTrigger": {
|
"createTrigger": {
|
||||||
@ -784,25 +790,28 @@
|
|||||||
"form": {
|
"form": {
|
||||||
"name": {
|
"name": {
|
||||||
"title": "Nome",
|
"title": "Nome",
|
||||||
"placeholder": "Inserisci il nome dell'innesco",
|
"placeholder": "Assegna un nome a questo innesco",
|
||||||
"error": {
|
"error": {
|
||||||
"minLength": "Il nome deve essere lungo almeno 2 caratteri.",
|
"minLength": "Il campo deve contenere almeno 2 caratteri.",
|
||||||
"invalidCharacters": "Il nome può contenere solo lettere, numeri, caratteri di sottolineatura e trattini.",
|
"invalidCharacters": "Il campo può contenere solo lettere, numeri, caratteri di sottolineatura e trattini.",
|
||||||
"alreadyExists": "Per questa telecamera esiste già un innesco con questo nome."
|
"alreadyExists": "Per questa telecamera esiste già un innesco con questo nome."
|
||||||
}
|
},
|
||||||
|
"description": "Inserisci un nome o una descrizione univoca per identificare questo innesco"
|
||||||
},
|
},
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"description": "Abilita o disabilita questo innesco"
|
"description": "Abilita o disabilita questo innesco"
|
||||||
},
|
},
|
||||||
"type": {
|
"type": {
|
||||||
"title": "Tipo",
|
"title": "Tipo",
|
||||||
"placeholder": "Seleziona il tipo di innesco"
|
"placeholder": "Seleziona il tipo di innesco",
|
||||||
|
"description": "Si attiva quando viene rilevata una descrizione di un oggetto simile tracciato",
|
||||||
|
"thumbnail": "Attiva quando viene rilevata una miniatura di un oggetto simile tracciato"
|
||||||
},
|
},
|
||||||
"content": {
|
"content": {
|
||||||
"title": "Contenuto",
|
"title": "Contenuto",
|
||||||
"imagePlaceholder": "Seleziona un'immagine",
|
"imagePlaceholder": "Seleziona una miniatura",
|
||||||
"textPlaceholder": "Inserisci il contenuto del testo",
|
"textPlaceholder": "Inserisci il contenuto del testo",
|
||||||
"imageDesc": "Seleziona un'immagine per attivare questa azione quando viene rilevata un'immagine simile.",
|
"imageDesc": "Vengono visualizzate solo le 100 miniature più recenti. Se non riesci a trovare la miniatura desiderata, controlla gli oggetti precedenti in Esplora e imposta un innesco dal menu.",
|
||||||
"textDesc": "Inserisci il testo per attivare questa azione quando viene rilevata una descrizione simile dell'oggetto tracciato.",
|
"textDesc": "Inserisci il testo per attivare questa azione quando viene rilevata una descrizione simile dell'oggetto tracciato.",
|
||||||
"error": {
|
"error": {
|
||||||
"required": "Il contenuto è obbligatorio."
|
"required": "Il contenuto è obbligatorio."
|
||||||
@ -813,11 +822,12 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"min": "La soglia deve essere almeno 0",
|
"min": "La soglia deve essere almeno 0",
|
||||||
"max": "La soglia deve essere al massimo 1"
|
"max": "La soglia deve essere al massimo 1"
|
||||||
}
|
},
|
||||||
|
"desc": "Imposta la soglia di similarità per questo innesco. Una soglia più alta indica che è necessaria una corrispondenza più vicina per attivare l'innesco."
|
||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"title": "Azioni",
|
"title": "Azioni",
|
||||||
"desc": "Per impostazione predefinita, Frigate invia un messaggio MQTT per tutti gli inneschi. Scegli un'azione aggiuntiva da eseguire quando questo innesco si attiva.",
|
"desc": "Per impostazione predefinita, Frigate invia un messaggio MQTT per tutti gli inneschi. Le sottoetichette aggiungono il nome dell'innesco all'etichetta dell'oggetto. Gli attributi sono metadati ricercabili, memorizzati separatamente nei metadati dell'oggetto tracciato.",
|
||||||
"error": {
|
"error": {
|
||||||
"min": "È necessario selezionare almeno un'azione."
|
"min": "È necessario selezionare almeno un'azione."
|
||||||
}
|
}
|
||||||
@ -844,6 +854,23 @@
|
|||||||
"semanticSearch": {
|
"semanticSearch": {
|
||||||
"title": "La ricerca semantica è disabilitata",
|
"title": "La ricerca semantica è disabilitata",
|
||||||
"desc": "Per utilizzare gli inneschi, è necessario abilitare la ricerca semantica."
|
"desc": "Per utilizzare gli inneschi, è necessario abilitare la ricerca semantica."
|
||||||
|
},
|
||||||
|
"wizard": {
|
||||||
|
"title": "Crea innesco",
|
||||||
|
"step1": {
|
||||||
|
"description": "Configura le impostazioni di base per il tuo innesco."
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"description": "Imposta il contenuto che attiverà questa azione."
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"description": "Configura la soglia e le azioni per questo innesco."
|
||||||
|
},
|
||||||
|
"steps": {
|
||||||
|
"nameAndType": "Nome e tipo",
|
||||||
|
"configureData": "Configurare i dati",
|
||||||
|
"thresholdAndActions": "Soglia e azioni"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"roles": {
|
"roles": {
|
||||||
@ -865,7 +892,9 @@
|
|||||||
"createRole": "Ruolo {{role}} creato con successo",
|
"createRole": "Ruolo {{role}} creato con successo",
|
||||||
"updateCameras": "Telecamere aggiornate per il ruolo {{role}}",
|
"updateCameras": "Telecamere aggiornate per il ruolo {{role}}",
|
||||||
"deleteRole": "Ruolo {{role}} eliminato con successo",
|
"deleteRole": "Ruolo {{role}} eliminato con successo",
|
||||||
"userRolesUpdated": "{{count}} utenti assegnati a questo ruolo sono stati aggiornati a \"spettatore\", che ha accesso a tutte le telecamere."
|
"userRolesUpdated_one": "{{count}} utenti assegnati a questo ruolo sono stati aggiornati a \"spettatore\", che ha accesso a tutte le telecamere.",
|
||||||
|
"userRolesUpdated_many": "",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Impossibile creare il ruolo: {{errorMessage}}",
|
"createRoleFailed": "Impossibile creare il ruolo: {{errorMessage}}",
|
||||||
@ -984,7 +1013,9 @@
|
|||||||
},
|
},
|
||||||
"resolutionHigh": "Una risoluzione di {{resolution}} potrebbe causare un aumento dell'utilizzo delle risorse.",
|
"resolutionHigh": "Una risoluzione di {{resolution}} potrebbe causare un aumento dell'utilizzo delle risorse.",
|
||||||
"resolutionLow": "Una risoluzione di {{resolution}} potrebbe essere troppo bassa per un rilevamento affidabile di oggetti di piccole dimensioni."
|
"resolutionLow": "Una risoluzione di {{resolution}} potrebbe essere troppo bassa per un rilevamento affidabile di oggetti di piccole dimensioni."
|
||||||
}
|
},
|
||||||
|
"ffmpegModule": "Utilizza la modalità di compatibilità della trasmissione",
|
||||||
|
"ffmpegModuleDescription": "Se il flusso non si carica dopo diversi tentativi, prova ad abilitare questa opzione. Se abilitata, Frigate utilizzerà il modulo ffmpeg con go2rtc. Questo potrebbe garantire una migliore compatibilità con alcuni flussi di telecamere."
|
||||||
},
|
},
|
||||||
"title": "Aggiungi telecamera",
|
"title": "Aggiungi telecamera",
|
||||||
"description": "Per aggiungere una nuova telecamera alla tua installazione Frigate, segui i passaggi indicati di seguito.",
|
"description": "Per aggiungere una nuova telecamera alla tua installazione Frigate, segui i passaggi indicati di seguito.",
|
||||||
|
|||||||
@ -582,7 +582,7 @@
|
|||||||
"createRole": "ロール {{role}} を作成しました",
|
"createRole": "ロール {{role}} を作成しました",
|
||||||
"updateCameras": "ロール {{role}} のカメラを更新しました",
|
"updateCameras": "ロール {{role}} のカメラを更新しました",
|
||||||
"deleteRole": "ロール {{role}} を削除しました",
|
"deleteRole": "ロール {{role}} を削除しました",
|
||||||
"userRolesUpdated": "このロールに割り当てられていた {{count}} ユーザーは「viewer」に更新され、すべてのカメラへの閲覧アクセスが付与されました。"
|
"userRolesUpdated_other": "このロールに割り当てられていた {{count}} ユーザーは「viewer」に更新され、すべてのカメラへの閲覧アクセスが付与されました。"
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "ロールの作成に失敗しました: {{errorMessage}}",
|
"createRoleFailed": "ロールの作成に失敗しました: {{errorMessage}}",
|
||||||
|
|||||||
@ -782,7 +782,9 @@
|
|||||||
"toast": {
|
"toast": {
|
||||||
"success": {
|
"success": {
|
||||||
"deleteRole": "Rolė {{role}} sėkmingai pašalinta",
|
"deleteRole": "Rolė {{role}} sėkmingai pašalinta",
|
||||||
"userRolesUpdated": "{{count}} šios rolės vartotojai buvo priskirti rolei 'žiūrovas', kuri turi prieigą prie visų kamerų.",
|
"userRolesUpdated_one": "{{count}} šios rolės vartotojai buvo priskirti rolei 'žiūrovas', kuri turi prieigą prie visų kamerų.",
|
||||||
|
"userRolesUpdated_few": "",
|
||||||
|
"userRolesUpdated_other": "",
|
||||||
"createRole": "Rolė {{role}} sėkmingai sukurta",
|
"createRole": "Rolė {{role}} sėkmingai sukurta",
|
||||||
"updateCameras": "Atnaujintos kameros rolei {{role}}"
|
"updateCameras": "Atnaujintos kameros rolei {{role}}"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -294,6 +294,7 @@
|
|||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"two": "{{0}} og {{1}}",
|
"two": "{{0}} og {{1}}",
|
||||||
"many": "{{items}}, og {{last}}"
|
"many": "{{items}}, og {{last}}",
|
||||||
|
"separatorWithSpace": ", "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
"false_other": "Dette er ikke en {{label}}"
|
"false_other": "Dette er ikke en {{label}}"
|
||||||
},
|
},
|
||||||
"question": {
|
"question": {
|
||||||
"label": "Bekreft denne merkelappen for Frigate Plus",
|
"label": "Bekreft denne etiketten for Frigate Plus",
|
||||||
"ask_an": "Er dette objekt en <code>{{label}}</code>?",
|
"ask_an": "Er dette objekt en <code>{{label}}</code>?",
|
||||||
"ask_a": "Er dette objektet en <code>{{label}}</code>?",
|
"ask_a": "Er dette objektet en <code>{{label}}</code>?",
|
||||||
"ask_full": "Er dette objekt en <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
|
"ask_full": "Er dette objekt en <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
|
||||||
@ -56,7 +56,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Eksport startet. Se filen på eksportsiden.",
|
"success": "Eksport startet. Se filen på eksportsiden.",
|
||||||
"error": {
|
"error": {
|
||||||
"failed": "Klarte ikke å starte eksport: {{error}}",
|
"failed": "Klarte ikke å starte eksport: {{error}}",
|
||||||
"noVaildTimeSelected": "Ingen gyldig tidsperiode valgt",
|
"noVaildTimeSelected": "Ingen gyldig tidsperiode valgt",
|
||||||
@ -124,7 +124,7 @@
|
|||||||
"imagePicker": {
|
"imagePicker": {
|
||||||
"selectImage": "Velg et sporet objekts miniatyrbilde",
|
"selectImage": "Velg et sporet objekts miniatyrbilde",
|
||||||
"search": {
|
"search": {
|
||||||
"placeholder": "Søk etter (under-)merkelapp..."
|
"placeholder": "Søk etter (under-)etikett..."
|
||||||
},
|
},
|
||||||
"noImages": "Ingen miniatyrbilder funnet for dette kameraet",
|
"noImages": "Ingen miniatyrbilder funnet for dette kameraet",
|
||||||
"unknownLabel": "Lagret utløserbilde"
|
"unknownLabel": "Lagret utløserbilde"
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"filter": "Filter",
|
"filter": "Filter",
|
||||||
"labels": {
|
"labels": {
|
||||||
"label": "Merkelapper",
|
"label": "Etiketter",
|
||||||
"all": {
|
"all": {
|
||||||
"title": "Alle masker / soner",
|
"title": "Alle masker / soner",
|
||||||
"short": "Merkelapper"
|
"short": "Etiketter"
|
||||||
},
|
},
|
||||||
"count": "{{count}} merkelapper",
|
"count": "{{count}} merkelapper",
|
||||||
"count_other": "{{count}} Merkelapper",
|
"count_other": "{{count}} Etiketter",
|
||||||
"count_one": "{{count}} Merkelapp"
|
"count_one": "{{count}} Etikett"
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"hasVideoClip": "Har et videoklipp",
|
"hasVideoClip": "Har et videoklipp",
|
||||||
@ -39,7 +39,7 @@
|
|||||||
"title": "Innstillinger",
|
"title": "Innstillinger",
|
||||||
"defaultView": {
|
"defaultView": {
|
||||||
"title": "Standard visning",
|
"title": "Standard visning",
|
||||||
"desc": "Når ingen filtre er valgt, vis et sammendrag av de nyeste sporede objektene per merkelapp, eller vis et ufiltrert rutenett.",
|
"desc": "Når ingen filtre er valgt, vis et sammendrag av de nyeste sporede objektene per etikett, eller vis et ufiltrert rutenett.",
|
||||||
"summary": "Sammendrag",
|
"summary": "Sammendrag",
|
||||||
"unfilteredGrid": "Ufiltrert rutenett"
|
"unfilteredGrid": "Ufiltrert rutenett"
|
||||||
},
|
},
|
||||||
@ -101,8 +101,8 @@
|
|||||||
},
|
},
|
||||||
"timeRange": "Tidsrom",
|
"timeRange": "Tidsrom",
|
||||||
"subLabels": {
|
"subLabels": {
|
||||||
"label": "Under-Merkelapper",
|
"label": "Underetiketter",
|
||||||
"all": "Alle under-Merkelapper"
|
"all": "Alle underetiketter"
|
||||||
},
|
},
|
||||||
"score": "Poengsum",
|
"score": "Poengsum",
|
||||||
"estimatedSpeed": "Estimert hastighet ({{unit}})",
|
"estimatedSpeed": "Estimert hastighet ({{unit}})",
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
"renameCategory": "Gi nytt navn til kategori",
|
"renameCategory": "Gi nytt navn til kategori",
|
||||||
"deleteCategory": "Slett kategori",
|
"deleteCategory": "Slett kategori",
|
||||||
"deleteImages": "Slett bilder",
|
"deleteImages": "Slett bilder",
|
||||||
"trainModel": "Tren modell"
|
"trainModel": "Tren modell",
|
||||||
|
"addClassification": "Legg til klassifisering",
|
||||||
|
"deleteModels": "Slett modeller"
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": {
|
"success": {
|
||||||
@ -13,13 +15,16 @@
|
|||||||
"deletedImage": "Bilder slettet",
|
"deletedImage": "Bilder slettet",
|
||||||
"categorizedImage": "Bildet ble klassifisert",
|
"categorizedImage": "Bildet ble klassifisert",
|
||||||
"trainedModel": "Modellen ble trent.",
|
"trainedModel": "Modellen ble trent.",
|
||||||
"trainingModel": "Modelltrening startet."
|
"trainingModel": "Modelltrening startet.",
|
||||||
|
"deletedModel_one": "{{count}} modell(er) ble slettet",
|
||||||
|
"deletedModel_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"deleteImageFailed": "Kunne ikke slette: {{errorMessage}}",
|
"deleteImageFailed": "Kunne ikke slette: {{errorMessage}}",
|
||||||
"deleteCategoryFailed": "Kunne ikke slette kategori: {{errorMessage}}",
|
"deleteCategoryFailed": "Kunne ikke slette kategori: {{errorMessage}}",
|
||||||
"categorizeFailed": "Kunne ikke klassifisere bilde: {{errorMessage}}",
|
"categorizeFailed": "Kunne ikke klassifisere bilde: {{errorMessage}}",
|
||||||
"trainingFailed": "Kunne ikke starte modelltrening: {{errorMessage}}"
|
"trainingFailed": "Kunne ikke starte modelltrening: {{errorMessage}}",
|
||||||
|
"deleteModelFailed": "Kunne ikke slette modell: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"deleteCategory": {
|
"deleteCategory": {
|
||||||
@ -43,7 +48,8 @@
|
|||||||
},
|
},
|
||||||
"train": {
|
"train": {
|
||||||
"title": "Nylige klassifiseringer",
|
"title": "Nylige klassifiseringer",
|
||||||
"aria": "Velg nylige klassifiseringer"
|
"aria": "Velg nylige klassifiseringer",
|
||||||
|
"titleShort": "Nylig"
|
||||||
},
|
},
|
||||||
"categories": "Kategorier",
|
"categories": "Kategorier",
|
||||||
"createCategory": {
|
"createCategory": {
|
||||||
@ -98,7 +104,8 @@
|
|||||||
"stateRequiresTwoClasses": "Tilstandsmodeller krever minst to kategorier",
|
"stateRequiresTwoClasses": "Tilstandsmodeller krever minst to kategorier",
|
||||||
"objectLabelRequired": "Velg en objektetikett",
|
"objectLabelRequired": "Velg en objektetikett",
|
||||||
"objectTypeRequired": "Velg en klassifiseringstype"
|
"objectTypeRequired": "Velg en klassifiseringstype"
|
||||||
}
|
},
|
||||||
|
"states": "Tilstander"
|
||||||
},
|
},
|
||||||
"step2": {
|
"step2": {
|
||||||
"description": "Velg kameraer og definer området som skal overvåkes for hvert kamera. Modellen vil klassifisere tilstanden til disse områdene.",
|
"description": "Velg kameraer og definer området som skal overvåkes for hvert kamera. Modellen vil klassifisere tilstanden til disse områdene.",
|
||||||
@ -131,5 +138,17 @@
|
|||||||
},
|
},
|
||||||
"generateSuccess": "Eksempelbilder ble generert"
|
"generateSuccess": "Eksempelbilder ble generert"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"title": "Slett klassifiseringsmodell",
|
||||||
|
"single": "Er du sikker på at du vil slette {{name}}? Dette vil permanent slette alle tilknyttede data, inkludert bilder og treningsdata. Denne handlingen kan ikke angres.",
|
||||||
|
"desc": "Er du sikker på at du vil slette {{count}} modell(er)? Dette vil permanent slette alle tilknyttede data, inkludert bilder og treningsdata. Denne handlingen kan ikke angres."
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"objects": "Objekter",
|
||||||
|
"states": "Tilstander"
|
||||||
|
},
|
||||||
|
"details": {
|
||||||
|
"scoreInfo": "Poengsummen representerer gjennomsnittlig klassifiseringskonfidens på tvers av alle deteksjoner av dette objektet."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -43,10 +43,17 @@
|
|||||||
"trackedObject_one": "objekt",
|
"trackedObject_one": "objekt",
|
||||||
"trackedObject_other": "objekter",
|
"trackedObject_other": "objekter",
|
||||||
"noObjectDetailData": "Ingen detaljdata for objektet tilgjengelig.",
|
"noObjectDetailData": "Ingen detaljdata for objektet tilgjengelig.",
|
||||||
"label": "Detalj"
|
"label": "Detalj",
|
||||||
|
"settings": "Detaljvisning – innstillinger",
|
||||||
|
"alwaysExpandActive": {
|
||||||
|
"desc": "Utvid alltid objektdetaljene for det aktive gjennomgangselementet når tilgjengelig.",
|
||||||
|
"title": "Utvid alltid for aktive"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"objectTrack": {
|
"objectTrack": {
|
||||||
"trackedPoint": "Sporingspunkt",
|
"trackedPoint": "Sporingspunkt",
|
||||||
"clickToSeek": "Klikk for å gå til dette tidspunktet"
|
"clickToSeek": "Klikk for å gå til dette tidspunktet"
|
||||||
}
|
},
|
||||||
|
"zoomIn": "Zoom inn",
|
||||||
|
"zoomOut": "Zoom ut"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -87,7 +87,7 @@
|
|||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": {
|
"success": {
|
||||||
"updatedSublabel": "Under-merkelapp oppdatert med suksess.",
|
"updatedSublabel": "Underetikett ble oppdatert.",
|
||||||
"updatedLPR": "Vellykket oppdatering av kjennemerke.",
|
"updatedLPR": "Vellykket oppdatering av kjennemerke.",
|
||||||
"regenerate": "En ny beskrivelse har blitt anmodet fra {{provider}}. Avhengig av hastigheten til leverandøren din, kan den nye beskrivelsen ta litt tid å regenerere.",
|
"regenerate": "En ny beskrivelse har blitt anmodet fra {{provider}}. Avhengig av hastigheten til leverandøren din, kan den nye beskrivelsen ta litt tid å regenerere.",
|
||||||
"audioTranscription": "Lydtranskripsjon ble forespurt."
|
"audioTranscription": "Lydtranskripsjon ble forespurt."
|
||||||
@ -95,7 +95,7 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"regenerate": "Feil ved anrop til {{provider}} for en ny beskrivelse: {{errorMessage}}",
|
"regenerate": "Feil ved anrop til {{provider}} for en ny beskrivelse: {{errorMessage}}",
|
||||||
"updatedLPRFailed": "Oppdatering av kjennemerke feilet: {{errorMessage}}",
|
"updatedLPRFailed": "Oppdatering av kjennemerke feilet: {{errorMessage}}",
|
||||||
"updatedSublabelFailed": "Feil ved oppdatering av under-merkelapp: {{errorMessage}}",
|
"updatedSublabelFailed": "Feil ved oppdatering av underetikett: {{errorMessage}}",
|
||||||
"audioTranscription": "Forespørsel om lydtranskripsjon feilet: {{errorMessage}}"
|
"audioTranscription": "Forespørsel om lydtranskripsjon feilet: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -103,7 +103,7 @@
|
|||||||
"tips": {
|
"tips": {
|
||||||
"mismatch_one": "{{count}} utilgjengelig objekt ble oppdaget og inkludert i dette inspeksjonselementet. Disse objektene kvalifiserte ikke som et varsel eller deteksjon, eller har allerede blitt ryddet opp/slettet.",
|
"mismatch_one": "{{count}} utilgjengelig objekt ble oppdaget og inkludert i dette inspeksjonselementet. Disse objektene kvalifiserte ikke som et varsel eller deteksjon, eller har allerede blitt ryddet opp/slettet.",
|
||||||
"mismatch_other": "{{count}} utilgjengelige objekter ble oppdaget og inkludert i dette inspeksjonselementet. Disse objektene kvalifiserte ikke som et varsel eller deteksjon, eller har allerede blitt ryddet opp/slettet.",
|
"mismatch_other": "{{count}} utilgjengelige objekter ble oppdaget og inkludert i dette inspeksjonselementet. Disse objektene kvalifiserte ikke som et varsel eller deteksjon, eller har allerede blitt ryddet opp/slettet.",
|
||||||
"hasMissingObjects": "Juster konfigurasjonen hvis du vil at Frigate skal lagre sporede objekter for følgende merkelapper: <em>{{objects}}</em>"
|
"hasMissingObjects": "Juster konfigurasjonen hvis du vil at Frigate skal lagre sporede objekter for følgende etiketter: <em>{{objects}}</em>"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"topScore": {
|
"topScore": {
|
||||||
@ -126,10 +126,10 @@
|
|||||||
},
|
},
|
||||||
"regenerateFromThumbnails": "Regenerer fra miniatyrbilder",
|
"regenerateFromThumbnails": "Regenerer fra miniatyrbilder",
|
||||||
"tips": {
|
"tips": {
|
||||||
"descriptionSaved": "Beskrivelse lagret med suksess",
|
"descriptionSaved": "Beskrivelsen ble lagret",
|
||||||
"saveDescriptionFailed": "Feil ved lagring av beskrivelse: {{errorMessage}}"
|
"saveDescriptionFailed": "Feil ved lagring av beskrivelse: {{errorMessage}}"
|
||||||
},
|
},
|
||||||
"label": "Merkelapp",
|
"label": "Etikett",
|
||||||
"editLPR": {
|
"editLPR": {
|
||||||
"title": "Rediger kjennemerke",
|
"title": "Rediger kjennemerke",
|
||||||
"descNoLabel": "Skriv inn et nytt kjennemerke for dette sporede objekt",
|
"descNoLabel": "Skriv inn et nytt kjennemerke for dette sporede objekt",
|
||||||
@ -142,9 +142,9 @@
|
|||||||
"expandRegenerationMenu": "Utvid regenereringsmenyen",
|
"expandRegenerationMenu": "Utvid regenereringsmenyen",
|
||||||
"regenerateFromSnapshot": "Regenerer fra øyeblikksbilde",
|
"regenerateFromSnapshot": "Regenerer fra øyeblikksbilde",
|
||||||
"editSubLabel": {
|
"editSubLabel": {
|
||||||
"title": "Rediger under-merkelapp",
|
"title": "Rediger underetikett",
|
||||||
"desc": "Angi en ny under-merkelapp for denne {{label}}",
|
"desc": "Angi en ny underetikett for \"{{label}}\"",
|
||||||
"descNoLabel": "Angi en ny under-merkelapp for dette sporede objektet"
|
"descNoLabel": "Angi en ny underetikett for dette sporede objektet"
|
||||||
},
|
},
|
||||||
"snapshotScore": {
|
"snapshotScore": {
|
||||||
"label": "Øyeblikksbilde poengsum"
|
"label": "Øyeblikksbilde poengsum"
|
||||||
@ -204,7 +204,7 @@
|
|||||||
"deleteTrackedObject": {
|
"deleteTrackedObject": {
|
||||||
"toast": {
|
"toast": {
|
||||||
"error": "Feil ved sletting av sporet objekt: {{errorMessage}}",
|
"error": "Feil ved sletting av sporet objekt: {{errorMessage}}",
|
||||||
"success": "Sporet objekt ble slettet med suksess."
|
"success": "Sporet objekt ble slettet."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tooltip": "Samsvarer {{type}} til {{confidence}}%"
|
"tooltip": "Samsvarer {{type}} til {{confidence}}%"
|
||||||
@ -214,7 +214,8 @@
|
|||||||
"details": "detaljer",
|
"details": "detaljer",
|
||||||
"snapshot": "øyeblikksbilde",
|
"snapshot": "øyeblikksbilde",
|
||||||
"video": "video",
|
"video": "video",
|
||||||
"object_lifecycle": "objektets livssyklus"
|
"object_lifecycle": "objektets livssyklus",
|
||||||
|
"thumbnail": "miniatyrbilde"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"confirmDelete": {
|
"confirmDelete": {
|
||||||
@ -238,7 +239,7 @@
|
|||||||
"noImageFound": "Ingen bilder funnet for dette tidsstempelet.",
|
"noImageFound": "Ingen bilder funnet for dette tidsstempelet.",
|
||||||
"createObjectMask": "Opprett objektmaske",
|
"createObjectMask": "Opprett objektmaske",
|
||||||
"adjustAnnotationSettings": "Juster annoteringsinnstillinger",
|
"adjustAnnotationSettings": "Juster annoteringsinnstillinger",
|
||||||
"scrollViewTips": "Rull for å se de viktige øyeblikkene i dette objektets livssyklus.",
|
"scrollViewTips": "Klikk for å se de viktige øyeblikkene i dette objektets livssyklus.",
|
||||||
"autoTrackingTips": "Posisjonene til avgrensningsboksene vil være unøyaktige for kameraer med automatisk sporing.",
|
"autoTrackingTips": "Posisjonene til avgrensningsboksene vil være unøyaktige for kameraer med automatisk sporing.",
|
||||||
"count": "{{first}} av {{second}}",
|
"count": "{{first}} av {{second}}",
|
||||||
"trackedPoint": "Sporet punkt",
|
"trackedPoint": "Sporet punkt",
|
||||||
@ -268,11 +269,11 @@
|
|||||||
},
|
},
|
||||||
"offset": {
|
"offset": {
|
||||||
"label": "Annoteringsforskyvning",
|
"label": "Annoteringsforskyvning",
|
||||||
"desc": "Disse dataene kommer fra kameraets deteksjonsstrøm, men legges over bilder fra opptaksstrømmen. Det er usannsynlig at de to strømmene er perfekt synkronisert. Som et resultat vil avgrensningsboksen og opptaket ikke stemme perfekt overens. Feltet <code>annotation_offset</code> kan imidlertid brukes til å justere dette.",
|
"desc": "Disse dataene kommer fra kameraets deteksjonsstrøm, men legges over bilder fra opptaksstrømmen. Det er lite sannsynlig at de to strømmene er perfekt synkronisert. Som et resultat vil avgrensningsboksen og opptaket ikke stemme perfekt overens. Du kan bruke denne innstillingen til å forskyve annoteringene fremover eller bakover i tid for å tilpasse dem bedre til det innspilte opptaket.",
|
||||||
"millisecondsToOffset": "Antall millisekunder deteksjonsannoteringene skal forskyves med. <em>Standard: 0</em>",
|
"millisecondsToOffset": "Antall millisekunder deteksjonsannoteringene skal forskyves med. <em>Standard: 0</em>",
|
||||||
"tips": "TIPS: Se for deg et hendelsesklipp med en person som går fra venstre mot høyre. Hvis avgrensningsboksen på tidslinjen for hendelsen konsekvent er til venstre for personen, bør verdien reduseres. På samme måte, hvis en person går fra venstre mot høyre og avgrensningsboksen konsekvent er foran personen, bør verdien økes.",
|
"tips": "TIPS: Se for deg et hendelsesklipp med en person som går fra venstre mot høyre. Hvis avgrensningsboksen på tidslinjen for hendelsen konsekvent er til venstre for personen, bør verdien reduseres. På samme måte, hvis en person går fra venstre mot høyre og avgrensningsboksen konsekvent er foran personen, bør verdien økes.",
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Annoteringsforskyvning for {{camera}} er lagret i konfigurasjonsfilen. Start Frigate på nytt for å ta i bruk endringene."
|
"success": "Annoteringsforskyvning for {{camera}} er lagret i konfigurasjonsfilen. Start Frigate på nytt for å aktivere endringene."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -71,15 +71,15 @@
|
|||||||
"label": "Vis statistikk",
|
"label": "Vis statistikk",
|
||||||
"desc": "Aktiver dette alternativet for å vise strømmestatistikk som et overlegg på kamerastrømmen."
|
"desc": "Aktiver dette alternativet for å vise strømmestatistikk som et overlegg på kamerastrømmen."
|
||||||
},
|
},
|
||||||
"started": "Startet manuelt opptak på forespørsel.",
|
"started": "Startet manuelt opptak.",
|
||||||
"end": "Avslutt opptak på forespørsel",
|
"end": "Avslutt manuelt opptak",
|
||||||
"title": "På forespørsel",
|
"title": "Manuelt opptak",
|
||||||
"debugView": "Feilsøkingsvisning",
|
"debugView": "Feilsøkingsvisning",
|
||||||
"start": "Start opptak på forespørsel",
|
"start": "Start manuelt opptak",
|
||||||
"failedToStart": "Kunne ikke starte manuelt opptak på forespørsel.",
|
"failedToStart": "Kunne ikke starte manuelt opptak.",
|
||||||
"recordDisabledTips": "Siden opptak er deaktivert eller begrenset i konfigurasjonen for dette kameraet, vil kun et øyeblikksbilde bli lagret.",
|
"recordDisabledTips": "Siden opptak er deaktivert eller begrenset i konfigurasjonen for dette kameraet, vil kun et øyeblikksbilde bli lagret.",
|
||||||
"ended": "Avsluttet manuelt opptak på forespørsel.",
|
"ended": "Avsluttet manuelt opptak.",
|
||||||
"failedToEnd": "Kunne ikke avslutte manuelt opptak på forespørsel."
|
"failedToEnd": "Kunne ikke avslutte manuelt opptak."
|
||||||
},
|
},
|
||||||
"audio": "Lyd",
|
"audio": "Lyd",
|
||||||
"suspend": {
|
"suspend": {
|
||||||
|
|||||||
@ -12,14 +12,14 @@
|
|||||||
"filter": {
|
"filter": {
|
||||||
"label": {
|
"label": {
|
||||||
"cameras": "Kameraer",
|
"cameras": "Kameraer",
|
||||||
"labels": "Merkelapper",
|
"labels": "Etiketter",
|
||||||
"search_type": "Søketype",
|
"search_type": "Søketype",
|
||||||
"after": "Etter",
|
"after": "Etter",
|
||||||
"min_score": "Min. poengsum",
|
"min_score": "Min. poengsum",
|
||||||
"max_score": "Maks. poengsum",
|
"max_score": "Maks. poengsum",
|
||||||
"min_speed": "Min. hastighet",
|
"min_speed": "Min. hastighet",
|
||||||
"zones": "Soner",
|
"zones": "Soner",
|
||||||
"sub_labels": "Under-merkelapper",
|
"sub_labels": "Underetiketter",
|
||||||
"time_range": "Tidsintervall",
|
"time_range": "Tidsintervall",
|
||||||
"before": "Før",
|
"before": "Før",
|
||||||
"max_speed": "Maks. hastighet",
|
"max_speed": "Maks. hastighet",
|
||||||
|
|||||||
@ -50,6 +50,10 @@
|
|||||||
"automaticLiveView": {
|
"automaticLiveView": {
|
||||||
"label": "Automatisk direktevisning",
|
"label": "Automatisk direktevisning",
|
||||||
"desc": "Bytt automatisk til et kameras direktevisning når aktivitet oppdages. Deaktivering av dette valget gjør at statiske kamerabilder i Direkte-dashbord kun oppdateres én gang i minuttet."
|
"desc": "Bytt automatisk til et kameras direktevisning når aktivitet oppdages. Deaktivering av dette valget gjør at statiske kamerabilder i Direkte-dashbord kun oppdateres én gang i minuttet."
|
||||||
|
},
|
||||||
|
"displayCameraNames": {
|
||||||
|
"label": "Vis alltid kameranavn",
|
||||||
|
"desc": "Vis alltid kameranavnene i en merkelapp i dashbordet for direktevisning med flere kameraer."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"storedLayouts": {
|
"storedLayouts": {
|
||||||
@ -337,7 +341,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Sone ({{zoneName}}) er lagret. Start Frigate på nytt for å bruke endringer."
|
"success": "Sone ({{zoneName}}) er lagret. Start Frigate på nytt for å aktivere endringer."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"motionMasks": {
|
"motionMasks": {
|
||||||
@ -681,12 +685,12 @@
|
|||||||
"enrichments": {
|
"enrichments": {
|
||||||
"title": "Innstillinger for utvidelser",
|
"title": "Innstillinger for utvidelser",
|
||||||
"licensePlateRecognition": {
|
"licensePlateRecognition": {
|
||||||
"desc": "Frigate kan gjenkjenne kjennemerker på kjøretøy og automatisk legge til de oppdagede tegnene i feltet \"recognized_license_plate\", eller et kjent navn som en under-merkelapp på objekter av typen bil. Et vanlig brukstilfelle kan være å lese kjennemerker på biler som kjører inn i en innkjørsel eller biler som passerer på en gate.",
|
"desc": "Frigate kan gjenkjenne kjennemerker på kjøretøy og automatisk legge til de oppdagede tegnene i feltet \"recognized_license_plate\", eller et kjent navn som en underetikett på objekter av typen bil. Et vanlig brukstilfelle kan være å lese kjennemerker på biler som kjører inn i en innkjørsel eller biler som passerer på en gate.",
|
||||||
"title": "Kjennemerke gjenkjenning",
|
"title": "Kjennemerke gjenkjenning",
|
||||||
"readTheDocumentation": "Se dokumentasjonen"
|
"readTheDocumentation": "Se dokumentasjonen"
|
||||||
},
|
},
|
||||||
"birdClassification": {
|
"birdClassification": {
|
||||||
"desc": "Fugleklassifisering identifiserer kjente fugler ved hjelp av en kvantisert TensorFlow-modell. Når en fugl gjenkjennes, vil det vanlige navnet legges til som en under-merkelapp. Denne informasjonen vises i brukergrensesnittet, filtre, samt i meldingsvarsler.",
|
"desc": "Fugleklassifisering identifiserer kjente fugler ved hjelp av en kvantisert TensorFlow-modell. Når en fugl gjenkjennes, vil det vanlige navnet legges til som en underetikett. Denne informasjonen vises i brukergrensesnittet, filtre, samt i meldingsvarsler.",
|
||||||
"title": "Klassifisering av fugler"
|
"title": "Klassifisering av fugler"
|
||||||
},
|
},
|
||||||
"semanticSearch": {
|
"semanticSearch": {
|
||||||
@ -730,7 +734,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": "Ansiktsgjenkjenning",
|
"title": "Ansiktsgjenkjenning",
|
||||||
"desc": "Ansiktsgjenkjenning gjør det mulig å tildele navn til personer, og når ansiktet deres gjenkjennes, vil Frigate tildele personens navn som en under-merkelapp. Denne informasjonen vises i brukergrensesnittet, filtre, samt i meldingsvarsler.",
|
"desc": "Ansiktsgjenkjenning gjør det mulig å tildele navn til personer, og når ansiktet deres gjenkjennes, vil Frigate tildele personens navn som en underetikett. Denne informasjonen vises i brukergrensesnittet, filtre, samt i meldingsvarsler.",
|
||||||
"readTheDocumentation": "Se dokumentasjonen"
|
"readTheDocumentation": "Se dokumentasjonen"
|
||||||
},
|
},
|
||||||
"unsavedChanges": "Ulagrede endringer i innstillinger for utvidelser",
|
"unsavedChanges": "Ulagrede endringer i innstillinger for utvidelser",
|
||||||
@ -764,7 +768,9 @@
|
|||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"alert": "Marker som varsel",
|
"alert": "Marker som varsel",
|
||||||
"notification": "Send meldingsvarsel"
|
"notification": "Send meldingsvarsel",
|
||||||
|
"sub_label": "Legg til underetikett",
|
||||||
|
"attribute": "Legg til attributt"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"createTrigger": {
|
"createTrigger": {
|
||||||
@ -819,7 +825,7 @@
|
|||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"title": "Handlinger",
|
"title": "Handlinger",
|
||||||
"desc": "Som standard sender Frigate en MQTT-melding for alle utløsere. Velg en ekstra handling som skal utføres når denne utløseren aktiveres.",
|
"desc": "Som standard sender Frigate en MQTT-melding for alle utløsere. Underetiketter legger til navnet på utløseren i objektetiketten. Attributter er søkbare metadata som lagres separat i objektets sporingsmetadata.",
|
||||||
"error": {
|
"error": {
|
||||||
"min": "Minst én handling må velges."
|
"min": "Minst én handling må velges."
|
||||||
}
|
}
|
||||||
@ -884,7 +890,8 @@
|
|||||||
"createRole": "Rollen {{role}} ble opprettet",
|
"createRole": "Rollen {{role}} ble opprettet",
|
||||||
"updateCameras": "Kameraer oppdatert for rollen {{role}}",
|
"updateCameras": "Kameraer oppdatert for rollen {{role}}",
|
||||||
"deleteRole": "Rollen {{role}} ble slettet",
|
"deleteRole": "Rollen {{role}} ble slettet",
|
||||||
"userRolesUpdated": "{{count}} bruker(e) som var tildelt denne rollen er oppdatert til \"visningsbruker\", som har tilgang til alle kameraer."
|
"userRolesUpdated_one": "{{count}} bruker(e) som var tildelt denne rollen er oppdatert til \"visningsbruker\", som har tilgang til alle kameraer.",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Kunne ikke opprette rolle: {{errorMessage}}",
|
"createRoleFailed": "Kunne ikke opprette rolle: {{errorMessage}}",
|
||||||
@ -1069,7 +1076,9 @@
|
|||||||
},
|
},
|
||||||
"resolutionHigh": "En oppløsning på {{resolution}} kan føre til økt ressursbruk.",
|
"resolutionHigh": "En oppløsning på {{resolution}} kan føre til økt ressursbruk.",
|
||||||
"resolutionLow": "En oppløsning på {{resolution}} kan være for lav for pålitelig deteksjon av små objekter."
|
"resolutionLow": "En oppløsning på {{resolution}} kan være for lav for pålitelig deteksjon av små objekter."
|
||||||
}
|
},
|
||||||
|
"ffmpegModuleDescription": "Hvis strømmen ikke lastes inn etter flere forsøk, kan du prøve å aktivere dette. Når det er aktivert, vil Frigate bruke ffmpeg-modulen sammen med go2rtc. Dette kan gi bedre kompatibilitet med enkelte kamerastrømmer.",
|
||||||
|
"ffmpegModule": "Bruk kompatibilitetsmodus for strøm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cameraManagement": {
|
"cameraManagement": {
|
||||||
@ -1145,7 +1154,7 @@
|
|||||||
"selectDetectionsZones": "Velg soner for deteksjoner",
|
"selectDetectionsZones": "Velg soner for deteksjoner",
|
||||||
"limitDetections": "Avgrens deteksjoner til bestemte soner",
|
"limitDetections": "Avgrens deteksjoner til bestemte soner",
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Konfigurasjonen for inspeksjonsklassifisering er lagret. Start Frigate på nytt for å bruke endringer."
|
"success": "Konfigurasjonen for inspeksjonsklassifisering er lagret. Start Frigate på nytt for å aktivere endringer."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -290,7 +290,8 @@
|
|||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"two": "{{0}} en {{1}}",
|
"two": "{{0}} en {{1}}",
|
||||||
"many": "{{items}}, en {{last}}"
|
"many": "{{items}}, en {{last}}",
|
||||||
|
"separatorWithSpace": ", "
|
||||||
},
|
},
|
||||||
"field": {
|
"field": {
|
||||||
"optional": "Optioneel",
|
"optional": "Optioneel",
|
||||||
|
|||||||
@ -5,7 +5,10 @@
|
|||||||
"renameCategory": "Klasse hernoemen",
|
"renameCategory": "Klasse hernoemen",
|
||||||
"deleteCategory": "Klasse verwijderen",
|
"deleteCategory": "Klasse verwijderen",
|
||||||
"deleteImages": "Afbeeldingen verwijderen",
|
"deleteImages": "Afbeeldingen verwijderen",
|
||||||
"trainModel": "Model trainen"
|
"trainModel": "Model trainen",
|
||||||
|
"addClassification": "Classificatie toevoegen",
|
||||||
|
"deleteModels": "Modellen verwijderen",
|
||||||
|
"editModel": "Model bewerken"
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": {
|
"success": {
|
||||||
@ -13,13 +16,18 @@
|
|||||||
"deletedImage": "Verwijderde afbeeldingen",
|
"deletedImage": "Verwijderde afbeeldingen",
|
||||||
"categorizedImage": "Succesvol geclassificeerde afbeelding",
|
"categorizedImage": "Succesvol geclassificeerde afbeelding",
|
||||||
"trainedModel": "Succesvol getraind model.",
|
"trainedModel": "Succesvol getraind model.",
|
||||||
"trainingModel": "Modeltraining succesvol gestart."
|
"trainingModel": "Modeltraining succesvol gestart.",
|
||||||
|
"deletedModel_one": "{{count}} model succesvol verwijderd",
|
||||||
|
"deletedModel_other": "{{count}} modellen succesvol verwijderd",
|
||||||
|
"updatedModel": "Modelconfiguratie succesvol bijgewerkt"
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"deleteImageFailed": "Verwijderen mislukt: {{errorMessage}}",
|
"deleteImageFailed": "Verwijderen mislukt: {{errorMessage}}",
|
||||||
"deleteCategoryFailed": "Het verwijderen van de klasse is mislukt: {{errorMessage}}",
|
"deleteCategoryFailed": "Het verwijderen van de klasse is mislukt: {{errorMessage}}",
|
||||||
"categorizeFailed": "Afbeelding categoriseren mislukt: {{errorMessage}}",
|
"categorizeFailed": "Afbeelding categoriseren mislukt: {{errorMessage}}",
|
||||||
"trainingFailed": "Het starten van de modeltraining is mislukt: {{errorMessage}}"
|
"trainingFailed": "Het starten van de modeltraining is mislukt: {{errorMessage}}",
|
||||||
|
"deleteModelFailed": "Model verwijderen mislukt: {{errorMessage}}",
|
||||||
|
"updateModelFailed": "Bijwerken van model mislukt: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"deleteCategory": {
|
"deleteCategory": {
|
||||||
@ -43,7 +51,8 @@
|
|||||||
},
|
},
|
||||||
"train": {
|
"train": {
|
||||||
"title": "Recente classificaties",
|
"title": "Recente classificaties",
|
||||||
"aria": "Selecteer recente classificaties"
|
"aria": "Selecteer recente classificaties",
|
||||||
|
"titleShort": "Recent"
|
||||||
},
|
},
|
||||||
"categories": "Klassen",
|
"categories": "Klassen",
|
||||||
"createCategory": {
|
"createCategory": {
|
||||||
@ -98,7 +107,8 @@
|
|||||||
"stateRequiresTwoClasses": "Toestandsmodellen vereisen minimaal 2 klassen",
|
"stateRequiresTwoClasses": "Toestandsmodellen vereisen minimaal 2 klassen",
|
||||||
"objectLabelRequired": "Selecteer een objectlabel",
|
"objectLabelRequired": "Selecteer een objectlabel",
|
||||||
"objectTypeRequired": "Selecteer een classificatietype"
|
"objectTypeRequired": "Selecteer een classificatietype"
|
||||||
}
|
},
|
||||||
|
"states": "Staten"
|
||||||
},
|
},
|
||||||
"step2": {
|
"step2": {
|
||||||
"description": "Selecteer camera’s en definieer voor elke camera het te monitoren gebied. Het model zal de toestand van deze gebieden classificeren.",
|
"description": "Selecteer camera’s en definieer voor elke camera het te monitoren gebied. Het model zal de toestand van deze gebieden classificeren.",
|
||||||
@ -131,5 +141,23 @@
|
|||||||
},
|
},
|
||||||
"generateSuccess": "Met succes gegenereerde voorbeeldafbeeldingen"
|
"generateSuccess": "Met succes gegenereerde voorbeeldafbeeldingen"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"title": "Classificatiemodel verwijderen",
|
||||||
|
"single": "Weet u zeker dat u {{name}} wilt verwijderen? Hiermee worden alle bijbehorende gegevens, inclusief afbeeldingen en trainingsgegevens, definitief verwijderd. Deze actie kan niet ongedaan worden gemaakt.",
|
||||||
|
"desc": "Weet u zeker dat u {{count}} model(len) wilt verwijderen? Hiermee worden alle bijbehorende gegevens, inclusief afbeeldingen en trainingsgegevens, permanent verwijderd. Deze actie kan niet ongedaan worden gemaakt."
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"objects": "Objecten",
|
||||||
|
"states": "Staten"
|
||||||
|
},
|
||||||
|
"details": {
|
||||||
|
"scoreInfo": "Score geeft het gemiddelde classificatievertrouwen weer over alle detecties van dit object."
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"title": "Classificatiemodel bewerken",
|
||||||
|
"descriptionState": "Bewerk de klassen voor dit statusclassificatiemodel. Wijzigingen vereisen dat het model opnieuw wordt getraind.",
|
||||||
|
"descriptionObject": "Bewerk het objecttype en het classificatietype voor dit objectclassificatiemodel.",
|
||||||
|
"stateClassesInfo": "Let op: het wijzigen van statusklassen vereist dat het model opnieuw wordt getraind met de bijgewerkte klassen."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,10 +43,17 @@
|
|||||||
"trackedObject_one": "object",
|
"trackedObject_one": "object",
|
||||||
"trackedObject_other": "objecten",
|
"trackedObject_other": "objecten",
|
||||||
"noObjectDetailData": "Geen objectdetails beschikbaar.",
|
"noObjectDetailData": "Geen objectdetails beschikbaar.",
|
||||||
"label": "Detail"
|
"label": "Detail",
|
||||||
|
"settings": "Instellingen voor detailweergave",
|
||||||
|
"alwaysExpandActive": {
|
||||||
|
"desc": "Altijd de objectdetails van het actieve beoordelingsitem uitklappen wanneer deze beschikbaar zijn.",
|
||||||
|
"title": "Het huidige item altijd uitvouwen"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"objectTrack": {
|
"objectTrack": {
|
||||||
"trackedPoint": "Gevolgd punt",
|
"trackedPoint": "Gevolgd punt",
|
||||||
"clickToSeek": "Klik om naar deze tijd te zoeken"
|
"clickToSeek": "Klik om naar deze tijd te zoeken"
|
||||||
}
|
},
|
||||||
|
"zoomIn": "Zoom in",
|
||||||
|
"zoomOut": "Zoom uit"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,8 @@
|
|||||||
"details": "Details",
|
"details": "Details",
|
||||||
"video": "video",
|
"video": "video",
|
||||||
"snapshot": "snapshot",
|
"snapshot": "snapshot",
|
||||||
"object_lifecycle": "objectlevenscyclus"
|
"object_lifecycle": "objectlevenscyclus",
|
||||||
|
"thumbnail": "thumbnail"
|
||||||
},
|
},
|
||||||
"objectLifecycle": {
|
"objectLifecycle": {
|
||||||
"createObjectMask": "Objectmasker maken",
|
"createObjectMask": "Objectmasker maken",
|
||||||
@ -238,7 +239,7 @@
|
|||||||
"noImageFound": "Er is geen afbeelding beschikbaar voor dit tijdstip.",
|
"noImageFound": "Er is geen afbeelding beschikbaar voor dit tijdstip.",
|
||||||
"createObjectMask": "Objectmasker maken",
|
"createObjectMask": "Objectmasker maken",
|
||||||
"adjustAnnotationSettings": "Annotatie-instellingen aanpassen",
|
"adjustAnnotationSettings": "Annotatie-instellingen aanpassen",
|
||||||
"scrollViewTips": "Scroll om de belangrijke momenten uit de levenscyclus van dit object te bekijken.",
|
"scrollViewTips": "Klik om de belangrijke momenten uit de levenscyclus van dit object te bekijken.",
|
||||||
"autoTrackingTips": "Als u een automatische objectvolgende camera gebruikt, zal het objectkader onnauwkeurig zijn.",
|
"autoTrackingTips": "Als u een automatische objectvolgende camera gebruikt, zal het objectkader onnauwkeurig zijn.",
|
||||||
"count": "{{first}} van {{second}}",
|
"count": "{{first}} van {{second}}",
|
||||||
"trackedPoint": "Volgpunt",
|
"trackedPoint": "Volgpunt",
|
||||||
@ -251,7 +252,7 @@
|
|||||||
"faceOrLicense_plate": "{{attribute}} Gedetecteerd voor {{label}}",
|
"faceOrLicense_plate": "{{attribute}} Gedetecteerd voor {{label}}",
|
||||||
"other": "{{label}} Herkend als {{attribute}}"
|
"other": "{{label}} Herkend als {{attribute}}"
|
||||||
},
|
},
|
||||||
"gone": "{{label}} Links",
|
"gone": "{{label}} vertrok",
|
||||||
"heard": "{{label}} gehoord",
|
"heard": "{{label}} gehoord",
|
||||||
"external": "{{label}} gedetecteerd",
|
"external": "{{label}} gedetecteerd",
|
||||||
"header": {
|
"header": {
|
||||||
@ -268,7 +269,7 @@
|
|||||||
},
|
},
|
||||||
"offset": {
|
"offset": {
|
||||||
"label": "Annotatie-afwijking",
|
"label": "Annotatie-afwijking",
|
||||||
"desc": "Deze gegevens zijn afkomstig van de detectiestream van je camera, maar worden weergegeven op beelden uit de opnamestream. Het is onwaarschijnlijk dat deze twee streams perfect gesynchroniseerd zijn. Hierdoor zullen het objectkader en het beeld niet exact op elkaar aansluiten. Het veld <code>annotation_offset</code> kan echter worden gebruikt om deze annotatie-afwijking te corrigeren.",
|
"desc": "Deze gegevens zijn afkomstig van de detectiestream van je camera, maar worden weergegeven op beelden uit de opnamestream. Het is onwaarschijnlijk dat deze twee streams perfect gesynchroniseerd zijn. Hierdoor zullen het objectkader en het beeld niet exact op elkaar aansluiten. Met deze instelling kun je de annotaties vooruit of achteruit in de tijd verschuiven om ze beter uit te lijnen met het opgenomen beeldmateriaal.",
|
||||||
"millisecondsToOffset": "Aantal milliseconden om objectkader mee te verschuiven. <em>Standaard: 0</em>",
|
"millisecondsToOffset": "Aantal milliseconden om objectkader mee te verschuiven. <em>Standaard: 0</em>",
|
||||||
"tips": "TIP: Stel je voor dat er een clip is waarin een persoon van links naar rechts loopt. Als het objectkader in de tijdlijn van de activiteit steeds links van de persoon ligt, dan moet de waarde verlaagd worden. Op dezelfde manier als het objectkader consequent vóór de persoon ligt dus vooruitloopt, moet de waarde verhoogd worden.",
|
"tips": "TIP: Stel je voor dat er een clip is waarin een persoon van links naar rechts loopt. Als het objectkader in de tijdlijn van de activiteit steeds links van de persoon ligt, dan moet de waarde verlaagd worden. Op dezelfde manier als het objectkader consequent vóór de persoon ligt dus vooruitloopt, moet de waarde verhoogd worden.",
|
||||||
"toast": {
|
"toast": {
|
||||||
|
|||||||
@ -128,7 +128,7 @@
|
|||||||
"documentation": "Lees de documentatie ",
|
"documentation": "Lees de documentatie ",
|
||||||
"title": "Audio moet via je camera komen en in go2rtc geconfigureerd zijn voor deze stream."
|
"title": "Audio moet via je camera komen en in go2rtc geconfigureerd zijn voor deze stream."
|
||||||
},
|
},
|
||||||
"unavailable": "Audio is niet beschikbaar voor deze stroom",
|
"unavailable": "Audio is niet beschikbaar voor deze stream",
|
||||||
"available": "Audio is beschikbaar voor deze stream"
|
"available": "Audio is beschikbaar voor deze stream"
|
||||||
},
|
},
|
||||||
"playInBackground": {
|
"playInBackground": {
|
||||||
|
|||||||
@ -50,6 +50,10 @@
|
|||||||
"playAlertVideos": {
|
"playAlertVideos": {
|
||||||
"label": "Meldingen afspelen",
|
"label": "Meldingen afspelen",
|
||||||
"desc": "Standaard worden recente meldingen op het Live dashboard afgespeeld als kleine lusvideo's. Schakel deze optie uit om alleen een statische afbeelding van recente meldingen weer te geven op dit apparaat/browser."
|
"desc": "Standaard worden recente meldingen op het Live dashboard afgespeeld als kleine lusvideo's. Schakel deze optie uit om alleen een statische afbeelding van recente meldingen weer te geven op dit apparaat/browser."
|
||||||
|
},
|
||||||
|
"displayCameraNames": {
|
||||||
|
"label": "Altijd cameranamen weergeven",
|
||||||
|
"desc": "Toon altijd de cameranamen in een label op het live-cameradashboard."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"title": "Algemene instellingen",
|
"title": "Algemene instellingen",
|
||||||
@ -764,7 +768,9 @@
|
|||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"alert": "Markeren als waarschuwing",
|
"alert": "Markeren als waarschuwing",
|
||||||
"notification": "Melding verzenden"
|
"notification": "Melding verzenden",
|
||||||
|
"sub_label": "Sublabel toevoegen",
|
||||||
|
"attribute": "Attribuut toevoegen"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"createTrigger": {
|
"createTrigger": {
|
||||||
@ -819,7 +825,7 @@
|
|||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"title": "Acties",
|
"title": "Acties",
|
||||||
"desc": "Standaard verstuurt Frigate een MQTT-bericht voor alle triggers. Kies een extra actie die moet worden uitgevoerd wanneer deze trigger wordt geactiveerd.",
|
"desc": "Standaard stuurt Frigate een MQTT-bericht voor alle triggers. Sublabels voegen de triggernaam toe aan het objectlabel. Attributen zijn doorzoekbare metadata die afzonderlijk worden opgeslagen in de metadata van het gevolgde object.",
|
||||||
"error": {
|
"error": {
|
||||||
"min": "Er moet ten minste één actie worden geselecteerd."
|
"min": "Er moet ten minste één actie worden geselecteerd."
|
||||||
}
|
}
|
||||||
@ -884,7 +890,8 @@
|
|||||||
"createRole": "Rol {{role}} succesvol aangemaakt",
|
"createRole": "Rol {{role}} succesvol aangemaakt",
|
||||||
"updateCameras": "Camera's bijgewerkt voor rol {{role}}",
|
"updateCameras": "Camera's bijgewerkt voor rol {{role}}",
|
||||||
"deleteRole": "Rol {{role}} succesvol verwijderd",
|
"deleteRole": "Rol {{role}} succesvol verwijderd",
|
||||||
"userRolesUpdated": "{{count}} gebruiker(s) die aan deze rol waren toegewezen, zijn bijgewerkt naar ‘kijker’, die toegang heeft tot alle camera’s."
|
"userRolesUpdated_one": "{{count}} gebruiker(s) die aan deze rol waren toegewezen, zijn bijgewerkt naar ‘kijker’, die toegang heeft tot alle camera’s.",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Kan rol niet aanmaken: {{errorMessage}}",
|
"createRoleFailed": "Kan rol niet aanmaken: {{errorMessage}}",
|
||||||
@ -1069,7 +1076,9 @@
|
|||||||
},
|
},
|
||||||
"resolutionHigh": "Een resolutie van {{resolution}} kan leiden tot een verhoogd gebruik van systeembronnen.",
|
"resolutionHigh": "Een resolutie van {{resolution}} kan leiden tot een verhoogd gebruik van systeembronnen.",
|
||||||
"resolutionLow": "Een resolutie van {{resolution}} kan te laag zijn voor betrouwbare detectie van kleine objecten."
|
"resolutionLow": "Een resolutie van {{resolution}} kan te laag zijn voor betrouwbare detectie van kleine objecten."
|
||||||
}
|
},
|
||||||
|
"ffmpegModule": "Gebruik stream-compatibiliteitsmodus",
|
||||||
|
"ffmpegModuleDescription": "Als de stream na meerdere pogingen niet wordt geladen, probeer dit dan in te schakelen. Wanneer deze optie is ingeschakeld, gebruikt Frigate de ffmpeg-module samen met go2rtc. Dit kan zorgen voor een betere compatibiliteit met sommige camerastreams."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cameraManagement": {
|
"cameraManagement": {
|
||||||
|
|||||||
@ -757,7 +757,9 @@
|
|||||||
"createRole": "Utworzono rolę {{role}}",
|
"createRole": "Utworzono rolę {{role}}",
|
||||||
"updateCameras": "Zaktualizowano kamery dla roli {{role}}",
|
"updateCameras": "Zaktualizowano kamery dla roli {{role}}",
|
||||||
"deleteRole": "Rola {{role}} została usunięta",
|
"deleteRole": "Rola {{role}} została usunięta",
|
||||||
"userRolesUpdated": "{{count}} użytkowników przypisanych do tej roli zostało zaktualizowanych do roli 'viewer', która ma dostęp do wszystkich kamer."
|
"userRolesUpdated_one": "{{count}} użytkowników przypisanych do tej roli zostało zaktualizowanych do roli 'viewer', która ma dostęp do wszystkich kamer.",
|
||||||
|
"userRolesUpdated_few": "",
|
||||||
|
"userRolesUpdated_many": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Nie udało się utworzyć roli: {{errorMessage}}",
|
"createRoleFailed": "Nie udało się utworzyć roli: {{errorMessage}}",
|
||||||
|
|||||||
39
web/public/locales/pt-BR/views/classificationModel.json
Normal file
39
web/public/locales/pt-BR/views/classificationModel.json
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"documentTitle": "Modelos de Classificação",
|
||||||
|
"button": {
|
||||||
|
"deleteClassificationAttempts": "Apagar Imagens de Classificação",
|
||||||
|
"renameCategory": "Renomear Classe",
|
||||||
|
"deleteCategory": "Apagar Classe",
|
||||||
|
"deleteImages": "Apagar Imagens",
|
||||||
|
"trainModel": "Treinar Modelo",
|
||||||
|
"addClassification": "Adicionar classificação",
|
||||||
|
"deleteModels": "Excluir modelos"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"success": {
|
||||||
|
"deletedCategory": "Classe Apagada",
|
||||||
|
"deletedImage": "Imagens Apagadas",
|
||||||
|
"categorizedImage": "Imagem Classificada com Sucesso",
|
||||||
|
"trainedModel": "Modelo treinado com sucesso.",
|
||||||
|
"trainingModel": "Treinamento do modelo iniciado com sucesso.",
|
||||||
|
"deletedModel_one": "Modelo(s) {{count}} excluído(s) com sucesso",
|
||||||
|
"deletedModel_many": "",
|
||||||
|
"deletedModel_other": ""
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"deleteImageFailed": "Falha ao deletar:{{errorMessage}}",
|
||||||
|
"deleteCategoryFailed": "Falha ao deletar classe:{{errorMessage}}",
|
||||||
|
"categorizeFailed": "Falha ao categorizar imagem:{{errorMessage}}",
|
||||||
|
"deleteModelFailed": "Falha ao excluir o modelo: {{errorMessage}}",
|
||||||
|
"trainingFailed": "Falha ao iniciar o treinamento do modelo: {{errorMessage}}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deleteCategory": {
|
||||||
|
"title": "Excluir Classe",
|
||||||
|
"desc": "Tem certeza de que deseja excluir a classe {{name}}? Isso excluirá permanentemente todas as imagens associadas e exigirá o treinamento do modelo novamente."
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"title": "Deletar modelo de classificação",
|
||||||
|
"single": "Tem certeza de que deseja excluir {{name}}? Isso excluirá permanentemente todos os dados associados, incluindo imagens e dados de treinamento. Esta ação não pode ser desfeita."
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -40,13 +40,19 @@
|
|||||||
"detail": {
|
"detail": {
|
||||||
"noDataFound": "Nenhum dado de detalhe para revisar",
|
"noDataFound": "Nenhum dado de detalhe para revisar",
|
||||||
"aria": "Alternar visualização de detalhe",
|
"aria": "Alternar visualização de detalhe",
|
||||||
"trackedObject_one": "objeto rastreado",
|
"trackedObject_one": "objeto",
|
||||||
"trackedObject_other": "objetos rastreados",
|
"trackedObject_other": "objetos",
|
||||||
"noObjectDetailData": "Nenhum dado de detalhe de objeto disponível.",
|
"noObjectDetailData": "Nenhum dado de detalhe de objeto disponível.",
|
||||||
"label": "Detalhe"
|
"label": "Detalhe",
|
||||||
|
"settings": "Configurações de visualização detalhada",
|
||||||
|
"alwaysExpandActive": {
|
||||||
|
"title": "Expandir sempre o modo ativo"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"objectTrack": {
|
"objectTrack": {
|
||||||
"trackedPoint": "Ponto rastreado",
|
"trackedPoint": "Ponto rastreado",
|
||||||
"clickToSeek": "Clique para ir para esse horário"
|
"clickToSeek": "Clique para ir para esse horário"
|
||||||
}
|
},
|
||||||
|
"zoomIn": "Ampliar",
|
||||||
|
"zoomOut": "Diminuir o zoom"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -111,7 +111,8 @@
|
|||||||
"details": "detalhes",
|
"details": "detalhes",
|
||||||
"snapshot": "captura de imagem",
|
"snapshot": "captura de imagem",
|
||||||
"video": "vídeo",
|
"video": "vídeo",
|
||||||
"object_lifecycle": "ciclo de vida do objeto"
|
"object_lifecycle": "ciclo de vida do objeto",
|
||||||
|
"thumbnail": "thumbnail"
|
||||||
},
|
},
|
||||||
"objectLifecycle": {
|
"objectLifecycle": {
|
||||||
"title": "Ciclo de Vida do Objeto",
|
"title": "Ciclo de Vida do Objeto",
|
||||||
|
|||||||
@ -800,7 +800,9 @@
|
|||||||
"createRole": "Papel {{role}} criado com sucesso",
|
"createRole": "Papel {{role}} criado com sucesso",
|
||||||
"updateCameras": "Câmeras atualizados para o papel {{role}}",
|
"updateCameras": "Câmeras atualizados para o papel {{role}}",
|
||||||
"deleteRole": "Papel {{role}} apagado com sucesso",
|
"deleteRole": "Papel {{role}} apagado com sucesso",
|
||||||
"userRolesUpdated": "{{count}} usuário(os) atribuídos a esse papel foram atualizados para 'visualizador', que possui acesso a todas as câmeras."
|
"userRolesUpdated_one": "{{count}} usuário(os) atribuídos a esse papel foram atualizados para 'visualizador', que possui acesso a todas as câmeras.",
|
||||||
|
"userRolesUpdated_many": "",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Falha ao criar papel: {{errorMessage}}",
|
"createRoleFailed": "Falha ao criar papel: {{errorMessage}}",
|
||||||
|
|||||||
@ -864,7 +864,9 @@
|
|||||||
"createRole": "Papel {{role}} criado com sucesso",
|
"createRole": "Papel {{role}} criado com sucesso",
|
||||||
"updateCameras": "Câmaras atualizados para o papel {{role}}",
|
"updateCameras": "Câmaras atualizados para o papel {{role}}",
|
||||||
"deleteRole": "Papel {{role}} apagado com sucesso",
|
"deleteRole": "Papel {{role}} apagado com sucesso",
|
||||||
"userRolesUpdated": "{{count}} utilizador(os) atribuídos a este papel foram atualizados para 'visualizador', que possui acesso a todas as câmaras."
|
"userRolesUpdated_one": "{{count}} utilizador(os) atribuídos a este papel foram atualizados para 'visualizador', que possui acesso a todas as câmaras.",
|
||||||
|
"userRolesUpdated_many": "",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Falha ao criar papel: {{errorMessage}}",
|
"createRoleFailed": "Falha ao criar papel: {{errorMessage}}",
|
||||||
|
|||||||
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"documentTitle": "Modelos de Classificação",
|
|
||||||
"button": {
|
|
||||||
"deleteClassificationAttempts": "Apagar Imagens de Classificação",
|
|
||||||
"renameCategory": "Renomear Classe",
|
|
||||||
"deleteCategory": "Apagar Classe",
|
|
||||||
"deleteImages": "Apagar Imagens",
|
|
||||||
"trainModel": "Treinar Modelo"
|
|
||||||
},
|
|
||||||
"toast": {
|
|
||||||
"success": {
|
|
||||||
"deletedCategory": "Classe Apagada",
|
|
||||||
"deletedImage": "Imagens Apagadas",
|
|
||||||
"categorizedImage": "Imagem Classificada com Sucesso",
|
|
||||||
"trainedModel": "Modelo treinado com sucesso.",
|
|
||||||
"trainingModel": "Treinamento do modelo iniciado com sucesso."
|
|
||||||
},
|
|
||||||
"error": {
|
|
||||||
"deleteImageFailed": "Falha ao deletar:{{errorMessage}}",
|
|
||||||
"deleteCategoryFailed": "Falha ao deletar classe:{{errorMessage}}",
|
|
||||||
"categorizeFailed": "Falha ao categorizar imagem:{{errorMessage}}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -237,7 +237,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"label": {
|
"label": {
|
||||||
"back": "Mergi înapoi"
|
"back": "Mergi înapoi",
|
||||||
|
"hide": "Ascunde {{item}}",
|
||||||
|
"show": "Afișează {{item}}",
|
||||||
|
"ID": "ID"
|
||||||
},
|
},
|
||||||
"selectItem": "Selectează {{item}}",
|
"selectItem": "Selectează {{item}}",
|
||||||
"pagination": {
|
"pagination": {
|
||||||
@ -281,5 +284,14 @@
|
|||||||
"readTheDocumentation": "Citește documentația",
|
"readTheDocumentation": "Citește documentația",
|
||||||
"information": {
|
"information": {
|
||||||
"pixels": "{{area}}px"
|
"pixels": "{{area}}px"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"two": "{{0}} și {{1}}",
|
||||||
|
"many": "{{items}}, și {{last}}",
|
||||||
|
"separatorWithSpace": ", "
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"optional": "Opțional",
|
||||||
|
"internalID": "ID-ul Intern pe care Frigate îl folosește în configurație și în baza de date"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -83,7 +83,7 @@
|
|||||||
"export": "Exportă",
|
"export": "Exportă",
|
||||||
"selectOrExport": "Selectează sau exportă",
|
"selectOrExport": "Selectează sau exportă",
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Exportul a început cu succes. Vizualizați fișierul în dosarul /exports.",
|
"success": "Exportul a început cu succes. Vizualizați fișierul pe pagina de exporturi.",
|
||||||
"error": {
|
"error": {
|
||||||
"failed": "Eroare la pornirea exportului: {{error}}",
|
"failed": "Eroare la pornirea exportului: {{error}}",
|
||||||
"endTimeMustAfterStartTime": "Ora de sfârșit trebuie să fie după ora de început",
|
"endTimeMustAfterStartTime": "Ora de sfârșit trebuie să fie după ora de început",
|
||||||
@ -129,6 +129,7 @@
|
|||||||
"search": {
|
"search": {
|
||||||
"placeholder": "Caută după etichetă sau subetichetă..."
|
"placeholder": "Caută după etichetă sau subetichetă..."
|
||||||
},
|
},
|
||||||
"noImages": "Nu s-au găsit miniaturi pentru această cameră"
|
"noImages": "Nu s-au găsit miniaturi pentru această cameră",
|
||||||
|
"unknownLabel": "Imaginea declanșator salvată"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1 +1,164 @@
|
|||||||
{}
|
{
|
||||||
|
"documentTitle": "Modele de clasificare",
|
||||||
|
"button": {
|
||||||
|
"deleteClassificationAttempts": "Șterge imaginile de clasificare",
|
||||||
|
"renameCategory": "Redenumește clasa",
|
||||||
|
"deleteCategory": "Șterge clasa",
|
||||||
|
"deleteImages": "Șterge imaginile",
|
||||||
|
"trainModel": "Antrenează modelul",
|
||||||
|
"addClassification": "Adaugă clasificare",
|
||||||
|
"deleteModels": "Șterge modelele",
|
||||||
|
"editModel": "Editează modelul"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"success": {
|
||||||
|
"deletedCategory": "Clasă ștearsă",
|
||||||
|
"deletedImage": "Imagini șterse",
|
||||||
|
"categorizedImage": "Imagine clasificată cu succes",
|
||||||
|
"trainedModel": "Model antrenat cu succes.",
|
||||||
|
"trainingModel": "Antrenamentul modelului a fost pornit cu succes.",
|
||||||
|
"deletedModel_one": "{{count}} model șters cu succes",
|
||||||
|
"deletedModel_few": "{{count}} modele șterse cu succes",
|
||||||
|
"deletedModel_other": "{{count}} modele șterse cu succes",
|
||||||
|
"updatedModel": "Configurația modelului a fost actualizată cu succes"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"deleteImageFailed": "Ștergerea a eșuat: {{errorMessage}}",
|
||||||
|
"deleteCategoryFailed": "Ștergerea clasei a eșuat: {{errorMessage}}",
|
||||||
|
"categorizeFailed": "Categorisirea imaginii a eșuat: {{errorMessage}}",
|
||||||
|
"trainingFailed": "Pornirea antrenamentului modelului a eșuat: {{errorMessage}}",
|
||||||
|
"deleteModelFailed": "Ștergerea modelului a eșuat: {{errorMessage}}",
|
||||||
|
"updateModelFailed": "Actualizarea modelului a eșuat: {{errorMessage}}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deleteCategory": {
|
||||||
|
"title": "Șterge clasa",
|
||||||
|
"desc": "Sigur doriți să ștergeți clasa {{name}}? Aceasta va șterge permanent toate imaginile asociate și va necesita reantrenarea modelului."
|
||||||
|
},
|
||||||
|
"deleteDatasetImages": {
|
||||||
|
"title": "Șterge imaginile setului de date",
|
||||||
|
"desc": "Sigur doriți să ștergeți {{count}} imagini din {{dataset}}? Această acțiune nu poate fi anulată și va necesita reantrenarea modelului."
|
||||||
|
},
|
||||||
|
"deleteTrainImages": {
|
||||||
|
"title": "Șterge imaginile de antrenament",
|
||||||
|
"desc": "Sigur doriți să ștergeți {{count}} imagini? Această acțiune nu poate fi anulată."
|
||||||
|
},
|
||||||
|
"renameCategory": {
|
||||||
|
"title": "Redenumește clasa",
|
||||||
|
"desc": "Introduceți un nume nou pentru {{name}}. Va trebui să reantrenați modelul pentru ca modificarea numelui să aibă efect."
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"invalidName": "Nume invalid. Numele pot include doar litere, cifre, spații, apostrofuri, underscore-uri și liniuțe."
|
||||||
|
},
|
||||||
|
"train": {
|
||||||
|
"title": "Clasificări recente",
|
||||||
|
"titleShort": "Recente",
|
||||||
|
"aria": "Selectează clasificările recente"
|
||||||
|
},
|
||||||
|
"categories": "Clase",
|
||||||
|
"createCategory": {
|
||||||
|
"new": "Creează clasă nouă"
|
||||||
|
},
|
||||||
|
"categorizeImageAs": "Clasifică imaginea ca:",
|
||||||
|
"categorizeImage": "Clasifică imaginea",
|
||||||
|
"noModels": {
|
||||||
|
"object": {
|
||||||
|
"title": "Nu există modele de clasificare a obiectelor",
|
||||||
|
"description": "Creează un model personalizat pentru a clasifica obiectele detectate.",
|
||||||
|
"buttonText": "Creează model de obiect"
|
||||||
|
},
|
||||||
|
"state": {
|
||||||
|
"title": "Nu există modele de clasificare a stării",
|
||||||
|
"description": "Creează un model personalizat pentru a monitoriza și clasifica schimbările de stare în anumite zone ale camerei.",
|
||||||
|
"buttonText": "Creează model de stare"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wizard": {
|
||||||
|
"title": "Creează clasificare nouă",
|
||||||
|
"steps": {
|
||||||
|
"nameAndDefine": "Numire și definire",
|
||||||
|
"stateArea": "Zona de stare",
|
||||||
|
"chooseExamples": "Alege exemple"
|
||||||
|
},
|
||||||
|
"step1": {
|
||||||
|
"description": "Modelele de stare monitorizează zone fixe ale camerei pentru schimbări (de exemplu, ușă deschisă/închisă). Modelele de obiect adaugă clasificări obiectelor detectate (de exemplu, animale cunoscute, curieri etc.).",
|
||||||
|
"name": "Nume",
|
||||||
|
"namePlaceholder": "Introduceți numele modelului...",
|
||||||
|
"type": "Tip",
|
||||||
|
"typeState": "Stare",
|
||||||
|
"typeObject": "Obiect",
|
||||||
|
"objectLabel": "Etichetă obiect",
|
||||||
|
"objectLabelPlaceholder": "Selectează tipul obiectului...",
|
||||||
|
"classificationType": "Tip de clasificare",
|
||||||
|
"classificationTypeTip": "Află despre tipurile de clasificare",
|
||||||
|
"classificationTypeDesc": "Subetichetele adaugă text suplimentar la eticheta obiectului (de exemplu, 'Persoană: UPS'). Atributele sunt metadate căutabile, stocate separat în metadatele obiectului.",
|
||||||
|
"classificationSubLabel": "Subeticheta",
|
||||||
|
"classificationAttribute": "Atribut",
|
||||||
|
"classes": "Clase",
|
||||||
|
"classesTip": "Află despre clase",
|
||||||
|
"classesStateDesc": "Definește diferitele stări în care poate fi zona camerei tale. De exemplu: 'deschis' și 'închis' pentru o ușă de garaj.",
|
||||||
|
"classesObjectDesc": "Definește diferitele categorii în care să fie clasificate obiectele detectate. De exemplu: 'curier', 'rezident', 'necunoscut' pentru clasificarea persoanelor.",
|
||||||
|
"classPlaceholder": "Introduceți numele clasei...",
|
||||||
|
"errors": {
|
||||||
|
"nameRequired": "Numele modelului este obligatoriu",
|
||||||
|
"nameLength": "Numele modelului trebuie să aibă 64 de caractere sau mai puțin",
|
||||||
|
"nameOnlyNumbers": "Numele modelului nu poate conține doar cifre",
|
||||||
|
"classRequired": "Este necesară cel puțin 1 clasă",
|
||||||
|
"classesUnique": "Numele claselor trebuie să fie unice",
|
||||||
|
"stateRequiresTwoClasses": "Modelele de stare necesită cel puțin 2 clase",
|
||||||
|
"objectLabelRequired": "Vă rugăm să selectați o etichetă de obiect",
|
||||||
|
"objectTypeRequired": "Vă rugăm să selectați un tip de clasificare"
|
||||||
|
},
|
||||||
|
"states": "Stări"
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"description": "Selectați camerele și definiți zona de monitorizat pentru fiecare cameră. Modelul va clasifica starea acestor zone.",
|
||||||
|
"cameras": "Camere",
|
||||||
|
"selectCamera": "Selectează camera",
|
||||||
|
"noCameras": "Apasă pe + pentru a adăuga camere",
|
||||||
|
"selectCameraPrompt": "Selectați o cameră din listă pentru a defini aria sa de monitorizare"
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"selectImagesPrompt": "Selectați toate imaginile cu: {{className}}",
|
||||||
|
"selectImagesDescription": "Apăsați pe imagini pentru a le selecta. Apăsați pe Continuare când ați terminat cu această clasă.",
|
||||||
|
"generating": {
|
||||||
|
"title": "Generare imagini de exemplu",
|
||||||
|
"description": "Frigate preia imagini reprezentative din înregistrările tale. Aceasta poate dura câteva momente..."
|
||||||
|
},
|
||||||
|
"training": {
|
||||||
|
"title": "Antrenare model",
|
||||||
|
"description": "Modelul tău este antrenat în fundal. Închide această fereastră și modelul va începe să ruleze imediat ce antrenamentul este finalizat."
|
||||||
|
},
|
||||||
|
"retryGenerate": "Reîncearcă generarea",
|
||||||
|
"noImages": "Nu s-au generat imagini de exemplu",
|
||||||
|
"classifying": "Clasificare și antrenare...",
|
||||||
|
"trainingStarted": "Antrenamentul a început cu succes",
|
||||||
|
"errors": {
|
||||||
|
"noCameras": "Nu există camere configurate",
|
||||||
|
"noObjectLabel": "Nu a fost selectată nicio etichetă de obiect",
|
||||||
|
"generateFailed": "Generarea exemplelor a eșuat: {{error}}",
|
||||||
|
"generationFailed": "Generarea a eșuat. Vă rugăm să încercați din nou.",
|
||||||
|
"classifyFailed": "Clasificarea imaginilor a eșuat: {{error}}"
|
||||||
|
},
|
||||||
|
"generateSuccess": "Imaginile de exemplu au fost generate cu succes"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deleteModel": {
|
||||||
|
"title": "Șterge modelul de clasificare",
|
||||||
|
"single": "Sigur doriți să ștergeți {{name}}? Aceasta va șterge permanent toate datele asociate, inclusiv imaginile și datele de antrenament. Această acțiune nu poate fi anulată.",
|
||||||
|
"desc": "Sigur doriți să ștergeți {{count}} model(e)? Aceasta va șterge permanent toate datele asociate, inclusiv imaginile și datele de antrenament. Această acțiune nu poate fi anulată."
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"objects": "Obiecte",
|
||||||
|
"states": "Stări"
|
||||||
|
},
|
||||||
|
"details": {
|
||||||
|
"scoreInfo": "Scorul reprezintă încrederea medie a clasificării pentru toate detecțiile acestui obiect."
|
||||||
|
},
|
||||||
|
"edit": {
|
||||||
|
"title": "Editează modelul de clasificare",
|
||||||
|
"descriptionState": "Editează clasele pentru acest model de clasificare a stării. Modificările vor necesita reantrenarea modelului.",
|
||||||
|
"descriptionObject": "Editează tipul de obiect și tipul de clasificare pentru acest model de clasificare a obiectelor.",
|
||||||
|
"stateClassesInfo": "Notă: Modificarea claselor de stare necesită reantrenarea modelului cu clasele actualizate."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -40,12 +40,20 @@
|
|||||||
"detail": {
|
"detail": {
|
||||||
"noDataFound": "Nicio dată detaliată de revizuit",
|
"noDataFound": "Nicio dată detaliată de revizuit",
|
||||||
"aria": "Comută vizualizarea detaliată",
|
"aria": "Comută vizualizarea detaliată",
|
||||||
"trackedObject_one": "obiect urmărit",
|
"trackedObject_one": "obiect",
|
||||||
"trackedObject_other": "obiecte urmărite",
|
"trackedObject_other": "obiecte",
|
||||||
"noObjectDetailData": "Nicio dată de detaliu obiect disponibilă."
|
"noObjectDetailData": "Nicio dată de detaliu obiect disponibilă.",
|
||||||
|
"label": "Detaliu",
|
||||||
|
"settings": "Setări vizualizare detaliată",
|
||||||
|
"alwaysExpandActive": {
|
||||||
|
"title": "Extinde întotdeauna activul",
|
||||||
|
"desc": "Extinde întotdeauna detaliile obiectului elementului activ de revizuire, atunci când sunt disponibile."
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"objectTrack": {
|
"objectTrack": {
|
||||||
"trackedPoint": "Punct urmărit",
|
"trackedPoint": "Punct urmărit",
|
||||||
"clickToSeek": "Fă clic pentru a naviga la acest moment"
|
"clickToSeek": "Apasă pentru a naviga la acest moment"
|
||||||
}
|
},
|
||||||
|
"zoomIn": "Mărește",
|
||||||
|
"zoomOut": "Micșorează"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,8 @@
|
|||||||
"details": "detalii",
|
"details": "detalii",
|
||||||
"snapshot": "snapshot",
|
"snapshot": "snapshot",
|
||||||
"video": "video",
|
"video": "video",
|
||||||
"object_lifecycle": "ciclul de viață al obiectului"
|
"object_lifecycle": "ciclul de viață al obiectului",
|
||||||
|
"thumbnail": "miniatură"
|
||||||
},
|
},
|
||||||
"objectLifecycle": {
|
"objectLifecycle": {
|
||||||
"lifecycleItemDesc": {
|
"lifecycleItemDesc": {
|
||||||
@ -200,12 +201,22 @@
|
|||||||
"audioTranscription": {
|
"audioTranscription": {
|
||||||
"label": "Transcrie",
|
"label": "Transcrie",
|
||||||
"aria": "Solicită transcrierea audio"
|
"aria": "Solicită transcrierea audio"
|
||||||
|
},
|
||||||
|
"viewTrackingDetails": {
|
||||||
|
"label": "Vizualizați detaliile de urmărire",
|
||||||
|
"aria": "Vizualizați detaliile de urmărire"
|
||||||
|
},
|
||||||
|
"showObjectDetails": {
|
||||||
|
"label": "Afișează traseul obiectului"
|
||||||
|
},
|
||||||
|
"hideObjectDetails": {
|
||||||
|
"label": "Ascunde traseul obiectului"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"confirmDelete": {
|
"confirmDelete": {
|
||||||
"title": "Confirmă ștergerea",
|
"title": "Confirmă ștergerea",
|
||||||
"desc": "Ștergerea acestui obiect urmărit elimină instantaneul, orice încorporări salvate și orice intrări asociate ciclului de viață al obiectului. Materialul video înregistrat al acestui obiect urmărit în vizualizarea Istoric <em>NU</em> va fi șters.<br /><br />Ești sigur că vrei să continui?"
|
"desc": "Ștergerea acestui obiect urmărit elimină snapshot-ul, orice încorporări salvate și orice intrări asociate detaliilor de urmărire. Materialul video înregistrat al acestui obiect urmărit în vizualizarea Istoric <em>NU</em> va fi șters.<br /><br />Ești sigur că vrei să continui?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"noTrackedObjects": "Nu au fost găsite obiecte urmărite",
|
"noTrackedObjects": "Nu au fost găsite obiecte urmărite",
|
||||||
@ -224,5 +235,53 @@
|
|||||||
},
|
},
|
||||||
"concerns": {
|
"concerns": {
|
||||||
"label": "Îngrijorări"
|
"label": "Îngrijorări"
|
||||||
|
},
|
||||||
|
"trackingDetails": {
|
||||||
|
"title": "Detalii de Urmărire",
|
||||||
|
"noImageFound": "Nu s-a găsit nicio imagine pentru acest marcaj de timp.",
|
||||||
|
"createObjectMask": "Creează Masca Obiectului",
|
||||||
|
"adjustAnnotationSettings": "Ajustează Setările de anotare",
|
||||||
|
"scrollViewTips": "Apasă pentru a vizualiza momentele semnificative din ciclul de viață al acestui obiect.",
|
||||||
|
"autoTrackingTips": "Pozițiile casetelor de delimitare vor fi inexacte pentru camerele cu urmărire automată.",
|
||||||
|
"count": "{{first}} din {{second}}",
|
||||||
|
"trackedPoint": "Punct Urmărit",
|
||||||
|
"lifecycleItemDesc": {
|
||||||
|
"visible": "detectat {{label}}",
|
||||||
|
"entered_zone": "{{label}} a intrat în {{zones}}",
|
||||||
|
"active": "{{label}} a devenit activ",
|
||||||
|
"stationary": "{{label}} a devenit staționar",
|
||||||
|
"attribute": {
|
||||||
|
"faceOrLicense_plate": "{{attribute}} detectat pentru {{label}}",
|
||||||
|
"other": "{{label}} recunoscut ca {{attribute}}"
|
||||||
|
},
|
||||||
|
"gone": "{{label}} a plecat",
|
||||||
|
"heard": "{{label}} auzit",
|
||||||
|
"external": "{{label}} detectat",
|
||||||
|
"header": {
|
||||||
|
"zones": "Zone",
|
||||||
|
"ratio": "Raport",
|
||||||
|
"area": "Aria"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"annotationSettings": {
|
||||||
|
"title": "Setări de adnotare",
|
||||||
|
"showAllZones": {
|
||||||
|
"title": "Afișează toate",
|
||||||
|
"desc": "Afișează întotdeauna zonele pe cadrele în care obiectele au intrat într-o zonă."
|
||||||
|
},
|
||||||
|
"offset": {
|
||||||
|
"label": "Compensare adnotare",
|
||||||
|
"desc": "Aceste date provin din fluxul de detectare al camerei tale, dar sunt suprapuse pe imaginile din fluxul de înregistrare. Este puțin probabil ca cele două fluxuri să fie perfect sincronizate. Drept urmare, caseta delimitatoare și materialul video nu se vor alinia perfect. Poți folosi această setare pentru a decală adnotările înainte sau înapoi în timp, pentru a le alinia mai bine cu materialul înregistrat.",
|
||||||
|
"millisecondsToOffset": "Millisecunde pentru a decalca adnotările de detectare. <em>Implicit: 0</em>",
|
||||||
|
"tips": "SFAT: Imaginează-ți că există un clip al unui eveniment cu o persoană care merge de la stânga la dreapta. Dacă caseta delimitatoare a cronologiei evenimentului este constant în stânga persoanei, atunci valoarea ar trebui să fie scăzută. În mod similar, dacă o persoană merge de la stânga la dreapta și caseta delimitatoare este constant în fața persoanei, atunci valoarea ar trebui să fie crescută.",
|
||||||
|
"toast": {
|
||||||
|
"success": "Decalajul de adnotare pentru {{camera}} a fost salvat în fișierul de configurare. Repornește Frigate pentru a aplica modificările."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"carousel": {
|
||||||
|
"previous": "Slide-ul anterior",
|
||||||
|
"next": "Slide-ul următor"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,5 +13,11 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"renameExportFailed": "Eroare redenumire export: {{errorMessage}}"
|
"renameExportFailed": "Eroare redenumire export: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"shareExport": "Partajează exportul",
|
||||||
|
"downloadVideo": "Descarcă videoclipul",
|
||||||
|
"editName": "Editează numele",
|
||||||
|
"deleteExport": "Șterge exportul"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"description": {
|
"description": {
|
||||||
"addFace": "Parcurge adăugarea unei colecții noi la biblioteca de fețe.",
|
"addFace": "Adaugă o colecție nouă în Biblioteca de fețe încărcând prima ta imagine.",
|
||||||
"placeholder": "Introduceti un nume pentru aceasta colectie",
|
"placeholder": "Introduceti un nume pentru aceasta colectie",
|
||||||
"invalidName": "Nume invalid. Numele poate conține doar litere, cifre, spații, apostrofuri, liniuțe de subliniere și cratime."
|
"invalidName": "Nume invalid. Numele pot include doar litere, cifre, spații, apostrofuri, underscore-uri și liniuțe."
|
||||||
},
|
},
|
||||||
"details": {
|
"details": {
|
||||||
"person": "Persoană",
|
"person": "Persoană",
|
||||||
|
|||||||
@ -17,9 +17,9 @@
|
|||||||
},
|
},
|
||||||
"move": {
|
"move": {
|
||||||
"clickMove": {
|
"clickMove": {
|
||||||
"label": "Fă click în cadrul imaginii pentru a centra camera",
|
"label": "Apasă în cadrul imaginii pentru a centra camera",
|
||||||
"enable": "Activează clic pentru a muta",
|
"enable": "Activează mutarea prin clic",
|
||||||
"disable": "Dezactivează clic pentru a muta"
|
"disable": "Dezactivează mutarea prin clic"
|
||||||
},
|
},
|
||||||
"left": {
|
"left": {
|
||||||
"label": "Mișcă camera PTZ spre stânga"
|
"label": "Mișcă camera PTZ spre stânga"
|
||||||
@ -36,7 +36,7 @@
|
|||||||
},
|
},
|
||||||
"frame": {
|
"frame": {
|
||||||
"center": {
|
"center": {
|
||||||
"label": "Fă clic în cadru pentru a centra camera PTZ"
|
"label": "Apasă în cadru pentru a centra camera PTZ"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"presets": "Presetări cameră PTZ",
|
"presets": "Presetări cameră PTZ",
|
||||||
@ -100,7 +100,7 @@
|
|||||||
"start": "Pornește înregistrarea la cerere",
|
"start": "Pornește înregistrarea la cerere",
|
||||||
"started": "Înregistrare la cerere pornită manual.",
|
"started": "Înregistrare la cerere pornită manual.",
|
||||||
"failedToStart": "Nu s-a putut porni înregistrarea manuală la cerere.",
|
"failedToStart": "Nu s-a putut porni înregistrarea manuală la cerere.",
|
||||||
"recordDisabledTips": "Deoarece înregistrarea este dezactivată sau restricționată în configurația pentru această cameră, va fi salvată doar o captură de ecran.",
|
"recordDisabledTips": "Deoarece înregistrarea este dezactivată sau restricționată în configurația pentru această cameră, doar un snapshot va fi salvat.",
|
||||||
"end": "Oprește înregistrarea la cerere",
|
"end": "Oprește înregistrarea la cerere",
|
||||||
"ended": "Înregistrarea manuală la cerere s-a încheiat.",
|
"ended": "Înregistrarea manuală la cerere s-a încheiat.",
|
||||||
"failedToEnd": "Nu s-a reușit încheierea înregistrării manuale la cerere."
|
"failedToEnd": "Nu s-a reușit încheierea înregistrării manuale la cerere."
|
||||||
|
|||||||
@ -33,7 +33,7 @@
|
|||||||
"step1": "Tastează un nume de filtru urmat de două puncte (ex. „camere:” ).",
|
"step1": "Tastează un nume de filtru urmat de două puncte (ex. „camere:” ).",
|
||||||
"step3": "Folosește mai multe filtre adăugându-le unul după altul, separate prin spațiu.",
|
"step3": "Folosește mai multe filtre adăugându-le unul după altul, separate prin spațiu.",
|
||||||
"step4": "Filtrele de dată (înainte: și după:) folosesc formatul {{DateFormat}}.",
|
"step4": "Filtrele de dată (înainte: și după:) folosesc formatul {{DateFormat}}.",
|
||||||
"step6": "Elimină filtrele făcând clic pe „X”-ul de lângă ele.",
|
"step6": "Elimină filtrele apăsând pe „X”-ul de lângă ele.",
|
||||||
"exampleLabel": "Exemplu:",
|
"exampleLabel": "Exemplu:",
|
||||||
"step5": "Filtrul pentru intervalul de timp folosește formatul {{exampleTime}}.",
|
"step5": "Filtrul pentru intervalul de timp folosește formatul {{exampleTime}}.",
|
||||||
"step2": "Selectează o valoare din sugestii sau tastează propria valoare.",
|
"step2": "Selectează o valoare din sugestii sau tastează propria valoare.",
|
||||||
|
|||||||
@ -50,6 +50,10 @@
|
|||||||
"playAlertVideos": {
|
"playAlertVideos": {
|
||||||
"label": "Redă videoclipurile de alertă",
|
"label": "Redă videoclipurile de alertă",
|
||||||
"desc": "În mod implicit, alertele recente din panoul Live se redau ca videoclipuri mici, ce ruleaza repetat. Dezactivează această opțiune pentru a afișa doar o imagine statică a alertelor recente pe acest dispozitiv/browser."
|
"desc": "În mod implicit, alertele recente din panoul Live se redau ca videoclipuri mici, ce ruleaza repetat. Dezactivează această opțiune pentru a afișa doar o imagine statică a alertelor recente pe acest dispozitiv/browser."
|
||||||
|
},
|
||||||
|
"displayCameraNames": {
|
||||||
|
"label": "Afișează întotdeauna numele camerelor",
|
||||||
|
"desc": "Afișează întotdeauna numele camerelor într-un indicator în tabloul de bord cu vizualizare live pe mai multe camere."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"storedLayouts": {
|
"storedLayouts": {
|
||||||
@ -267,7 +271,7 @@
|
|||||||
"desc": "Specifică o viteză minimă pe care trebuie să o aibă obiectele pentru a fi considerate în această zonă."
|
"desc": "Specifică o viteză minimă pe care trebuie să o aibă obiectele pentru a fi considerate în această zonă."
|
||||||
},
|
},
|
||||||
"documentTitle": "Editează zone - Frigate",
|
"documentTitle": "Editează zone - Frigate",
|
||||||
"clickDrawPolygon": "Click pentru a desena un poligon pe imagine.",
|
"clickDrawPolygon": "Apasă pentru a desena un poligon pe imagine.",
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Zona ({{zoneName}}) a fost salvată. Repornește Frigate pentru a aplica modificările."
|
"success": "Zona ({{zoneName}}) a fost salvată. Repornește Frigate pentru a aplica modificările."
|
||||||
},
|
},
|
||||||
@ -282,7 +286,7 @@
|
|||||||
"point_one": "{{count}} punct",
|
"point_one": "{{count}} punct",
|
||||||
"point_few": "{{count}} puncte",
|
"point_few": "{{count}} puncte",
|
||||||
"point_other": "{{count}} de puncte",
|
"point_other": "{{count}} de puncte",
|
||||||
"clickDrawPolygon": "Fă click pentru a desena un poligon pe imagine.",
|
"clickDrawPolygon": "Fă clic pentru a desena un poligon pe imagine.",
|
||||||
"label": "Măști de mișcare",
|
"label": "Măști de mișcare",
|
||||||
"documentTitle": "Editează masca de mișcare - Frigate",
|
"documentTitle": "Editează masca de mișcare - Frigate",
|
||||||
"desc": {
|
"desc": {
|
||||||
@ -330,7 +334,7 @@
|
|||||||
"title": "{{polygonName}} a fost salvat. Repornește Frigate pentru a aplica modificările."
|
"title": "{{polygonName}} a fost salvat. Repornește Frigate pentru a aplica modificările."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"clickDrawPolygon": "Fă click pentru a desena un poligon pe imagine.",
|
"clickDrawPolygon": "Fă clic pentru a desena un poligon pe imagine.",
|
||||||
"context": "Măștile de filtrare a obiectelor sunt folosite pentru a elimina falsele pozitive pentru un anumit tip de obiect, în funcție de locația acestuia."
|
"context": "Măștile de filtrare a obiectelor sunt folosite pentru a elimina falsele pozitive pentru un anumit tip de obiect, în funcție de locația acestuia."
|
||||||
},
|
},
|
||||||
"restart_required": "Repornire necesară (măști/zone modificate)",
|
"restart_required": "Repornire necesară (măști/zone modificate)",
|
||||||
@ -682,7 +686,7 @@
|
|||||||
"triggers": {
|
"triggers": {
|
||||||
"documentTitle": "Declanșatoare",
|
"documentTitle": "Declanșatoare",
|
||||||
"management": {
|
"management": {
|
||||||
"title": "Gestionarea declanșatoarelor",
|
"title": "Declanșatoare",
|
||||||
"desc": "Gestionează declanșatoarele pentru {{camera}}. Folosește tipul miniatură pentru a declanșa pe miniaturi similare cu obiectul urmărit selectat și tipul descriere pentru a declanșa pe descrieri similare textului pe care îl specifici."
|
"desc": "Gestionează declanșatoarele pentru {{camera}}. Folosește tipul miniatură pentru a declanșa pe miniaturi similare cu obiectul urmărit selectat și tipul descriere pentru a declanșa pe descrieri similare textului pe care îl specifici."
|
||||||
},
|
},
|
||||||
"addTrigger": "Adaugă declanșator",
|
"addTrigger": "Adaugă declanșator",
|
||||||
@ -703,7 +707,9 @@
|
|||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"alert": "Marchează ca alertă",
|
"alert": "Marchează ca alertă",
|
||||||
"notification": "Trimite notificare"
|
"notification": "Trimite notificare",
|
||||||
|
"sub_label": "Adaugă subeticheta",
|
||||||
|
"attribute": "Adaugă atribut"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"createTrigger": {
|
"createTrigger": {
|
||||||
@ -721,25 +727,28 @@
|
|||||||
"form": {
|
"form": {
|
||||||
"name": {
|
"name": {
|
||||||
"title": "Nume",
|
"title": "Nume",
|
||||||
"placeholder": "Introdu numele declanșatorului",
|
"placeholder": "Denumește acest declanșator",
|
||||||
"error": {
|
"error": {
|
||||||
"minLength": "Numele trebuie să aibă cel puțin 2 caractere.",
|
"minLength": "Câmpul trebuie să aibă cel puțin 2 caractere.",
|
||||||
"invalidCharacters": "Numele poate conține doar litere, cifre, underscore-uri și cratime.",
|
"invalidCharacters": "Câmpul poate conține doar litere, cifre, underscore-uri și cratime.",
|
||||||
"alreadyExists": "Un declanșator cu acest nume există deja pentru această cameră."
|
"alreadyExists": "Un declanșator cu acest nume există deja pentru această cameră."
|
||||||
}
|
},
|
||||||
|
"description": "Introduceți un nume sau o descriere unică pentru a identifica acest declanșator"
|
||||||
},
|
},
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"description": "Activează sau dezactivează acest declanșator"
|
"description": "Activează sau dezactivează acest declanșator"
|
||||||
},
|
},
|
||||||
"type": {
|
"type": {
|
||||||
"title": "Tip",
|
"title": "Tip",
|
||||||
"placeholder": "Selectează tipul de declanșator"
|
"placeholder": "Selectează tipul de declanșator",
|
||||||
|
"description": "Declanșează atunci când este detectată o descriere de obiect urmărit similară",
|
||||||
|
"thumbnail": "Declanșează atunci când este detectată o miniatură de obiect urmărit similară"
|
||||||
},
|
},
|
||||||
"content": {
|
"content": {
|
||||||
"title": "Conținut",
|
"title": "Conținut",
|
||||||
"imagePlaceholder": "Selectează o imagine",
|
"imagePlaceholder": "Selectează o miniatură",
|
||||||
"textPlaceholder": "Introdu conținutul textului",
|
"textPlaceholder": "Introdu conținutul textului",
|
||||||
"imageDesc": "Selectează o imagine pentru a declanșa această acțiune atunci când o imagine similară este detectată.",
|
"imageDesc": "Sunt afișate doar ultimele 100 de miniaturi. Dacă nu găsiți miniatura dorită, vă rugăm să verificați obiectele anterioare în Explorator și să configurați un declanșator din meniul de acolo.",
|
||||||
"textDesc": "Introduceți textul pentru a declanșa această acțiune atunci când este detectată o descriere de obiect urmărit similară.",
|
"textDesc": "Introduceți textul pentru a declanșa această acțiune atunci când este detectată o descriere de obiect urmărit similară.",
|
||||||
"error": {
|
"error": {
|
||||||
"required": "Conținutul este obligatoriu."
|
"required": "Conținutul este obligatoriu."
|
||||||
@ -750,11 +759,12 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"min": "Pragul trebuie să fie cel puțin 0",
|
"min": "Pragul trebuie să fie cel puțin 0",
|
||||||
"max": "Pragul trebuie să fie cel mult 1"
|
"max": "Pragul trebuie să fie cel mult 1"
|
||||||
}
|
},
|
||||||
|
"desc": "Setați pragul de similitudine pentru acest declanșator. Un prag mai mare înseamnă că este necesară o potrivire mai apropiată pentru declanșarea acestuia."
|
||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"title": "Acțiuni",
|
"title": "Acțiuni",
|
||||||
"desc": "Implicit, Frigate trimite un mesaj MQTT pentru toate declanșatoarele. Alegeți o acțiune suplimentară de efectuat atunci când acest declanșator se activează.",
|
"desc": "În mod implicit, Frigate trimite un mesaj MQTT pentru toate declanșatoarele. Subetichetele adaugă numele declanșatorului la eticheta obiectului. Atributele sunt metadate căutabile, stocate separat în metadatele obiectului urmărit.",
|
||||||
"error": {
|
"error": {
|
||||||
"min": "Trebuie selectată cel puțin o acțiune."
|
"min": "Trebuie selectată cel puțin o acțiune."
|
||||||
}
|
}
|
||||||
@ -781,6 +791,23 @@
|
|||||||
"semanticSearch": {
|
"semanticSearch": {
|
||||||
"title": "Căutarea semantică este dezactivată",
|
"title": "Căutarea semantică este dezactivată",
|
||||||
"desc": "Căutarea semantică trebuie să fie activată pentru a utiliza declanșatoarele."
|
"desc": "Căutarea semantică trebuie să fie activată pentru a utiliza declanșatoarele."
|
||||||
|
},
|
||||||
|
"wizard": {
|
||||||
|
"title": "Creează declanșator",
|
||||||
|
"step1": {
|
||||||
|
"description": "Configurează setările de bază pentru declanșatorul tău."
|
||||||
|
},
|
||||||
|
"step2": {
|
||||||
|
"description": "Configurează conținutul care va declanșa această acțiune."
|
||||||
|
},
|
||||||
|
"step3": {
|
||||||
|
"description": "Configurează pragul și acțiunile pentru acest declanșator."
|
||||||
|
},
|
||||||
|
"steps": {
|
||||||
|
"nameAndType": "Nume și Tip",
|
||||||
|
"configureData": "Configurează datele",
|
||||||
|
"thresholdAndActions": "Prag și Acțiuni"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"roles": {
|
"roles": {
|
||||||
@ -802,7 +829,9 @@
|
|||||||
"createRole": "Rolul {{role}} a fost creat cu succes",
|
"createRole": "Rolul {{role}} a fost creat cu succes",
|
||||||
"updateCameras": "Camerele au fost actualizate pentru rolul {{role}}",
|
"updateCameras": "Camerele au fost actualizate pentru rolul {{role}}",
|
||||||
"deleteRole": "Rolul {{role}} a fost șters cu succes",
|
"deleteRole": "Rolul {{role}} a fost șters cu succes",
|
||||||
"userRolesUpdated": "{{count}} utilizator(i) atribuiți acestui rol au fost actualizați la „vizualizator”, care are acces la toate camerele."
|
"userRolesUpdated_one": "{{count}} utilizator(i) atribuiți acestui rol au fost actualizați la „vizualizator”, care are acces la toate camerele.",
|
||||||
|
"userRolesUpdated_few": "",
|
||||||
|
"userRolesUpdated_other": ""
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"createRoleFailed": "Crearea rolului a eșuat: {{errorMessage}}",
|
"createRoleFailed": "Crearea rolului a eșuat: {{errorMessage}}",
|
||||||
@ -896,11 +925,16 @@
|
|||||||
"invalidCharacters": "Numele camerei conține caractere nevalide",
|
"invalidCharacters": "Numele camerei conține caractere nevalide",
|
||||||
"nameExists": "Numele camerei există deja",
|
"nameExists": "Numele camerei există deja",
|
||||||
"brands": {
|
"brands": {
|
||||||
"reolink-rtsp": "RTSP Reolink nu este recomandat. Se recomandă să activezi HTTP în setările camerei și să repornești asistentul de cameră."
|
"reolink-rtsp": "RTSP Reolink nu este recomandat. Activează HTTP în setările firmware ale camerei și repornește asistentul."
|
||||||
}
|
},
|
||||||
|
"customUrlRtspRequired": "URL-urile personalizate trebuie să înceapă cu \"rtsp://\". Este necesară configurare manuală pentru stream-urile de cameră non-RTSP."
|
||||||
},
|
},
|
||||||
"docs": {
|
"docs": {
|
||||||
"reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras"
|
"reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras"
|
||||||
|
},
|
||||||
|
"testing": {
|
||||||
|
"probingMetadata": "Sondare metadate cameră...",
|
||||||
|
"fetchingSnapshot": "Preluare snapshot cameră..."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"step2": {
|
"step2": {
|
||||||
@ -982,7 +1016,9 @@
|
|||||||
},
|
},
|
||||||
"resolutionHigh": "O rezoluție de {{resolution}} poate cauza o utilizare crescută a resurselor.",
|
"resolutionHigh": "O rezoluție de {{resolution}} poate cauza o utilizare crescută a resurselor.",
|
||||||
"resolutionLow": "O rezoluție de {{resolution}} poate fi prea mică pentru detectarea fiabilă a obiectelor mici."
|
"resolutionLow": "O rezoluție de {{resolution}} poate fi prea mică pentru detectarea fiabilă a obiectelor mici."
|
||||||
}
|
},
|
||||||
|
"ffmpegModule": "Folosește modul de compatibilitate pentru stream-uri",
|
||||||
|
"ffmpegModuleDescription": "Dacă fluxul nu se încarcă după mai multe încercări, activați această opțiune. Când este activată, Frigate va folosi modulul ffmpeg împreună cu go2rtc. Aceasta poate oferi o compatibilitate mai bună cu unele fluxuri de camere."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cameraManagement": {
|
"cameraManagement": {
|
||||||
|
|||||||
@ -1 +1,40 @@
|
|||||||
{}
|
{
|
||||||
|
"documentTitle": "Модели классификации",
|
||||||
|
"details": {
|
||||||
|
"scoreInfo": "Оценка представляет собой среднюю степень достоверности классификации по всем обнаружениям данного объекта."
|
||||||
|
},
|
||||||
|
"button": {
|
||||||
|
"deleteClassificationAttempts": "Удалить изображения классификации",
|
||||||
|
"renameCategory": "Переименовать класс",
|
||||||
|
"deleteCategory": "Удалить класс",
|
||||||
|
"deleteImages": "Удалить изображения",
|
||||||
|
"trainModel": "Тренировать модель",
|
||||||
|
"addClassification": "Добавить классификацию",
|
||||||
|
"deleteModels": "Удалить модели",
|
||||||
|
"editModel": "Редактировать модель"
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"success": {
|
||||||
|
"deletedCategory": "Удаленный класс",
|
||||||
|
"deletedImage": "Удалённые изображения",
|
||||||
|
"deletedModel_one": "Успешно удалена {{count}} модель",
|
||||||
|
"deletedModel_few": "Успешно удалены {{count}} модели",
|
||||||
|
"deletedModel_many": "Успешно удалены {{count}} моделей",
|
||||||
|
"categorizedImage": "Изображение успешно классифицировано",
|
||||||
|
"trainedModel": "Успешно обученная модель.",
|
||||||
|
"trainingModel": "Успешно начато обучение моделей.",
|
||||||
|
"updatedModel": "Успешно обновлена конфигурация модели"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"deleteImageFailed": "Не удалось удалить: {{errorMessage}}",
|
||||||
|
"deleteCategoryFailed": "Не удалось удалить класс: {{errorMessage}}",
|
||||||
|
"deleteModelFailed": "Не удалось удалить модель: {{errorMessage}}",
|
||||||
|
"categorizeFailed": "Не удалось классифицировать изображение: {{errorMessage}}",
|
||||||
|
"trainingFailed": "Не удалось начать обучение модели: {{errorMessage}}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deleteCategory": {
|
||||||
|
"title": "Удалить класс",
|
||||||
|
"desc": "Вы уверены, что хотите удалить класс {{name}}? Это приведёт к безвозвратному удалению всех связанных с ним изображений и потребует повторного обучения модели."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -41,12 +41,16 @@
|
|||||||
"detail": {
|
"detail": {
|
||||||
"noDataFound": "Нет данных для просмотра",
|
"noDataFound": "Нет данных для просмотра",
|
||||||
"aria": "Переключить подробный режим просмотра",
|
"aria": "Переключить подробный режим просмотра",
|
||||||
"trackedObject_one": "отслеживаемый объект",
|
"trackedObject_one": "объект",
|
||||||
"trackedObject_other": "отслеживаемые объекты",
|
"trackedObject_other": "объекты",
|
||||||
"noObjectDetailData": "Данные о деталях объекта недоступны."
|
"noObjectDetailData": "Данные о деталях объекта недоступны.",
|
||||||
|
"label": "Деталь",
|
||||||
|
"settings": "Настройки подробного просмотра"
|
||||||
},
|
},
|
||||||
"objectTrack": {
|
"objectTrack": {
|
||||||
"trackedPoint": "Отслеживаемая точка",
|
"trackedPoint": "Отслеживаемая точка",
|
||||||
"clickToSeek": "Перейти к этому моменту"
|
"clickToSeek": "Перейти к этому моменту"
|
||||||
}
|
},
|
||||||
|
"zoomIn": "Увеличить",
|
||||||
|
"zoomOut": "Отдалить"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -110,7 +110,8 @@
|
|||||||
"details": "детали",
|
"details": "детали",
|
||||||
"snapshot": "снимок",
|
"snapshot": "снимок",
|
||||||
"video": "видео",
|
"video": "видео",
|
||||||
"object_lifecycle": "жизненный цикл объекта"
|
"object_lifecycle": "жизненный цикл объекта",
|
||||||
|
"thumbnail": "миниатюра"
|
||||||
},
|
},
|
||||||
"objectLifecycle": {
|
"objectLifecycle": {
|
||||||
"title": "Жизненный цикл объекта",
|
"title": "Жизненный цикл объекта",
|
||||||
|
|||||||
@ -13,5 +13,11 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"renameExportFailed": "Не удалось переименовать экспорт: {{errorMessage}}"
|
"renameExportFailed": "Не удалось переименовать экспорт: {{errorMessage}}"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"shareExport": "Поделиться экспортом",
|
||||||
|
"downloadVideo": "Скачать видео",
|
||||||
|
"editName": "Изменить название",
|
||||||
|
"deleteExport": "Удалить экспорт"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
"documentTitle": "Библиотека лиц - Frigate",
|
"documentTitle": "Библиотека лиц - Frigate",
|
||||||
"description": {
|
"description": {
|
||||||
"placeholder": "Введите название коллекции",
|
"placeholder": "Введите название коллекции",
|
||||||
"addFace": "Пошаговое добавление новой коллекции в Библиотеку лиц.",
|
"addFace": "Добавьте новую коллекцию в библиотеку лиц, загрузив свое первое изображение.",
|
||||||
"invalidName": "Недопустимое имя. Имена могут содержать только буквы, цифры, пробелы, апострофы, подчеркивания и дефисы."
|
"invalidName": "Недопустимое имя. Имена могут содержать только буквы, цифры, пробелы, апострофы, подчеркивания и дефисы."
|
||||||
},
|
},
|
||||||
"createFaceLibrary": {
|
"createFaceLibrary": {
|
||||||
@ -28,8 +28,8 @@
|
|||||||
},
|
},
|
||||||
"selectItem": "Выбор {{item}}",
|
"selectItem": "Выбор {{item}}",
|
||||||
"train": {
|
"train": {
|
||||||
"aria": "Выбор обучения",
|
"aria": "Выберите последние распознавания",
|
||||||
"title": "Обучение",
|
"title": "Последние распознавания",
|
||||||
"empty": "Нет недавних попыток распознавания лиц"
|
"empty": "Нет недавних попыток распознавания лиц"
|
||||||
},
|
},
|
||||||
"toast": {
|
"toast": {
|
||||||
|
|||||||
@ -432,5 +432,72 @@
|
|||||||
"shofar": "Šofar",
|
"shofar": "Šofar",
|
||||||
"liquid": "Kvapalina",
|
"liquid": "Kvapalina",
|
||||||
"splash": "Šplechnutie",
|
"splash": "Šplechnutie",
|
||||||
"slosh": "Slosh"
|
"slosh": "Slosh",
|
||||||
|
"squish": "Vytlačiť",
|
||||||
|
"drip": "Kvapkať",
|
||||||
|
"pour": "Nalej",
|
||||||
|
"trickle": "Pokvapkať",
|
||||||
|
"gush": "Striekať",
|
||||||
|
"fill": "Vyplňte",
|
||||||
|
"spray": "Striekajte",
|
||||||
|
"pump": "Pumpa",
|
||||||
|
"stir": "Miešajte",
|
||||||
|
"boiling": "Varenie",
|
||||||
|
"sonar": "Sonar",
|
||||||
|
"arrow": "Šípka",
|
||||||
|
"whoosh": "Whoosh",
|
||||||
|
"thump": "Palec",
|
||||||
|
"thunk": "Thunk",
|
||||||
|
"electronic_tuner": "Elektronický tuner",
|
||||||
|
"effects_unit": "Efektuje jednotky",
|
||||||
|
"chorus_effect": "Zborový efekt",
|
||||||
|
"basketball_bounce": "Odrážanie basketbalovej lopty",
|
||||||
|
"bang": "Bang",
|
||||||
|
"slap": "Buchnutie",
|
||||||
|
"whack": "Odpáliť",
|
||||||
|
"smash": "Rozbiť",
|
||||||
|
"breaking": "Prelomenie",
|
||||||
|
"bouncing": "Odskakovanie",
|
||||||
|
"whip": "Bič",
|
||||||
|
"flap": "Klapka",
|
||||||
|
"scratch": "Poškriabanie",
|
||||||
|
"scrape": "Škrabať",
|
||||||
|
"rub": "Potrieť",
|
||||||
|
"roll": "Rolovať",
|
||||||
|
"crushing": "Rozdrvovanie",
|
||||||
|
"crumpling": "Mačkanie",
|
||||||
|
"tearing": "Trhanie",
|
||||||
|
"beep": "Pípnutie",
|
||||||
|
"ping": "Ping",
|
||||||
|
"ding": "Ding",
|
||||||
|
"clang": "Zvonenie",
|
||||||
|
"squeal": "Kňučať",
|
||||||
|
"creak": "Vŕzganie",
|
||||||
|
"rustle": "Šuchot",
|
||||||
|
"whir": "Vrčanie",
|
||||||
|
"clatter": "Cvakať",
|
||||||
|
"sizzle": "Syčať",
|
||||||
|
"clicking": "Klikanie",
|
||||||
|
"clickety_clack": "Klikanie kľak",
|
||||||
|
"rumble": "Rachot",
|
||||||
|
"plop": "Prasknutie",
|
||||||
|
"hum": "Hmkanie",
|
||||||
|
"zing": "Zing",
|
||||||
|
"boing": "Boing",
|
||||||
|
"crunch": "Chrumnutie",
|
||||||
|
"sine_wave": "Sínusoida",
|
||||||
|
"harmonic": "Harmonický",
|
||||||
|
"chirp_tone": "Cvrlikací tón",
|
||||||
|
"pulse": "Pulz",
|
||||||
|
"inside": "Vnútri",
|
||||||
|
"outside": "Vonku",
|
||||||
|
"reverberation": "Dozvuk",
|
||||||
|
"echo": "Ozvena",
|
||||||
|
"noise": "Zvuk",
|
||||||
|
"mains_hum": "Hlavné Hum",
|
||||||
|
"distortion": "Skreslenie",
|
||||||
|
"sidetone": "Vedľajší tón",
|
||||||
|
"cacophony": "Kakofónia",
|
||||||
|
"throbbing": "Pulzujúci",
|
||||||
|
"vibration": "Vibrácia"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -101,7 +101,10 @@
|
|||||||
},
|
},
|
||||||
"readTheDocumentation": "Prečítajte si dokumentáciu",
|
"readTheDocumentation": "Prečítajte si dokumentáciu",
|
||||||
"label": {
|
"label": {
|
||||||
"back": "Choď späť"
|
"back": "Choď späť",
|
||||||
|
"hide": "Skryť {{item}}",
|
||||||
|
"show": "Zobraziť {{item}}",
|
||||||
|
"ID": "ID"
|
||||||
},
|
},
|
||||||
"button": {
|
"button": {
|
||||||
"apply": "Použiť",
|
"apply": "Použiť",
|
||||||
@ -281,5 +284,14 @@
|
|||||||
},
|
},
|
||||||
"information": {
|
"information": {
|
||||||
"pixels": "{{area}}px"
|
"pixels": "{{area}}px"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"two": "{{0}} a {{1}}",
|
||||||
|
"many": "{{items}}, a {{last}}",
|
||||||
|
"separatorWithSpace": ", "
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"optional": "Voliteľné",
|
||||||
|
"internalID": "Interné ID Frigate používa v konfigurácii a databáze"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,7 +53,7 @@
|
|||||||
"export": "Exportovať",
|
"export": "Exportovať",
|
||||||
"selectOrExport": "Vybrať pre Export",
|
"selectOrExport": "Vybrať pre Export",
|
||||||
"toast": {
|
"toast": {
|
||||||
"success": "Export úspešne spustený. Súbor nájdete v adresári /exports.",
|
"success": "Export bol úspešne spustený. Súbor si pozrite na stránke exportov.",
|
||||||
"error": {
|
"error": {
|
||||||
"failed": "Chyba spustenia exportu: {{error}}",
|
"failed": "Chyba spustenia exportu: {{error}}",
|
||||||
"endTimeMustAfterStartTime": "Čas konca musí byť po čase začiatku",
|
"endTimeMustAfterStartTime": "Čas konca musí byť po čase začiatku",
|
||||||
@ -117,6 +117,7 @@
|
|||||||
"search": {
|
"search": {
|
||||||
"placeholder": "Hľadať podľa štítku alebo podštítku..."
|
"placeholder": "Hľadať podľa štítku alebo podštítku..."
|
||||||
},
|
},
|
||||||
"noImages": "Pre tuto kameru sa nenašli žiadne miniatúry"
|
"noImages": "Pre tuto kameru sa nenašli žiadne miniatúry",
|
||||||
|
"unknownLabel": "Uložený obrázok spúšťača"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user