Compare commits

..

1 Commits

Author SHA1 Message Date
dependabot[bot]
645c0b2213 Bump python-multipart from 0.0.20 to 0.0.22 in /docker/main
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.20 to 0.0.22.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.20...0.0.22)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.22
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-26 23:47:36 +00:00
260 changed files with 734 additions and 5622 deletions

View File

@@ -2,19 +2,15 @@
# Update package list and install dependencies
sudo apt-get update
sudo apt-get install -y build-essential cmake git wget linux-headers-$(uname -r)
sudo apt-get install -y build-essential cmake git wget
hailo_version="4.21.0"
arch=$(uname -m)
if [[ $arch == "aarch64" ]]; then
source /etc/os-release
os_codename=$VERSION_CODENAME
echo "Detected OS codename: $os_codename"
fi
if [ "$os_codename" = "trixie" ]; then
sudo apt install -y dkms
if [[ $arch == "x86_64" ]]; then
sudo apt install -y linux-headers-$(uname -r);
else
sudo apt install -y linux-modules-extra-$(uname -r);
fi
# Clone the HailoRT driver repository
@@ -51,4 +47,3 @@ sudo udevadm control --reload-rules && sudo udevadm trigger
echo "HailoRT driver installation complete."
echo "reboot your system to load the firmware!"
echo "Driver version: $(modinfo -F version hailo_pci)"

View File

@@ -11,7 +11,7 @@ joserfc == 1.2.*
cryptography == 44.0.*
pathvalidate == 3.3.*
markupsafe == 3.0.*
python-multipart == 0.0.20
python-multipart == 0.0.22
# Classification Model Training
tensorflow == 2.19.* ; platform_machine == 'aarch64'
tensorflow-cpu == 2.19.* ; platform_machine == 'x86_64'

View File

@@ -29,10 +29,6 @@ auth:
reset_admin_password: true
```
## Password guidance
Constructing secure passwords and managing them properly is important. Frigate requires a minimum length of 12 characters. For guidance on password standards see [NIST SP 800-63B](https://pages.nist.gov/800-63-3/sp800-63b.html). To learn what makes a password truly secure, read this [article](https://medium.com/peerio/how-to-build-a-billion-dollar-password-3d92568d9277).
## Login failure rate limiting
In order to limit the risk of brute force attacks, rate limiting is available for login failures. This is implemented with SlowApi, and the string notation for valid values is available in [the documentation](https://limits.readthedocs.io/en/stable/quickstart.html#examples).

View File

@@ -381,7 +381,6 @@ Start with ["Why isn't my license plate being detected and recognized?"](#why-is
```yaml
lpr:
enabled: true
device: CPU
debug_save_plates: true
```

View File

@@ -214,12 +214,6 @@ The `exec:`, `echo:`, and `expr:` sources are disabled by default for security.
:::
:::warning
The `exec:`, `echo:`, and `expr:` sources are disabled by default for security. You must set `GO2RTC_ALLOW_ARBITRARY_EXEC=true` to use them. See [Security: Restricted Stream Sources](#security-restricted-stream-sources) for more information.
:::
NOTE: The output will need to be passed with two curly braces `{{output}}`
```yaml

View File

@@ -112,65 +112,42 @@ The Hailo-8 and Hailo-8L AI accelerators are available in both M.2 and HAT form
:::warning
On Raspberry Pi OS **Bookworm**, the kernel includes an older version of the Hailo driver that is incompatible with Frigate. You **must** follow the installation steps below to install the correct driver version, and you **must** disable the built-in kernel driver as described in step 1.
On Raspberry Pi OS **Trixie**, the Hailo driver is no longer shipped with the kernel. It is installed via DKMS, and the conflict described below does not apply. You can simply run the installation script.
The Raspberry Pi kernel includes an older version of the Hailo driver that is incompatible with Frigate. You **must** follow the installation steps below to install the correct driver version, and you **must** disable the built-in kernel driver as described in step 1.
:::
1. **Disable the built-in Hailo driver (Raspberry Pi Bookworm OS only)**:
1. **Disable the built-in Hailo driver (Raspberry Pi only)**:
:::note
If you are **not** using a Raspberry Pi with **Bookworm OS**, skip this step and proceed directly to step 2.
If you are using Raspberry Pi with **Trixie OS**, also skip this step and proceed directly to step 2.
If you are **not** using a Raspberry Pi, skip this step and proceed directly to step 2.
:::
First, check if the driver is currently loaded:
If you are using a Raspberry Pi, you need to blacklist the built-in kernel Hailo driver to prevent conflicts. First, check if the driver is currently loaded:
```bash
lsmod | grep hailo
```
If it shows `hailo_pci`, unload it:
```bash
sudo modprobe -r hailo_pci
```
Then locate the built-in kernel driver and rename it so it cannot be loaded.
Renaming allows the original driver to be restored later if needed.
First, locate the currently installed kernel module:
```bash
modinfo -n hailo_pci
sudo rmmod hailo_pci
```
Example output:
```
/lib/modules/6.6.31+rpt-rpi-2712/kernel/drivers/media/pci/hailo/hailo_pci.ko.xz
```
Save the module path to a variable:
Now blacklist the driver to prevent it from loading on boot:
```bash
BUILTIN=$(modinfo -n hailo_pci)
echo "blacklist hailo_pci" | sudo tee /etc/modprobe.d/blacklist-hailo_pci.conf
```
And rename the module by appending .bak:
Update initramfs to ensure the blacklist takes effect:
```bash
sudo mv "$BUILTIN" "${BUILTIN}.bak"
sudo update-initramfs -u
```
Now refresh the kernel module map so the system recognizes the change:
```bash
sudo depmod -a
```
Reboot your Raspberry Pi:
```bash
@@ -183,9 +160,9 @@ On Raspberry Pi OS **Trixie**, the Hailo driver is no longer shipped with the ke
lsmod | grep hailo
```
This command should return no results.
This command should return no results. If it still shows `hailo_pci`, the blacklist did not take effect properly and you may need to check for other Hailo packages installed via apt that are loading the driver.
3. **Run the installation script**:
2. **Run the installation script**:
Download the installation script:
@@ -213,7 +190,7 @@ On Raspberry Pi OS **Trixie**, the Hailo driver is no longer shipped with the ke
- Download and install the required firmware
- Set up udev rules
4. **Reboot your system**:
3. **Reboot your system**:
After the script completes successfully, reboot to load the firmware:
@@ -221,7 +198,7 @@ On Raspberry Pi OS **Trixie**, the Hailo driver is no longer shipped with the ke
sudo reboot
```
5. **Verify the installation**:
4. **Verify the installation**:
After rebooting, verify that the Hailo device is available:
@@ -235,38 +212,6 @@ On Raspberry Pi OS **Trixie**, the Hailo driver is no longer shipped with the ke
lsmod | grep hailo_pci
```
Verify the driver version:
```bash
cat /sys/module/hailo_pci/version
```
Verify that the firmware was installed correctly:
```bash
ls -l /lib/firmware/hailo/hailo8_fw.bin
```
**Optional: Fix PCIe descriptor page size error**
If you encounter the following error:
```
[HailoRT] [error] CHECK failed - max_desc_page_size given 16384 is bigger than hw max desc page size 4096
```
Create a configuration file to force the correct descriptor page size:
```bash
echo 'options hailo_pci force_desc_page_size=4096' | sudo tee /etc/modprobe.d/hailo_pci.conf
```
and reboot:
```bash
sudo reboot
```
#### Setup
To set up Frigate, follow the default installation instructions, for example: `ghcr.io/blakeblackshear/frigate:stable`

View File

@@ -350,15 +350,21 @@ def validate_password_strength(password: str) -> tuple[bool, Optional[str]]:
Validate password strength.
Returns a tuple of (is_valid, error_message).
Longer passwords are harder to crack than shorter complex ones.
https://pages.nist.gov/800-63-3/sp800-63b.html
"""
if not password:
return False, "Password cannot be empty"
if len(password) < 12:
return False, "Password must be at least 12 characters long"
if len(password) < 8:
return False, "Password must be at least 8 characters long"
if not any(c.isupper() for c in password):
return False, "Password must contain at least one uppercase letter"
if not any(c.isdigit() for c in password):
return False, "Password must contain at least one digit"
if not any(c in '!@#$%^&*(),.?":{}|<>' for c in password):
return False, "Password must contain at least one special character"
return True, None
@@ -794,7 +800,7 @@ def get_users():
"/users",
dependencies=[Depends(require_role(["admin"]))],
summary="Create new user",
description="Creates a new user with the specified username, password, and role. Requires admin role. Password must be at least 12 characters long.",
description='Creates a new user with the specified username, password, and role. Requires admin role. Password must meet strength requirements: minimum 8 characters, at least one uppercase letter, at least one digit, and at least one special character (!@#$%^&*(),.?":{} |<>).',
)
def create_user(
request: Request,
@@ -811,15 +817,6 @@ def create_user(
content={"message": f"Role must be one of: {', '.join(config_roles)}"},
status_code=400,
)
# Validate password strength
is_valid, error_message = validate_password_strength(body.password)
if not is_valid:
return JSONResponse(
content={"message": error_message},
status_code=400,
)
role = body.role or "viewer"
password_hash = hash_password(body.password, iterations=HASH_ITERATIONS)
User.insert(
@@ -854,7 +851,7 @@ def delete_user(request: Request, username: str):
"/users/{username}/password",
dependencies=[Depends(allow_any_authenticated())],
summary="Update user password",
description="Updates a user's password. Users can only change their own password unless they have admin role. Requires the current password to verify identity for non-admin users. Password must be at least 12 characters long. If user changes their own password, a new JWT cookie is automatically issued.",
description="Updates a user's password. Users can only change their own password unless they have admin role. Requires the current password to verify identity for non-admin users. Password must meet strength requirements: minimum 8 characters, at least one uppercase letter, at least one digit, and at least one special character (!@#$%^&*(),.?\":{} |<>). If user changes their own password, a new JWT cookie is automatically issued.",
)
async def update_password(
request: Request,

View File

@@ -73,7 +73,7 @@ def get_faces():
face_dict[name] = []
for file in filter(
lambda f: f.lower().endswith((".webp", ".png", ".jpg", ".jpeg")),
lambda f: (f.lower().endswith((".webp", ".png", ".jpg", ".jpeg"))),
os.listdir(face_dir),
):
face_dict[name].append(file)
@@ -582,7 +582,7 @@ def get_classification_dataset(name: str):
dataset_dict[category_name] = []
for file in filter(
lambda f: f.lower().endswith((".webp", ".png", ".jpg", ".jpeg")),
lambda f: (f.lower().endswith((".webp", ".png", ".jpg", ".jpeg"))),
os.listdir(category_dir),
):
dataset_dict[category_name].append(file)
@@ -693,7 +693,7 @@ def get_classification_images(name: str):
status_code=200,
content=list(
filter(
lambda f: f.lower().endswith((".webp", ".png", ".jpg", ".jpeg")),
lambda f: (f.lower().endswith((".webp", ".png", ".jpg", ".jpeg"))),
os.listdir(train_dir),
)
),

View File

@@ -108,13 +108,12 @@ class GenAIReviewConfig(FrigateBaseModel):
default="""### Normal Activity Indicators (Level 0)
- Known/verified people in any zone at any time
- People with pets in residential areas
- Routine residential vehicle access during daytime/evening (6 AM - 10 PM): entering, exiting, loading/unloading items — normal commute and travel patterns
- Deliveries or services during daytime/evening (6 AM - 10 PM): carrying packages to doors/porches, placing items, leaving
- Services/maintenance workers with visible tools, uniforms, or service vehicles during daytime
- Activity confined to public areas only (sidewalks, streets) without entering property at any time
### Suspicious Activity Indicators (Level 1)
- **Checking or probing vehicle/building access**: trying handles without entering, peering through windows, examining multiple vehicles, or possessing break-in tools — Level 1
- **Testing or attempting to open doors/windows/handles on vehicles or buildings** — ALWAYS Level 1 regardless of time or duration
- **Unidentified person in private areas (driveways, near vehicles/buildings) during late night/early morning (11 PM - 5 AM)** — ALWAYS Level 1 regardless of activity or duration
- Taking items that don't belong to them (packages, objects from porches/driveways)
- Climbing or jumping fences/barriers to access property
@@ -134,8 +133,8 @@ Evaluate in this order:
1. **If person is verified/known** → Level 0 regardless of time or activity
2. **If person is unidentified:**
- Check time: If late night/early morning (11 PM - 5 AM) AND in private areas (driveways, near vehicles/buildings) → Level 1
- Check actions: If probing access (trying handles without entering, checking multiple vehicles), taking items, climbing → Level 1
- Otherwise, if daytime/evening (6 AM - 10 PM) with clear legitimate purpose (delivery, service, routine vehicle access) → Level 0
- Check actions: If testing doors/handles, taking items, climbing → Level 1
- Otherwise, if daytime/evening (6 AM - 10 PM) with clear legitimate purpose (delivery, service worker) → Level 0
3. **Escalate to Level 2 if:** Weapons, break-in tools, forced entry in progress, violence, or active property damage visible (escalates from Level 0 or 1)
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.""",

View File

@@ -97,7 +97,7 @@ class CustomStateClassificationProcessor(RealTimeProcessorApi):
self.interpreter.allocate_tensors()
self.tensor_input_details = self.interpreter.get_input_details()
self.tensor_output_details = self.interpreter.get_output_details()
self.labelmap = load_labels(labelmap_path, prefill=0, indexed=False)
self.labelmap = load_labels(labelmap_path, prefill=0)
self.classifications_per_second.start()
def __update_metrics(self, duration: float) -> None:
@@ -398,7 +398,7 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi):
self.interpreter.allocate_tensors()
self.tensor_input_details = self.interpreter.get_input_details()
self.tensor_output_details = self.interpreter.get_output_details()
self.labelmap = load_labels(labelmap_path, prefill=0, indexed=False)
self.labelmap = load_labels(labelmap_path, prefill=0)
def __update_metrics(self, duration: float) -> None:
self.classifications_per_second.update()
@@ -419,21 +419,14 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi):
"""
if object_id not in self.classification_history:
self.classification_history[object_id] = []
logger.debug(f"Created new classification history for {object_id}")
self.classification_history[object_id].append(
(current_label, current_score, current_time)
)
history = self.classification_history[object_id]
logger.debug(
f"History for {object_id}: {len(history)} entries, latest=({current_label}, {current_score})"
)
if len(history) < 3:
logger.debug(
f"History for {object_id} has {len(history)} entries, need at least 3"
)
return None, 0.0
label_counts = {}
@@ -452,27 +445,14 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi):
best_count = label_counts[best_label]
consensus_threshold = total_attempts * 0.6
logger.debug(
f"Consensus calc for {object_id}: label_counts={label_counts}, "
f"best_label={best_label}, best_count={best_count}, "
f"total={total_attempts}, threshold={consensus_threshold}"
)
if best_count < consensus_threshold:
logger.debug(
f"No consensus for {object_id}: {best_count} < {consensus_threshold}"
)
return None, 0.0
avg_score = sum(label_scores[best_label]) / len(label_scores[best_label])
if best_label == "none":
logger.debug(f"Filtering 'none' label for {object_id}")
return None, 0.0
logger.debug(
f"Consensus reached for {object_id}: {best_label} with avg_score={avg_score}"
)
return best_label, avg_score
def process_frame(self, obj_data, frame):
@@ -580,30 +560,17 @@ class CustomObjectClassificationProcessor(RealTimeProcessorApi):
)
if score < self.model_config.threshold:
logger.debug(
f"{self.model_config.name}: Score {score} < threshold {self.model_config.threshold} for {object_id}, skipping"
)
logger.debug(f"Score {score} is less than threshold.")
return
sub_label = self.labelmap[best_id]
logger.debug(
f"{self.model_config.name}: Object {object_id} (label={obj_data['label']}) passed threshold with sub_label={sub_label}, score={score}"
)
consensus_label, consensus_score = self.get_weighted_score(
object_id, sub_label, score, now
)
logger.debug(
f"{self.model_config.name}: get_weighted_score returned consensus_label={consensus_label}, consensus_score={consensus_score} for {object_id}"
)
if consensus_label is not None:
camera = obj_data["camera"]
logger.debug(
f"{self.model_config.name}: Publishing sub_label={consensus_label} for {obj_data['label']} object {object_id} on {camera}"
)
if (
self.model_config.object_config.classification_type
@@ -695,7 +662,7 @@ def write_classification_attempt(
# delete oldest face image if maximum is reached
try:
files = sorted(
filter(lambda f: f.endswith(".webp"), os.listdir(folder)),
filter(lambda f: (f.endswith(".webp")), os.listdir(folder)),
key=lambda f: os.path.getctime(os.path.join(folder, f)),
reverse=True,
)

View File

@@ -539,7 +539,7 @@ class FaceRealTimeProcessor(RealTimeProcessorApi):
cv2.imwrite(file, frame)
files = sorted(
filter(lambda f: f.endswith(".webp"), os.listdir(folder)),
filter(lambda f: (f.endswith(".webp")), os.listdir(folder)),
key=lambda f: os.path.getctime(os.path.join(folder, f)),
reverse=True,
)

View File

@@ -633,7 +633,7 @@ class EmbeddingMaintainer(threading.Thread):
camera, frame_name, _, _, motion_boxes, _ = data
if not camera or camera not in self.config.cameras:
if not camera or len(motion_boxes) == 0 or camera not in self.config.cameras:
return
camera_config = self.config.cameras[camera]
@@ -660,10 +660,8 @@ class EmbeddingMaintainer(threading.Thread):
return
for processor in self.realtime_processors:
if (
dedicated_lpr_enabled
and len(motion_boxes) > 0
and isinstance(processor, LicensePlateRealTimeProcessor)
if dedicated_lpr_enabled and isinstance(
processor, LicensePlateRealTimeProcessor
):
processor.process_frame(camera, yuv_frame, True)

View File

@@ -15,16 +15,6 @@ logger = logging.getLogger(__name__)
def should_update_db(prev_event: Event, current_event: Event) -> bool:
"""If current_event has updated fields and (clip or snapshot)."""
# If event is ending and was previously saved, always update to set end_time
# This ensures events are properly ended even when alerts/detections are disabled
# mid-event (which can cause has_clip/has_snapshot to become False)
if (
prev_event["end_time"] is None
and current_event["end_time"] is not None
and (prev_event["has_clip"] or prev_event["has_snapshot"])
):
return True
if current_event["has_clip"] or current_event["has_snapshot"]:
# if this is the first time has_clip or has_snapshot turned true
if not prev_event["has_clip"] and not prev_event["has_snapshot"]:

View File

@@ -99,8 +99,8 @@ When forming your description:
## Response Format
Your response MUST be a flat JSON object with:
- `title` (string): A concise, direct title that describes the primary action or event in the sequence, not just what you literally see. Use spatial context when available to make titles more meaningful. When multiple objects/actions are present, prioritize whichever is most prominent or occurs first. 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", "Vehicle arriving in driveway", "Joe accessing vehicle", "Person leaving porch for driveway".
- `scene` (string): A narrative description of what happens across the sequence from start to finish, in chronological order. Start by describing how the sequence begins, then describe the progression of events. **Describe all significant movements and actions in the order they occur.** For example, if a vehicle arrives and then a person exits, describe both actions sequentially. **Only describe actions you can actually observe happening in the frames provided.** Do not infer or assume actions that aren't visible (e.g., if you see someone walking but never see them sit, don't say they sat down). Include setting, detected objects, and their observable actions. Avoid speculation or filling in assumed behaviors. Your description should align with and support the threat level you assign.
- `title` (string): A concise, grammatically complete title in the format "[Subject] [action verb] [context]" that matches your scene description. Use names from "Objects in Scene" when you visually observe them.
- `shortSummary` (string): A brief 2-sentence summary of the scene, suitable for notifications. Should capture the key activity and context without full detail. This should be a condensed version of the scene description above.
- `confidence` (float): 0-1 confidence in your analysis. Higher confidence when objects/actions are clearly visible and context is unambiguous. Lower confidence when the sequence is unclear, objects are partially obscured, or context is ambiguous.
- `potential_threat_level` (integer): 0, 1, or 2 as defined in "Normal Activity Patterns for This Property" above. Your threat level must be consistent with your scene description and the guidance above.
@@ -140,7 +140,12 @@ Each line represents a detection state, not necessarily unique individuals. Pare
) as f:
f.write(context_prompt)
response = self._send(context_prompt, thumbnails)
json_schema = {
"name": "review_metadata",
"schema": ReviewMetadata.model_json_schema(),
"strict": True,
}
response = self._send(context_prompt, thumbnails, json_schema=json_schema)
if debug_save and response:
with open(
@@ -152,6 +157,8 @@ Each line represents a detection state, not necessarily unique individuals. Pare
f.write(response)
if response:
# With JSON schema, response should already be valid JSON
# But keep regex cleanup as fallback for providers without schema support
clean_json = re.sub(
r"\n?```$", "", re.sub(r"^```[a-zA-Z0-9]*\n?", "", response)
)
@@ -284,8 +291,16 @@ Guidelines:
"""Initialize the client."""
return None
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
"""Submit a request to the provider."""
def _send(
self, prompt: str, images: list[bytes], json_schema: Optional[dict] = None
) -> Optional[str]:
"""Submit a request to the provider.
Args:
prompt: The text prompt to send
images: List of image bytes to include
json_schema: Optional JSON schema for structured output (provider-specific support)
"""
return None
def get_context_size(self) -> int:

View File

@@ -41,29 +41,46 @@ class OpenAIClient(GenAIClient):
azure_endpoint=azure_endpoint,
)
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
def _send(
self, prompt: str, images: list[bytes], json_schema: Optional[dict] = None
) -> Optional[str]:
"""Submit a request to Azure OpenAI."""
encoded_images = [base64.b64encode(image).decode("utf-8") for image in images]
request_params = {
"model": self.genai_config.model,
"messages": [
{
"role": "user",
"content": [{"type": "text", "text": prompt}]
+ [
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image}",
"detail": "low",
},
}
for image in encoded_images
],
},
],
"timeout": self.timeout,
}
if json_schema:
request_params["response_format"] = {
"type": "json_schema",
"json_schema": {
"name": json_schema.get("name", "response"),
"schema": json_schema.get("schema", {}),
"strict": json_schema.get("strict", True),
},
}
try:
result = self.provider.chat.completions.create(
model=self.genai_config.model,
messages=[
{
"role": "user",
"content": [{"type": "text", "text": prompt}]
+ [
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image}",
"detail": "low",
},
}
for image in encoded_images
],
},
],
timeout=self.timeout,
**request_params,
**self.genai_config.runtime_options,
)
except Exception as e:

View File

@@ -41,7 +41,9 @@ class GeminiClient(GenAIClient):
http_options=types.HttpOptions(**http_options_dict),
)
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
def _send(
self, prompt: str, images: list[bytes], json_schema: Optional[dict] = None
) -> Optional[str]:
"""Submit a request to Gemini."""
contents = [
types.Part.from_bytes(data=img, mime_type="image/jpeg") for img in images
@@ -51,6 +53,12 @@ class GeminiClient(GenAIClient):
generation_config_dict = {"candidate_count": 1}
generation_config_dict.update(self.genai_config.runtime_options)
if json_schema and "schema" in json_schema:
generation_config_dict["response_mime_type"] = "application/json"
generation_config_dict["response_schema"] = types.Schema(
json_schema=json_schema["schema"]
)
response = self.provider.models.generate_content(
model=self.genai_config.model,
contents=contents,

View File

@@ -50,7 +50,9 @@ class OllamaClient(GenAIClient):
logger.warning("Error initializing Ollama: %s", str(e))
return None
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
def _send(
self, prompt: str, images: list[bytes], json_schema: Optional[dict] = None
) -> Optional[str]:
"""Submit a request to Ollama"""
if self.provider is None:
logger.warning(
@@ -62,6 +64,10 @@ class OllamaClient(GenAIClient):
**self.provider_options,
**self.genai_config.runtime_options,
}
if json_schema and "schema" in json_schema:
ollama_options["format"] = json_schema["schema"]
result = self.provider.generate(
self.genai_config.model,
prompt,

View File

@@ -31,7 +31,9 @@ class OpenAIClient(GenAIClient):
}
return OpenAI(api_key=self.genai_config.api_key, **provider_opts)
def _send(self, prompt: str, images: list[bytes]) -> Optional[str]:
def _send(
self, prompt: str, images: list[bytes], json_schema: Optional[dict] = None
) -> Optional[str]:
"""Submit a request to OpenAI."""
encoded_images = [base64.b64encode(image).decode("utf-8") for image in images]
messages_content = []
@@ -51,16 +53,31 @@ class OpenAIClient(GenAIClient):
"text": prompt,
}
)
request_params = {
"model": self.genai_config.model,
"messages": [
{
"role": "user",
"content": messages_content,
},
],
"timeout": self.timeout,
}
if json_schema:
request_params["response_format"] = {
"type": "json_schema",
"json_schema": {
"name": json_schema.get("name", "response"),
"schema": json_schema.get("schema", {}),
"strict": json_schema.get("strict", True),
},
}
try:
result = self.provider.chat.completions.create(
model=self.genai_config.model,
messages=[
{
"role": "user",
"content": messages_content,
},
],
timeout=self.timeout,
**request_params,
**self.genai_config.runtime_options,
)
if (

View File

@@ -26,16 +26,15 @@ LOG_HANDLER.setFormatter(
# filter out norfair warning
LOG_HANDLER.addFilter(
lambda record: (
not record.getMessage().startswith("You are using a scalar distance function")
lambda record: not record.getMessage().startswith(
"You are using a scalar distance function"
)
)
# filter out tflite logging
LOG_HANDLER.addFilter(
lambda record: (
"Created TensorFlow Lite XNNPACK delegate for CPU." not in record.getMessage()
)
lambda record: "Created TensorFlow Lite XNNPACK delegate for CPU."
not in record.getMessage()
)

View File

@@ -208,10 +208,8 @@ class RecordingMaintainer(threading.Thread):
processed_segment_count = len(
list(
filter(
lambda r: (
r["start_time"].timestamp()
< most_recently_processed_frame_time
),
lambda r: r["start_time"].timestamp()
< most_recently_processed_frame_time,
grouped_recordings[camera],
)
)

View File

@@ -129,9 +129,7 @@ def get_ffmpeg_arg_list(arg: Any) -> list:
return arg if isinstance(arg, list) else shlex.split(arg)
def load_labels(
path: Optional[str], encoding="utf-8", prefill=91, indexed: bool | None = None
):
def load_labels(path: Optional[str], encoding="utf-8", prefill=91):
"""Loads labels from file (with or without index numbers).
Args:
path: path to label file.
@@ -148,12 +146,11 @@ def load_labels(
if not lines:
return {}
if indexed != False and lines[0].split(" ", maxsplit=1)[0].isdigit():
if lines[0].split(" ", maxsplit=1)[0].isdigit():
pairs = [line.split(" ", maxsplit=1) for line in lines]
labels.update({int(index): label.strip() for index, label in pairs})
else:
labels.update({index: line.strip() for index, line in enumerate(lines)})
return labels

View File

@@ -1,6 +1,5 @@
{
"train": {
"titleShort": "الأخيرة"
},
"documentTitle": "تصنيف النماذج - Frigate"
}
}

View File

@@ -60,7 +60,7 @@
"cough": "Tos",
"throat_clearing": "Carraspeig",
"sneeze": "Esternut",
"sniff": "olorar",
"sniff": "Fregit nasal",
"run": "Córrer",
"shuffle": "Passos arrossegats",
"footsteps": "Passos",
@@ -97,7 +97,7 @@
"moo": "Mugir",
"cowbell": "Esquellot",
"pig": "Porc",
"oink": "Oinc",
"oink": "Oink",
"bleat": "Brama",
"fowl": "Au de corral",
"chicken": "Pollastre",
@@ -439,37 +439,37 @@
"inside": "Interior",
"pulse": "Pols",
"outside": "Fora",
"chirp_tone": "Gisclada",
"chirp_tone": "To de grinyol",
"harmonic": "Harmònic",
"sine_wave": "Ona sinus",
"crunch": "Cruixit",
"hum": "Zunzum",
"plop": "Xip-xap",
"hum": "Taral·lejar",
"plop": "Chof",
"clickety_clack": "Clic-Clac",
"clicking": "Clicant",
"clatter": "Rebombori",
"clatter": "Soroll",
"chird": "Piular",
"liquid": "Líquid",
"splash": "Esquitx",
"slosh": "Xipolleig",
"boing": "Rebot",
"zing": "Zunzum agut",
"rumble": "Retombori",
"sizzle": "Crepitació",
"splash": "Xof",
"slosh": "Xip-xap",
"boing": "Boing",
"zing": "Fiu",
"rumble": "Bum-bum",
"sizzle": "Xiu-xiu",
"whir": "Brrrm",
"rustle": "Frec",
"creak": "Rascada",
"clang": "Soroll metàl·lic",
"rustle": "Fru-Fru",
"creak": "Clic-clac",
"clang": "Clang",
"squish": "Xaf",
"drip": "Goteig",
"pour": "Abocament",
"trickle": "Raig fi",
"gush": "Raig fort",
"fill": "Ompliment",
"ding": "Ting",
"ping": "Ressò",
"beep": "Pitit",
"squeal": "Chirrit",
"drip": "Plic-plic",
"pour": "Glug-glug",
"trickle": "Xiulet",
"gush": "Xuuuix",
"fill": "Glug-glug",
"ding": "Ding",
"ping": "Ping",
"beep": "Bip",
"squeal": "Xiscle",
"crumpling": "Arrugant-se",
"rub": "Fregar",
"scrape": "Raspar",
@@ -480,13 +480,13 @@
"smash": "Aixafar",
"whack": "Cop",
"slap": "Bufetada",
"bang": "Cop fort",
"bang": "Bang",
"basketball_bounce": "Rebot de bàsquet",
"chorus_effect": "Efecte de cor",
"effects_unit": "Unitat d'Efectes",
"electronic_tuner": "Afinador electrònic",
"thunk": "Bruix",
"thump": "Soroll sord",
"thump": "Cop fort",
"whoosh": "Xiuxiueig",
"arrow": "Fletxa",
"sonar": "Sonar",

View File

@@ -201,8 +201,7 @@
},
"inProgress": "En curs",
"invalidStartTime": "Hora d'inici no vàlida",
"invalidEndTime": "Hora de finalització no vàlida",
"never": "Mai"
"invalidEndTime": "Hora de finalització no vàlida"
},
"unit": {
"speed": {

View File

@@ -184,16 +184,6 @@
"restricted": {
"title": "No hi ha càmeres disponibles",
"description": "No teniu permís per veure cap càmera en aquest grup."
},
"default": {
"title": "No s'ha configurat cap càmera",
"description": "Comenceu connectant una càmera a Frigate.",
"buttonText": "Afegeix una càmera"
},
"group": {
"title": "No hi ha càmeres al grup",
"description": "Aquest grup de càmeres no té càmeres assignades o habilitades.",
"buttonText": "Gestiona els grups"
}
}
}

View File

@@ -954,7 +954,7 @@
"useDigestAuthDescription": "Usa l'autenticació de resum HTTP per a ONVIF. Algunes càmeres poden requerir un nom d'usuari/contrasenya ONVIF dedicat en lloc de l'usuari administrador estàndard."
},
"save": {
"failure": "S'ha produït un error en desar {{cameraName}}.",
"failure": "SS'ha produït un error en desar {{cameraName}}.",
"success": "S'ha desat correctament la càmera nova {{cameraName}}."
},
"testResultLabels": {
@@ -1211,11 +1211,11 @@
"cameraReview": {
"object_descriptions": {
"title": "Descripcions d'objectes generadors d'IA",
"desc": "Activa/desactiva temporalment les descripcions d'objectes generatius d'IA per a aquesta càmera fins que es reiniciï Frigate. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als objectes rastrejats en aquesta càmera."
"desc": "Activa/desactiva temporalment les descripcions d'objectes generatius d'IA per a aquesta càmera. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als objectes rastrejats en aquesta càmera."
},
"review_descriptions": {
"title": "Descripcions de la IA generativa",
"desc": "Activa/desactiva temporalment les descripcions de la IA Generativa per a aquesta càmera fins que es reiniciï Frigate. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als elements de revisió d'aquesta càmera."
"desc": "Activa/desactiva temporalment les descripcions de revisió de la IA generativa per a aquesta càmera. Quan està desactivat, les descripcions generades per IA no se sol·licitaran per als elements de revisió d'aquesta càmera."
},
"review": {
"title": "Revisió",

View File

@@ -78,11 +78,7 @@
"formattedTimestampFilename": {
"24hour": "dd-MM-yy-HH-mm-ss",
"12hour": "dd-MM.yy-h-mm-ss-a"
},
"never": "Nikdy",
"inProgress": "Zpracovává se",
"invalidStartTime": "Neplatný čas začátku",
"invalidEndTime": "Neplatný čas konce"
}
},
"button": {
"twoWayTalk": "Obousměrná komunikace",
@@ -119,17 +115,10 @@
"unselect": "Zrušit výběr",
"deleteNow": "Smazat hned",
"next": "Další",
"export": "Exportovat",
"continue": "Pokračovat"
"export": "Exportovat"
},
"label": {
"back": "Jdi zpět",
"hide": "Skrýt {{item}}",
"show": "Zobrazit {{item}}",
"ID": "ID",
"none": "Nic",
"all": "Vše",
"other": "Ostatní"
"back": "Jdi zpět"
},
"unit": {
"speed": {
@@ -139,14 +128,6 @@
"length": {
"feet": "stopa",
"meters": "metry"
},
"data": {
"kbps": "kB/s",
"mbps": "MB/s",
"gbps": "GB/s",
"kbph": "kB/hodinu",
"mbph": "MB/hodinu",
"gbph": "GB/hodinu"
}
},
"selectItem": "Vybrat {{item}}",
@@ -249,8 +230,7 @@
"uiPlayground": "UI hřiště",
"faceLibrary": "Knihovna Obličejů",
"configurationEditor": "Editor Konfigurace",
"withSystem": "Systém",
"classification": "Klasifikace"
"withSystem": "Systém"
},
"pagination": {
"previous": {
@@ -290,17 +270,5 @@
"viewer": "Divák",
"desc": "Správci mají plný přístup ke všem funkcím v uživatelském rozhraní Frigate. Diváci jsou omezeni na sledování kamer, položek přehledu a historických záznamů v UI."
},
"readTheDocumentation": "Přečtěte si dokumentaci",
"list": {
"two": "{{0}} a {{1}}",
"many": "{{items}}, a {{last}}",
"separatorWithSpace": ", "
},
"field": {
"optional": "Volitelné",
"internalID": "Interní ID Frigate používá v konfiguraci a databázi"
},
"information": {
"pixels": "{{area}}px"
}
"readTheDocumentation": "Přečtěte si dokumentaci"
}

View File

@@ -44,8 +44,7 @@
"button": {
"markAsReviewed": "Označit jako zkontrolované",
"deleteNow": "Smazat hned",
"export": "Exportovat",
"markAsUnreviewed": "Označit jako nezkontrolované"
"export": "Exportovat"
}
},
"export": {
@@ -68,13 +67,12 @@
"export": "Exportovat",
"selectOrExport": "Vybrat pro Export",
"toast": {
"success": "Export úspěšně spuštěn. Soubor najdete na stránce exportů.",
"success": "Export úspěšně spuštěn. Soubor najdete v adresáři /exports.",
"error": {
"failed": "Chyba spuštění exportu: {{error}}",
"endTimeMustAfterStartTime": "Čas konce musí být po čase začátku",
"noVaildTimeSelected": "Není vybráno žádné platné časové období"
},
"view": "Zobrazení"
}
},
"fromTimeline": {
"saveExport": "Uložit export",
@@ -118,7 +116,6 @@
"search": {
"placeholder": "Hledej pomocí štítku nebo podštítku..."
},
"noImages": "Nebyly nalezeny žádné náhledy pro tuto kameru",
"unknownLabel": "Uložený obrázek Spouštěče"
"noImages": "Nebyly nalezeny žádné náhledy pro tuto kameru"
}
}

View File

@@ -132,9 +132,5 @@
},
"count_one": "Třída {{count}}",
"count_other": "Třídy {{count}}"
},
"attributes": {
"label": "Atributy Klasifikace",
"all": "Všechny Atributy"
}
}

View File

@@ -38,65 +38,10 @@
"deleteImageFailed": "Chyba při mazání: {{errorMessage}}",
"deleteCategoryFailed": "Chyba při mazání třídy: {{errorMessage}}",
"deleteModelFailed": "Chyba při mazání modelu: {{errorMessage}}",
"categorizeFailed": "Chyba při mazání obrázku: {{errorMessage}}",
"trainingFailed": "Trénování modelu selhalo. Zkontrolujte logy Frigate pro zjištění detailů.",
"trainingFailedToStart": "Chyba spuštění trénování modelu: {{errorMessage}}",
"updateModelFailed": "Chyba aktualizace modelu: {{errorMessage}}",
"renameCategoryFailed": "Chyba přejmenování třídy: {{errorMessage}}"
"categorizeFailed": "Chyba při mazání obrázku: {{errorMessage}}"
}
},
"train": {
"titleShort": "Nedávný",
"title": "Předchozí klasifikace",
"aria": "Vybrat předchozí Klasifikace"
},
"deleteModel": {
"desc_one": "Jste si jistí, že chcete odstranit {{count}} model? Tím trvale odstraníte všechny související data včetně obrázků a tréninkových dat. Tato akce je nevratná.",
"desc_few": "Jste si jistí, že chcete odstranit {{count}} modely? Tím trvale odstraníte všechny související data včetně obrázků a tréninkových dat. Tato akce je nevratná.",
"desc_other": "Jste si jistí, že chcete odstranit {{count}} modelů? Tím trvale odstraníte všechny související data včetně obrázků a tréninkových dat. Tato akce je nevratná."
},
"deleteDatasetImages": {
"desc_one": "Opravdu chcete odstranit {{count}} obrázek z {{dataset}}? Tato akce je nevratná a vyžaduje přetrénování modelu.",
"desc_few": "Opravdu chcete odstranit {{count}} obrázky z {{dataset}}? Tato akce je nevratná a vyžaduje přetrénování modelu.",
"desc_other": "Opravdu chcete odstranit {{count}} obrázků z {{dataset}}? Tato akce je nevratná a vyžaduje přetrénování modelu.",
"title": "Smazat obrázky datové sady"
},
"deleteTrainImages": {
"desc_one": "Opravdu chcete odstranit {{count}} obrázek? Tato akce je nevratná.",
"desc_few": "Opravdu chcete odstranit {{count}} obrázky? Tato akce je nevratná.",
"desc_other": "Opravdu chcete odstranit {{count}} obrázků? Tato akce je nevratná.",
"title": "Odstranit tréninkové obrázky"
},
"wizard": {
"step3": {
"allImagesRequired_one": "Prosím, zařaďte všechny obrázky. Zbývá {{count}} obrázek.",
"allImagesRequired_few": "Prosím, zařaďte všechny obrázky. Zbývají {{count}} obrázky.",
"allImagesRequired_other": "Prosím, zařaďte všechny obrázky. Zbývá {{count}} obrázků.",
"trainingStarted": "Trénování úspěšně spuštěno",
"generateSuccess": "Vzorové obrázky byly úspěšně vytvořeny"
}
},
"deleteCategory": {
"title": "Smazat Třídu",
"desc": "Opravdu chcete odstranit třídu {{name}}? Tím se na trvalo odstraní všechny související obrázky a bude potřeba přetrénovat model.",
"minClassesTitle": "Nemůžete smazat třídu",
"minClassesDesc": "Klasifikační model musí mít alespoň 2 třídy. Než tuto třídu odstraníte přidejte další třídu."
},
"edit": {
"descriptionObject": "Upravte typ objektu a typ klasifikace pro tento model klasifikace.",
"stateClassesInfo": "Poznámka: Změna tříd stavů vyžaduje přetrénování modelu s aktualizovanými třídami."
},
"renameCategory": {
"title": "Přejmenovat třídu",
"desc": "Vložte nové jméno pro {{name}}. Aby se změna názvu projevila, bude nutné model znovu natrénovat."
},
"description": {
"invalidName": "Neplatné jméno. Jméno můžou obsahovat pouze písmena, čísla, mezery, apostrofy, podtržítka a spojovníky."
},
"categories": "Třídy",
"createCategory": {
"new": "Vytvořit novou Třídu"
},
"categorizeImageAs": "Klasifikovat obrázek jako:",
"categorizeImage": "Klasifikovat obrázek"
"titleShort": "Nedávný"
}
}

View File

@@ -9,18 +9,14 @@
"empty": {
"alert": "Nejsou žádné výstrahy na kontrolu",
"detection": "Nejsou žádné detekce na kontrolu",
"motion": "Nenalezena žádná data o pohybu",
"recordingsDisabled": {
"title": "Nahrávání musí být povoleno",
"description": "Položky revize lze pro kameru vytvořit pouze tehdy, je-li pro ni povoleno nahrávání."
}
"motion": "Nenalezena žádná data o pohybu"
},
"timeline": "Časová osa",
"timeline.aria": "Zvolit časovou osu",
"events": {
"label": "Události",
"aria": "Zvolit události",
"noFoundForTimePeriod": "Pro toto časové období nebyly nalezeny žádné události."
"noFoundForTimePeriod": "Pro toto období nebyly nalezeny žádné události."
},
"documentTitle": "Revize - Frigate",
"camera": "Kamera",
@@ -30,8 +26,8 @@
"markAsReviewed": "Označit jako zkontrolované",
"markTheseItemsAsReviewed": "Označit tyto položky jako zkontrolované",
"newReviewItems": {
"label": "Zobrazit nové položky revize",
"button": "Nové položky revize"
"label": "Zobrazit nové položky na kontrolu",
"button": "Nové položky na kontrolu"
},
"recordings": {
"documentTitle": "Záznamy - Frigate"
@@ -46,22 +42,8 @@
"detail": {
"label": "Detail",
"noDataFound": "Žádná detailní data k prohlédnutí",
"aria": "Přepnout zobrazení detailů",
"aria": "Přepnout detailní zobrazení",
"trackedObject_other": "{{count}} objektů",
"trackedObject_one": "{{count}} objekt",
"noObjectDetailData": "Nejsou k dispozici žádné podrobné údaje o objektu.",
"settings": "Nastavení Detailního Zobrazení",
"alwaysExpandActive": {
"title": "Vždy rozbalit aktivní",
"desc": "Vždy zobrazit podrobnosti objektu aktivní položky revize, pokud jsou k dispozici."
}
},
"objectTrack": {
"trackedPoint": "Sledovaný bod",
"clickToSeek": "Kliknutím přeskočte na tento čas"
},
"select_all": "Vše",
"normalActivity": "Normální",
"needsReview": "Potřebuje revizi",
"securityConcern": "Obava o bezpečnost"
"trackedObject_one": "{{count}} objektů"
}
}

View File

@@ -24,8 +24,7 @@
"regenerate": "Od {{provider}} byl vyžádán nový popis. V závislosti na rychlosti vašeho poskytovatele může obnovení nového popisu nějakou dobu trvat.",
"updatedSublabel": "Úspěšně aktualizovaný podružný štítek.",
"updatedLPR": "Úspěšně aktualizovaná SPZ.",
"audioTranscription": "Požádání o přepis zvuku bylo úspěšné. V závislosti na rychlosti Vašeho Frigate serveru může přepis trvat nějaký čas než bude dokončen.",
"updatedAttributes": "Atributy byly úspěšně aktualizovány."
"audioTranscription": "Požádání o přepis zvuku bylo úspěšné."
},
"error": {
"regenerate": "Chyba volání {{provider}} pro nový popis: {{errorMessage}}",
@@ -207,7 +206,7 @@
"dialog": {
"confirmDelete": {
"title": "Potvrdit smazání",
"desc": "Odstraněním tohoto sledovaného objektu se odstraní snímek, všechna uložená vložení a všechny související položky s podrobnostmi o sledování. Zaznamenaný záznam tohoto sledovaného objektu v zobrazení Historie <em>NEBUDE</em> smazán.<br /><br />Opravdu chcete pokračovat?"
"desc": "Odstraněním tohoto sledovaného objektu se odstraní snímek, všechna uložená vložení a všechny související položky životního cyklu objektu. Zaznamenaný záznam tohoto sledovaného objektu v zobrazení Historie <em>NEBUDE</em> smazán.<br /><br />Opravdu chcete pokračovat?"
}
},
"trackedObjectDetails": "Detaily sledovaných objektů",
@@ -215,9 +214,7 @@
"details": "detaily",
"snapshot": "snímek",
"video": "video",
"object_lifecycle": "životní cyklus objektu",
"thumbnail": "Náhled",
"tracking_details": "detaily sledování"
"object_lifecycle": "životní cyklus objektu"
},
"noTrackedObjects": "Žádné sledované objekty nebyly nalezeny",
"fetchingTrackedObjectsFailed": "Chyba při načítání sledovaných objektů: {{errorMessage}}",
@@ -227,49 +224,5 @@
},
"concerns": {
"label": "Obavy"
},
"trackingDetails": {
"title": "Detaily Sledování",
"noImageFound": "Nebyl nalezen obrázek pro tuto časovou značku.",
"createObjectMask": "Vytvořit Masku Objektu",
"adjustAnnotationSettings": "Upravte nastavení poznámek",
"scrollViewTips": "Klikněte pro zobrazení významných okamžiků z životního cyklu tohoto objektu.",
"autoTrackingTips": "Pozice ohraničujících rámečků budou nepřesné pro kamery s automatickým sledováním.",
"count": "{{first}} z {{second}}",
"trackedPoint": "Sledovaný Bod",
"lifecycleItemDesc": {
"visible": "Detekován {{label}}",
"entered_zone": "{{label}} vstoupil do {{zones}}",
"active": "{{label}} se stal aktivním",
"stationary": "{{label}} se zastavil",
"attribute": {
"faceOrLicense_plate": "Pro {{label}} zjištěn {{attribute}}"
},
"header": {
"ratio": "Poměr",
"area": "Oblast",
"score": "Skóre"
}
},
"annotationSettings": {
"title": "Nastavení anotací",
"showAllZones": {
"title": "Zobrazit všechny zóny",
"desc": "Vždy zobrazovat zóny na snímcích, na kterých objekty vstoupili do zóny."
},
"offset": {
"label": "Odsazení anotace",
"desc": "Tato data pocházejí z detekčního kanálu vaší kamery, ale překrývají se s obrázky ze záznamového kanálu. Je nepravděpodobné, že by oba streamy byly dokonale synchronizované. V důsledku toho se ohraničovací rámeček a záznam nebudou dokonale srovnávat. Toto nastavení můžete použít k časovému posunutí anotací dopředu nebo dozadu, abyste je lépe zarovnali se zaznamenaným záznamem.",
"millisecondsToOffset": "Milisekundy na posunutí detekce anotací. <em>Výchozí: 0</em>",
"tips": "Snižte hodnotu, pokud je přehrávané video před ohraničením a body cesty, nebo zvyšte hodnotu, pokud je přehrávané video za nimi. Hodnota může být i záporná.",
"toast": {
"success": "Odsazení anotací pro {{camera}} bylo uloženo do konfiguračního souboru."
}
}
},
"carousel": {
"previous": "Předcházející snímek",
"next": "Další snímek"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"imageEntry": {
"dropInstructions": "Přetáhněte obrázek sem, nebo klikněte na výběr",
"dropInstructions": "Přetáhněte obrázek zde, nebo klikněte na výběr",
"maxSize": "Maximální velikost: {{size}}MB",
"dropActive": "Přetáhněte obrázek zde…",
"validation": {
@@ -10,7 +10,7 @@
"createFaceLibrary": {
"new": "Vytvořit nový obličej",
"desc": "Vytvořit novou kolekci",
"nextSteps": "Chcete-li vybudovat pevný základ:<li>Použijte kartu Nedávná Rozpoznání k výběru a trénování na snímcích pro každou detekovanou osobu.</li><li>Pro nejlepší výsledky se zaměřte na přímé snímky; vyhněte se trénování snímků, které zachycují obličeje pod úhlem.</li></ul>",
"nextSteps": "Chcete-li vybudovat pevný základ:<li>Použijte kartu Trénování k výběru a trénování na snímcích pro každou detekovanou osobu.</li><li>Pro nejlepší výsledky se zaměřte na přímé snímky; vyhněte se trénování snímků, které zachycují obličeje pod úhlem.</li></ul>",
"title": "Vytvořit kolekci"
},
"details": {
@@ -44,7 +44,7 @@
"description": {
"addFace": "Přidejte novou kolekci do Knihovny obličejů nahráním prvního obrázku.",
"placeholder": "Zadejte název pro tuto kolekci",
"invalidName": "Neplatné jméno. Jméno můžou obsahovat pouze písmena, čísla, mezery, apostrofy, podtržítka a spojovníky."
"invalidName": "Neplatný název. Názvy mohou obsahovat pouze písmena, čísla, mezery, apostrofy, podtržítka a pomlčky."
},
"documentTitle": "Knihovna obličejů - Frigate",
"uploadFaceImage": {

View File

@@ -86,7 +86,7 @@
"enable": "Ukázat statistiky streamu"
},
"manualRecording": {
"title": "Na požádání",
"title": "Nahrávání na vyžádání",
"playInBackground": {
"label": "Přehrát na pozadí",
"desc": "Povolte tuto volbu pro pokračování streamování i když je přehrávač skrytý."
@@ -103,7 +103,7 @@
"started": "Manuálně spuštěno nahrávání na požádání.",
"ended": "Ukončeno manuální nahrávání na vyžádání.",
"recordDisabledTips": "Protože je v konfiguraci této kamery nahrávání zakázáno nebo omezeno, bude uložen pouze snímek.",
"tips": "Stáhněte si aktuální snímek nebo spusťte ruční událost na základě nastavení uchování záznamu této kamery."
"tips": "Spustit ruční událost na základě nastavení uchování záznamů této kamery."
},
"streamingSettings": "Nastavení Streamování",
"audio": "Zvuk",
@@ -167,11 +167,5 @@
"transcription": {
"enable": "Povolit živý přepis zvuku",
"disable": "Zakázat živý přepis zvuku"
},
"snapshot": {
"takeSnapshot": "Stáhnout aktuální snímek",
"noVideoSource": "Pro snímek není k dispozici žádné video.",
"captureFailed": "Zachycení snímku selhalo.",
"downloadStarted": "Stažení snímku spuštěno."
}
}

View File

@@ -134,7 +134,7 @@
"name": {
"inputPlaceHolder": "Zadejte jméno…",
"title": "Jméno",
"tips": "Název musí mít alespoň 2 znaky, musí obsahovat alespoň jedno písmeno a nesmí být shodný s názvem kamery nebo jiné zóny této kamery."
"tips": "Název musí mít alespoň 2 znaky a nesmí být shodný s názvem kamery nebo jiné zóny."
},
"inertia": {
"title": "Setrvačnost",
@@ -160,7 +160,7 @@
}
},
"toast": {
"success": "Zóna {{zoneName}} byla uložena."
"success": "Zóna {{zoneName}} byla uložena. Restartujte Frigate pro aplikování změn."
},
"label": "Zóny",
"desc": {
@@ -199,8 +199,8 @@
"clickDrawPolygon": "Kliknutím nakreslíte polygon do obrázku.",
"toast": {
"success": {
"title": "{{polygonName}} byl uložen.",
"noName": "Maska Detekce pohybu byla uložena."
"title": "{{polygonName}} byl uložen. Restartujte Frigate pro aplikování změn.",
"noName": "Maska Detekce pohybu byla uložena. Restartujte Frigate pro aplikování změn."
}
}
},
@@ -284,8 +284,8 @@
"clickDrawPolygon": "Kliknutím nakreslete polygon do obrázku.",
"toast": {
"success": {
"title": "{{polygonName}} byl uložen.",
"noName": "Maska Objektu byla uložena."
"title": "{{polygonName}} byl uložen. Restartujte Frigate pro aplikování změn.",
"noName": "Maska Objektu byla uložena. Restartujte Frigate pro aplikování změn."
}
},
"point_one": "{{count}} bod",
@@ -322,7 +322,7 @@
"noCamera": "Žádná Kamera"
},
"general": {
"title": "Nastaverozhraní",
"title": "Hlavní nastavení",
"liveDashboard": {
"title": "Živý dashboard",
"automaticLiveView": {
@@ -332,13 +332,6 @@
"playAlertVideos": {
"label": "Přehrát videa s výstrahou",
"desc": "Ve výchozím nastavení se nedávná upozornění na ovládacím panelu Živě přehrávají jako malá opakující se videa. Vypněte tuto možnost, chcete-li na tomto zařízení/prohlížeči zobrazovat pouze statický obrázek nedávných výstrah."
},
"displayCameraNames": {
"label": "Vždy zobrazit názvy kamer",
"desc": "Vždy zobrazit názvy kamer v čipu na ovládacím panelu živého náhledu s více kamerami."
},
"liveFallbackTimeout": {
"label": "Časový limit pádu živého přehrávání"
}
},
"storedLayouts": {
@@ -636,11 +629,11 @@
"actions": "Akce",
"noUsers": "Žádní uživatelé nebyli nalezeni.",
"changeRole": "Změnit roli uživatele",
"password": "Resetovat Heslo",
"password": "Heslo",
"deleteUser": "Smazat uživatele",
"role": "Role"
},
"updatePassword": "Resetovat heslo",
"updatePassword": "Aktualizovat heslo",
"toast": {
"success": {
"createUser": "Uživatel {{user}} úspěšně vytvořen",
@@ -750,7 +743,7 @@
"triggers": {
"documentTitle": "Spouštěče",
"management": {
"title": "Spouštěče",
"title": "Správa spouštěčů",
"desc": "Spravovat spouštěče pro {{camera}}. Použít typ miniatury ke spuštění u miniatur podobných vybranému sledovanému objektu a typ popisu ke spuštění u popisů podobných zadanému textu."
},
"addTrigger": "Přidat spouštěč",
@@ -789,10 +782,10 @@
"form": {
"name": {
"title": "Název",
"placeholder": "Pojmenujte tento spouštěč",
"placeholder": "Zadejte název spouštěče",
"error": {
"minLength": "Pole musí mít alespoň 2 znaky.",
"invalidCharacters": "Pole může obsahovat pouze písmena, číslice, podtržítka a pomlčky.",
"minLength": "Název musí mít alespoň 2 znaky.",
"invalidCharacters": "Jméno může obsahovat pouze písmena, číslice, podtržítka a pomlčky.",
"alreadyExists": "Spouštěč s tímto názvem již pro tuto kameru existuje."
}
},
@@ -805,9 +798,9 @@
},
"content": {
"title": "Obsah",
"imagePlaceholder": "Vyberte miniaturu",
"imagePlaceholder": "Vybrat obrázek",
"textPlaceholder": "Zadat textový obsah",
"imageDesc": "Je zobrazeno pouze posledních 100 miniatur. Pokud nemůžete najít požadovanou miniaturu, prosím zkontrolujte dřívější objekty v Prozkoumat a nastavte spouštěč ze tamějšího menu.",
"imageDesc": "Vybrat obrázek, který spustí tuto akci, když bude detekován podobný obrázek.",
"textDesc": "Zadejte text, který spustí tuto akci, když bude zjištěn podobný popis sledovaného objektu.",
"error": {
"required": "Obsah je povinný."
@@ -815,7 +808,7 @@
},
"actions": {
"title": "Akce",
"desc": "Ve výchozím nastavení Frigate odesílá MQTT zprávu pro všechny spouštěče. Podřazené popisky přidávají název spouštěče k popisku objektu. Atributy jsou prohledávatelná metadata uložená samostatně v metadatech sledovaného objektu.",
"desc": "Ve výchozím nastavení Frigate odesílá MQTT zprávu pro všechny spouštěče. Zvolte dodatečnou akci, která se má provést, když se tento spouštěč aktivuje.",
"error": {
"min": "Musí být vybrána alespoň jedna akce."
}
@@ -857,9 +850,9 @@
"createRole": "Role {{role}} byla úspěšně vytvořena",
"updateCameras": "Kamery byly aktualizovány pro roli {{role}}",
"deleteRole": "Role {{role}} byla úspěšně smazána",
"userRolesUpdated_one": "{{count}} uživatel přiřazený k této roli byl aktualizován na „diváka“, který má přístup ke všem kamerám.",
"userRolesUpdated_few": "{{count}} uživatelé přiřazení k této roli bylo aktualizováno na „diváky“, kteří mají přístup ke všem kamerám.",
"userRolesUpdated_other": "{{count}} uživatelů přiřazených k této roli bylo aktualizováno na „diváky“, kteří mají 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": {
"createRoleFailed": "Nepodařilo se vytvořit roli: {{errorMessage}}",
@@ -903,36 +896,5 @@
"title": "Správa role diváka",
"desc": "Spravujte vlastní role diváků a jejich oprávnění k přístupu ke kamerám pro tuto instanci Frigate."
}
},
"cameraWizard": {
"save": {
"success": "Nová kamera {{cameraName}} úspěšně uložena."
},
"step2": {
"testSuccess": "Test připojení v pořádku!",
"probeSuccessful": "Sonda úspěšná",
"probeNoSuccess": "Sonda neúspěšná"
},
"step3": {
"testSuccess": "Test streamu v pořádku!"
},
"step4": {
"reconnectionSuccess": "Opakované připojení úspěšné.",
"streamValidated": "Stream {{number}} úspěšně ověřený"
}
},
"cameraManagement": {
"cameraConfig": {
"toast": {
"success": "Kamera {{cameraName}} úspěšně uložena"
}
}
},
"cameraReview": {
"reviewClassification": {
"toast": {
"success": "Konfigurace Klasifikací Revizí byla uložena. Restartujte Frigate pro aplikování změn."
}
}
}
}

View File

@@ -112,23 +112,12 @@
"gpuUsage": "Využití CPU",
"gpuMemory": "Paměť GPU",
"gpuEncoder": "GPU kodér",
"gpuDecoder": "GPU Dekodér",
"intelGpuWarning": {
"title": "Upozornění Intel GPU Stats",
"message": "Statistiky GPU nedostupné",
"description": "Toto je známá chyba v nástrojích Intel pro hlášení statistik GPU (intel_gpu_top), která selhává a opakovaně vrací využití GPU 0 %, a to i v případech, kdy na (i)GPU správně běží hardwarová akcelerace a detekce objektů. Nejedná se o chybu Frigate. Můžete restartovat hostitele, abyste problém dočasně vyřešili a potvrdili, že GPU funguje správně. Toto neovlivňuje výkon."
}
"gpuDecoder": "GPU Dekodér"
},
"otherProcesses": {
"title": "Ostatní procesy",
"processCpuUsage": "Využití CPU procesy",
"processMemoryUsage": "Využití paměti procesy",
"series": {
"go2rtc": "go2rtc",
"recording": "nahrávání",
"review_segment": "revidovat segment",
"embeddings": "vložení"
}
"processMemoryUsage": "Využití paměti procesy"
},
"title": "Hlavní"
},

View File

@@ -84,116 +84,5 @@
"babbling": "Pludren",
"yell": "Råb",
"whoop": "Jubel",
"snicker": "Smålatter",
"bird": "Fugl",
"cat": "Kat",
"dog": "Hund",
"horse": "Hest",
"sheep": "Får",
"mouse": "Mus",
"keyboard": "Tastatur",
"blender": "Mixer",
"hair_dryer": "Føntørrer",
"animal": "Dyr",
"bark": "Gø",
"goat": "Gæd",
"sigh": "Suk",
"singing": "Synger",
"choir": "Kor",
"yodeling": "Jodlen",
"chant": "Messe",
"mantra": "Meditationsmantra",
"child_singing": "Barn Synger",
"synthetic_singing": "Syntetisk Sang",
"rapping": "Rapper",
"humming": "Nynner",
"groan": "Støn",
"grunt": "Grynt",
"whistling": "Fløjter",
"breathing": "Vejrtrækning",
"wheeze": "Hæsende vejrtrækning",
"snoring": "Snorker",
"gasp": "Gisp",
"pant": "Anstrengende vejrtrækning",
"snort": "Fnyse",
"cough": "Hoster",
"throat_clearing": "Rømmer sig",
"sneeze": "Nyser",
"sniff": "Snøfter",
"run": "Løb",
"shuffle": "Trække fødderne",
"footsteps": "Fodtrin",
"chewing": "Tygger",
"biting": "Bider",
"gargling": "Gurgler",
"stomach_rumble": "Maverumlen",
"burping": "Bøvser",
"hiccup": "Hikke",
"fart": "Prut",
"hands": "Hænder",
"finger_snapping": "Knipse fingere",
"clapping": "Klapper",
"heartbeat": "Hjertebanken",
"heart_murmur": "Hjertemislyd",
"cheering": "Hujen",
"applause": "Bifald",
"chatter": "Snak",
"crowd": "Forsamling",
"children_playing": "Børn leger",
"pets": "Kæledyr",
"yip": "Jubel",
"howl": "Hyl",
"bow_wow": "Vov vov",
"growling": "Knurren",
"whimper_dog": "Hunde­klynk",
"purr": "Spinde",
"meow": "Meaw",
"hiss": "Hvæser",
"caterwaul": "Kattejammer",
"livestock": "Husdyr",
"oink": "Nøf",
"bleat": "Brægen",
"vibration": "Vibration",
"fowl": "Fjerkræ",
"chicken": "Kylling",
"cluck": "Kagle",
"cock_a_doodle_doo": "Kykeliky",
"turkey": "Kalkun",
"gobble": "Kalkunlyd",
"duck": "And",
"quack": "Rap",
"goose": "Gås",
"honk": "Dyt",
"wild_animals": "Vilde dyr",
"roaring_cats": "Brølende katte",
"roar": "Brøl",
"chirp": "Pip",
"squawk": "Skræppen",
"pigeon": "Due",
"coo": "Kurre",
"crow": "Krage",
"caw": "Kragelyd",
"owl": "Ugle",
"hoot": "Uglehyl",
"flapping_wings": "Vingeslag",
"dogs": "Hunde",
"rats": "Rotter",
"patter": "Dråbelyd",
"insect": "Insekt",
"cricket": "Cricket",
"guitar": "Guitar",
"electric_guitar": "Elektrisk Guitar",
"bass_guitar": "Basguitar",
"acoustic_guitar": "Akustisk Guitar",
"steel_guitar": "Stål Guitar",
"tapping": "Tapping på guitar",
"strum": "Slå an",
"banjo": "Banjo",
"sitar": "Sitar",
"mandolin": "Mandolin",
"snare_drum": "Lilletromme",
"rimshot": "Kantslag",
"drum_roll": "Trommehvirvel",
"bass_drum": "Stortromme",
"techno": "Techno"
"snicker": "Smålatter"
}

View File

@@ -24,13 +24,13 @@
"am": "am",
"year_one": "{{time}} år",
"year_other": "{{time}} år",
"mo": "{{time}}må",
"mo": "{{time}}mo",
"month_one": "{{time}} måned",
"month_other": "{{time}} måneder",
"d": "{{time}}d",
"day_one": "{{time}} dag",
"day_other": "{{time}} dage",
"h": "{{time}}t",
"h": "{{time}}h",
"yr": "{{time}}yr",
"hour_one": "{{time}} time",
"hour_other": "{{time}} timer",
@@ -41,11 +41,11 @@
"second_one": "{{time}} sekund",
"second_other": "{{time}} sekunder",
"formattedTimestamp": {
"12hour": "d MMM, h:mm:ss aaa",
"24hour": "d. MMM, HH:mm:ss"
"12hour": "MMM d, h:mm:ss aaa",
"24hour": "MMM d, HH:mm:ss"
},
"formattedTimestamp2": {
"12hour": "dd/MM h:mm:ss",
"12hour": "MM/dd h:mm:ssa",
"24hour": "d MMM HH:mm:ss"
},
"formattedTimestampHourMinute": {
@@ -57,26 +57,22 @@
"24hour": "HH:mm:ss"
},
"formattedTimestampMonthDayHourMinute": {
"12hour": "d MMM, h:mm aaa",
"24hour": "d MMM, HH:mm"
"12hour": "MMM d, h:mm aaa",
"24hour": "MMM d, HH:mm"
},
"formattedTimestampMonthDayYear": {
"12hour": "d MMM, yyyy",
"24hour": "d MMM, yyyy"
"12hour": "MMM d, yyyy",
"24hour": "MMM d, yyyy"
},
"formattedTimestampMonthDayYearHourMinute": {
"12hour": "d MMM yyyy, h:mm aaa",
"24hour": "d MMM yyyy, HH:mm"
"12hour": "MMM d yyyy, h:mm aaa",
"24hour": "MMM d yyyy, HH:mm"
},
"formattedTimestampMonthDay": "d MMM",
"formattedTimestampMonthDay": "MMM d",
"formattedTimestampFilename": {
"12hour": "dd-MM-yy-h-mm-ss-a",
"24hour": "dd-MM-yy-HH-mm-ss"
},
"never": "Aldrig",
"inProgress": "Under behandling",
"invalidStartTime": "Ugyldig starttid",
"invalidEndTime": "Ugyldig sluttid"
"12hour": "MM-dd-yy-h-mm-ss-a",
"24hour": "MM-dd-yy-HH-mm-ss"
}
},
"unit": {
"speed": {
@@ -86,28 +82,14 @@
"length": {
"feet": "fod",
"meters": "meter"
},
"data": {
"kbps": "kB/s",
"mbps": "MB/s",
"gbps": "GB/s",
"kbph": "kB/time",
"mbph": "MB/time",
"gbph": "GB/time"
}
},
"label": {
"back": "Gå tilbage",
"hide": "Skjul {{item}}",
"show": "Vis {{item}}",
"ID": "ID",
"none": "Ingen",
"all": "Alle",
"other": "Andet"
"back": "Gå tilbage"
},
"button": {
"apply": "Anvend",
"reset": "Nulstil",
"reset": "Reset",
"done": "Udført",
"enabled": "Aktiveret",
"enable": "Aktiver",
@@ -134,22 +116,21 @@
"no": "Nej",
"download": "Download",
"info": "Info",
"suspended": "Sat på pause",
"unsuspended": "Genoptag",
"suspended": "Suspenderet",
"unsuspended": "Ophæv suspendering",
"play": "Afspil",
"unselect": "Fravælg",
"export": "Eksporter",
"deleteNow": "Slet nu",
"next": "Næste",
"continue": "Fortsæt"
"next": "Næste"
},
"menu": {
"system": "System",
"systemMetrics": "Systemstatistik",
"systemMetrics": "System metrics",
"configuration": "Konfiguration",
"systemLogs": "Systemlogfiler",
"systemLogs": "System logs",
"settings": "Indstillinger",
"configurationEditor": "Konfigurationsværktøj",
"configurationEditor": "Konfiguratons Editor",
"languages": "Sprog",
"language": {
"en": "English (Engelsk)",
@@ -184,16 +165,8 @@
"th": "ไทย (Thai)",
"ca": "Català (Katalansk)",
"withSystem": {
"label": "Brug systemindstillinger for sprog"
},
"ptBR": "Português brasileiro (Brasiliansk Portugisisk)",
"sr": "Српски (Serbisk)",
"sl": "Slovenščina (Slovensk)",
"lt": "Lietuvių (Litauisk)",
"bg": "Български (Bulgarsk)",
"gl": "Galego (Galisisk)",
"id": "Bahasa Indonesia (Indonesisk)",
"ur": "اردو (Urdu)"
"label": "Brug system indstillinger for sprog"
}
},
"appearance": "Udseende",
"darkMode": {
@@ -212,7 +185,7 @@
"nord": "Nord",
"red": "Rød",
"highcontrast": "Høj Kontrast",
"default": "Standard"
"default": "Default"
},
"help": "Hjælp",
"documentation": {
@@ -229,20 +202,19 @@
"count_other": "{{count}} Kameraer"
}
},
"review": "Gennemse",
"review": "Review",
"explore": "Udforsk",
"export": "Eksporter",
"uiPlayground": "UI sandkasse",
"faceLibrary": "Ansigtsarkiv",
"faceLibrary": "Face Library",
"user": {
"title": "Bruger",
"account": "Konto",
"current": "Aktiv bruger: {{user}}",
"anonymous": "anonym",
"logout": "Log ud",
"logout": "Logout",
"setPassword": "Set Password"
},
"classification": "Kategorisering"
}
},
"toast": {
"copyUrlToClipboard": "Kopieret URL til klippebord.",
@@ -280,20 +252,8 @@
"notFound": {
"documentTitle": "Ikke fundet - Frigate",
"title": "404",
"desc": "Siden blev ikke fundet"
"desc": "Side ikke fundet"
},
"selectItem": "Vælg {{item}}",
"readTheDocumentation": "Læs dokumentationen",
"list": {
"two": "{{0}} og {{1}}",
"many": "{{items}}, og {{last}}",
"separatorWithSpace": ", "
},
"field": {
"optional": "Valgfrit",
"internalID": "Det interne ID som Frigate bruger i konfigurationen og databasen"
},
"information": {
"pixels": "{{area}}px"
}
"readTheDocumentation": "Læs dokumentationen"
}

View File

@@ -8,8 +8,7 @@
"passwordRequired": "Kodeord kræves",
"loginFailed": "Login fejlede",
"unknownError": "Ukendt fejl. Tjek logs.",
"rateLimit": "Grænsen for forespørgsler er overskredet. Prøv igen senere.",
"webUnknownError": "Ukendt fejl. Tjek konsollogs."
"rateLimit": "Grænsen for forespørgsler er overskredet. Prøv igen senere."
},
"firstTimeLogin": "Forsøger du at logge ind for første gang? Loginoplysningerne står i Frigate-loggene."
}

View File

@@ -14,73 +14,8 @@
"label": "Navn",
"placeholder": "Indtast et navn…",
"errorMessage": {
"mustLeastCharacters": "Kameragruppens navn skal være mindst 2 tegn.",
"exists": "Kameragruppenavn findes allerede.",
"nameMustNotPeriod": "Kameragruppenavn må ikke indeholde en periode.",
"invalid": "Ugyldigt kamera gruppenavn."
}
},
"cameras": {
"label": "Kameraer",
"desc": "Vælg kameraer til denne gruppe."
},
"icon": "Ikon",
"success": "Kameragruppe ({{name}}) er blevet gemt.",
"camera": {
"birdseye": "Fugleøje",
"setting": {
"label": "Kamera Streaming Indstillinger",
"title": "{{cameraName}} Streaming Indstillinger",
"desc": "Skift de live streaming muligheder for denne kameragruppes dashboard. <em> Disse indstillinger er enheds- og browserspecifikke.</em>",
"audioIsAvailable": "Lyd er tilgængelig for denne stream",
"audioIsUnavailable": "Lyd er ikke tilgængelig for denne strøm",
"audio": {
"tips": {
"title": "Lyd skal komme fra dit kamera og konfigureret i go2rtc til denne stream."
}
},
"stream": "Stream",
"placeholder": "Vælg en stream",
"streamMethod": {
"label": "Streaming Metode",
"placeholder": "Vælg en streaming metode",
"method": {
"noStreaming": {
"label": "Ingen Streaming",
"desc": "Kamerabilleder vil kun opdatere én gang i minuttet og ingen live streaming vil forekomme."
},
"smartStreaming": {
"label": "Smart Streaming (anbefalet)",
"desc": "Smart streaming vil opdatere dit kamerabillede én gang i minuttet, når der ikke sker noget, for at spare båndbredde og ressourcer. Når der registreres aktivitet, skifter billedet problemfrit til en live stream."
},
"continuousStreaming": {
"label": "Kontinuerlig Streaming",
"desc": {
"title": "Kamerabillede vil altid være en live stream, når det er synligt på instrumentbrættet, selv om der ikke registreres nogen aktivitet.",
"warning": "Kontinuerlig streaming kan forårsage højt båndbreddeforbrug og ydelsesproblemer. Brug med omtanke."
}
}
}
},
"compatibilityMode": {
"label": "Kompatibilitetstilstand",
"desc": "Aktivér kun denne mulighed, hvis kameraets live stream viser farve artefakter og har en diagonal linje på højre side af billedet."
}
"mustLeastCharacters": "Kameragruppens navn skal være mindst 2 tegn."
}
}
},
"debug": {
"options": {
"label": "Indstillinger",
"title": "Valgmuligheder",
"showOptions": "Vis muligheder",
"hideOptions": "Skjul muligheder"
},
"boundingBox": "Afgrænsningsfelt",
"timestamp": "Tidsstempel",
"zones": "Zoner",
"mask": "Maske",
"motion": "Bevægelse",
"regions": "Regioner"
}
}

View File

@@ -2,7 +2,7 @@
"iconPicker": {
"selectIcon": "Vælg et ikon",
"search": {
"placeholder": "Søg efter et ikon…"
"placeholder": "Søg efter ikoner…"
}
}
}

View File

@@ -11,28 +11,5 @@
"streamOffline": {
"title": "Stream offline",
"desc": "Der er ikke modtaget nogen frames på {{cameraName}}-<code>detect</code>-streamen, tjek fejlloggene."
},
"stats": {
"streamType": {
"title": "Stream type:",
"short": "Type"
},
"bandwidth": {
"title": "Bandbredde:",
"short": "Bandbredde"
},
"latency": {
"title": "Latenstid:",
"value": "{{seconds}} sekunder",
"short": {
"title": "Latenstid",
"value": "{{seconds}} sek"
}
},
"droppedFrames": {
"short": {
"title": "Tabt"
}
}
}
}

View File

@@ -14,107 +14,5 @@
"sink": "Håndvask",
"toothbrush": "Tandbørste",
"scissors": "Saks",
"clock": "Ur",
"fire_hydrant": "Brandhane",
"street_sign": "Gadeskilt",
"stop_sign": "Stopskilt",
"parking_meter": "Parkeringsautomat",
"bench": "Bænk",
"bird": "Fugl",
"cat": "Kat",
"dog": "Hund",
"horse": "Hest",
"sheep": "Får",
"cow": "Ko",
"elephant": "Elefant",
"bear": "Bjørn",
"zebra": "Zebra",
"giraffe": "Giraf",
"hat": "Hat",
"backpack": "Rygsæk",
"umbrella": "Paraply",
"shoe": "Sko",
"eye_glasses": "Briller",
"handbag": "Håndtaske",
"tie": "Slips",
"suitcase": "Kuffert",
"frisbee": "Frisbee",
"skis": "Ski",
"snowboard": "Snowboard",
"sports_ball": "Bold",
"kite": "Drage",
"baseball_bat": "Baseball Bat",
"baseball_glove": "Baseball hanske",
"surfboard": "Surfbræt",
"tennis_racket": "Tennis ketcher",
"bottle": "Flaske",
"plate": "Tallerken",
"wine_glass": "Vinglas",
"cup": "Kop",
"fork": "Gaffel",
"knife": "Kniv",
"spoon": "Ske",
"bowl": "Skål",
"banana": "Banan",
"apple": "Æble",
"sandwich": "Sandwich",
"orange": "Appelsin",
"broccoli": "Broccoli",
"carrot": "Gulerod",
"hot_dog": "Hotdog",
"pizza": "Pizza",
"donut": "Donut",
"cake": "Kage",
"chair": "Stol",
"couch": "Sofa",
"potted_plant": "Potteplante",
"bed": "Seng",
"mirror": "Spejl",
"dining_table": "Spisebord",
"window": "Vindue",
"desk": "Bord",
"toilet": "Toilet",
"tv": "Fjernsyn",
"laptop": "Bærebar computer",
"mouse": "Mus",
"remote": "Fjernbetjening",
"keyboard": "Tastatur",
"cell_phone": "Mobiltelefon",
"microwave": "Mikrobølgeovn",
"oven": "Ovn",
"toaster": "Brødrister",
"refrigerator": "Køleskab",
"blender": "Mixer",
"book": "Bog",
"vase": "Vase",
"teddy_bear": "Bamse",
"hair_dryer": "Føntørrer",
"hair_brush": "Hårbørste",
"squirrel": "Egern",
"deer": "Hjort",
"animal": "Dyr",
"bark": "Gø",
"fox": "Ræv",
"goat": "Gæd",
"rabbit": "Kanin",
"raccoon": "Vaskebjørn",
"robot_lawnmower": "Robotplæneklipper",
"waste_bin": "Affaldsspand",
"on_demand": "Manuel optagelse",
"face": "Ansigt",
"license_plate": "Nummerplade",
"package": "Pakke",
"bbq_grill": "Grill",
"amazon": "Amazon levering",
"usps": "USPS levering",
"ups": "UPS levering",
"fedex": "FedEx levering",
"dhl": "DHL levering",
"an_post": "An Post levering",
"purolator": "Purolator levering",
"postnl": "PostNL levering",
"nzpost": "NZPost levering",
"postnord": "PostNord levering",
"gls": "GLS levering",
"dpd": "DPD levering"
"clock": "Ur"
}

View File

@@ -1,187 +1,18 @@
{
"documentTitle": "Kategoriseringsmodeller - Frigate",
"documentTitle": "Klassifikationsmodeller",
"details": {
"scoreInfo": "Scoren viser den gennemsnitlige sikkerhed for kategoriseringen på tværs af alle registreringer af dette objekt.",
"unknown": "Ukendt",
"none": "Ingen"
"scoreInfo": "Scoren repræsenterer den gennemsnitlige klassifikationssikkerhed på tværs af alle registreringer af dette objekt.",
"unknown": "Ukendt"
},
"description": {
"invalidName": "Ugyldigt navn. Navne må kun indeholde bogstaver, tal, mellemrum, apostroffer, understregninger og bindestreger."
},
"button": {
"deleteClassificationAttempts": "Slet kategoriseringsbilleder",
"deleteClassificationAttempts": "Slet klassifikationsbilleder",
"renameCategory": "Omdøb klasse",
"deleteCategory": "Slet klasse",
"deleteImages": "Slet billeder",
"trainModel": "Træn model",
"addClassification": "Tilføj Kategori",
"deleteModels": "Slet modeller",
"editModel": "Rediger model"
},
"tooltip": {
"trainingInProgress": "Modellen er ved at blive trænet",
"noNewImages": "Der er ingen nye billeder at lære af. Kategorisér flere billeder i datasættet først.",
"noChanges": "Ingen ændringer i datasættet siden sidste træning.",
"modelNotReady": "Modellen er ikke klar til træning"
},
"toast": {
"success": {
"deletedCategory": "Slettet kategori",
"deletedImage": "Slettede billeder",
"deletedModel_one": "{{count}} model er nu slettet",
"deletedModel_other": "{{count}} modeller er nu slettet",
"categorizedImage": "Billedet er nu kategoriseret",
"trainedModel": "Modellen er klar.",
"trainingModel": "Modeltræning er started.",
"updatedModel": "Modellens indstillinger er opdateret",
"renamedCategory": "Kategorien er omdøbt til {{name}}"
},
"error": {
"deleteImageFailed": "Fejl under sletning: {{errorMessage}}",
"deleteCategoryFailed": "Sletning af kategori fejlede: {{errorMessage}}",
"deleteModelFailed": "Sletning af model fejlede: {{errorMessage}}",
"categorizeFailed": "Kategorisering af billedet fejlede: {{errorMessage}}",
"trainingFailed": "Træning af modellen fejlede. Check Frigate loggen.",
"trainingFailedToStart": "Opstart af modeltræning fejlede: {{errorMessage}}",
"updateModelFailed": "Ændring af modellen fejlede: {{errorMessage}}",
"renameCategoryFailed": "Kan ikke omdøbe kategorien: {{errorMessage}}"
}
},
"deleteCategory": {
"title": "Slet kategori",
"desc": "Er du sikker på at du vil slette kategorien {{name}}? Dette kan ikke fortrydes og sletter alle tilhørende billeder samt træning af modellen.",
"minClassesTitle": "Kan ikke slette Kategori",
"minClassesDesc": "Modellen skal have mindst 2 kategorier. Tilføj en kategori, før du sletter denne."
},
"deleteModel": {
"title": "Slet Kategoriseringsmodellen",
"desc_one": "Er du sikker på, at du vil slette {{count}} model? Dette vil permanent slette alle tilknyttede data, inkl. billeder og træningsdata. Denne handling kan ikke fortrydes.",
"desc_other": "Er du sikker på, at du vil slette {{count}} modeller? Dette vil permanent slette alle tilknyttede data, inkl. billeder og træningsdata. Denne handling kan ikke fortrydes.",
"single": "Er du sikker på, at du vil slette {{name}}? Dette vil permanent slette alle tilknyttede data, inklusive billeder og træningsdata. Denne handling kan ikke fortrydes."
},
"train": {
"title": "Nyeste kategorier",
"titleShort": "Nyeste",
"aria": "Vælg de nyeste kategorier"
},
"categories": "Kategorier",
"createCategory": {
"new": "Opret en ny kategori"
},
"categorizeImageAs": "Kategoriser billedet som:",
"categorizeImage": "Kategoriser billedet",
"menu": {
"objects": "Genstande",
"states": "Statestik"
},
"noModels": {
"object": {
"title": "Ingen kategoriseringsmodeller for genstande",
"description": "Opret en model, der kan kategorisere genstande.",
"buttonText": "Opret Genstands Model"
},
"state": {
"title": "Ingen modeller til genstandstilstande",
"description": "Opret en brugerdefineret model til at overvåge og kategorisere tilstandsændringer i specifikke kamerområder.",
"buttonText": "Opret tilstandsmodel"
}
},
"wizard": {
"step1": {
"type": "Type",
"typeState": "Tilstand",
"typeObject": "Genstand",
"objectLabel": "Genstands mærkat",
"objectLabelPlaceholder": "Vælg genstands type...",
"classificationType": "Kategoriseringstype",
"classificationTypeTip": "Udforsk kategoriseringstyper",
"errors": {
"nameLength": "Modellens navn må højst være 64 tegn",
"nameOnlyNumbers": "Modellens navn skal indeholde bogstaver",
"classRequired": "Der mangler en kategori",
"classesUnique": "Kategorinavne skal være unikke",
"noneNotAllowed": "Kategorinavnet 'none' er ikke tilladt",
"stateRequiresTwoClasses": "Tilstandsmodeller har brug for 2 kategorier",
"objectLabelRequired": "Vælg genstands mærkat",
"objectTypeRequired": "Vælg kategoriseringstype",
"nameRequired": "Modelnavn er påkrævet"
},
"description": "Tilstandsmodeller overvåger faste kameraområder for ændringer (f.eks. dør åben/lukket). Genstandsmodeller tilføjer kategoriseringer til detekterede genstande (f.eks. kendte dyr, leveringspersoner osv.).",
"name": "Navn",
"namePlaceholder": "Skriv modelnavn...",
"classificationTypeDesc": "Underetiketter tilføjer ekstra tekst til genstandens etiket (f.eks. 'Person: UPS'). Attributter er søgbare metadata, der opbevares separat i genstandens metadata.",
"classificationSubLabel": "Underetiketter",
"classificationAttribute": "Attribut",
"classes": "Kategori",
"states": "Tilstande",
"classesTip": "Lær om kategorier",
"classesStateDesc": "Definér de forskellige tilstande, dit kameraområde kan være i. For eksempel: 'åben' og 'lukket' for en garageport.",
"classesObjectDesc": "Definér de forskellige kategorier, som detekterede genstande skal kategoriseres i. For eksempel: 'leveringsperson', 'beboer', 'fremmed' til kategorisering af personer.",
"classPlaceholder": "Skriv kategorinavn..."
},
"step2": {
"description": "Vælg kameraer, og definer det område, der skal overvåges for hvert kamera. Modellen vil kategorisere tilstanden i disse områder.",
"cameras": "Kameraer",
"selectCamera": "Vælg Kamera",
"noCameras": "Klik + for at tilføje kamera",
"selectCameraPrompt": "Vælg et kamera fra listen for at definere dets overvågningsområde"
},
"step3": {
"selectImagesPrompt": "Vælg alle billeder med: {{className}}",
"selectImagesDescription": "Klik på billederne for at vælge dem. Klik på Fortsæt, når du er færdig med denne kategori.",
"allImagesRequired_one": "Venligst kategoriser alle billeder. {{count}} billede tilbage.",
"allImagesRequired_other": "Venligst kategoriser alle billeder. {{count}} billeder tilbage.",
"generating": {
"title": "Genererer testbilleder",
"description": "Frigate henter repræsentative billeder fra dine optagelser. Det kan tage et øjeblik..."
},
"training": {
"title": "Træningsmodel",
"description": "Din model trænes i baggrunden. Luk denne dialog, og din model vil begynde at køre, så snart træningen er færdig."
},
"retryGenerate": "Forsøg at generere igen",
"noImages": "Ingen prøvebilleder blev genereret",
"classifying": "Kategoriserer og træner...",
"trainingStarted": "Træningen er startet",
"modelCreated": "Model er oprettet. Brug visningen af nylige kategoriseringer til at tilføje billeder for de manglende tilstande, og træn modellen derefter.",
"errors": {
"noCameras": "Ingen kamera konfigureret",
"noObjectLabel": "Ingen genstandsmærkat valgt",
"generateFailed": "Kunne ikke generere eksempler: {{error}}",
"generationFailed": "Der opstod en fejl under genereringen. Prøv igen.",
"classifyFailed": "Kunne ikke kategorisere billederne: {{error}}"
},
"generateSuccess": "Eksempelbilleder er nu genereret",
"missingStatesWarning": {
"title": "Manglende tilstandseksempler",
"description": "Det anbefales at vælge eksempler for alle tilstande for at opnå de bedste resultater. Du kan fortsætte uden at vælge alle tilstande, men modellen bliver ikke trænet, før alle tilstande har billeder. Efter du fortsætter, kan du bruge visningen Seneste kategoriseringer til at kategorisere billeder for de manglende tilstande og derefter træne modellen."
}
},
"title": "Opret ny kategorisering",
"steps": {
"nameAndDefine": "Navn og definition",
"stateArea": "Tilstandsområde",
"chooseExamples": "Vælg Eksempler"
}
},
"edit": {
"title": "Rediger kategoriseringsmodel",
"descriptionState": "Rediger kategorierne for denne model til genstandstilstande. Ændringer kræver, at modellen trænes igen.",
"descriptionObject": "Rediger genstandstypen og kategoriseringstypen for denne genstandskategoriseringsmodel.",
"stateClassesInfo": "Bemærk: Ændring af tilstandskategorier kræver, at modellen trænes igen med de opdaterede kategorier."
},
"deleteDatasetImages": {
"title": "Slet billeder i datasættet",
"desc_one": "Er du sikker på, at du vil slette {{count}} billede fra {{dataset}}? Denne handling kan ikke fortrydes og kræver, at modellen trænes igen.",
"desc_other": "Er du sikker på, at du vil slette {{count}} billeder fra {{dataset}}? Denne handling kan ikke fortrydes og kræver, at modellen trænes igen."
},
"deleteTrainImages": {
"title": "Slet trænings billeder",
"desc_one": "Er du sikker på, at du vil slette {{count}} billede? Denne handling kan ikke fortrydes.",
"desc_other": "Er du sikker på, at du vil slette {{count}} billeder? Denne handling kan ikke fortrydes."
},
"renameCategory": {
"title": "Omdøb Kategori",
"desc": "Indtast et nyt navn til {{name}}. Modellen skal trænes igen, før navneændringen træder i kraft."
"addClassification": "Tilføj klassifikation"
}
}

View File

@@ -3,16 +3,8 @@
"copyConfig": "Kopiér konfiguration",
"saveAndRestart": "Gem & Genstart",
"saveOnly": "Kun gem",
"configEditor": "Konfigurationsværktøj",
"safeConfigEditor": "Konfigurationsværktøj (Sikker tilstand)",
"safeModeDescription": "Frigate er i sikker tilstand på grund af valideringsfejl af konfigurationen.",
"confirm": "Afslut uden at gemme?",
"toast": {
"success": {
"copyToClipboard": "Konfigurationen er kopieret."
},
"error": {
"savingError": "Kan ikke gemme konfigurationen"
}
}
"configEditor": "Konfigurationseditor",
"safeConfigEditor": "Konfigurationseditor (Sikker tilstand)",
"safeModeDescription": "Frigate er i sikker tilstand på grund af en fejl ved validering af konfigurationen.",
"confirm": "Afslut uden at gemme?"
}

View File

@@ -11,21 +11,6 @@
"empty": {
"alert": "Der er ingen advarsler at gennemgå",
"detection": "Der er ingen registreringer at gennemgå",
"motion": "Ingen bevægelsesdata fundet",
"recordingsDisabled": {
"title": "Optagelser skal være aktiveret"
}
},
"documentTitle": "Gennemse - Frigate",
"recordings": {
"documentTitle": "Optagelser - Frigate"
},
"calendarFilter": {
"last24Hours": "Sidste 24 timer"
},
"markAsReviewed": "Marker som gennemset",
"markTheseItemsAsReviewed": "Marker disse som gennemset",
"detail": {
"aria": "Skift til detaljevisning"
"motion": "Ingen bevægelsesdata fundet"
}
}

View File

@@ -8,11 +8,5 @@
"desc": "Indtast et nyt navn for denne eksport."
},
"noExports": "Ingen eksporter fundet",
"deleteExport": "Slet eksport",
"tooltip": {
"shareExport": "Del eksport",
"downloadVideo": "Download video",
"editName": "Rediger navn",
"deleteExport": "Slette eksport"
}
"deleteExport": "Slet eksport"
}

View File

@@ -15,8 +15,5 @@
"uploadFaceImage": {
"title": "Upload ansigtsbillede",
"desc": "Upload et billede for at scanne efter ansigter og inkludere det for {{pageToggle}}"
},
"train": {
"titleShort": "Nyeste"
}
}

View File

@@ -8,6 +8,5 @@
"filterInformation": "Filter information",
"filterActive": "Filtre aktiv",
"clear": "Ryd søgning"
},
"trackedObjectId": "Sporet genstands-ID"
}
}

View File

@@ -84,8 +84,7 @@
},
"inProgress": "Im Gange",
"invalidStartTime": "Ungültige Startzeit",
"invalidEndTime": "Ungültige Endzeit",
"never": "Nie"
"invalidEndTime": "Ungültige Endzeit"
},
"button": {
"save": "Speichern",

View File

@@ -178,16 +178,6 @@
"restricted": {
"title": "Keine Kamera verfügbar",
"description": "Sie haben keine Berechtigung, Kameras in dieser Gruppe anzuzeigen."
},
"default": {
"title": "Keine Kameras konfiguriert",
"description": "Zum Start eine Kamera mit Frigate verbinden.",
"buttonText": "Kamera hinzufügen"
},
"group": {
"title": "Keine Kameras in der Gruppe",
"description": "Diese Kameragruppe hat keine zugewiesenen oder aktiven Kameras.",
"buttonText": "Gruppen verwalten"
}
},
"snapshot": {

View File

@@ -1265,11 +1265,11 @@
"title": "Kamera-Einstellungen überprüfen",
"object_descriptions": {
"title": "Generative KI Objektbeschreibungen",
"desc": "Aktiviere/deaktiviere vorübergehend die Objektbeschreibungen durch generative KI für diese Kamera. Wenn diese Option deaktiviert ist, werden keine KI-generierten Beschreibungen für verfolgte Objekte dieser Kamera erstellt."
"desc": "Aktiviere/deaktiviere vorübergehend die Objektbeschreibungen durch Generative KI für diese Kamera. Wenn diese Option deaktiviert ist, werden keine KI-generierten Beschreibungen für verfolgte Objekte dieser Kamera erstellt."
},
"review_descriptions": {
"title": "Generative KI Review Beschreibungen",
"desc": "Aktivieren/deaktivieren Sie vorübergehend die generativen KI-Überprüfungsbeschreibungen für diese Kamera, bis Frigate neu gestartet wird. Wenn diese Option deaktiviert ist, werden für Überprüfungselemente auf dieser Kamera keine KI-generierten Beschreibungen angefordert."
"desc": "Generative KI Review Beschreibungen für diese Kamera vorübergehend aktivieren/deaktivieren. Wenn diese Option deaktiviert ist, werden für die Review Elemente dieser Kamera keine KI-generierten Beschreibungen angefordert."
},
"review": {
"title": "Überprüfung",

View File

@@ -75,8 +75,7 @@
"s": "{{time}}δ",
"inProgress": "Σε εξέλιξη",
"invalidStartTime": "Μη έγκυρη ώρα έναρξης",
"invalidEndTime": "Μη έγκυρη ώρα λήξης",
"never": "Ποτέ"
"invalidEndTime": "Μη έγκυρη ώρα λήξης"
},
"menu": {
"live": {

View File

@@ -2,13 +2,6 @@
"documentTitle": "Μοντέλα Ταξινόμησης - Frigate",
"details": {
"scoreInfo": "Η βαθμολογία αντιπροσωπεύει την κατά μέσο όρο ταξινομική εμπιστοσύνη μεταξύ όλων των ανιχνεύσεων αυτού του αντικειμένου.",
"none": "Καμία",
"unknown": "Άγνωστο"
},
"button": {
"deleteClassificationAttempts": "Διαγραφή Εικόνων Ταξινόμησης",
"deleteImages": "Διαγραφή Εικόνων",
"trainModel": "Εκπαίδευση Μοντέλου",
"addClassification": "Προσθήκη Ταξινόμησης"
"none": "Καμία"
}
}

View File

@@ -9,10 +9,7 @@
"empty": {
"alert": "Δεν υπάρχουν ειδοποιήσεις για εξέταση",
"detection": "Δεν υπάρχουν εντοπισμοί για εξέταση",
"motion": "Δεν βρέθηκαν στοιχεία κίνησης",
"recordingsDisabled": {
"title": "Οι καταγραφές πρέπει να είναι ενεργοποιημένες"
}
"motion": "Δεν βρέθηκαν στοιχεία κίνησης"
},
"timeline": "Χρονολόγιο",
"timeline.aria": "Επιλογή χρονοσειράς",

View File

@@ -193,7 +193,6 @@
"yue": "粵語 (Cantonese)",
"th": "ไทย (Thai)",
"ca": "Català (Catalan)",
"hr": "Hrvatski (Croatian)",
"sr": "Српски (Serbian)",
"sl": "Slovenščina (Slovenian)",
"lt": "Lietuvių (Lithuanian)",

View File

@@ -2,8 +2,7 @@
"description": {
"addFace": "Add a new collection to the Face Library by uploading your first image.",
"placeholder": "Enter a name for this collection",
"invalidName": "Invalid name. Names can only include letters, numbers, spaces, apostrophes, underscores, and hyphens.",
"nameCannotContainHash": "Name cannot contain #."
"invalidName": "Invalid name. Names can only include letters, numbers, spaces, apostrophes, underscores, and hyphens."
},
"details": {
"timestamp": "Timestamp",

View File

@@ -468,11 +468,6 @@
}
},
"polygonDrawing": {
"type": {
"zone": "zone",
"motion_mask": "motion mask",
"object_mask": "object mask"
},
"removeLastPoint": "Remove last point",
"reset": {
"label": "Clear all points"
@@ -733,7 +728,10 @@
},
"requirements": {
"title": "Password requirements:",
"length": "At least 12 characters"
"length": "At least 8 characters",
"uppercase": "At least one uppercase letter",
"digit": "At least one digit",
"special": "At least one special character (!@#$%^&*(),.?\":{}|<>)"
},
"match": "Passwords match",
"notMatch": "Passwords don't match"

View File

@@ -90,8 +90,7 @@
},
"inProgress": "En progreso",
"invalidStartTime": "Hora de inicio no válida",
"invalidEndTime": "Hora de finalización no válida",
"never": "Nunca"
"invalidEndTime": "Hora de finalización no válida"
},
"menu": {
"settings": "Ajustes",
@@ -268,8 +267,7 @@
"show": "Mostrar {{item}}",
"ID": "ID",
"none": "Ninguno",
"all": "Todas",
"other": "Otro"
"all": "Todas"
},
"role": {
"title": "Rol",

View File

@@ -135,7 +135,7 @@
"count_other": "{{count}} Clases"
},
"attributes": {
"label": "Atributos de Clasificación",
"label": "Clasificación de Atributos",
"all": "Todos los Atributos"
}
}

View File

@@ -62,7 +62,7 @@
"details": {
"scoreInfo": "La puntuación representa la confianza media de clasificación en todas las detecciones de este objeto.",
"unknown": "Desconocido",
"none": "Ninguna"
"none": "Nada"
},
"categorizeImage": "Clasificar Imagen",
"menu": {

View File

@@ -14,5 +14,5 @@
"documentTitle": "Editor de Configuración - Frigate",
"confirm": "¿Salir sin guardar?",
"safeConfigEditor": "Editor de Configuración (Modo Seguro)",
"safeModeDescription": "Frigate esta en modo seguro debido a un error en la validación de la configuración."
"safeModeDescription": "Frigate esta en modo seguro debido a un error en la configuración."
}

View File

@@ -178,16 +178,6 @@
"restricted": {
"title": "No hay cámaras disponibles",
"description": "No tiene permiso para ver ninguna cámara en este grupo."
},
"default": {
"title": "No hay Cámaras Configuradas",
"description": "Comienza conectando una cámara a Frigate.",
"buttonText": "Añadir Cámara"
},
"group": {
"title": "No hay Cámaras en Grupo",
"description": "Estae grupo de cámaras no tiene cámaras asignadas o habilitadas.",
"buttonText": "Gestionar Grupos"
}
},
"snapshot": {

View File

@@ -52,7 +52,7 @@
},
"title": "Panel en directo",
"displayCameraNames": {
"label": "Siempre mostrar nombres de las Cámaras",
"label": "Siempre mostrar nombres de las Camaras",
"desc": "Siempre mostrar nombres de cámaras en la vista en vivo multi-cámara."
},
"liveFallbackTimeout": {
@@ -708,7 +708,7 @@
"unsavedChanges": "Cambios en la configuración de Frigate+ no guardados"
},
"enrichments": {
"title": "Configuración de Enriquecimientos",
"title": "Configuración de Análisis Avanzado",
"unsavedChanges": "Cambios sin guardar en la configuración de Análisis Avanzado",
"birdClassification": {
"title": "Clasificación de Aves",
@@ -1191,11 +1191,11 @@
"title": "Configuración de revisión de la cámara",
"object_descriptions": {
"title": "Descripciones de objetos de IA generativa",
"desc": "Habilite o deshabilite temporalmente las descripciones de objetos generadas por IA para esta cámara hasta que Frigate se reinicie. Al deshabilitarlas, no se solicitarán descripciones generadas por IA para los objetos rastreados en esta cámara."
"desc": "Habilite o deshabilite temporalmente las descripciones de objetos generadas por IA para esta cámara. Al deshabilitarlas, no se solicitarán descripciones generadas por IA para los objetos rastreados en esta cámara."
},
"review_descriptions": {
"title": "Revisión de descripciones de IA generativa",
"desc": "Habilita o deshabilita temporalmente las revisión de descripciones generadas por IA para esta cámara hasta que Frigate se reinicie. Al deshabilitarlas, no se solicitarán descripciones generadas por IA para los elementos de revisión de esta cámara."
"desc": "Habilita o deshabilita temporalmente las revisión de descripciones generadas por IA para esta cámara. Al deshabilitarlas, no se solicitarán descripciones generadas por IA para los elementos de revisión de esta cámara."
},
"review": {
"title": "Revisar",

View File

@@ -90,9 +90,7 @@
"series": {
"go2rtc": "go2rtc",
"recording": "grabación",
"review_segment": "revisar segmento",
"embeddings": "embeddings",
"audio_detector": "detector de audio"
"review_segment": "revisar segmento"
}
}
},
@@ -192,7 +190,7 @@
"classification_speed": "Velocidad de clasificación de {{name}}",
"classification_events_per_second": "Clasificacion de eventos por segundo de {{name}}"
},
"title": "Enriquicimientos",
"title": "Enriquecimientos",
"averageInf": "Tiempo promedio de inferencia"
},
"stats": {

View File

@@ -75,8 +75,7 @@
"12hour": "dd. MMM yyyy, hh:mm aaa",
"24hour": "dd. MMM yyyy, HH:mm"
},
"formattedTimestampMonthDay": "dd. MMM",
"never": "Mitte kunagi"
"formattedTimestampMonthDay": "dd. MMM"
},
"menu": {
"user": {

View File

@@ -10,8 +10,7 @@
"objectDetection": "Objektide tuvastamine",
"audioDetection": "Heli tuvastus",
"transcription": "Heli üleskirjutus",
"snapshots": "Hetkvõtted",
"autotracking": "Automaatne jälgimine"
"snapshots": "Hetkvõtted"
},
"documentTitle": "Otseülekanne - Frigate",
"documentTitle.withCamera": "{{camera}} - Otseülekanne - Frigate",
@@ -96,10 +95,6 @@
"playInBackground": {
"label": "Esita taustal",
"tips": "Selle eelistusega saad määrata, et voogedastus jääb tööle ka siis, kui meesiaesitaja on suletud."
},
"audio": {
"available": "Selles voogedastuses on heliriba saadaval",
"unavailable": "Selles voogedastuses pole heliriba saadaval"
}
},
"notifications": "Teavitused",
@@ -134,25 +129,6 @@
"restricted": {
"title": "Ühtegi kaamerat pole saadaval",
"description": "Sul pole õigust ühegi selle grupi kaamera vaatamiseks."
},
"title": "Ühtegi kaamerat pole seadistatud",
"description": "Alustamiseks ühenda mõni kaamera Frigate'iga."
},
"effectiveRetainMode": {
"modes": {
"active_objects": "Aktiivsed objektid",
"all": "Kõik",
"motion": "Liikumine"
}
},
"editLayout": {
"label": "Muuda paigutust",
"group": {
"label": "Muuda kaameragruppi"
},
"exitEdit": "Välju muutmisest"
},
"history": {
"label": "Näita varasemat sisu"
}
}

View File

@@ -1,11 +1 @@
{
"documentTitle": "Luokittelumallit - Frigate",
"details": {
"scoreInfo": "Pistemäärä edustaa tämän objektin kaikkien havaintojen keskimääräistä luokitteluvarmuutta.",
"none": "Ei mitään"
},
"button": {
"deleteImages": "Poista kuvat",
"trainModel": "Kouluta malli"
}
}
{}

View File

@@ -13,8 +13,5 @@
"title": "Nimeä uudelleen",
"desc": "Anna uusi nimi viedylle kohteelle.",
"saveExport": "Tallenna vienti"
},
"tooltip": {
"editName": "Muokkaa nimeä"
}
}

View File

@@ -10,8 +10,7 @@
"object": "Virheenjäljitys - Frigate",
"authentication": "Autentikointiuasetukset - Frigate",
"notifications": "Ilmoitusasetukset - Frigate",
"enrichments": "Laajennusasetukset Frigate",
"cameraManagement": "Hallitse Kameroita - Frigate"
"enrichments": "Laajennusasetukset Frigate"
},
"menu": {
"ui": "Käyttöliittymä",

View File

@@ -90,8 +90,7 @@
},
"inProgress": "En cours",
"invalidStartTime": "Heure de début invalide",
"invalidEndTime": "Heure de fin invalide",
"never": "Jamais"
"invalidEndTime": "Heure de fin invalide"
},
"button": {
"apply": "Appliquer",
@@ -280,8 +279,7 @@
"show": "Afficher {{item}}",
"ID": "ID",
"none": "Aucun",
"all": "Tous",
"other": "Autre"
"all": "Tous"
},
"unit": {
"speed": {

View File

@@ -178,16 +178,6 @@
"restricted": {
"title": "Aucune caméra disponible",
"description": "Vous n'avez pas la permission de visionner les caméras de ce groupe."
},
"default": {
"title": "Aucune caméra configurée",
"description": "Pour commencer, connectez une caméra à Frigate.",
"buttonText": "Ajouter une caméra"
},
"group": {
"title": "Aucune caméra dans le groupe",
"description": "Ce groupe de caméras ne contient aucune caméra assignée ou activée.",
"buttonText": "Gérer les groupes"
}
},
"snapshot": {

View File

@@ -1278,11 +1278,11 @@
"title": "Paramètres des activités caméra",
"object_descriptions": {
"title": "Descriptions d'objets par l'IA générative",
"desc": "Activez ou désactivez temporairement les descriptions par IA générative jusqu'au redémarrage. Si désactivé, l'IA ne sera plus sollicitée pour décrire les objets suivis sur cette caméra."
"desc": "Active ou désactive temporairement les descriptions d'objets générées par l'IA générative pour cette caméra. Lorsque cette option est désactivée, aucune description par l'IA n'est générée pour les objets suivis sur cette caméra."
},
"review_descriptions": {
"title": "Descriptions des activités par l'IA générative",
"desc": "Activez ou désactivez temporairement les descriptions d'activités par IA générative jusqu'au redémarrage. Si désactivé, l'IA ne sera plus sollicitée pour décrire les activités sur cette caméra."
"desc": "Active ou désactive temporairement les descriptions par l'IA générative pour cette caméra. Lorsque cette option est désactivée, aucune description nouvelle n'est générée pour les activités sur cette caméra."
},
"review": {
"title": "Activités",

View File

@@ -89,10 +89,7 @@
"processMemoryUsage": "Utilisation mémoire du processus",
"series": {
"go2rtc": "go2rtc",
"recording": "enregistrement",
"review_segment": "Segment d'activité",
"embeddings": "embeddings",
"audio_detector": "détecteur audio"
"recording": "enregistrement"
}
}
},
@@ -150,11 +147,11 @@
"cameraFfmpeg": "{{camName}} FFmpeg",
"cameraSkippedDetectionsPerSecond": "{{camName}} détections ignorées par seconde",
"overallDetectionsPerSecond": "Moyenne de détections par seconde",
"overallFramesPerSecond": "images par seconde (global)",
"overallFramesPerSecond": "Moyenne d'images par seconde (IPS)",
"overallSkippedDetectionsPerSecond": "Moyenne de détections ignorées par seconde",
"cameraCapture": "{{camName}} capture",
"cameraDetect": "{{camName}} détection",
"cameraFramesPerSecond": "{{camName}} images par seconde",
"cameraFramesPerSecond": "{{camName}} images par seconde (IPS)",
"cameraDetectionsPerSecond": "{{camName}} détections par seconde"
},
"overview": "Vue d'ensemble",

View File

@@ -81,8 +81,7 @@
},
"inProgress": "U tijeku",
"invalidStartTime": "Nevažeće vrijeme početka",
"invalidEndTime": "Nevažeće vrijeme završetka",
"never": "Nikad"
"invalidEndTime": "Nevažeće vrijeme završetka"
},
"menu": {
"live": {

View File

@@ -29,9 +29,9 @@
"camera": {
"birdseye": "Ptičja perspektiva",
"setting": {
"label": "Postavke emitiranja kamere",
"title": "{{cameraName}} Postavke Emitiranja",
"desc": "Promijenite opcije emitiranja uživo za nadzornu ploču ove grupe kamera. <em>Ove postavke su specifične za uređaj/preglednik.</em>",
"label": "Postavke streamanja kamere",
"title": "{{cameraName}} Streaming Postavke",
"desc": "Promijenite opcije streamanja uživo za nadzornu ploču ove grupe kamera. <em>Ove postavke su specifične za uređaj/preglednik.</em>",
"audioIsAvailable": "Za ovaj prijenos dostupan je zvuk",
"audioIsUnavailable": "Za ovaj prijenos zvuk nije dostupan",
"audio": {
@@ -39,15 +39,15 @@
"title": "Audio mora dolaziti s vaše kamere i biti konfiguriran u go2rtc za ovaj prijenos."
}
},
"stream": "Emitiranje",
"placeholder": "Izaberi emitiranje",
"stream": "Prijenos",
"placeholder": "Izaberi prijenos",
"streamMethod": {
"label": "Metoda emitiranja",
"placeholder": "Odaberi metodu emitiranja",
"label": "Metoda Prijenosa",
"placeholder": "Odaberi metodu prijenosa",
"method": {
"noStreaming": {
"label": "Nema emitiranja",
"desc": "Slike s kamere bit će ažurirane samo jednom u minuti, a emitiranje uživo neće biti dostupno."
"label": "Nema Prijenosa",
"desc": "Slike s kamere bit će ažurirane samo jednom u minuti, a prijenos uživo neće biti dostupan."
},
"smartStreaming": {
"desc": "Pametno emitiranje ažurirat će sliku vaše kamere jednom u minuti kada nema prepoznatljive aktivnosti kako bi uštedjelo propusnost i resurse. Kada se detektira aktivnost, slika će se besprijekorno prebaciti na prijenos uživo.",

View File

@@ -37,7 +37,7 @@
"noPreviewFoundFor": "Pretpregled nije nađen za {{cameraName}}",
"livePlayerRequiredIOSVersion": "iOS 17.1 ili noviji je potreban za ovu vrstu uživog prijenosa.",
"streamOffline": {
"title": "Emitiranje nije dostupno",
"title": "Stream nije dostupan",
"desc": "Slike nisu primljene sa {{cameraName}} <code>detect</code> stream-a, provjeri logove"
},
"toast": {

View File

@@ -18,7 +18,7 @@
},
"details": {
"unknown": "Nepoznato",
"none": "Nema",
"none": "Nijedan",
"scoreInfo": "Rezultat predstavlja prosječnu klasifikacijsku pouzdanost kroz sve detekcije ovog objekta."
},
"toast": {
@@ -38,155 +38,35 @@
"deleteImageFailed": "Neuspješno brisanje: {{errorMessage}}",
"deleteCategoryFailed": "Neuspješno brisanje klase: {{errorMessage}}",
"deleteModelFailed": "Nije uspjelo brisanje modela: {{errorMessage}}",
"categorizeFailed": "Nije uspjelo kategoriziranje slike: {{errorMessage}}",
"trainingFailed": "Neuspješno treniranje modela. Provjerite Frigate zapisnike za detalje.",
"trainingFailedToStart": "Neuspješno pokretanje treniranja modela: {{errorMessage}}",
"updateModelFailed": "Neuspješno ažuriranje modela: {{errorMessage}}",
"renameCategoryFailed": "Neuspješno preimenovanje klase: {{errorMessage}}"
"categorizeFailed": "Nije uspjelo kategoriziranje slike: {{errorMessage}}"
}
},
"description": {
"invalidName": "Nevaljano ime. Ime može samo uključivati slova, brojeve, razmake, navodnike, podcrte i crtice."
},
"train": {
"titleShort": "Nedavno",
"aria": "Odaberi Nedavne Klasifikacije",
"title": "Nedavne Klasifikacije"
"titleShort": "Nedavno"
},
"deleteModel": {
"desc_one": "Jeste li sigurni da želite izbrisati {{count}} model? Ovo će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti.",
"desc_few": "Jeste li sigurni da želite izbrisati {{count}} modela? Ovo će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti.",
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} modela? Ovo će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti.",
"title": "Izbriši klasifikacijski model",
"single": "Jesi li siguran da želiš izbrisati {{name}}? To će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti."
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} modela? Ovo će trajno izbrisati sve povezane podatke, uključujući slike i podatke za treniranje. Ova radnja se ne može poništiti."
},
"deleteDatasetImages": {
"desc_one": "Jeste li sigurni da želite izbrisati {{count}} sliku iz {{dataset}}? Ova radnja se ne može poništiti i zahtijevat će ponovno treniranje modela.",
"desc_few": "Jeste li sigurni da želite izbrisati {{count}} slike iz {{dataset}}? Ova radnja se ne može poništiti i zahtijevat će ponovno treniranje modela.",
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} slika iz {{dataset}}? Ova radnja se ne može poništiti i zahtijevat će ponovno treniranje modela.",
"title": "Izbriši slike iz skupa podataka"
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} slika iz {{dataset}}? Ova radnja se ne može poništiti i zahtijevat će ponovno treniranje modela."
},
"deleteTrainImages": {
"desc_one": "Jeste li sigurni da želite izbrisati {{count}} sliku? Ova radnja se ne može poništiti.",
"desc_few": "Jeste li sigurni da želite izbrisati {{count}} slike? Ova radnja se ne može poništiti.",
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} slika? Ova radnja se ne može poništiti.",
"title": "Izbriši slike iz skupa za treniranje"
"desc_other": "Jeste li sigurni da želite izbrisati {{count}} slika? Ova radnja se ne može poništiti."
},
"wizard": {
"step3": {
"allImagesRequired_one": "Molimo klasificirajte sve slike. Preostala je {{count}} slika.",
"allImagesRequired_few": "Molimo klasificirajte sve slike. Preostale su {{count}} slike.",
"allImagesRequired_other": "Molimo klasificirajte sve slike. Preostalo je {{count}} slika.",
"selectImagesPrompt": "Odaberite sve slike s: {{className}}",
"selectImagesDescription": "Kliknite na slike za odabir. Kliknite Nastavi kada završite s ovom klasom.",
"generating": {
"title": "Generiranje Primjeraka Slika",
"description": "Frigate povlači reprezentativne slike iz vaših snimaka. Ovo može potrajati..."
},
"training": {
"title": "Treniranje Modela",
"description": "Vaš model se trenira u pozadini. Zatvorite ovaj dijalog, a model će početi raditi čim treniranje završi."
},
"retryGenerate": "Ponovi Generiranje",
"noImages": "Nema generiranih primjeraka slika",
"classifying": "Klasificiranje & Treniranje...",
"trainingStarted": "Treniranje je uspješno pokrenuto",
"modelCreated": "Model je uspješno kreiran. Koristite prikaz Nedavnih Klasifikacija za dodavanje slika za nedostajuća stanja, a zatim trenirajte model.",
"errors": {
"noCameras": "Nema konfiguriranih kamera",
"noObjectLabel": "Nije odabrana oznaka objekta",
"generateFailed": "Neuspjelo generiranje primjera: {{error}}",
"generationFailed": "Generiranje nije uspjelo. Pokušajte ponovo.",
"classifyFailed": "Neuspjela klasifikacija slika: {{error}}"
},
"generateSuccess": "Primjerci slika su uspješno generirani",
"missingStatesWarning": {
"title": "Nedostaju Primjeri Stanja",
"description": "Preporučuje se odabrati primjere za sva stanja radi najboljih rezultata. Možete nastaviti bez odabira svih stanja, ali model neće biti treniran dok svi statusi nemaju slike. Nakon nastavka, koristite prikaz Nedavnih Klasifikacija za klasifikaciju slika za nedostajuća stanja, a zatim trenirajte model."
}
},
"title": "Kreiraj Novu Klasifikaciju",
"steps": {
"nameAndDefine": "Naziv & Definicija",
"stateArea": "Područje Stanja",
"chooseExamples": "Odaberi Primjere"
},
"step1": {
"description": "Modeli stanja prate fiksna područja kamere za promjene (npr. vrata otvorena/zatvorena). Modeli objekata dodaju klasifikacije detektiranim objektima (npr. poznate životinje, dostavljači, itd.).",
"name": "Naziv",
"namePlaceholder": "Unesite naziv modela...",
"type": "Tip",
"typeState": "Stanje",
"typeObject": "Objekt",
"objectLabel": "Oznaka Objekta",
"objectLabelPlaceholder": "Odaberi tip objekta...",
"classificationType": "Tip Klasifikacije",
"classificationTypeTip": "Saznaj više o tipovima klasifikacije",
"classificationTypeDesc": "Podoznake dodaju dodatni tekst na oznaku objekta (npr. 'Osoba: UPS'). Atributi su pretraživi metapodaci pohranjeni zasebno u metapodacima objekta.",
"classificationSubLabel": "Podoznaka",
"classificationAttribute": "Atribut",
"classes": "Klase",
"states": "Stanja",
"classesTip": "Saznaj više o klasama",
"classesStateDesc": "Definiraj različita stanja u kojima područje kamere može biti. Na primjer: 'otvoreno' i 'zatvoreno' za garažna vrata.",
"classesObjectDesc": "Definiraj različite kategorije za klasifikaciju detektiranih objekata. Na primjer: 'dostavljač', 'stanar', 'nepoznata osoba' za klasifikaciju ljudi.",
"classPlaceholder": "Unesite naziv klase...",
"errors": {
"nameRequired": "Naziv modela je obavezan",
"nameLength": "Naziv modela mora imati najviše 64 znaka",
"nameOnlyNumbers": "Naziv modela ne smije sadržavati samo brojeve",
"classRequired": "Potrebna je barem 1 klasa",
"classesUnique": "Nazivi klasa moraju biti jedinstveni",
"noneNotAllowed": "Klasa 'none' nije dopuštena",
"stateRequiresTwoClasses": "Modeli stanja zahtijevaju najmanje 2 klase",
"objectLabelRequired": "Molimo odaberite oznaku objekta",
"objectTypeRequired": "Molimo odaberite tip klasifikacije"
}
},
"step2": {
"description": "Odaberite kamere i definirajte područje praćenja za svaku kameru. Model će klasificirati stanje tih područja.",
"cameras": "Kamere",
"selectCamera": "Odaberi Kameru",
"noCameras": "Kliknite + za dodavanje kamera",
"selectCameraPrompt": "Odaberite kameru s popisa kako biste definirali područje praćenja"
}
},
"deleteCategory": {
"title": "Izbriši klasu",
"desc": "Jesi li siguran da želiš izbrisati klasu {{name}}? To će trajno izbrisati sve povezane slike i zahtijevati ponovno treniranje modela.",
"minClassesTitle": "Nije moguće izbrisati klasu",
"minClassesDesc": "Model klasifikacije mora imati barem 2 klase. Dodaj još jednu klasu prije brisanja ove."
},
"edit": {
"title": "Uredi model klasifikacije",
"descriptionState": "Uredi klase za ovaj model klasifikacije stanja. Promjene zahtijevaju ponovno treniranje modela.",
"descriptionObject": "Uredi tip objekta i tip klasifikacije za ovaj model klasifikacije objekata.",
"stateClassesInfo": "Napomena: Promjena klasa stanja zahtijeva ponovno treniranje modela s ažuriranim klasama."
},
"renameCategory": {
"title": "Preimenuj klasu",
"desc": "Unesite novi naziv za {{name}}. Bit će potrebno ponovno trenirati model da promjena naziva stupi na snagu."
},
"categories": "Klase",
"createCategory": {
"new": "Kreiraj Novu Klasu"
},
"categorizeImageAs": "Klasificiraj Sliku Kao:",
"categorizeImage": "Klasificiraj Sliku",
"menu": {
"objects": "Objekti",
"states": "Stanja"
},
"noModels": {
"object": {
"title": "Nema Modela Klasifikacije Objekata",
"description": "Kreiraj prilagođeni model za klasifikaciju detektiranih objekata.",
"buttonText": "Kreiraj Model Objekta"
},
"state": {
"title": "Nema Modela Klasifikacije Stanja",
"description": "Kreiraj prilagođeni model za praćenje i klasifikaciju promjena stanja u određenim područjima kamere.",
"buttonText": "Kreiraj Model Stanja"
"allImagesRequired_other": "Molimo klasificirajte sve slike. Preostalo je {{count}} slika."
}
}
}

View File

@@ -21,7 +21,7 @@
"visionModelFeatureExtractor": "Ekstraktor značajki modela vizije",
"textTokenizer": "Tokenizator teksta"
},
"context": "Frigate preuzima potrebne modele ugrađivanja kako bi podržao značajku semantičkog pretraživanja. To može potrajati nekoliko minuta, ovisno o brzini vaše mrežne veze.",
"context": "Frigate preuzima potrebne modele ugrađivanja (embeddings) kako bi podržao značajku semantičkog pretraživanja. To može potrajati nekoliko minuta, ovisno o brzini vaše mrežne veze.",
"tips": {
"context": "Možda ćete htjeti ponovno indeksirati ugrađivanja (embeddings) svojih praćenih objekata kada se modeli preuzmu."
},
@@ -34,84 +34,8 @@
"tips": {
"mismatch_one": "{{count}} nedostupan objekt je otkriven i uključen u ovaj pregledni stavak. Ti objekti ili nisu kvalificirani kao upozorenje ili detekcija, ili su već uklonjeni/izbrisani.",
"mismatch_few": "{{count}} nedostupna objekta su otkrivena i uključena u ovaj pregledni stavak. Ti objekti ili nisu kvalificirani kao upozorenje ili detekcija, ili su već uklonjeni/izbrisani.",
"mismatch_other": "{{count}} nedostupnih objekata je otkriveno i uključeno u ovaj pregledni stavak. Ti objekti ili nisu kvalificirani kao upozorenje ili detekcija, ili su već uklonjeni/izbrisani.",
"hasMissingObjects": "Prilagodite svoju konfiguraciju ako želite da Frigate sprema praćene objekte za sljedeće oznake: <em>{{objects}}</em>"
},
"title": "Detalji o pregledu stavke",
"desc": "Detalji o pregledu stavke",
"button": {
"share": "Podijelite ovaj pregled",
"viewInExplore": "Pogledaj u Istraži"
},
"toast": {
"success": {
"regenerate": "Zatražen je novi opis od {{provider}}. Ovisno o brzini vašeg pružatelja usluga, novi opis može trebati neko vrijeme da se regenerira.",
"updatedSublabel": "Uspješno ažurirana podoznaka.",
"updatedLPR": "Uspješno ažurirana registarska pločica.",
"updatedAttributes": "Uspješno ažurirani atributi.",
"audioTranscription": "Uspješno zatražena audio transkripcija. Ovisno o brzini vašeg Frigate servera, transkripcija može potrajati neko vrijeme."
},
"error": {
"regenerate": "Neuspješno pozivanje {{provider}} za novi opis: {{errorMessage}}",
"updatedSublabelFailed": "Nije uspjelo ažurirati podoznake: {{errorMessage}}",
"updatedLPRFailed": "Neuspješno ažuriranje registarske pločice: {{errorMessage}}",
"updatedAttributesFailed": "Neuspješno ažuriranje atributa: {{errorMessage}}",
"audioTranscription": "Neuspješno zatraživanje audio transkripcije: {{errorMessage}}"
}
"mismatch_other": "{{count}} nedostupnih objekata je otkriveno i uključeno u ovaj pregledni stavak. Ti objekti ili nisu kvalificirani kao upozorenje ili detekcija, ili su već uklonjeni/izbrisani."
}
},
"label": "Oznaka",
"editSubLabel": {
"title": "Uredi podoznaku",
"desc": "Unesite novu podoznaku za ovaj {{label}}",
"descNoLabel": "Unesite novu oznaku podoznake za ovaj praćeni objekt"
},
"editLPR": {
"title": "Uredi registarsku pločicu",
"desc": "Unesite novu vrijednost registarske pločice za ovaj {{label}}",
"descNoLabel": "Unesite novu vrijednost registarske pločice za ovaj praćeni objekt"
},
"editAttributes": {
"title": "Atributi uređivanja",
"desc": "Odaberite klasifikacijske atribute za ovaj {{label}}"
},
"snapshotScore": {
"label": "Ocjena snimke"
},
"topScore": {
"label": "Najbolja ocjena",
"info": "Najviša ocjena je najviši medijan za praćeni objekt, pa se može razlikovati od rezultata prikazanog na sličici rezultata pretraživanja."
},
"score": {
"label": "Ocjena"
},
"recognizedLicensePlate": "Priznata registarska pločica",
"attributes": "Klasifikacijski atributi",
"estimatedSpeed": "Procijenjena brzina",
"objects": "Objekti",
"camera": "Kamera",
"zones": "Zone",
"button": {
"findSimilar": "Pronađite slične",
"regenerate": {
"title": "Regeneriraj",
"label": "Ponovno generiranje opisa praćenog objekta"
}
},
"description": {
"label": "Opis",
"placeholder": "Opis praćenog objekta",
"aiTips": "Frigate neće tražiti opis od vašeg Generative AI pružatelja dok životni ciklus praćenog objekta ne završi."
},
"expandRegenerationMenu": "Proširi izbornik regeneracije",
"regenerateFromSnapshot": "Regeneracija iz Snimki",
"regenerateFromThumbnails": "Regeneracija iz sličica",
"tips": {
"descriptionSaved": "Uspješno spremljen opis",
"saveDescriptionFailed": "Nije ažuriran opis: {{errorMessage}}"
},
"title": {
"label": "Naslov"
}
},
"trackedObjectDetails": "Detalji praćenog objekta",
@@ -127,124 +51,9 @@
"title": "Detalji Praćenja",
"noImageFound": "Slika nije nađena za ovaj vremenski zapis.",
"createObjectMask": "Napravi Masku Objekta",
"adjustAnnotationSettings": "Podesi postavke anotacije",
"scrollViewTips": "Kliknite za prikaz značajnih trenutaka životnog ciklusa ovog objekta.",
"autoTrackingTips": "Pozicije ograničavajućih okvira bit će netočne za kamere s automatskim praćenjem.",
"count": "{{first}} of {{second}}",
"trackedPoint": "Praćena točka",
"lifecycleItemDesc": {
"visible": "{{label}} detektiran",
"entered_zone": "{{label}} ušlo u {{zones}}",
"active": "{{label}} postao aktivan",
"stationary": "{{label}} je postao stacionaran",
"attribute": {
"faceOrLicense_plate": "{{attribute}} detektiran za {{label}}",
"other": "{{label}} prepoznat kao {{attribute}}"
},
"gone": "{{label}} lijevo",
"heard": "{{label}} zvuk detektiran",
"external": "{{label}} detektiran",
"header": {
"zones": "Zone",
"ratio": "Omjer",
"area": "Površina",
"score": "Ocjena"
}
},
"annotationSettings": {
"title": "Postavke anotacija",
"showAllZones": {
"title": "Pokaži sve zone",
"desc": "Uvijek prikaži zone u okvirima gdje su objekti ušli u zonu."
},
"offset": {
"label": "Pomak anotacija",
"desc": "Ovi podaci dolaze s detekcijskog emitiranja vaše kamere, ali se prikazuju preko slika iz snimajućeg emitiranja. Malo je vjerojatno da su oba emitiranja potpuno sinkronizirana. Kao rezultat toga, okvir (bounding box) i snimka možda neće savršeno odgovarati. Ovom postavkom možete pomaknuti oznake unaprijed ili unatrag u vremenu kako bi bolje odgovarale snimljenoj snimci.",
"millisecondsToOffset": "Milisekunde za pomicanje detekcije anotacija za. <em>Zadano: 0</em>",
"tips": "Smanjite vrijednost ako je reprodukcija videa ispred kutija i točaka puta, a povećajte vrijednost ako je reprodukcija videa iza njih. Ta vrijednost može biti negativna.",
"toast": {
"success": "Pomak anotacija za {{camera}} spremljen je u konfiguracijsku datoteku."
}
}
},
"carousel": {
"previous": "Prethodni slajd",
"next": "Sljedeći slajd"
}
"adjustAnnotationSettings": "Podesi postavke anotacije"
},
"trackedObjectsCount_one": "{{count}} praćeni objekt ",
"trackedObjectsCount_few": "{{count}} praćena objekta ",
"trackedObjectsCount_other": "{{count}} praćenih objekata ",
"itemMenu": {
"downloadVideo": {
"label": "Preuzmi video",
"aria": "Preuzmi video"
},
"downloadSnapshot": {
"label": "Preuzmite snimku",
"aria": "Preuzmite snimku"
},
"downloadCleanSnapshot": {
"label": "Preuzmite čistu snimku",
"aria": "Preuzmite čistu snimku"
},
"viewTrackingDetails": {
"label": "Pogledajte detalje praćenja",
"aria": "Prikaži detalje praćenja"
},
"findSimilar": {
"label": "Pronađi slične",
"aria": "Pronađi slične praćene objekte"
},
"addTrigger": {
"label": "Dodaj okidač",
"aria": "Dodajte okidač za ovaj praćeni objekt"
},
"audioTranscription": {
"label": "Prepisivanje",
"aria": "Zatražite audio transkripciju"
},
"submitToPlus": {
"label": "Pošalji na Frigate+",
"aria": "Pošalji na Frigate Plus"
},
"viewInHistory": {
"label": "Pogled u povijest",
"aria": "Pogled u povijest"
},
"deleteTrackedObject": {
"label": "Izbriši ovaj praćeni objekt"
},
"showObjectDetails": {
"label": "Prikaži putanju objekta"
},
"hideObjectDetails": {
"label": "Put skrivanja objekta"
}
},
"dialog": {
"confirmDelete": {
"title": "Potvrdi brisanje",
"desc": "Brisanjem ovog praćenog objekta uklanja se snimka, sve spremljene ugradnje i svi povezani unosi o praćenju. Snimljeni materijal ovog praćenog objekta u prikazu Povijesti <em>NEĆE</em> biti izbrisan.<br /><br />Jeste li sigurni da želite nastaviti?"
}
},
"noTrackedObjects": "Nema pronađenih praćenih objekata",
"fetchingTrackedObjectsFailed": "Neuspješno dohvaćanje praćenih objekata: {{errorMessage}}",
"searchResult": {
"tooltip": "Pronađen {{type}} s pouzdanošću od {{confidence}}%",
"previousTrackedObject": "Prethodni praćeni objekt",
"nextTrackedObject": "Sljedeći praćeni objekt",
"deleteTrackedObject": {
"toast": {
"success": "Praćeni objekt je uspješno izbrisan.",
"error": "Neuspješno brisanje praćenog objekta: {{errorMessage}}"
}
}
},
"aiAnalysis": {
"title": "Analiza umjetne inteligencije"
},
"concerns": {
"label": "Zabrinutosti"
}
"trackedObjectsCount_other": "{{count}} praćenih objekata "
}

View File

@@ -96,101 +96,6 @@
"disable": "Sakrij statistike emitiranja"
},
"manualRecording": {
"title": "Na Zahtjev",
"tips": "Preuzmite trenutnu snimku ili pokrenite ručni događaj prema postavkama zadržavanja snimki ove kamere.",
"playInBackground": {
"label": "Reproduciraj u pozadini",
"desc": "Omogući ovu opciju za nastavak emitiranja kada je prozor za reprodukciju skriven."
},
"showStats": {
"label": "Prikaži statistike",
"desc": "Omogući ovu opciju da se statistika emitiranja prikazuje preko prikaza kamere."
},
"debugView": "Debug prikaz",
"start": "Pokreni snimanje na zahtjev",
"started": "Pokrenuto ručno snimanje na zahtjev.",
"failedToStart": "Neuspješno pokretanje ručnog snimanja na zahtjev.",
"recordDisabledTips": "Budući da je snimanje onemogućeno ili ograničeno u konfiguraciji za ovu kameru, spremit će se samo jedna snimka.",
"end": "Kraj snimanja na zahtjev",
"ended": "Prekinuto je ručno snimanje na zahtjev.",
"failedToEnd": "Neuspješno prekidanje ručnog snimanja na zahtjev."
},
"streamingSettings": "Postavke emitiranja",
"notifications": "Obavijesti",
"audio": "Audio",
"suspend": {
"forTime": "Pauziraj zbog: "
},
"stream": {
"title": "Emitiranje",
"audio": {
"tips": {
"title": "Zvuk mora biti izlazan iz vaše kamere i konfiguriran u go2rtc za ovaj stream."
},
"available": "Audio je dostupan za ovo emitiranje",
"unavailable": "Audio nije dostupan za ovo emitiranje"
},
"debug": {
"picker": "Odabir streama nije dostupan u debug načinu. Debug prikaz uvijek koristi emitiranje dodijeljeno ulozi detekcije."
},
"twoWayTalk": {
"tips": "Vaš uređaj mora podržavati tu značajku, a WebRTC mora biti konfiguriran za dvosmjernu komunikaciju.",
"available": "Za ovo emitiranje dostupan je dvosmjerni razgovor",
"unavailable": "Dvosmjerni razgovor nije dostupan za ovo emitiranje"
},
"lowBandwidth": {
"tips": "Prikaz uživo je u načinu rada s niskom propusnošću zbog međuspremnika ili grešaka u emitiranju.",
"resetStream": "Resetiraj emitiranje"
},
"playInBackground": {
"label": "Reproduciraj u pozadini",
"tips": "Omogući ovu opciju za nastavak emitiranja kad je player skriven."
}
},
"cameraSettings": {
"title": "{{camera}} Postavke",
"cameraEnabled": "Kamera omogućena",
"objectDetection": "Detekcija objekata",
"recording": "Snimanje",
"snapshots": "Snimke",
"audioDetection": "Detekcija zvuka",
"transcription": "Audio transkripcija",
"autotracking": "Automatsko praćenje"
},
"history": {
"label": "Prikaži povijesne snimke"
},
"effectiveRetainMode": {
"modes": {
"all": "Svi",
"motion": "Prijedlog",
"active_objects": "Aktivni objekti"
}
},
"editLayout": {
"label": "Uredi raspored",
"group": {
"label": "Uredi Grupu Kamera"
},
"exitEdit": "Izlaz iz uređivanja"
},
"noCameras": {
"title": "Nema konfiguriranih kamera",
"description": "Započnite povezivanjem kamere na Frigate.",
"buttonText": "Dodaj kameru",
"restricted": {
"title": "Nema dostupnih kamera",
"description": "Nemate dopuštenje za gledanje kamera u ovoj grupi."
},
"default": {
"title": "Nema konfiguriranih kamera",
"description": "Započnite povezivanjem kamere na Frigate.",
"buttonText": "Dodaj kameru"
},
"group": {
"title": "Nema kamera u grupi",
"description": "Ova grupa kamera nema dodijeljene niti omogućene kamere.",
"buttonText": "Upravljanje grupama"
}
"title": "Na Zahtjev"
}
}

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,14 @@
{
"documentTitle": {
"cameras": "Statistika Kamera - Frigate",
"general": "Opća Statistika - Frigate",
"cameras": "Statistika kamera - Frigate",
"general": "Generalne statistike - Frigate",
"logs": {
"go2rtc": "Zapisnici Go2RTC - Frigate",
"nginx": "Zapisnici Nginx - Frigate",
"frigate": "Zapisnici Frigate - Frigate"
"go2rtc": "Go2RTC Zapisnici- Frigate",
"nginx": "Nginx Zapisnici - Frigate",
"frigate": "Frigate Zapisnici - Frigate"
},
"storage": "Statistika Pohrane - Frigate",
"enrichments": "Statistika Obogaćenja - Frigate"
"storage": "Statistika pohrane - Frigate",
"enrichments": "Statistika obogaćivanja - Frigate"
},
"title": "Sustav",
"logs": {
@@ -22,15 +22,15 @@
"message": "Poruka"
},
"copy": {
"label": "Kopiraj u međuspremnik",
"success": "Zapisnici kopirani u međuspremnik",
"error": "Nije moguće kopirati zapisnike u međuspremnik"
"label": "Kopiraj u Međuspremnik",
"success": "Kopirani zapisnici u međuspremnik",
"error": "Nisam mogao kopirati zapisnike u međuspremnik"
},
"tips": "Zapisnici se prenose sa servera",
"tips": "Zapisnici se prenose s poslužitelja",
"toast": {
"error": {
"fetchingLogsFailed": "Greška pri dohvaćanju zapisnika: {{errorMessage}}",
"whileStreamingLogs": "Greška tijekom prijenosa zapisnika: {{errorMessage}}"
"fetchingLogsFailed": "Greška dohvaćanja zapisnika: {{errorMessage}}",
"whileStreamingLogs": "Pogreška tijekom prijenosa zapisnika: {{errorMessage}}"
}
}
},
@@ -39,170 +39,26 @@
"title": "Općenito",
"detector": {
"title": "Detektori",
"inferenceSpeed": "Brzina inferencije detektora",
"temperature": "Temperatura detektora",
"cpuUsage": "Upotreba CPU-a detektora",
"cpuUsageInformation": "CPU korišten za pripremu ulaznih i izlaznih podataka za/od modela detekcije. Ova vrijednost ne mjeri korištenje za inferenciju, čak ni ako se koristi GPU ili akcelerator.",
"memoryUsage": "Upotreba memorije detektora"
"inferenceSpeed": "Brzina izvođenja detektora",
"temperature": "Temperatura Detektora",
"cpuUsage": "Detektorova iskorištenost CPU-a",
"cpuUsageInformation": "CPU korišten za pripremu ulaznih i izlaznih podataka za modele detekcije. Ova vrijednost ne mjeri korištenje tijekom izvođenja modela, čak ni ako se koristi GPU ili akcelerator.",
"memoryUsage": "Detektorova Iskorištenost Memorije"
},
"hardwareInfo": {
"title": "Informacije o hardveru",
"gpuUsage": "Upotreba GPU-a",
"gpuMemory": "Memorija GPU-a",
"gpuEncoder": "GPU Encoder",
"gpuDecoder": "GPU Decoder",
"gpuUsage": "Iskorištenost GPU-a",
"gpuMemory": "GPU Memorija",
"gpuEncoder": "GPU Enkoder",
"gpuDecoder": "GPU Dekoder",
"gpuInfo": {
"vainfoOutput": {
"title": "Vainfo Izlaz",
"title": "Ispis Vainfo",
"returnCode": "Povratni kod: {{code}}",
"processOutput": "Izlaz procesa:",
"processOutput": "Ispis procesa:",
"processError": "Greška procesa:"
},
"nvidiaSMIOutput": {
"title": "Nvidia SMI Izlaz",
"name": "Naziv: {{name}}",
"driver": "Driver: {{driver}}",
"cudaComputerCapability": "CUDA Compute Capability: {{cuda_compute}}",
"vbios": "VBios Informacije: {{vbios}}"
},
"closeInfo": {
"label": "Zatvori informacije o GPU-u"
},
"copyInfo": {
"label": "Kopiraj informacije o GPU-u"
},
"toast": {
"success": "Informacije o GPU-u kopirane u međuspremnik"
}
},
"npuUsage": "Upotreba NPU-a",
"npuMemory": "Memorija NPU-a",
"intelGpuWarning": {
"title": "Upozorenje Intel GPU Statistika",
"message": "Statistika GPU-a nije dostupna",
"description": "Ovo je poznata greška u Intelovim alatima za izvještavanje GPU statistike (intel_gpu_top) gdje će se podaci prekinuti i stalno prikazivati 0% korištenja GPU-a, čak i kada hardversko ubrzanje i detekcija objekata pravilno rade na (i)GPU-u. Ovo nije greška Frigate-a. Možete ponovno pokrenuti host da privremeno riješite problem i potvrdite da GPU radi ispravno. Ovo ne utječe na performanse."
}
},
"otherProcesses": {
"title": "Ostali Procesi",
"processCpuUsage": "Upotreba CPU-a procesa",
"processMemoryUsage": "Upotreba memorije procesa",
"series": {
"go2rtc": "go2rtc",
"recording": "snimanje",
"review_segment": "pregled segmenta",
"embeddings": "ugrađivanja",
"audio_detector": "audio detektor"
}
}
},
"storage": {
"title": "Pohrana",
"overview": "Pregled",
"recordings": {
"title": "Snimke",
"tips": "Ova vrijednost predstavlja ukupno korištenje prostora za snimke u Frigate bazi podataka. Frigate ne prati korištenje prostora za sve datoteke na disku.",
"earliestRecording": "Najranija dostupna snimka:"
},
"shm": {
"title": "SHM (zajednička memorija) alokacija",
"warning": "Trenutna veličina SHM od {{total}} MB je premala. Povećajte je na najmanje {{min_shm}} MB."
},
"cameraStorage": {
"title": "Pohrana Kamere",
"camera": "Kamera",
"unusedStorageInformation": "Informacije o neiskorištenom prostoru",
"storageUsed": "Pohrana",
"percentageOfTotalUsed": "Postotak od ukupnog",
"bandwidth": "Propusnost",
"unused": {
"title": "Neiskorišteno",
"tips": "Ova vrijednost možda ne prikazuje točno slobodan prostor dostupan Frigate-u ako imate druge datoteke pohranjene na disku osim Frigate snimaka. Frigate ne prati korištenje prostora izvan svojih snimki."
}
}
},
"cameras": {
"title": "Kamere",
"overview": "Pregled",
"info": {
"aspectRatio": "Omjer stranica",
"cameraProbeInfo": "{{camera}} Informacije ispitane od kamere",
"streamDataFromFFPROBE": "Podaci emitiranja dohvaćeni su pomoću <code>ffprobe</code>.",
"fetching": "Dohvaćanje podataka kamere",
"stream": "Emitiranje {{idx}}",
"video": "Video:",
"codec": "Kodek:",
"resolution": "Rezolucija:",
"fps": "FPS:",
"unknown": "Nepoznato",
"audio": "Audio:",
"error": "Greška: {{error}}",
"tips": {
"title": "Informacije Ispitivanja Kamere"
}
},
"framesAndDetections": "Okviri / Detekcije",
"label": {
"camera": "kamera",
"detect": "detekcija",
"skipped": "preskočeno",
"ffmpeg": "FFmpeg",
"capture": "snimanje",
"overallFramesPerSecond": "ukupni okviri po sekundi",
"overallDetectionsPerSecond": "ukupne detekcije po sekundi",
"overallSkippedDetectionsPerSecond": "ukupne preskočene detekcije po sekundi",
"cameraFfmpeg": "{{camName}} FFmpeg",
"cameraCapture": "{{camName}} snimanje",
"cameraDetect": "{{camName}} detekcija",
"cameraFramesPerSecond": "{{camName}} okviri po sekundi",
"cameraDetectionsPerSecond": "{{camName}} detekcije po sekundi",
"cameraSkippedDetectionsPerSecond": "{{camName}} preskočene detekcije po sekundi"
},
"toast": {
"success": {
"copyToClipboard": "Podaci probe kopirani u međuspremnik."
},
"error": {
"unableToProbeCamera": "Nije moguće probati kameru: {{errorMessage}}"
}
}
},
"lastRefreshed": "Zadnje osvježavanje: ",
"stats": {
"ffmpegHighCpuUsage": "{{camera}} ima visoku upotrebu CPU-a za FFmpeg ({{ffmpegAvg}}%)",
"detectHighCpuUsage": "{{camera}} ima visoku upotrebu CPU-a za detekciju ({{detectAvg}}%)",
"healthy": "Sustav je zdrav",
"reindexingEmbeddings": "Reindeksiranje embeddings ({{processed}}% završeno)",
"cameraIsOffline": "{{camera}} je offline",
"detectIsSlow": "{{detect}} je sporo ({{speed}} ms)",
"detectIsVerySlow": "{{detect}} je vrlo sporo ({{speed}} ms)",
"shmTooLow": "/dev/shm alokacija ({{total}} MB) treba biti povećana na najmanje {{min}} MB."
},
"enrichments": {
"title": "Obogaćenja",
"infPerSecond": "Inferencija po sekundi",
"averageInf": "Prosječno vrijeme inferencije",
"embeddings": {
"image_embedding": "Ugrađivanja slike",
"text_embedding": "Ugrađivanja teksta",
"face_recognition": "Prepoznavanje lica",
"plate_recognition": "Prepoznavanje registarskih pločica",
"image_embedding_speed": "Brzina Image Embedding",
"face_embedding_speed": "Brzina Face Embedding",
"face_recognition_speed": "Brzina prepoznavanja lica",
"plate_recognition_speed": "Brzina prepoznavanja registarskih pločica",
"text_embedding_speed": "Brzina Text Embedding",
"yolov9_plate_detection_speed": "Brzina YOLOv9 prepoznavanja pločica",
"yolov9_plate_detection": "YOLOv9 Prepoznavanje pločica",
"review_description": "Opis Pregleda",
"review_description_speed": "Brzina Opisa Pregleda",
"review_description_events_per_second": "Opis Pregleda",
"object_description": "Opis Objekta",
"object_description_speed": "Brzina Opisa Objekta",
"object_description_events_per_second": "Opis Objekta",
"classification": "{{name}} Klasifikacija",
"classification_speed": "Brzina {{name}} Klasifikacije",
"classification_events_per_second": "{{name}} Klasifikacija po događajima po sekundi"
}
}
}

View File

@@ -425,6 +425,5 @@
"crack": "Törés",
"chink": "Csörömpölés",
"shatter": "Összetörés",
"field_recording": "Helyszíni felvétel",
"noise": "Zaj"
"field_recording": "Helyszíni felvétel"
}

View File

@@ -72,10 +72,7 @@
"24hour": "MMM d, HH:mm",
"12hour": "MMM d, h:mm aaa"
},
"formattedTimestampMonthDay": "MMM d",
"inProgress": "Folyamatban",
"invalidStartTime": "Érvénytelen kezdeti idő",
"never": "Soha"
"formattedTimestampMonthDay": "MMM d"
},
"menu": {
"darkMode": {
@@ -272,8 +269,7 @@
"next": "Következő"
},
"label": {
"back": "Vissza",
"all": "Mind"
"back": "Vissza"
},
"readTheDocumentation": "Olvassa el a dokumentációt",
"information": {

View File

@@ -132,9 +132,5 @@
},
"count_one": "{{count}} Osztály",
"count_other": "{{count}} Osztályok"
},
"attributes": {
"label": "Osztályozási attribútumok",
"all": "Minden attribútum"
}
}

View File

@@ -16,15 +16,10 @@
"deletedModel_one": "Sikeresen törölt {{count}} modellt",
"deletedModel_other": "",
"categorizedImage": "A kép sikeresen osztályozva",
"deletedCategory": "Osztály törlése",
"trainedModel": "Sikeresen betanított modell.",
"trainingModel": "A modell tanítás sikeresen megkezdődött.",
"updatedModel": "Modellkonfiguráció sikeresen frissítve",
"renamedCategory": "Sikeresen átneveztük az osztályt {{name}} névre"
"deletedCategory": "Osztály törlése"
},
"error": {
"deleteImageFailed": "Törlés sikertelen: {{errorMessage}}",
"deleteCategoryFailed": "Nem sikerült törölni az osztályt: {{errorMessage}}"
"deleteImageFailed": "Törlés sikertelen: {{errorMessage}}"
}
},
"details": {
@@ -48,11 +43,5 @@
"noNewImages": "Nincsenek új képek a betanításhoz. Először osztályozzon több képet az adathalmazban.",
"noChanges": "Az adathalmazban nem történt változás az utolsó betanítás óta.",
"modelNotReady": "A modell nem áll készen a betanításra"
},
"menu": {
"objects": "Objektumok"
},
"train": {
"titleShort": "Friss"
}
}

View File

@@ -3,11 +3,7 @@
"empty": {
"detection": "Nincs megnézendő észlelés",
"alert": "Nincs megnézendő riasztás",
"motion": "Nem található mozgás",
"recordingsDisabled": {
"title": "A felvétel készítést engedélyezni kell",
"description": "Csak akkor hozhatók létre áttekintési elemek egy kamerához, ha az adott kamerához engedélyezve vannak a felvételek."
}
"motion": "Nem található mozgás"
},
"detections": "Észlelések",
"motion": {
@@ -42,17 +38,5 @@
"suspiciousActivity": "Gyanús Tevékenység",
"threateningActivity": "Fenyegető Tevékenység",
"zoomIn": "Nagyítás",
"zoomOut": "Kicsinyítés",
"detail": {
"trackedObject_other": "{{count}} objektum",
"label": "Részletes",
"noDataFound": "Nincsenek részletes adatok áttekintésre",
"aria": "Részletes nézet kapcsolása",
"trackedObject_one": "{{count}} objektum",
"noObjectDetailData": "Nincsenek elérhető objektumrészlet adatok.",
"settings": "Részletes nézet beállításai",
"alwaysExpandActive": {
"title": "Mindig kibontja az aktív részt"
}
}
"zoomOut": "Kicsinyítés"
}

View File

@@ -213,9 +213,7 @@
"video": "videó",
"object_lifecycle": "tárgy életciklus",
"details": "részletek",
"snapshot": "pillanatfelvétel",
"thumbnail": "bélyegkép",
"tracking_details": "követési adatok"
"snapshot": "pillanatfelvétel"
},
"trackedObjectDetails": "Követett Tárgy Részletei",
"exploreMore": "Fedezzen fel több {{label}} tárgyat",
@@ -224,21 +222,5 @@
},
"concerns": {
"label": "Aggodalmak"
},
"trackingDetails": {
"lifecycleItemDesc": {
"active": "{{label}} aktív lett",
"attribute": {
"other": "{{label}} felismerve mint {{attribute}}"
},
"external": "{{label}} érzékelve",
"header": {
"zones": "Zónák",
"ratio": "Arány",
"area": "Terület"
}
},
"title": "Követési adatok",
"noImageFound": "Nem található kép ehhez az időbélyeghez."
}
}

View File

@@ -92,8 +92,7 @@
"train": {
"title": "Friss felismerések",
"empty": "Nincs friss arcfelismerés",
"aria": "Válassza ki a tanítást",
"titleShort": "Friss"
"aria": "Válassza ki a tanítást"
},
"pixels": "{{area}}px",
"selectItem": "KIválasztani {{item}}-et"

View File

@@ -778,12 +778,6 @@
"semanticSearch": {
"title": "Szemantikus keresés le van tiltva",
"desc": "A Triggerek használatához engedélyezni kell a szemantikus keresést."
},
"wizard": {
"steps": {
"nameAndType": "Név és típus",
"configureData": "Configurációs adatok"
}
}
},
"roles": {

View File

@@ -121,19 +121,12 @@
"gpuEncoder": "GPU Enkóder",
"gpuDecoder": "GPU Dekóder",
"npuUsage": "NPU Kihasználtság",
"npuMemory": "NPU Memória",
"intelGpuWarning": {
"message": "GPU statisztika nem érhető el"
}
"npuMemory": "NPU Memória"
},
"otherProcesses": {
"processMemoryUsage": "Folyamat Memória Kihasználtság",
"title": "Egyéb Folyamatok",
"processCpuUsage": "Folyamat CPU Kihasználtság",
"series": {
"go2rtc": "go2rtc",
"recording": "felvétel"
}
"processCpuUsage": "Folyamat CPU Kihasználtság"
}
},
"storage": {

View File

@@ -85,7 +85,5 @@
"snoring": "Ngorok",
"cough": "Batuk",
"clapping": "Tepukan",
"camera": "Kamera",
"wheeze": "Nafas",
"gasp": "Tersedak"
"camera": "Kamera"
}

View File

@@ -10,22 +10,7 @@
"last7": "7 hari terakhir",
"last14": "14 hari terakhir",
"last30": "30 hari terakhir",
"thisWeek": "Minggu Ini",
"never": "Tidak Pernah",
"lastWeek": "Minggu Lalu",
"thisMonth": "Bulan Ini",
"lastMonth": "Bulan Lalu",
"5minutes": "5 menit",
"10minutes": "10 menit",
"30minutes": "30 menit",
"1hour": "1 jam",
"12hours": "12 jam",
"24hours": "24 jam",
"pm": "pm",
"am": "am",
"yr": "{{time}} tahun",
"year_other": "{{time}} tahun",
"mo": "{{time}} bulan"
"thisWeek": "Minggu Ini"
},
"readTheDocumentation": "Baca dokumentasi"
}

View File

@@ -16,38 +16,8 @@
"errorMessage": {
"mustLeastCharacters": "Nama grup kamera minimal harus 2 karakter.",
"exists": "Nama grup kamera sudah ada.",
"nameMustNotPeriod": "Nama grup kamera tidak boleh ada titik.",
"invalid": "Nama grup kamera tidak valid."
}
},
"cameras": {
"label": "Kamera",
"desc": "Pilih kamera untuk grup ini."
},
"icon": "Ikon",
"success": "Grup kamera {{name}} telah disimpan.",
"camera": {
"birdseye": "Mata Elang",
"setting": {
"label": "Pengaturan Streaming Kamera",
"title": "Pengaturan Kamera {{cameraName}}",
"desc": "Ubah pengaturan streaming untuk dasbor grup kamera ini. <em>Pengaturan ini spesifik untuk perangkat / browser tertentu.</em>",
"audioIsAvailable": "Terdapat audio untuk stream ini",
"audioIsUnavailable": "Tidak terdapat audio untuk stream ini",
"audio": {
"tips": {
"title": "Audio harus dikeluarkan dari kamera Anda dan dikonfigurasi di go2rtc untuk stream ini."
}
},
"stream": "Siaran",
"placeholder": "Pilih stream",
"streamMethod": {
"label": "Metode Streaming"
}
"nameMustNotPeriod": "Nama grup kamera tidak boleh ada titik."
}
}
},
"debug": {
"boundingBox": "Batas Kotak"
}
}

View File

@@ -20,43 +20,8 @@
"ask_a": "Apakah objek ini adalah sebuah<code>{{label}}</code>?",
"ask_an": "Apakah objek ini <code>{{label}}</code>?",
"ask_full": "Apakah ini object <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"state": {
"submitted": "Terkirim"
}
}
},
"video": {
"viewInHistory": "Lihat di Histori"
}
},
"export": {
"time": {
"fromTimeline": "Pilih dari Linimasa",
"lastHour_other": "{{count}} Jam Terakhir",
"custom": "Kustom",
"start": {
"title": "Waktu Mulai",
"label": "Pilih Waktu Mulai"
},
"end": {
"title": "Waktu Akhir",
"label": "Pilih Waktu Akhir"
}
},
"name": {
"placeholder": "Nama Ekspor"
},
"select": "Pilih",
"export": "Ekspor",
"selectOrExport": "Pilih atau Ekspor",
"toast": {
"success": "Berhasil memulai ekspor. Lihat file pada halaman ekspor."
}
},
"search": {
"saveSearch": {
"overwrite": "{{searchName}} sudah ada. Menyimpan akan menimpa file yang sudah ada."
}
}
}

View File

@@ -23,35 +23,5 @@
},
"count_one": "{{count}} Kelas",
"count_other": "{{count}} Kelas"
},
"dates": {
"selectPreset": "Pilih preset…",
"all": {
"title": "Semua Tanggal",
"short": "Tanggal"
}
},
"more": "Lebih Banyak",
"reset": {
"label": "Atur ulang filter ke default"
},
"timeRange": "Rentang Waktu",
"subLabels": {
"label": "Sublabel",
"all": "Semua Sublabel"
},
"attributes": {
"label": "Klasifikasi Atribut",
"all": "Semua Atribut"
},
"score": "Skor",
"estimatedSpeed": "Perkiraan Kecepatan {{unit}}",
"features": {
"label": "Fitur"
},
"cameras": {
"all": {
"short": "Kamera"
}
}
}

View File

@@ -16,36 +16,6 @@
"streamType": {
"title": "Tipe stream:",
"short": "Jenis"
},
"bandwidth": {
"title": "Bandwith:",
"short": "Bandwith"
},
"latency": {
"title": "Latensi:",
"value": "{{seconds}} detik",
"short": {
"title": "Latensi",
"value": "{{seconds}} detik"
}
},
"totalFrames": "Total Frame:",
"droppedFrames": {
"title": "Frame Terbuang:",
"short": {
"title": "Terbuang",
"value": "{{droppedFrames}} frame"
}
},
"decodedFrames": "Decoded Frames:",
"droppedFrameRate": "Frame Rate Terbuang:"
},
"toast": {
"success": {
"submittedFrigatePlus": "Berhasil mengirim frame ke Frigate+"
},
"error": {
"submitFrigatePlusFailed": "Gagal mengirim frame ke Frigate+"
}
}
}

View File

@@ -17,15 +17,5 @@
"goat": "Kambing",
"sheep": "Domba",
"bird": "Burung",
"street_sign": "Rambu Jalan",
"stop_sign": "Tanda Stop",
"parking_meter": "Parkir Meter",
"bench": "Kursi",
"cow": "Sapi",
"elephant": "Gajah",
"bear": "Beruang",
"zebra": "Zebra",
"giraffe": "Jerapah",
"hat": "Topi",
"backpack": "Tas"
"street_sign": "Rambu Jalan"
}

View File

@@ -12,36 +12,5 @@
"addClassification": "Tambah Klasifikasi",
"deleteModels": "Hapus Model",
"editModel": "Ubah Model"
},
"tooltip": {
"trainingInProgress": "Model dalam training",
"noNewImages": "Tidak ada gambar untuk dilatih. Klasifikasikan gambar terlebih dahulu di dataset.",
"noChanges": "Tidak ada perubahan dataset sejak latihan terakhir.",
"modelNotReady": "Model tidak siap untuk dilatih"
},
"toast": {
"success": {
"deletedCategory": "Kelas dihapus",
"deletedImage": "Image dihapus",
"deletedModel_other": "Berhasil menghapus {{count}} model",
"categorizedImage": "Berhasil Mengklasifikasikan Gambar",
"trainedModel": "Berhasil melatih model.",
"trainingModel": "Berhasil memulai pelatihan model.",
"updatedModel": "Berhasil memperbarui konfigurasi model",
"renamedCategory": "Berhasil mengganti nama class ke {{name}}"
},
"error": {
"updateModelFailed": "Gagal melakukan perubahan pada model: {{errorMessage}}",
"renameCategoryFailed": "Gagal merubah penamaan kelas: {{errorMessage}}",
"deleteImageFailed": "Gagal menghapus: {{errorMessage}}",
"deleteCategoryFailed": "Gagal menghapus kelas: {{errorMessage}}"
}
},
"deleteCategory": {
"title": "Kelas dihapus",
"minClassesTitle": "Dilarang menghapus Kelas"
},
"train": {
"titleShort": "Terkini"
}
}

View File

@@ -9,11 +9,7 @@
"empty": {
"detection": "Tidak ada deteksi untuk ditinjau",
"alert": "Tidak ada peringatan untuk ditinjau",
"motion": "Data gerakan tidak ditemukan",
"recordingsDisabled": {
"title": "Perekaman harus di aktifkan",
"description": "Ulasan item hanya dapat dibuat untuk kamera jika perekaman diaktifkan untuk kamera tersebut."
}
"motion": "Data gerakan tidak ditemukan"
},
"timeline.aria": "Pilih timeline",
"timeline": "Linimasa",
@@ -28,8 +24,8 @@
"label": "Detil",
"noDataFound": "Tidak ada detil data untuk di review",
"aria": "Beralih tampilan detil",
"trackedObject_one": "{{count}} objek",
"trackedObject_other": "{{count}} objek",
"trackedObject_one": "objek",
"trackedObject_other": "objek-objek",
"noObjectDetailData": "Tidak ada data objek detil tersedia.",
"settings": "Pengaturan Tampilan Detil",
"alwaysExpandActive": {

Some files were not shown because too many files have changed in this diff Show More