Compare commits

..
Author SHA1 Message Date
dependabot[bot]andGitHub aaf0edc8ed Bump immutable from 5.1.5 to 5.1.9 in /docs
Bumps [immutable](https://github.com/immutable-js/immutable-js) from 5.1.5 to 5.1.9.
- [Release notes](https://github.com/immutable-js/immutable-js/releases)
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/immutable-js/immutable-js/compare/v5.1.5...v5.1.9)

---
updated-dependencies:
- dependency-name: immutable
  dependency-version: 5.1.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-24 04:57:47 +00:00
139 changed files with 1261 additions and 5468 deletions
-1
View File
@@ -82,7 +82,6 @@ frontdoor
fstype
fullchain
fullscreen
gatekeep
genai
generativeai
genpts
@@ -10,11 +10,8 @@ body:
Before submitting, read the [beta documentation][docs].
By posting here you agree to follow our [AI policy][ai-policy]. Posts that appear to be written by an AI on your behalf may be closed without a response.
[docs]: https://docs-dev.frigate.video/
[discussions]: https://github.com/blakeblackshear/frigate/discussions
[ai-policy]: https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md
- type: textarea
id: description
attributes:
@@ -8,12 +8,9 @@ body:
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
By posting here you agree to follow our [AI policy][ai-policy]. Posts that appear to be written by an AI on your behalf may be closed without a response.
[discussions]: https://www.github.com/blakeblackshear/frigate/discussions
[docs]: https://docs.frigate.video
[faq]: https://github.com/blakeblackshear/frigate/discussions/12724
[ai-policy]: https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md
- type: textarea
id: description
attributes:
@@ -8,12 +8,9 @@ body:
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
By posting here you agree to follow our [AI policy][ai-policy]. Posts that appear to be written by an AI on your behalf may be closed without a response.
[discussions]: https://www.github.com/blakeblackshear/frigate/discussions
[docs]: https://docs.frigate.video
[faq]: https://github.com/blakeblackshear/frigate/discussions/12724
[ai-policy]: https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md
- type: textarea
id: description
attributes:
@@ -8,12 +8,9 @@ body:
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
By posting here you agree to follow our [AI policy][ai-policy]. Posts that appear to be written by an AI on your behalf may be closed without a response.
[discussions]: https://www.github.com/blakeblackshear/frigate/discussions
[docs]: https://docs.frigate.video
[faq]: https://github.com/blakeblackshear/frigate/discussions/12724
[ai-policy]: https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md
- type: textarea
id: description
attributes:
@@ -8,12 +8,9 @@ body:
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
By posting here you agree to follow our [AI policy][ai-policy]. Posts that appear to be written by an AI on your behalf may be closed without a response.
[discussions]: https://www.github.com/blakeblackshear/frigate/discussions
[docs]: https://docs.frigate.video
[faq]: https://github.com/blakeblackshear/frigate/discussions/12724
[ai-policy]: https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md
- type: textarea
id: description
attributes:
@@ -8,12 +8,9 @@ body:
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
By posting here you agree to follow our [AI policy][ai-policy]. Posts that appear to be written by an AI on your behalf may be closed without a response.
[discussions]: https://www.github.com/blakeblackshear/frigate/discussions
[docs]: https://docs.frigate.video
[faq]: https://github.com/blakeblackshear/frigate/discussions/12724
[ai-policy]: https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md
- type: textarea
id: description
attributes:
-3
View File
@@ -10,12 +10,9 @@ body:
**If you are looking for support, start a new discussion and use a support category.**
By posting here you agree to follow our [AI policy][ai-policy]. Posts that appear to be written by an AI on your behalf may be closed without a response.
[discussions]: https://www.github.com/blakeblackshear/frigate/discussions
[docs]: https://docs.frigate.video
[faq]: https://github.com/blakeblackshear/frigate/discussions/12724
[ai-policy]: https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md
- type: textarea
id: description
attributes:
@@ -12,14 +12,11 @@ body:
**If you are unsure if your issue is actually a bug or not, please submit a support request first.**
By posting here you agree to follow our [AI policy][ai-policy]. Posts that appear to be written by an AI on your behalf may be closed without a response.
[discussions]: https://www.github.com/blakeblackshear/frigate/discussions
[prs]: https://www.github.com/blakeblackshear/frigate/pulls
[docs]: https://docs.frigate.video
[faq]: https://github.com/blakeblackshear/frigate/discussions/12724
[ai]: https://docs.frigate.video
[ai-policy]: https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md
- type: checkboxes
attributes:
label: Checklist
@@ -7,13 +7,6 @@ assignees: ''
---
<!--
By posting here you agree to follow our AI policy:
https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md
Requests that appear to be written by an AI on your behalf may be closed without a response.
-->
**Describe what you are trying to accomplish and why in non technical terms**
I want to be able to ... so that I can ...
+1 -1
View File
@@ -1,4 +1,4 @@
_Please read the [contributing guidelines](https://github.com/blakeblackshear/frigate/blob/dev/CONTRIBUTING.md) and the [AI policy](https://github.com/blakeblackshear/frigate/blob/dev/AI_POLICY.md) before submitting a PR. Every PR must be read and submitted by a person, and PRs that appear to be unreviewed AI output will be closed without review._
_Please read the [contributing guidelines](https://github.com/blakeblackshear/frigate/blob/dev/CONTRIBUTING.md) before submitting a PR._
## Proposed change
-126
View File
@@ -1,126 +0,0 @@
# Frigate AI Policy
## TL;DR
- **Use AI tools if they help you.** We do too. This is about what you post, not which tools you use to write it.
- **A person has to read it and send it.** Don't wire a bot or an agent up to post on your behalf.
- **Write your posts yourself.** Your own words, the template filled in, and you answering maintainers rather than your assistant.
- **Don't paste an AI's guess at the cause as though it were a diagnosis.** Tell us what you actually observed.
- **Read your code before you submit it.** Disclose that AI was used, and be ready to explain every line.
- **If we misjudge something you wrote, just say so.** We'll take you at your word.
The rest of this document explains each of these, and why.
## Scope
AI tools are a reality of modern development and we're not opposed to their use. You are responsible for anything you submit, however it was produced, and we are responsible for anything we merge and release. We hold a high bar for both.
This policy applies everywhere this project is discussed: issues, discussions, pull requests, code reviews, and commit comments.
## Why this exists
Frigate is built and supported by a small group of maintainers and a community of volunteers who read every post and review every pull request. Nobody here is paid to do it, and time spent reading a post is time not spent fixing bugs or building features.
We're not opposed to AI tools. We use them too. But content generated by an AI and submitted without review costs a real person real time, and usually gives them less to work with than a few honest sentences would have. That is the problem this policy addresses.
## A person has to be in the loop
Every issue, discussion, comment, and pull request here must be read and submitted by a person. Using an AI tool to help you write is fine. Wiring one up to post on your behalf is not.
Specifically, do not:
- Connect a bot or agent to GitHub that opens issues, discussions, or pull requests without you reading them first
- Post output from a tool you have not read
- Use tooling to file bulk or drive-by contributions across the repository
We will close anything we believe was posted without a person reading it, and we may mark it as spam. Posts that skip the templates are the most common sign of this.
## Issues, discussions, and comments
We do not mind if you use AI tools to help you write. Do not have tools post unreviewed content on your behalf. We may hide any comment we believe to be unreviewed AI output.
Keep posts to what is needed to communicate your point. A long, confidently written, AI-padded post is harder to help with than a short direct one, not easier, and it is usually obvious.
**Describe your actual problem in your own words.** Tell us what you did, what you expected, and what actually happened. That is the information we need, and only you have it.
**Do not paste an AI's guess at the cause as though it were a diagnosis.** It is frequently wrong in ways that send everyone down the wrong path, and it buries the details that would have led to the real answer. We would rather see what you observed than what a model inferred.
**Fill in the template completely.** The templates ask for logs, config, version, and hardware because those are the things needed to help you. An AI cannot supply them for you, and a post missing them cannot be acted on.
**Answer maintainers yourself.** If we ask you a question, we are asking _you_, not your AI assistant. These are the spaces where we build trust and understanding with the community, and that only works if we're talking to each other. Using AI to fix your grammar or clarity is fine, but the substance has to be yours.
This applies to pull request descriptions and review replies as much as it does to bug reports and discussions.
### Quoting AI output
If you want to include something an AI told you, it must be:
- In a quote block, using `>`
- Disclosed as AI output, saying which tool it came from
- Accompanied by your own comment explaining why you think it is relevant
Keep the excerpt short. Do not paste long transcripts.
### Non-native English speakers
AI is genuinely useful for participating in a project that operates in English, and we would rather hear from you through a translation tool than not hear from you at all. Using AI to improve the grammar or clarity of something you wrote yourself is fine.
If you are translating your posts, make sure the translation says what you meant. Including your original text in a `<details>` block helps us verify the translation if something reads oddly, and keeps the thread readable.
## Code contributions
We need to understand your relationship with the code you're submitting. The more AI was involved, the more important it is that you've genuinely reviewed, tested, and understood what it produced.
Because of the long-term maintenance burden every merged change creates, we require a human in the loop who understands the work the AI produced. Pull requests that appear to be unreviewed AI output will be closed without review.
### Requirements when AI is used
If AI is used to generate any portion of the code, contributors must adhere to the following requirements:
1. **Explicitly disclose the manner in which AI was employed.** The PR template asks for this. Be honest, this won't automatically disqualify your PR. We'd rather have an honest disclosure than find out later. Trust matters more than method.
2. **Perform a comprehensive manual review prior to submitting the pull request.** Don't submit code you haven't read carefully and tested locally.
3. **Be prepared to explain every line of code you submitted when asked about it by a maintainer.** If you can't explain why something works the way it does, you're not ready to submit it.
4. **Check for an existing pull request addressing the same change.** If one exists, comment there and work with its author instead of opening a duplicate.
5. **It is strictly prohibited to use AI to write your posts for you** (bug reports, feature requests, pull request descriptions, GitHub discussions, responding to humans, etc.). We need to hear from _you_, not your AI assistant. These are the spaces where we build trust and understanding with contributors, and that only works if we're talking to each other.
### Established contributors
Contributors with a long history of thoughtful, quality contributions to Frigate have earned trust through that track record. The level of scrutiny we apply to AI usage naturally reflects that trust. This isn't a formal exemption, it's just how trust works. If you've been around, we know how you think and how you work. If you're new, we're still getting to know you, and clear disclosure helps build that relationship.
### What this means in practice
We're not trying to gatekeep how you write code. Use whatever tools make you productive. But there's a difference between using AI as a tool to implement something you understand and handing a feature request to an AI and submitting whatever comes back. The former is fine. The latter creates maintenance risk for the project.
Some honest context: when we review a PR, we're not just evaluating whether the code works today. We're evaluating whether we can maintain it, debug it, and extend it long-term, often without the original author's involvement. Code that the author doesn't deeply understand is code that nobody understands, and that's a liability.
One more thing worth saying directly: most maintainers already have access to the same AI tools you do. A PR that's entirely AI-generated, where the author can't explain the design, debug issues independently, or engage substantively in design discussions, doesn't offer something we couldn't produce ourselves. What makes a contribution genuinely valuable is the human judgment and domain understanding behind it, as well as the engagement during review that shapes it into something we can confidently take on long-term.
## Our use of AI
The Frigate documentation site has an "Ask AI" search that answers questions from the docs, and we may use AI tooling to help with triage and project management. Like any automated tooling, it is not always right.
If an AI tool leaves a comment on your contribution, treat it the way you would any other comment. If you think it is wrong, say so, and a brief explanation is enough. Maintainers always have the final say.
## Enforcement
Contributions and posts that do not follow this policy will be closed. Depending on the situation, maintainers may also:
- Hide or delete comments that appear to be unreviewed AI output
- Mark automated content as spam
- Close an issue, discussion, or pull request without further review
- Lock a conversation
- Temporarily or permanently block an account from participating in the project
Repeated violations may result in being blocked from contributing to Frigate.
### When we get it wrong
There is no reliable way to detect this, and we're not going to pretend otherwise. Whether something reads as unreviewed AI output is a judgment call, usually made quickly, by a volunteer with limited time and no way to know for certain. These calls are subjective and we won't always get them right.
If it happens to you, just say so. A short reply telling us you wrote it yourself is enough, and we'll take you at your word and pick the conversation back up. We would much rather occasionally reopen something we misjudged than treat everyone who posts here as a suspect.
We'd ask for some understanding in return. These calls get made quickly because the volume is real, and time spent second-guessing them is time not spent helping the person in the next thread.
## Attribution
Portions of this policy are adapted from the [Open Home Foundation AI Policy](https://developers.home-assistant.io/docs/ai_policy/).
+19 -9
View File
@@ -2,8 +2,6 @@
Thank you for your interest in contributing to Frigate. This document covers the expectations and guidelines for contributions. Please read it before submitting a pull request.
All participation in this project, including pull requests, issues, and discussions, is covered by our [AI policy](AI_POLICY.md).
## Before you start
### Bugfixes
@@ -23,16 +21,28 @@ Before writing code for a new feature:
## AI usage policy
AI tools are a reality of modern development and we're not opposed to their use. But we need to understand your relationship with the code you're submitting, and we need to hear from you rather than from your AI assistant.
AI tools are a reality of modern development and we're not opposed to their use. But we need to understand your relationship with the code you're submitting. The more AI was involved, the more important it is that you've genuinely reviewed, tested, and understood what it produced.
**Read the [AI policy](AI_POLICY.md) before you open a pull request.** It is short, and it applies to everything you post here. The parts that most often catch people out:
### Requirements when AI is used
- A person has to be in the loop. Don't wire a bot or agent up to open pull requests, issues, or discussions on your behalf.
- Disclose how AI was used. The PR template asks for this. Be honest, it won't automatically disqualify your PR.
- Review and test everything you submit, and be prepared to explain every line when asked.
- Don't use AI to write your PR description or your replies to maintainers.
If AI is used to generate any portion of the code, contributors must adhere to the following requirements:
Pull requests that appear to be unreviewed AI output will be closed without review.
1. **Explicitly disclose the manner in which AI was employed.** The PR template asks for this. Be honest — this won't automatically disqualify your PR. We'd rather have an honest disclosure than find out later. Trust matters more than method.
2. **Perform a comprehensive manual review prior to submitting the pull request.** Don't submit code you haven't read carefully and tested locally.
3. **Be prepared to explain every line of code they submitted when asked about it by a maintainer.** If you can't explain why something works the way it does, you're not ready to submit it.
4. **It is strictly prohibited to use AI to write your posts for you** (bug reports, feature requests, pull request descriptions, GitHub discussions, responding to humans, etc.). We need to hear from _you_, not your AI assistant. These are the spaces where we build trust and understanding with contributors, and that only works if we're talking to each other.
### Established contributors
Contributors with a long history of thoughtful, quality contributions to Frigate have earned trust through that track record. The level of scrutiny we apply to AI usage naturally reflects that trust. This isn't a formal exemption — it's just how trust works. If you've been around, we know how you think and how you work. If you're new, we're still getting to know you, and clear disclosure helps build that relationship.
### What this means in practice
We're not trying to gatekeep how you write code. Use whatever tools make you productive. But there's a difference between using AI as a tool to implement something you understand and handing a feature request to an AI and submitting whatever comes back. The former is fine. The latter creates maintenance risk for the project.
Some honest context: when we review a PR, we're not just evaluating whether the code works today. We're evaluating whether we can maintain it, debug it, and extend it long-term — often without the original author's involvement. Code that the author doesn't deeply understand is code that nobody understands, and that's a liability.
One more thing worth saying directly: most maintainers already have access to the same AI tools you do. A PR that's entirely AI-generated — where the author can't explain the design, debug issues independently, or engage substantively in design discussions — doesn't offer something we couldn't produce ourselves. What makes a contribution genuinely valuable is the human judgment and domain understanding behind it, as well as the engagement during review that shapes it into something we can confidently take on long-term.
## Pull request guidelines
+1 -1
View File
@@ -1,7 +1,7 @@
default_target: local
COMMIT_HASH := $(shell git log -1 --pretty=format:"%h"|tail -1)
VERSION = 0.19.0
VERSION = 0.18.0
IMAGE_REPO ?= ghcr.io/blakeblackshear/frigate
GITHUB_REF_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)
BOARDS= #Initialized empty
+1 -1
View File
@@ -165,7 +165,7 @@ If available, recommended settings are:
#### Setup via the Add Camera Wizard
The [Add Camera Wizard](cameras.md#adding-a-camera-with-the-add-camera-wizard) is the recommended way to add a standard Reolink camera. Before starting, make sure [HTTP is enabled](https://support.reolink.com/articles/360003452893-How-to-Access-Reolink-Cameras-NVRs-Home-Hub-Locally-via-Web-Browsers/) in the camera's advanced network settings. The wizard uses the camera's HTTP API to determine its resolution and choose the recommended stream type from the table above.
The Add Camera Wizard is the recommended way to add a standard Reolink camera. Before starting, make sure [HTTP is enabled](https://support.reolink.com/articles/360003452893-How-to-Access-Reolink-Cameras-NVRs-Home-Hub-Locally-via-Web-Browsers/) in the camera's advanced network settings. The wizard uses the camera's HTTP API to determine its resolution and choose the recommended stream type from the table above.
1. Click **Add Camera** in <NavPath path="Settings > Global configuration > Camera management" />.
2. Choose **Manual selection** as the stream detection method and select **Reolink** as the camera brand.
+1 -44
View File
@@ -7,49 +7,6 @@ import ConfigTabs from "@site/src/components/ConfigTabs";
import TabItem from "@theme/TabItem";
import NavPath from "@site/src/components/NavPath";
## Adding a camera with the Add Camera Wizard
The Add Camera Wizard is the recommended way to add a camera. Click **Add Camera** in <NavPath path="Settings > Global configuration > Camera management" />. The wizard connects to your camera, tests each stream, and writes the camera's configuration for you, including the [go2rtc](go2rtc.md) restream and the live view stream mapping, so a standard setup needs no hand-written YAML.
### Step 1: Name and connection
Enter a name for the camera along with its host or IP address and credentials, then choose how the wizard should find the camera's streams:
- **Probe camera** queries the camera over ONVIF (the ONVIF port is usually 80 or 8080) and asks it for its stream URLs. Some cameras use a separate ONVIF/service account rather than the device admin user, and some require **Use digest authentication** to be enabled.
- **Manual selection** builds a stream URL from a template for the camera brand you pick (Dahua/Amcrest/EmpireTech, Hikvision/Uniview/Annke, Ubiquiti, Reolink, Axis, TP-Link, or Foscam). Choose **Other** to enter a custom RTSP URL directly. Non-RTSP stream types must be [configured manually](#setting-up-camera-inputs).
The name you enter is lowercased and spaces become underscores. If the result still isn't a valid config key, the wizard generates a safe name and stores what you typed as `friendly_name`.
### Step 2: Probe or snapshot
In probe mode, the wizard reports what the camera returned (manufacturer, model, firmware, profile count, and whether PTZ, presets, and [autotracking](autotracking.md) are supported) along with the RTSP URLs it discovered. Test each candidate to see its resolution, frame rate, and codecs together with a snapshot, then select the one you want to use.
In manual mode, the wizard tests the templated URL and shows the same metadata and snapshot.
If no RTSP URLs are found, the credentials may be wrong or the camera may not support ONVIF. Go back and use manual selection instead.
### Step 3: Stream configuration
Assign [roles](#setting-up-camera-inputs) to the stream, and use **Add Another Stream** to add the camera's other streams, for example a substream for `detect` alongside the main stream for `record`. At least one stream must have the `detect` role before you can continue.
**Reduce connections to camera** routes that input through the go2rtc restream so Frigate and the live view share a single connection to the camera instead of each opening their own. See [restream](restream.md) for more detail.
### Step 4: Validation and testing
Connect each stream to get a live preview, an estimated bandwidth figure, and a list of validation results. The wizard checks for the most common misconfigurations, including:
- A detect resolution that is too high (increased resource usage) or too low for reliable detection, or one it could not probe at all
- A stream marked `record` whose audio codec is not AAC, or that has no audio at all
- A stream marked `audio` that carries no audio stream
- Using a restreamed input for the `record` role
- Brand-specific issues, such as an RTSP stream on a Reolink camera that should use http-flv, or a Dahua/Hikvision substream selected for `detect`
**Use stream compatibility mode** passes the stream through go2rtc's ffmpeg module. Enable it if a stream fails to load after several attempts. Note that this also prevents [two way talk](/configuration/live#two-way-talk) from being detected for that stream.
**Save New Camera** writes the configuration and starts the camera right away. No restart is required.
Other features, including [hardware acceleration](hardware_acceleration_video.md), [two way talk](/configuration/live#two-way-talk), and audio transcoding, is configured after the camera has been added. For camera model specific quirks, see the [camera specific](camera_specific.md) docs.
## Setting Up Camera Inputs
Several inputs can be configured for each camera and the role of each input can be mixed and matched based on your needs. This allows you to use a lower resolution stream for object detection, but create recordings from a higher resolution stream, or vice versa.
@@ -112,7 +69,7 @@ Additional cameras are simply added under the camera configuration section.
<ConfigTabs>
<TabItem value="ui">
Navigate to <NavPath path="Settings > Global configuration > Camera management" /> and use the [Add Camera Wizard](#adding-a-camera-with-the-add-camera-wizard) to configure each additional camera.
Navigate to <NavPath path="Settings > Global configuration > Camera management" /> and use the add camera button to configure each additional camera.
</TabItem>
<TabItem value="yaml">
+1 -1
View File
@@ -15,7 +15,7 @@ Frigate uses the bundled go2rtc to power a number of key features:
:::tip[Most users no longer need to configure go2rtc by hand]
The [**camera setup wizard**](cameras.md#adding-a-camera-with-the-add-camera-wizard) is the recommended way to add cameras. Click **Add Camera** in <NavPath path="Settings > Global configuration > Camera management" />, and the wizard probes your camera and writes its configuration for you, including the go2rtc restream and the live stream mapping, so go2rtc is set up automatically.
The **camera setup wizard** is the recommended way to add cameras. Click **Add Camera** in <NavPath path="Settings > Global configuration > Camera management" />, and the wizard probes your camera and writes its configuration for you, including the go2rtc restream and the live stream mapping, so go2rtc is set up automatically.
This guide is mainly useful if you are **upgrading from an older version and have existing cameras that don't yet use go2rtc**, or if you want to fine-tune a stream by hand (for example, to transcode a codec your browser can't play). The [go2rtc troubleshooting guide](/troubleshooting/go2rtc) applies regardless of how your cameras were added.
+1 -1
View File
@@ -34,7 +34,7 @@ If you are using go2rtc, you should adjust the following settings in your camera
- Video codec: **H.264** - provides the most compatible video codec with all Live view technologies and browsers. Avoid any kind of "smart codec" or "+" codec like _H.264+_ or _H.265+_. as these non-standard codecs remove keyframes (see below).
- Audio codec: **AAC** - provides the most compatible audio codec with all Live view technologies and browsers that support audio.
- I-frame interval (sometimes called the keyframe interval, the interframe space, or the GOP length): match your camera's frame rate, or choose "1x" (for interframe space on Reolink cameras). For example, if your stream outputs 20fps, your i-frame interval should be 20 (or 1x on Reolink). Values higher than the frame rate will cause the stream to take longer to begin playback. See [this page](https://web.archive.org/web/20251213190836/https://gardinal.net/understanding-the-keyframe-interval/) for more on keyframes. For many users this may not be an issue, but it should be noted that a 1x i-frame interval will cause more storage utilization if you are using the stream for the `record` role as well.
- I-frame interval (sometimes called the keyframe interval, the interframe space, or the GOP length): match your camera's frame rate, or choose "1x" (for interframe space on Reolink cameras). For example, if your stream outputs 20fps, your i-frame interval should be 20 (or 1x on Reolink). Values higher than the frame rate will cause the stream to take longer to begin playback. See [this page](https://gardinal.net/understanding-the-keyframe-interval/) for more on keyframes. For many users this may not be an issue, but it should be noted that a 1x i-frame interval will cause more storage utilization if you are using the stream for the `record` role as well.
The default video and audio codec on your camera may not always be compatible with your browser, which is why setting them to H.264 and AAC is recommended. See the [go2rtc docs](https://github.com/AlexxIT/go2rtc?tab=readme-ov-file#codecs-madness) for codec support information.
+1 -1
View File
@@ -144,7 +144,7 @@ At this point you should be able to start Frigate and a basic config will be cre
### Step 2: Add a camera
Click the **Add Camera** button in <NavPath path="Settings > Global configuration > Camera management" /> to use the camera setup wizard to get your first camera added into Frigate. See [Adding a camera with the Add Camera Wizard](../configuration/cameras.md#adding-a-camera-with-the-add-camera-wizard) for a walkthrough of each step.
Click the **Add Camera** button in <NavPath path="Settings > Global configuration > Camera management" /> to use the camera setup wizard to get your first camera added into Frigate.
### Step 3: Configure hardware acceleration (recommended)
+4 -3
View File
@@ -19,6 +19,7 @@
"docusaurus-plugin-openapi-docs": "^4.5.1",
"docusaurus-theme-openapi-docs": "^4.5.1",
"js-yaml": "^4.1.1",
"marked": "^16.4.2",
"prism-react-renderer": "^2.4.1",
"raw-loader": "^4.0.2",
"react": "^18.3.1",
@@ -12320,9 +12321,9 @@
}
},
"node_modules/immutable": {
"version": "5.1.5",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz",
"integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==",
"version": "5.1.9",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz",
"integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==",
"license": "MIT"
},
"node_modules/import-fresh": {
-23
View File
@@ -68,7 +68,6 @@ from frigate.util.config import (
find_config_file,
redact_credential,
)
from frigate.util.object_names import get_categorized_object_names
from frigate.util.schema import get_config_schema
from frigate.util.services import (
get_nvidia_driver_info,
@@ -1300,28 +1299,6 @@ def get_sub_labels(
return JSONResponse(content=sub_labels)
@router.get(
"/categorized_object_names",
dependencies=[Depends(allow_any_authenticated())],
summary="Get known object names by object type",
description="""Returns the sub labels and attributes this install can attach,
grouped by object type. Unlike /sub_labels, which reflects what has already been
detected, this reads the config and model files, so it covers recognized face
names, named license plates, custom object classification categories, and the
detector attributes of tracked objects.""",
)
def categorized_object_names(
request: Request,
object_type: str | None = None,
allowed_cameras: list[str] = Depends(get_allowed_cameras_for_filter),
):
return JSONResponse(
content=get_categorized_object_names(
request.app.frigate_config, allowed_cameras, object_type
)
)
@router.get("/audio_labels", dependencies=[Depends(allow_any_authenticated())])
def get_audio_labels():
labels = load_labels("/audio-labelmap.txt", prefill=521)
-1
View File
@@ -83,7 +83,6 @@ def require_admin_by_default():
"/nvinfo",
"/labels",
"/sub_labels",
"/categorized_object_names",
"/plus/models",
"/recognized_license_plates",
"/timeline",
+2 -37
View File
@@ -50,7 +50,6 @@ from frigate.jobs.vlm_watch import (
stop_vlm_watch_job,
)
from frigate.models import Event
from frigate.util.object_names import get_categorized_object_names
logger = logging.getLogger(__name__)
@@ -540,13 +539,6 @@ async def execute_tool(
if tool_name == "search_objects":
return await _execute_search_objects(request, arguments, allowed_cameras)
if tool_name == "get_categorized_object_names":
return JSONResponse(
content=_execute_get_categorized_object_names(
request, arguments, allowed_cameras
)
)
if tool_name == "find_similar_objects":
result = await _execute_find_similar_objects(
request, arguments, allowed_cameras
@@ -725,29 +717,6 @@ async def _execute_set_camera_state(
return {"success": True, "camera": camera, "feature": feature, "value": value}
def _execute_get_categorized_object_names(
request: Request,
arguments: dict[str, Any],
allowed_cameras: list[str],
) -> dict[str, Any]:
object_type = arguments.get("object_type") or None
names = get_categorized_object_names(
request.app.frigate_config, allowed_cameras, object_type
)
if not names:
return {
"names": {},
"message": (
f"No names configured for '{object_type}'."
if object_type
else "No names configured; search by label or semantic_query."
),
}
return {"names": names}
async def _execute_tool_internal(
tool_name: str,
arguments: dict[str, Any],
@@ -772,10 +741,6 @@ async def _execute_tool_internal(
except (json.JSONDecodeError, AttributeError) as e:
logger.warning(f"Failed to extract tool result: {e}")
return {"error": "Failed to parse tool result"}
elif tool_name == "get_categorized_object_names":
return _execute_get_categorized_object_names(
request, arguments, allowed_cameras
)
elif tool_name == "find_similar_objects":
return await _execute_find_similar_objects(request, arguments, allowed_cameras)
elif tool_name == "set_camera_state":
@@ -808,8 +773,8 @@ async def _execute_tool_internal(
else:
logger.error(
"Tool call failed: unknown tool %r. Expected one of: search_objects, find_similar_objects, "
"get_categorized_object_names, get_live_context, start_camera_watch, stop_camera_watch, "
"get_profile_status, get_recap. Arguments received: %s",
"get_live_context, start_camera_watch, stop_camera_watch, get_profile_status, get_recap. "
"Arguments received: %s",
tool_name,
json.dumps(arguments),
)
+120 -68
View File
@@ -262,10 +262,6 @@ def get_tool_definitions(
`attribute` parameter is exposed for filtering by their labels. When the
embeddings model only understands English (JinaV1), the `semantic_query`
description instructs the model to write the query in English.
Descriptions here stay mechanical: which tool to reach for, and how the
filters relate to each other, is stated once in the system prompt so the
guidance is not paid for twice on every request.
"""
search_objects_properties: dict[str, Any] = {
"camera": {
@@ -274,13 +270,26 @@ def get_tool_definitions(
},
"label": {
"type": "string",
"description": "Tracked object class to filter by.",
"description": (
"Generic object class to filter by — one of the tracked detector "
"labels such as 'person', 'package', 'car', 'dog', 'bird'. Use "
"this for broad queries like 'show me all cars today'. Combine "
"with semantic_query when the user also describes appearance or "
"behavior (e.g. label='person', semantic_query='riding a lawn "
"mower')."
),
},
"sub_label": {
"type": "string",
"description": (
"Name recognized in the detection: a person, delivery company, "
"animal species or breed, or license plate."
"Filter by a DISCRETE NAMED entity recognized in the detection. "
"Use this for: a known person's name ('John'), a delivery "
"company ('Amazon', 'UPS'), a recognized animal species or "
"breed ('blue jay', 'cardinal', 'golden retriever'), or a "
"license plate string. When filtering by a specific name, set "
"only sub_label and leave label unset. Do NOT use sub_label "
"for descriptions of appearance, clothing, or actions — those "
"belong in semantic_query."
),
},
"after": {
@@ -304,11 +313,20 @@ def get_tool_definitions(
}
if attribute_classifications:
model_outline = "; ".join(
f"{m['name']} (applies to {', '.join(m['objects']) or 'any object'})"
for m in attribute_classifications
)
search_objects_properties["attribute"] = {
"type": "string",
"description": (
"Attribute label produced by a configured classification model "
"(case-sensitive)."
"Filter by a classification attribute label produced by a "
"configured attribute classification model. Use this INSTEAD "
"of semantic_query when the user's request matches one of "
"these classifications. Configured models: "
f"{model_outline}. "
"Set the value to the attribute label that matches the user's "
"phrasing (case-sensitive)."
),
}
@@ -316,12 +334,29 @@ def get_tool_definitions(
search_objects_properties["semantic_query"] = {
"type": "string",
"description": (
"Description of an appearance or activity, used to semantically "
"narrow results."
"Optional natural-language description of a PHYSICAL "
"CHARACTERISTIC, APPEARANCE, or ACTIVITY the user mentioned, "
"used to semantically narrow results. Only set this when the "
"user describes something beyond what label and sub_label can "
"express on their own.\n"
"USE for descriptive phrases like: 'riding a lawn mower', "
"'wearing a red jacket', 'carrying a package', 'walking a "
"dog', 'on a bicycle', 'holding an umbrella'.\n"
"DO NOT USE for:\n"
"- specific named people, pets, or delivery companies → use sub_label\n"
"- animal species or breed names like 'blue jay', 'cardinal', "
"'golden retriever' → use sub_label\n"
"- license plate strings → use sub_label\n"
"- generic object queries like 'all cars today' or 'every "
"person' → use label alone with no semantic_query\n"
"When set, combine with label/time/camera/zone filters as "
"usual (e.g. label='person', semantic_query='riding a lawn "
"mower', after='2024-05-01T00:00:00Z')."
+ (
" The configured embeddings model only understands English, so "
"always write this in English, translating the user's "
"description if they phrased it in another language."
" The configured embeddings model only understands "
"English, so always write semantic_query in English, "
"translating the user's description if they phrased it "
"in another language."
if embeddings_language == "english"
else ""
)
@@ -329,10 +364,26 @@ def get_tool_definitions(
}
search_objects_description = (
"Search the historical record of tracked detections. Use this ONLY for "
"questions about the PAST, e.g. 'did anyone come by today?', 'when was the "
"last car?'. For alerting on future events use start_camera_watch instead."
"Search the historical record of detected objects in Frigate. "
"Use this ONLY for questions about the PAST e.g. 'did anyone come by today?', "
"'when was the last car?', 'show me detections from yesterday'. "
"Do NOT use this for monitoring or alerting requests about future events — "
"use start_camera_watch instead for those. "
"An 'object' in Frigate represents a tracked detection (e.g., a person, package, car).\n\n"
"Choose filters based on what the user is asking for:\n"
"- Generic class query ('show me all cars today'): set `label` only.\n"
"- Specific NAMED entity (known person, delivery company, animal "
"species/breed like 'blue jay' or 'golden retriever', license "
"plate): set `sub_label` only and leave `label` unset.\n"
)
if semantic_search_enabled:
search_objects_description += (
"- Physical CHARACTERISTIC, APPEARANCE, or ACTIVITY that is not a "
"discrete name ('person riding a lawn mower', 'someone in a red "
"jacket', 'person carrying a package'): set `semantic_query` with "
"the descriptive phrase, optionally alongside `label` for the "
"object class. Do NOT put descriptive phrases in sub_label."
)
return [
{
@@ -347,34 +398,20 @@ def get_tool_definitions(
"required": [],
},
},
{
"type": "function",
"function": {
"name": "get_categorized_object_names",
"description": (
"Every name that can be attached as a sub_label, grouped by object "
"type: recognized faces, named license plates, classification "
"categories, and delivery logos."
),
"parameters": {
"type": "object",
"properties": {
"object_type": {
"type": "string",
"description": "Optional object label (e.g. 'person', 'car'). Omit for all.",
},
},
"required": [],
},
},
},
{
"type": "function",
"function": {
"name": "find_similar_objects",
"description": (
"Find tracked objects visually and semantically similar to a "
"specific past event. Requires semantic search to be enabled."
"Find tracked objects that are visually and semantically similar "
"to a specific past event. Use this when the user references a "
"particular object they have seen and wants to find other "
"sightings of the same or similar one ('that green car', 'the "
"person in the red jacket', 'the package that was delivered'). "
"Prefer this over search_objects whenever the user's intent is "
"'find more like this specific one.' Use search_objects first "
"only if you need to locate the anchor event. Requires semantic "
"search to be enabled."
),
"parameters": {
"type": "object",
@@ -436,8 +473,9 @@ def get_tool_definitions(
"function": {
"name": "set_camera_state",
"description": (
"Change a camera's feature state, e.g. turn detection on or off. "
"Only call this when the user explicitly asks to change a setting. "
"Change a camera's feature state (e.g., turn detection on/off, enable/disable recordings). "
"Use camera='*' to apply to all cameras at once. "
"Only call this tool when the user explicitly asks to change a camera setting. "
"Requires admin privileges."
),
"parameters": {
@@ -479,7 +517,7 @@ def get_tool_definitions(
},
"value": {
"type": "string",
"description": "The value to set, as accepted by the chosen feature.",
"description": "The value to set. ON or OFF for toggles, a number for thresholds, a profile name or 'none' for profile.",
},
},
"required": ["camera", "feature", "value"],
@@ -491,9 +529,11 @@ def get_tool_definitions(
"function": {
"name": "get_live_context",
"description": (
"Current live image and detections (tracked objects, zones, "
"timestamps) for one camera. Use this for questions about what is "
"happening right now. Call it again for each additional camera."
"Get the current live image and detection information for a single camera: objects being tracked, "
"zones, timestamps. Use this to understand what is visible in the live view. "
"Call this when answering questions about what is happening right now on a specific camera. "
"Operates on one camera at a time; call the tool again for each additional camera. "
"Wildcards and empty values are not accepted."
),
"parameters": {
"type": "object",
@@ -501,8 +541,8 @@ def get_tool_definitions(
"camera": {
"type": "string",
"description": (
"Exact name of a single camera. Wildcards (e.g. '*', "
"'all') and empty strings are not accepted."
"Exact name of a single camera to get live context for. "
"Wildcards (e.g. '*', 'all') and empty strings are not accepted."
),
},
},
@@ -515,9 +555,10 @@ def get_tool_definitions(
"function": {
"name": "start_camera_watch",
"description": (
"Start a continuous watch job that monitors a camera and notifies "
"the user when a condition is met, e.g. 'tell me when guests "
"arrive'. Only one watch job can run at a time. Returns a job ID."
"Start a continuous VLM watch job that monitors a camera and sends a notification "
"when a specified condition is met. Use this when the user wants to be alerted about "
"a future event, e.g. 'tell me when guests arrive' or 'notify me when the package is picked up'. "
"Only one watch job can run at a time. Returns a job ID."
),
"parameters": {
"type": "object",
@@ -557,7 +598,10 @@ def get_tool_definitions(
"type": "function",
"function": {
"name": "stop_camera_watch",
"description": "Cancel the currently running watch job.",
"description": (
"Cancel the currently running VLM watch job. Use this when the user wants to "
"stop a previously started watch, e.g. 'stop watching the front door'."
),
"parameters": {
"type": "object",
"properties": {},
@@ -570,9 +614,11 @@ def get_tool_definitions(
"function": {
"name": "get_profile_status",
"description": (
"Get the active profile and when each profile was last activated. "
"Call this before get_recap to derive the time window for requests "
"like 'what happened while I was away?'."
"Get the current profile status including the active profile and "
"timestamps of when each profile was last activated. Use this to "
"determine time periods for recap requests — e.g. when the user asks "
"'what happened while I was away?', call this first to find the relevant "
"time window based on profile activation history."
),
"parameters": {
"type": "object",
@@ -586,9 +632,11 @@ def get_tool_definitions(
"function": {
"name": "get_recap",
"description": (
"Get all activity (alerts and detections) for a time period, as a "
"chronological list with camera, objects, zones, and descriptions "
"when available. Summarize the results for the user."
"Get a recap of all activity (alerts and detections) for a given time period. "
"Use this after calling get_profile_status to retrieve what happened during "
"a specific window — e.g. 'what happened while I was away?'. Returns a "
"chronological list of activity with camera, objects, zones, and GenAI-generated "
"descriptions when available. Summarize the results for the user."
),
"parameters": {
"type": "object",
@@ -675,13 +723,14 @@ def build_chat_system_prompt(
)
speed_units_section = f"\n\nReport object speeds to the user in {speed_unit}."
filter_routing_section = (
"\n\nWhen routing a search_objects call, pick filters by the shape of the user's request:\n"
"- Generic class ('show me all cars today'): set `label` only.\n"
"- Specific named entity — a known person ('John'), delivery company ('Amazon'), animal species/breed ('blue jay', 'golden retriever'), or license plate: set `sub_label` only and leave `label` unset. Call get_categorized_object_names first and use the exact spelling it returns; a guessed spelling matches nothing. If the name is absent, say it is not configured rather than searching for it."
)
semantic_search_section = ""
if semantic_search_enabled:
filter_routing_section += "\n- Physical characteristic, appearance, or activity that is NOT a discrete name ('riding a lawn mower', 'someone in a red jacket'): set `semantic_query` with the descriptive phrase, optionally combined with `label`. Never put descriptive phrases in `sub_label`."
semantic_search_section = (
"\n\nWhen routing a search_objects call, pick filters by the shape of the user's request:\n"
"- Generic class ('show me all cars today'): set `label` only.\n"
"- Specific named entity — a known person ('John'), delivery company ('Amazon'), animal species/breed ('blue jay', 'cardinal', 'golden retriever'), or license plate: set `sub_label` only and leave `label` unset.\n"
"- Physical characteristic, appearance, or activity that is NOT a discrete name ('find me people riding a lawn mower', 'someone in a red jacket', 'a person carrying a package'): set `semantic_query` with the descriptive phrase, optionally combined with `label` for the object class. Never put descriptive phrases in `sub_label`."
)
attribute_classification_section = ""
if attribute_classifications:
@@ -690,9 +739,9 @@ def build_chat_system_prompt(
for m in attribute_classifications
)
attribute_classification_section = (
"\n\nConfigured attribute classification models:\n"
"\n\nAttribute classification models are configured for the following object types:\n"
f"{model_lines}\n"
"When the user's request matches one of these classifications, set the search_objects `attribute` field to the matching label (case-sensitive) rather than using `semantic_query`. Reserve `semantic_query` for descriptive phrases outside the configured attribute labels."
"When the user's request matches one of these classifications, set the search_objects `attribute` field to the matching label rather than using `semantic_query`. Reserve `semantic_query` for descriptive phrases that fall outside the configured attribute labels."
)
return f"""You are a helpful assistant for Frigate, a security camera NVR system. You help users answer questions about their cameras, detected objects, and events.
@@ -701,6 +750,9 @@ Current server local date and time: {current_date_str} at {current_time_str}
Do not start your response with phrases like "I will check...", "Let me see...", or "Let me look...". Answer directly.
Always present times in the server's local timezone. When tool results include start_time_local and end_time_local, quote those strings exactly; never convert or invent timestamps, and fall back to UTC or ISO format only when a result has no local time fields. Resolve relative dates like "today" or "this week" against the current date above, and pass dates to tools in ISO 8601 (e.g. {current_date_str}T00:00:00Z for the start of today).
Always present times to the user in the server's local timezone. When tool results include start_time_local and end_time_local, use those exact strings when listing or describing detection times—do not convert or invent timestamps. Do not use UTC or ISO format with Z for the user-facing answer unless the tool result only provides Unix timestamps without local time fields.
When users ask about "today", "yesterday", "this week", etc., use the current date above as reference.
When searching for objects or events, use ISO 8601 format for dates (e.g., {current_date_str}T00:00:00Z for the start of today).
Always be accurate with time calculations based on the current date provided.
When the user refers to a specific object they have seen ("that green car", "the person in the red jacket", "a package left today"), prefer find_similar_objects over search_objects, using search_objects only to locate the anchor event and passing its id along. Keep search_objects for generic queries like "show me all cars today". If a user message begins with [attached_event:<id>], treat that id as the anchor for any similarity or "tell me more" request in the same message.{filter_routing_section}{attribute_classification_section}{cameras_section}{speed_units_section}"""
When a user refers to a specific object they have seen or describe with identifying details ("that green car", "the person in the red jacket", "a package left today"), prefer the find_similar_objects tool over search_objects. Use search_objects first only to locate the anchor event, then pass its id to find_similar_objects. For generic queries like "show me all cars today", keep using search_objects. If a user message begins with [attached_event:<id>], treat that event id as the anchor for any similarity or "tell me more" request in the same message and call find_similar_objects with that id.{semantic_search_section}{attribute_classification_section}{cameras_section}{speed_units_section}"""
+4 -18
View File
@@ -115,11 +115,9 @@ class PendingReviewSegment:
if self._frame is not None:
self.thumb_time = datetime.datetime.now().timestamp()
self.has_frame = True
Path(self.frame_path).parent.mkdir(parents=True, exist_ok=True)
if not cv2.imwrite(
cv2.imwrite(
self.frame_path, self._frame, [int(cv2.IMWRITE_WEBP_QUALITY), 60]
):
logger.error("Failed to write review thumbnail to %s", self.frame_path)
)
def save_full_frame(self, camera_config: CameraConfig, frame: np.ndarray) -> None:
color_frame = cv2.cvtColor(frame, cv2.COLOR_YUV2BGR_I420)
@@ -130,11 +128,9 @@ class PendingReviewSegment:
if self._frame is not None:
self.has_frame = True
Path(self.frame_path).parent.mkdir(parents=True, exist_ok=True)
if not cv2.imwrite(
cv2.imwrite(
self.frame_path, self._frame, [int(cv2.IMWRITE_WEBP_QUALITY), 60]
):
logger.error("Failed to write review thumbnail to %s", self.frame_path)
)
def get_data(self, ended: bool) -> dict:
end_time = None
@@ -378,16 +374,6 @@ class ReviewSegmentMaintainer(threading.Thread):
"""Forcibly end the pending segment for a camera."""
segment = self.active_review_segments.get(camera)
if segment:
if self.indefinite_events.get(camera):
self.indefinite_events[camera] = {}
now = datetime.datetime.now().timestamp()
if segment.last_alert_time == sys.maxsize:
segment.last_alert_time = now
if segment.last_detection_time == sys.maxsize:
segment.last_detection_time = now
prev_data = segment.get_data(False)
return self._publish_segment_end(segment, prev_data)
return None
-209
View File
@@ -1,209 +0,0 @@
"""Aggregation of the known sub label names an object can be tagged with."""
import logging
import os
from pathvalidate import sanitize_filename
from frigate.config import FrigateConfig
from frigate.config.classification import ObjectClassificationType
from frigate.const import CLIPS_DIR, FACE_DIR, MODEL_CACHE_DIR
from frigate.util.builtin import load_labels
logger = logging.getLogger(__name__)
# subdirectory of FACE_DIR holding unassigned training images, not a face name
FACE_TRAIN_DIR = "train"
# category used by classification models for "no match", never attached to an object
CLASSIFICATION_NONE_CATEGORY = "none"
def get_categorized_object_names(
config: FrigateConfig,
allowed_cameras: list[str],
object_type: str | None = None,
) -> dict[str, list[str]]:
"""Collect every sub label name this install can attach, by object type.
Unlike the database-backed /sub_labels endpoint, this reads the config and
model files, so it also covers names that are configured but have not been
detected yet. Names come from the detector's logo attributes (limited to
objects the allowed cameras actually track), LPR known plate names,
registered face names, and custom object classification categories.
Structural attributes such as `face` and `license_plate` are excluded: they
describe a part of an object rather than naming it, and are never attached
as a sub label.
Args:
config: The running Frigate config
allowed_cameras: Cameras the requesting user may see
object_type: Optional object label to restrict the result to
Returns:
Mapping of object label to its known sub label names, sorted and
deduplicated. Object types with no known names are omitted.
"""
tracked_objects = _get_tracked_objects(config, allowed_cameras)
names: dict[str, set[str]] = {}
logos = set(config.model.all_attribute_logos)
# 1. detector logo attributes, only for objects that are actually tracked
for label, label_attributes in config.model.attributes_map.items():
if label not in tracked_objects:
continue
label_logos = logos.intersection(label_attributes)
if label_logos:
names.setdefault(label, set()).update(label_logos)
# 2. LPR known plate names, for objects that can carry a plate
if config.lpr.known_plates and _lpr_enabled(config, allowed_cameras):
known_plates = set(config.lpr.known_plates)
for label in _objects_with_attribute(config, tracked_objects, "license_plate"):
names.setdefault(label, set()).update(known_plates)
# 3. registered face names, for objects that can carry a face
if _face_recognition_enabled(config, allowed_cameras):
face_names = _get_face_names()
if face_names:
for label in _objects_with_attribute(config, tracked_objects, "face"):
names.setdefault(label, set()).update(face_names)
# 4. custom object classification categories
for model_key, model_config in config.classification.custom.items():
if not model_config.enabled or model_config.object_config is None:
continue
if (
model_config.object_config.classification_type
!= ObjectClassificationType.sub_label
):
continue
categories = _get_classification_categories(model_key)
if not categories:
continue
for label in model_config.object_config.objects:
names.setdefault(label, set()).update(categories)
return {
label: sorted(label_names)
for label, label_names in sorted(names.items())
if label_names and (object_type is None or label == object_type)
}
def _get_tracked_objects(config: FrigateConfig, allowed_cameras: list[str]) -> set[str]:
"""Get the union of objects tracked by the cameras the user can see."""
tracked: set[str] = set()
for camera_name in allowed_cameras:
camera_config = config.cameras.get(camera_name)
if camera_config is None:
continue
tracked.update(camera_config.objects.track)
return tracked
def _objects_with_attribute(
config: FrigateConfig, tracked_objects: set[str], attribute: str
) -> set[str]:
"""Get the tracked objects that a given attribute can be recognized on.
The attribute may also be tracked as an object in its own right, as
`license_plate` is on a dedicated LPR camera, in which case the name is
attached to that object directly.
"""
objects = {
label
for label, label_attributes in config.model.attributes_map.items()
if attribute in label_attributes and label in tracked_objects
}
if attribute in tracked_objects:
objects.add(attribute)
return objects
def _lpr_enabled(config: FrigateConfig, allowed_cameras: list[str]) -> bool:
return any(
config.cameras[camera_name].lpr.enabled
for camera_name in allowed_cameras
if camera_name in config.cameras
)
def _face_recognition_enabled(
config: FrigateConfig, allowed_cameras: list[str]
) -> bool:
return any(
config.cameras[camera_name].face_recognition.enabled
for camera_name in allowed_cameras
if camera_name in config.cameras
)
def _get_face_names() -> set[str]:
"""Get the names of every registered face collection."""
if not os.path.exists(FACE_DIR):
return set()
try:
entries = os.listdir(FACE_DIR)
except OSError:
logger.debug("Failed to read face directory %s", FACE_DIR)
return set()
return {
name
for name in entries
if name != FACE_TRAIN_DIR and os.path.isdir(os.path.join(FACE_DIR, name))
}
def _get_classification_categories(model_key: str) -> set[str]:
"""Get the categories a custom classification model can output.
The trained labelmap is authoritative, but it only exists once the model
has been trained, so fall back to the dataset directories that will become
the labelmap on the next training run.
"""
safe_key = sanitize_filename(model_key)
categories: set[str] = set()
labelmap_path = os.path.join(MODEL_CACHE_DIR, safe_key, "labelmap.txt")
if os.path.exists(labelmap_path):
try:
labelmap = load_labels(labelmap_path, prefill=0, indexed=False)
except OSError:
logger.debug("Failed to read labelmap %s", labelmap_path)
labelmap = {}
categories.update(label for label in labelmap.values() if label)
dataset_dir = os.path.join(CLIPS_DIR, safe_key, "dataset")
if os.path.exists(dataset_dir):
try:
entries = os.listdir(dataset_dir)
except OSError:
logger.debug("Failed to read dataset directory %s", dataset_dir)
entries = []
categories.update(
name for name in entries if os.path.isdir(os.path.join(dataset_dir, name))
)
categories.discard(CLASSIFICATION_NONE_CATEGORY)
return categories
+4 -4
View File
@@ -73,7 +73,7 @@
"react-markdown": "^9.0.1",
"react-router-dom": "^6.30.3",
"react-swipeable": "^7.0.2",
"react-zoom-pan-pinch": "3.4.4",
"react-zoom-pan-pinch": "^3.7.0",
"remark-gfm": "^4.0.0",
"scroll-into-view-if-needed": "^3.1.0",
"sonner": "^2.0.7",
@@ -12354,9 +12354,9 @@
}
},
"node_modules/react-zoom-pan-pinch": {
"version": "3.4.4",
"resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.4.4.tgz",
"integrity": "sha512-lGTu7D9lQpYEQ6sH+NSlLA7gicgKRW8j+D/4HO1AbSV2POvKRFzdWQ8eI0r3xmOsl4dYQcY+teV6MhULeg1xBw==",
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.7.0.tgz",
"integrity": "sha512-UmReVZ0TxlKzxSbYiAj+LeGRW8s8LraAFTXRAxzMYnNRgGPsxCudwZKVkjvGmjtx7SW/hZamt69NUmGf4xrkXA==",
"license": "MIT",
"engines": {
"node": ">=8",
+1 -1
View File
@@ -87,7 +87,7 @@
"react-markdown": "^9.0.1",
"react-router-dom": "^6.30.3",
"react-swipeable": "^7.0.2",
"react-zoom-pan-pinch": "3.4.4",
"react-zoom-pan-pinch": "^3.7.0",
"remark-gfm": "^4.0.0",
"scroll-into-view-if-needed": "^3.1.0",
"sonner": "^2.0.7",
+1 -2
View File
@@ -61,8 +61,7 @@
"error": {
"endTimeMustAfterStartTime": "L'hora de finalització ha de ser posterior a l'hora d'inici",
"noVaildTimeSelected": "No s'ha seleccionat un rang de temps vàlid",
"failed": "No s'ha pogut inciar l'exportació: {{error}}",
"noValidTimeSelected": "No s'ha seleccionat cap interval de temps vàlid"
"failed": "No s'ha pogut inciar l'exportació: {{error}}"
},
"view": "Vista",
"queued": "Exporta a la cua. Mostra el progrés a la pàgina d'exportacions.",
@@ -493,9 +493,6 @@
"max_concurrent": {
"label": "Màxim d'exportacions concurrents",
"description": "Nombre màxim de treballs d'exportació a processar al mateix temps."
},
"chapters": {
"label": "Metadades de capítol per incrustar en els enregistraments exportats"
}
},
"preview": {
+2 -5
View File
@@ -380,9 +380,6 @@
"max_concurrent": {
"label": "Màxim d'exportacions concurrents",
"description": "Nombre màxim de treballs d'exportació a processar al mateix temps."
},
"chapters": {
"label": "Metadades de capítol per incrustar en els enregistraments exportats"
}
},
"preview": {
@@ -1920,7 +1917,7 @@
},
"model_type": {
"label": "Tipus de Model de detecció d'objecte",
"description": "Tipus d'arquitectura del model de detector (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) utilitzat per alguns detectors per a l'optimització"
"description": "Tipus d'arquitectura del model de detector (ssd, yolox, yolonas) usat per l'optimització d'alguns detectors."
}
},
"model_path": {
@@ -1969,7 +1966,7 @@
},
"model_type": {
"label": "Tipus de model de detecció d'objectes",
"description": "Tipus d'arquitectura del model de detector (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) utilitzat per alguns detectors per a l'optimització."
"description": "Tipus d'arquitectura del model de detector (ssd, yolox, yolonas) utilitzat per alguns detectors per a l'optimització."
}
},
"genai": {
@@ -192,20 +192,7 @@
"title": "Edita el model de classificació",
"descriptionState": "Edita les classes per a aquest model de classificació d'estats. Els canvis requeriran tornar a entrenar el model.",
"descriptionObject": "Edita el tipus d'objecte i el tipus de classificació per a aquest model de classificació d'objectes.",
"stateClassesInfo": "S'ha actualitzat el model. Restringeix el model perquè els canvis de classe tinguin efecte.",
"enabled": "Habilitat",
"enabledDesc": "Executa aquest model. Quan està desactivat, deixa d'executar-se i ja no classifica.",
"saveAttempts": "Desa els intents",
"saveAttemptsDesc": "Nombre d'imatges de classificació que s'intenten mantenir per a les classificacions recents UI.",
"motion": "Executa en moviment",
"motionDesc": "Executa la classificació quan es detecta el moviment dins de l'escapçat configurat.",
"interval": "Interval",
"intervalDesc": "Segons entre les classificacions periòdiques. Deixeu-ho buit per a executar-se només en moviment.",
"intervalPlaceholder": "Sense interval",
"errors": {
"saveAttemptsInvalid": "Els intents de desar han de ser un nombre sencer de 0 o més",
"intervalInvalid": "L'interval ha de ser un nombre sencer més gran que 0"
}
"stateClassesInfo": "Nota: Canviar les classes d'estat requereix tornar a entrenar el model amb les classes actualitzades."
},
"tooltip": {
"trainingInProgress": "El model s'està entrenant actualment",
@@ -215,6 +202,5 @@
},
"none": "Cap",
"reclassifyImageAs": "Reclassifica la imatge com a:",
"reclassifyImage": "Reclassifica la imatge",
"disabled": "Desactivat"
"reclassifyImage": "Reclassifica la imatge"
}
+1 -1
View File
@@ -303,7 +303,7 @@
},
"offset": {
"label": "Òfset d'Anotació",
"desc": "Aquestes dades provenen del canal de detecció de la càmera, però estan sobreposades a les imatges del canal de registre. És poc probable que els dos corrents estiguin perfectament sincronitzats. Com a resultat, la caixa contenidora i les imatges no s'alinearan perfectament. Podeu utilitzar aquest paràmetre per a compensar les anotacions cap endavant o cap enrere en el temps per a alinear-les millor amb el metratge gravat.",
"desc": "Aquestes dades provenen del flux de detecció de la càmera, però se superposen a les imatges del flux de gravació. És poc probable que els dos fluxos estiguin perfectament sincronitzats. Com a resultat, el quadre delimitador i les imatges no s'alinearan perfectament. Tanmateix, es pot utilitzar el camp <code>annotation_offset</code> per ajustar-ho.",
"millisecondsToOffset": "Millisegons per l'òfset de detecció d'anotacions per. <em>Per defecte: 0</em>",
"tips": "Reduïu el valor si la reproducció del vídeo es troba per davant dels quadres i els punts de ruta, i augmenteu-lo si es troba per darrere. Aquest valor pot ser negatiu.",
"toast": {
+5 -13
View File
@@ -698,7 +698,7 @@
"title": "Crear un nou usuari",
"confirmPassword": "Siusplau, confirma la contrasenya",
"usernameOnlyInclude": "El nom d'usuari només pot contenir lletres, números, . o _",
"desc": "Afegeix un compte d'usuari nou i especifica un rol per a l'accés a les àrees de la interfície d'usuari de Frigate."
"desc": "Afegeix un nou compte d'usuari i especifica un rol per accedir a àrees de la interfície de Frigate."
}
},
"title": "Usuaris",
@@ -1323,7 +1323,7 @@
"details": {
"edit": "Edita els detalls de la càmera",
"title": "Edita els detalls de la càmera",
"description": "Actualitza el nom de visualització, l'URL extern i la visibilitat utilitzada per a aquesta càmera a tota la interfície d'usuari de Frigate.",
"description": "Actualitza el nom de visualització, l'URL extern i la visibilitat utilitzada per a aquesta càmera a tota la interfície d'usuari de la Fragata.",
"friendlyNameLabel": "Nom a mostrar",
"friendlyNameHelp": "Nom amistós que es mostra per a aquesta càmera a tota la interfície d'usuari de Frigate. Deixeu-ho en blanc per utilitzar l'ID de la càmera.",
"webuiUrlLabel": "URL de la interfície web de la càmera",
@@ -1484,7 +1484,7 @@
"successMulti_other": "Configuració copiada a {{count}} càmeres",
"successMultiWithRestart_one": "Configuració copiada a la càmera {{count}}. Reinicia Frigate per aplicar tots els canvis.",
"successMultiWithRestart_many": "Configuració copiada a {{count}} càmeres. Reinicia Frigate per aplicar tots els canvis.",
"successMultiWithRestart_other": "Configuració copiada a {{count}} càmeres. Reinicia Frigate per aplicar tots els canvis.",
"successMultiWithRestart_other": "Configuració copiada a {{count}} càmeres. Reinicia la fragata per aplicar tots els canvis.",
"partialFailure": "{{successCount}} seccions aplicades; «{{failedSection}}» ha fallat: {{errorMessage}}",
"partialFailureMulti": "S'ha copiat a {{successCount}} càmera(es); ha fallat {{failed}}: {{errorMessage}}",
"newCameraPartialFailure": "S'ha creat la càmera {{cameraName}} però no s'han pogut copiar alguns paràmetres: {{errorMessage}}",
@@ -1641,14 +1641,7 @@
"keyLabel": "Clau",
"valueLabel": "Valor",
"keyPlaceholder": "Nou valor",
"remove": "Elimina",
"providerNameLabel": "Nom del proveïdor",
"providerNamePlaceholder": "p. ex., openai",
"variableNameLabel": "Nom de la variable",
"variableNamePlaceholder": ". ex., La_Meva_Variable",
"loggerNameLabel": "Nom del registrador",
"loggerNamePlaceholder": "p. ex., friagte.registre",
"keyPatternError": "Utilitza només lletres, números, guions i guions baixos (sense espais)"
"remove": "Elimina"
},
"timezone": {
"defaultOption": "Utilitza la zona horària del navegador"
@@ -2103,8 +2096,7 @@
"autotrackingNoZones": "Autotraquejar requereix al menys una zona. Defineix una zona per aquesta cámera a Mascares/Zones, després usa'l com a requerit a la part inferior."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "No es recomanen arguments manuals d'acceleració de maquinari. Tret que existeixi un requisit específic, seleccioneu el predefinit que coincideixi amb el vostre maquinari.",
"inputsMissingGo2rtcStream": "Una entrada a sota apunta a un restream go2rtc que ja no existeix. Seleccioneu un restream existent o introduïu manualment l'URL de la càmera, en cas contrari aquesta càmera no es connectarà."
"hwaccelManualNotRecommended": "No es recomanen arguments manuals d'acceleració de maquinari. Tret que existeixi un requisit específic, seleccioneu el predefinit que coincideixi amb el vostre maquinari."
},
"model": {
"optimizedFor320": "Frigate està optimitzada per a un model 320x320, que és la millor opció per a la majoria de configuracions. Un model 640x640 és més lent i només ajuda en escenaris específics.",
+1 -19
View File
@@ -425,23 +425,5 @@
"chop": "Sekání",
"crack": "Prasknutí",
"chink": "Cinknutí",
"field_recording": "Nahrávka z terénu",
"change_ringing": "Změnit vyzvánění",
"liquid": "Tekutina",
"splash": "Šplouchnutí",
"squish": "Zmáčknout",
"drip": "Kapat",
"pour": "Lít",
"trickle": "Stékat",
"fill": "Naplnit",
"stir": "Míchat",
"boiling": "Vařící",
"sonar": "Sonar",
"arrow": "Šíp",
"electronic_tuner": "Elektronický Ladič",
"bang": "Rána",
"slap": "Plácnout",
"smash": "Rozmlátit",
"bouncing": "Odrážející",
"scratch": "Škrábat"
"field_recording": "Nahrávka z terénu"
}
+1 -3
View File
@@ -125,7 +125,5 @@
"baby": "Baby",
"baby_stroller": "Baby Stroller",
"rickshaw": "Rickshaw",
"rodent": "Rodent",
"possum": "Possum",
"garbage_truck": "Garbage Truck"
"rodent": "Rodent"
}
+1 -5
View File
@@ -36,9 +36,6 @@
"ask_a": "¿Es este objeto un <code>{{label}}</code>?",
"ask_an": "¿Es este objeto un <code>{{label}}</code>?",
"ask_full": "¿Es este objeto un <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"toast": {
"error": "Error al enviarlo a Frigate+. Por favor, comprueba tu conexión a internet y prueba de nuevo."
}
}
},
@@ -71,8 +68,7 @@
"error": {
"failed": "No se pudo iniciar la exportación: {{error}}",
"noVaildTimeSelected": "No se seleccionó un rango de tiempo válido",
"endTimeMustAfterStartTime": "La hora de finalización debe ser posterior a la hora de inicio",
"noValidTimeSelected": "Rango de tiempo seleccionado no valido"
"endTimeMustAfterStartTime": "La hora de finalización debe ser posterior a la hora de inicio"
},
"success": "Exportación iniciada con éxito. Ver el archivo en la página exportaciones.",
"view": "Vista",
+1 -65
View File
@@ -273,69 +273,5 @@
"sailboat": "Purjekas",
"soundtrack_music": "Filmimuusika",
"jingle": "Kõlisemine/tilisemine",
"theme_music": "Tunnusmuusika",
"steel_guitar": "Steel Kitarr",
"tapping": "Koputamine",
"strum": "Klimberdus",
"drum_machine": "Trummimasin",
"drum": "Trumm",
"maraca": "Marakas",
"bowed_string_instrument": "Poogenkeelpill",
"singing_bowl": "Helikauss",
"wind_noise": "Tuulemüra",
"rustling_leaves": "Sahisevad lehed",
"waves": "Lained",
"steam": "Aur",
"ship": "Laev",
"motor_vehicle": "Mootorsõiduk",
"rowboat": "Sõudepaat",
"motorboat": "Mootorpaat",
"waterfall": "Kosk",
"ocean": "Ookean",
"rain_on_surface": "Vihm pinnal",
"stream": "Oja",
"fire": "Tuli",
"crackle": "Praksumine",
"car_alarm": "Auto alarm",
"truck": "Veoauto",
"police_car": "Politseiauto",
"ambulance": "Kiirabi",
"fire_engine": "Tuletõrjeauto",
"aircraft": "Lennuk",
"aircraft_engine": "Lennukimootor",
"jet_engine": "Reaktiivmootor",
"propeller": "Propeller",
"helicopter": "Helikopter",
"fixed-wing_aircraft": "Fikseeritud tiivaga õhusõiduk",
"train_horn": "Rongisignaal",
"railroad_car": "Kaubavagun",
"lawn_mower": "Muruniiduk",
"chainsaw": "mootorsaag",
"engine": "Mootor",
"knock": "Koputus",
"alarm": "Häire",
"siren": "Sireen",
"fire_alarm": "Tulekahjuhäire",
"telephone": "Telefon",
"telephone_bell_ringing": "Helisev telefon",
"ringtone": "Telefonihelin",
"smoke_detector": "Suitsuandur",
"foghorn": "Udupasun",
"whistle": "Vile",
"printer": "Printer",
"drill": "Puur",
"explosion": "Plahvatus",
"hammer": "Haamer",
"air_conditioning": "Õhukonditsioneer",
"gunshot": "Püssilask",
"glass": "Klaas",
"boom": "Pauk",
"fireworks": "Ilutulestik",
"static": "Staatiline",
"white_noise": "Valge müra",
"radio": "Raadio",
"television": "Televiisor",
"scream": "Karjumine",
"pour": "Valamine",
"drip": "Tilkumine"
"theme_music": "Tunnusmuusika"
}
+5 -77
View File
@@ -37,9 +37,6 @@
"ask_an": "Kas see objekt on <code>{{label}}</code>?",
"ask_full": "Kas see objekt on <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?",
"label": "Kinnita see silt Frigate+ teenuse jaoks"
},
"toast": {
"error": "Frigate+ teenusesse saatmine ebaõnnestus. Palun kontrolli oma võrguühendust ja proovi uuesti."
}
},
"submitToPlus": {
@@ -73,79 +70,18 @@
"success": "Eksportimise käivitamine õnnestus. Faili leiad eksportimise lehelt.",
"view": "Vaata",
"error": {
"failed": "Eksportimise järjekorda lisamine ei õnnestunud: {{error}}",
"failed": "Eksportimise käivitamine ei õnnestunud: {{error}}",
"endTimeMustAfterStartTime": "Ajavahemiku lõpp peab olema peale algust",
"noVaildTimeSelected": "Ühtegi kehtivat ajavahemikku pole valitud",
"noValidTimeSelected": "Ühtegi korrektset ajavahemikku pole valitud"
},
"queued": "Eksport on järjekorda lisatud. Vaata progressi eksportide lehelt.",
"batchSuccess_one": "Alustasin 1 ekspordiga. Avan juhtumi kohe.",
"batchSuccess_other": "Alustasin {{count}} ekspordiga. Avan juhtumi kohe.",
"batchPartial": "Alustasin {{successful}}/{{total}} ekspordiga. Ebaõnnestunud kaamerad: {{failedCameras}}",
"batchFailed": "{{total}} eksporti ebaõnnestus algatada. Ebaõnnestunud kaamerad: {{failedCameras}}",
"batchQueuedSuccess_one": "1 eksport järjekorda lisatud. Avan juhtumi kohe.",
"batchQueuedSuccess_other": "{{count}} eksporti järjekorda lisatud. Avan juhtumi kohe.",
"batchQueuedPartial": "{{successful}}/{{total}} ekspordist on järjekorda lisatud. Ebaõnnestunud kaamerad: {{failedCameras}}",
"batchQueueFailed": "{{total}} eksporti ebaõnnestus järjekorda lisada. Ebaõnnestunud kaamerad: {{failedCameras}}"
"noVaildTimeSelected": "Ühtegi kehtivat ajavahemikku pole valitud"
}
},
"fromTimeline": {
"saveExport": "Salvesta eksporditud sisu",
"previewExport": "Eksporditud sisu eelvaade",
"queueingExport": "Ekspordi järjekorda lisamine...",
"useThisRange": "Kasuta seda vahemikku"
"previewExport": "Eksporditud sisu eelvaade"
},
"case": {
"label": "Juhtum",
"placeholder": "Vali juhtum",
"newCaseOption": "Ava uus juhtum",
"newCaseNamePlaceholder": "Uue juhtumi nimi",
"newCaseDescriptionPlaceholder": "Juhtumi kirjeldus",
"nonAdminHelp": "Uus juhtum avatakse järnevatele eksportidele."
},
"queueing": "Ekspordi järjekorda lisamine...",
"tabs": {
"export": "Üksik kaamera",
"multiCamera": "Mitu kaamerat"
},
"multiCamera": {
"timeRange": "Ajavahemik",
"selectFromTimeline": "Vali ajajoonelt",
"cameraSelection": "Kaamerad",
"cameraSelectionHelp": "Selles ajavahemikus tuvastatud objektidega kaamerad on eelvalitud",
"searchOrSelectGroup": "Otsi või vali kaamera grupp...",
"selectAll": "Vali kõik kaamerad",
"clearSelection": "Tühista valik",
"selectWithActivity": "Jälgitud objektidega kaamerad",
"selectGroup": "Vali grupp",
"noMatchingCameras": "Ükski kaamera ei sobitunud otsinguga",
"selectedCount": "{{selected}} / {{total}} valitud",
"checkingActivity": "Kaamera aktiivsuse kontrollimine...",
"noCameras": "Ühtegi kaamerat pole saadaval",
"detectionCount_one": "1 jälgitav objekt",
"detectionCount_other": "{{count}} jälgitavat objekti",
"nameLabel": "Ekspordi nimi",
"namePlaceholder": "Valikuline baasnimi nendele eksportidele",
"queueingButton": "Ekspordi järjekorda lisamine...",
"exportButton_one": "Ekspordi 1 kaamera",
"exportButton_other": "Ekspordi {{count}} kaamerat"
},
"multi": {
"title_one": "Ekspordi 1 ülevaade",
"title_other": "Espordi {{count}} ülevaadet",
"description": "Ekspordi valitud ülevaated. Kõik ekspordid on grupeeritud ühte juhtumisse.",
"descriptionNoCase": "Ekspordi kõik valitud juhtumid.",
"caseNamePlaceholder": "Ülevaate eksport - {{date}}",
"exportButton_one": "Ekspordi 1 ülevaade",
"exportButton_other": "Ekspordi {{count}} ülevaadet",
"exportingButton": "Ekspordin...",
"toast": {
"started_one": "Alustasin 1 eksporti. Avan juhtumi kohe.",
"started_other": "Alustasin {{count}} ekspordiga. Avan juhtumi kohe.",
"startedNoCase_one": "Alustasin 1 ekspordiga.",
"startedNoCase_other": "Alustasin {{count}} ekspordiga.",
"partial": "Alustasin {{successful}}/{{total}} ekspordiga. Ebaõnnestusid: {{failedItems}}",
"failed": "{{total}} ekspordi algatamine ebaõnnestus. Ebaõnnestunud: {{failedItems}}"
}
"placeholder": "Vali juhtum"
}
},
"streaming": {
@@ -178,14 +114,6 @@
"success": "Selle ülevaadatava objektiga seotud videosisu on kustutatud.",
"error": "Kustutamine ei õnnestunud: {{error}}"
}
},
"shareTimestamp": {
"label": "Jaotise ajatempel",
"title": "Jaotise ajatempel",
"description": "Jaga praeguse esituskoha ajatempliga URL-i või vali kohandatud ajatempel. Arvesta, et see ei ole avalik jagamislink ja on kättesaadav ainult kasutajatele, kellel on ligipääs Frigate'ile ja sellele kaamerale.",
"custom": "Kohandatud ajatempel",
"button": "Jaga ajatempliga linki",
"shareTitle": "Frigate ülevaate ajatempel: {{camera}}"
}
},
"imagePicker": {
+2 -177
View File
@@ -12,20 +12,11 @@
"description": "Kasutusel"
},
"audio": {
"label": "Heli tuvastus",
"min_volume": {
"label": "Minimaalne helitase"
},
"filters": {
"label": "Audio filtrid"
}
"label": "Helisündmused"
},
"birdseye": {
"mode": {
"label": "Jälgimisrežiim"
},
"order": {
"label": "Positsioon"
}
},
"label": "Kaameraseadistus",
@@ -34,8 +25,7 @@
"threshold": {
"description": "Minimaalne sarnasuse punktiskoor (0-1), mis on vajalik selle päästiku käivitamiseks."
}
},
"label": "Semantiline otsing"
}
},
"lpr": {
"label": "Sõidukite numbrimärkide tuvastus",
@@ -44,171 +34,6 @@
"review": {
"genai": {
"description": "Kontrollib generatiivse tehisaru kasutamist kirjelduste ja kokkuvõtete koostamiseks ülevaatamisele kuuluvate objektide jaoks."
},
"alerts": {
"enabled": {
"label": "Luba häired"
}
}
},
"audio_transcription": {
"label": "Audio transkriptsioon",
"live_enabled": {
"label": "Reaalajas transkriptsioon"
},
"enabled": {
"label": "Luba heli üleskirjutamine tekstina"
}
},
"detect": {
"label": "Objekti tuvastus",
"enabled": {
"label": "Luba objektituvastus"
},
"height": {
"label": "Tuvastamise kõrgus"
},
"width": {
"label": "Tuvastamise laius"
},
"fps": {
"label": "Tuvastamise kaadrisagedus"
},
"stationary": {
"label": "Püsivate objektide sätted"
}
},
"face_recognition": {
"label": "Näotuvastus"
},
"ffmpeg": {
"path": {
"label": "FFmpeg asukoht"
},
"gpu": {
"label": "GPU indeks"
},
"inputs": {
"global_args": {
"label": "FFmpeg globaalsed argumendid"
}
}
},
"live": {
"label": "Reaalajas mahamängimine",
"height": {
"label": "Otseülekande kõrgus"
},
"quality": {
"label": "Otseülekande kvaliteet"
},
"streams": {
"label": "Otseülekande voo nimed"
}
},
"motion": {
"label": "Liikumistuvastus",
"frame_height": {
"label": "Kaadri kõrgus"
},
"enabled": {
"label": "Luba liikumistuvastus"
}
},
"objects": {
"label": "Objektid",
"filters": {
"min_area": {
"label": "Minimaalne objekti ala"
},
"max_area": {
"label": "Maksimaalne objekti ala"
}
},
"genai": {
"label": "GenAI objekti konfiguratsioon",
"required_zones": {
"label": "Nõutud tsoonid"
},
"debug_save_thumbnails": {
"label": "Salvesta pisipildid"
},
"enabled": {
"label": "Luba GenAI"
},
"use_snapshot": {
"label": "Kasuta hetktõmmiseid"
}
}
},
"mqtt": {
"label": "MQTT"
},
"notifications": {
"enabled": {
"label": "Luba teavitused"
},
"email": {
"label": "Teavituste email"
},
"label": "Teavitused"
},
"ui": {
"label": "Kaamera kasutajaliides"
},
"record": {
"label": "Salvestus",
"enabled": {
"label": "Luba salvestamine"
}
},
"snapshots": {
"enabled": {
"label": "Luba hetktõmmised"
}
},
"timestamp_style": {
"color": {
"red": {
"label": "Punane",
"description": "Punase komponent (0255) ajatempli värvi jaoks."
},
"green": {
"label": "Roheline",
"description": "Rohelise komponent (0255) ajatempli värvi jaoks."
},
"blue": {
"label": "Sinine",
"description": "Sinise komponent (0255) ajatempli värvi jaoks."
},
"label": "Ajatempli värv",
"description": "Ajatempli teksti RGB värviväärtused (kõik väärtused 0255)."
},
"thickness": {
"label": "Ajatempli paksus",
"description": "Ajatempli teksti joone paksus."
},
"effect": {
"label": "Ajatempli efekt",
"description": "Ajatempli teksti visuaalne efekt (puudub, ühtlane, vari)."
}
},
"onvif": {
"user": {
"label": "ONVIF kasutajanimi"
},
"password": {
"label": "ONVIF parool"
},
"port": {
"label": "ONVIF port"
},
"label": "ONVIF",
"host": {
"label": "ONVIF host"
}
},
"profiles": {
"label": "Profiilid"
}
}
+2 -424
View File
@@ -1,31 +1,10 @@
{
"audio": {
"label": "Heli tuvastus",
"min_volume": {
"label": "Minimaalne helitase"
},
"filters": {
"label": "Audio filtrid"
}
"label": "Helisündmused"
},
"birdseye": {
"mode": {
"label": "Jälgimisrežiim"
},
"order": {
"label": "Positsioon"
},
"height": {
"label": "Kõrgus"
},
"width": {
"label": "Laius"
},
"layout": {
"label": "Paigutus",
"scaling_factor": {
"label": "Skaleerimistegur"
}
}
},
"version": {
@@ -43,15 +22,6 @@
"threshold": {
"label": "Punktiskoori lävend",
"description": "Punktiskoori lävend, mida kasutatakse klassifitseerimise oleku muutmiseks."
},
"enabled": {
"label": "Luba mudel"
},
"name": {
"label": "Mudeli nimi"
},
"save_attempts": {
"label": "Salvestamiskatsed"
}
}
},
@@ -60,25 +30,11 @@
"threshold": {
"description": "Minimaalne sarnasuse punktiskoor (0-1), mis on vajalik selle päästiku käivitamiseks."
}
},
"label": "Semantiline otsing",
"model_size": {
"label": "Mudeli suurus"
},
"device": {
"label": "Seade"
}
},
"face_recognition": {
"unknown_score": {
"label": "Tundmatu punktiskoori lävend"
},
"label": "Näotuvastus",
"model_size": {
"label": "Mudeli suurus"
},
"device": {
"label": "Seade"
}
},
"lpr": {
@@ -86,393 +42,15 @@
"description": "Sõidukite numbrimärkide tuvastuse seadistus sisaldab tuvastuse lävendeid, vormindust ja teadaolevaid numbrimärke.",
"enabled": {
"description": "Lülita sõidukite numbrimärkide tuvastus kõikide kaamerate jaoks sisse; seda saad kaamerakohaselt ka sürjutada."
},
"model_size": {
"label": "Mudeli suurus"
},
"device": {
"label": "Seade"
}
},
"genai": {
"label": "Generatiivse tehisaru seadistus",
"description": "Seadistsued generatiivse tehisaru teenusepakkujate kasutamisel kirjelduste ja kokkuvõtete loomiseks ülevaatamisele kuuluvate objektide jaoks.",
"model": {
"label": "Mudel"
},
"roles": {
"label": "Rollid"
},
"api_key": {
"label": "API võti"
},
"base_url": {
"label": "Baas-URL"
}
"description": "Seadistsued generatiivse tehisaru teenusepakkujate kasutamisel kirjelduste ja kokkuvõtete loomiseks ülevaatamisele kuuluvate objektide jaoks."
},
"review": {
"genai": {
"description": "Kontrollib generatiivse tehisaru kasutamist kirjelduste ja kokkuvõtete koostamiseks ülevaatamisele kuuluvate objektide jaoks."
},
"alerts": {
"enabled": {
"label": "Luba häired",
"description": "Luba või keela kõigi kaamerate häirete genereerimine; seda saab kaamerati eraldi muuta."
}
}
},
"audio_transcription": {
"label": "Audio transkriptsioon",
"live_enabled": {
"label": "Reaalajas transkriptsioon"
},
"enabled": {
"label": "Luba heli üleskirjutamine tekstina",
"description": "Luba või keela automaatne heli üleskirjutamine tektina kõigi kaamerate jaoks; seda saad kaamerati eraldi muuta."
},
"language": {
"label": "Üleskirjutuse keel",
"description": "Üleskirjutuse/tõlkimise jaoks kasutatav keelekood (näiteks „en” inglise keele puhul). Toetatud keelekoodid leiad lehelt https://whisper-api.com/docs/languages/."
},
"device": {
"label": "Üleskirjutusseade"
},
"model_size": {
"label": "Mudeli suurus"
}
},
"detect": {
"label": "Objekti tuvastus",
"enabled": {
"label": "Luba objektituvastus"
},
"height": {
"label": "Tuvastamise kõrgus"
},
"width": {
"label": "Tuvastamise laius"
},
"fps": {
"label": "Tuvastamise kaadrisagedus"
},
"stationary": {
"label": "Püsivate objektide sätted"
}
},
"ffmpeg": {
"path": {
"label": "FFmpeg asukoht"
},
"gpu": {
"label": "GPU indeks"
},
"inputs": {
"global_args": {
"label": "FFmpeg globaalsed argumendid"
}
},
"label": "FFmpeg"
},
"live": {
"label": "Reaalajas mahamängimine",
"height": {
"label": "Otseülekande kõrgus"
},
"quality": {
"label": "Otseülekande kvaliteet"
},
"streams": {
"label": "Otseülekande voo nimed"
}
},
"motion": {
"label": "Liikumistuvastus",
"frame_height": {
"label": "Kaadri kõrgus"
},
"enabled": {
"label": "Luba liikumistuvastus"
}
},
"objects": {
"label": "Objektid",
"filters": {
"min_area": {
"label": "Minimaalne objekti ala"
},
"max_area": {
"label": "Maksimaalne objekti ala"
}
},
"genai": {
"label": "GenAI objekti konfiguratsioon",
"required_zones": {
"label": "Nõutud tsoonid"
},
"debug_save_thumbnails": {
"label": "Salvesta pisipildid"
},
"enabled": {
"label": "Luba GenAI"
},
"use_snapshot": {
"label": "Kasuta hetktõmmiseid"
}
}
},
"auth": {
"reset_admin_password": {
"label": "Lähtesta administraatori parool"
},
"cookie_name": {
"label": "JWT küpsise nimi"
},
"enabled": {
"label": "Luba autentimine"
},
"label": "Autentimine",
"session_length": {
"label": "Sessiooni pikkus"
}
},
"database": {
"label": "Andmebaas"
},
"mqtt": {
"label": "MQTT",
"enabled": {
"label": "Luba MQTT"
},
"user": {
"label": "MQTT kasutajanimi"
},
"tls_ca_certs": {
"label": "TLS CA sertifikaat"
},
"tls_client_cert": {
"label": "Kliendi sertifikaat"
},
"host": {
"label": "MQTT host",
"description": "MQTT maakleri hostinimi või IP-aadress."
},
"port": {
"label": "MQTT port"
},
"client_id": {
"label": "Kliendi ID"
},
"stats_interval": {
"label": "Statistika intervall"
},
"tls_client_key": {
"label": "Kliendi võti"
},
"qos": {
"label": "MQTT QoS"
}
},
"go2rtc": {
"label": "go2rtc"
},
"notifications": {
"enabled": {
"label": "Luba teavitused"
},
"email": {
"label": "Teavituste email"
},
"label": "Teavitused"
},
"networking": {
"ipv6": {
"label": "IPv6 sätted",
"enabled": {
"label": "Luba IPv6"
}
},
"label": "Võrguühendus",
"listen": {
"internal": {
"label": "Sisemine port"
},
"external": {
"label": "Välimine port"
}
}
},
"proxy": {
"label": "Vaheserver",
"logout_url": {
"label": "Väljalogimise url"
},
"default_role": {
"label": "Vaikimisi roll"
}
},
"telemetry": {
"stats": {
"label": "Süsteemi statistika",
"amd_gpu_stats": {
"label": "AMD GPU statistika"
},
"intel_gpu_stats": {
"label": "Intel GPU statistika"
},
"intel_gpu_device": {
"label": "Intel GPU seade"
},
"network_bandwidth": {
"label": "Võrgu ribalaius"
}
},
"label": "Telemeetria",
"network_interfaces": {
"label": "Võrguliides"
},
"version_check": {
"label": "Versiooni kontroll",
"description": "Luba väljaminev ühendus, et kontrollida uuema Frigate versooni olemasolu."
}
},
"tls": {
"label": "TLS",
"enabled": {
"label": "Luba TLS"
}
},
"ui": {
"timezone": {
"label": "ajavöönd"
},
"label": "Kasutajaliides",
"description": "Kasutajaliidese eelistused nagu ajavöönd, aja ja kuupäeva formaat ning ühikud.",
"unit_system": {
"label": "Ühikute süsteem"
}
},
"detectors": {
"label": "Detektori riistvara",
"cpu": {
"label": "CPU"
},
"deepstack": {
"label": "DeepStack"
},
"edgetpu": {
"label": "EdgeTPU"
},
"onnx": {
"label": "ONNX",
"device": {
"label": "Seadme tüüp"
}
},
"rknn": {
"label": "RKNN"
},
"openvino": {
"label": "OpenVINO"
},
"tensorrt": {
"label": "TensorRT"
},
"teflon_tfl": {
"label": "Teflon"
},
"synaptics": {
"label": "Synaptics"
},
"memryx": {
"device": {
"label": "Seadme asukoht"
},
"label": "MemryX"
},
"hailo8l": {
"label": "Hailo-8/Hailo-8L"
},
"zmq": {
"label": "ZMQ IPC"
},
"axengine": {
"label": "AXEngine NPU"
},
"degirum": {
"label": "DeGirum"
}
},
"logger": {
"label": "Logimine"
},
"model": {
"label": "Tuvastusmudel"
},
"record": {
"label": "Salvestus",
"enabled": {
"label": "Luba salvestamine",
"description": "Luba või keela salvestamine kõigi kaamerate jaoks; seda saab kaamerati eraldi muuta."
}
},
"snapshots": {
"enabled": {
"label": "Luba hetktõmmised",
"description": "Luba või keela kõigi kaamerate hetktõmmiste salvestamine; seda saab kaamerati eraldi muuta."
}
},
"timestamp_style": {
"color": {
"red": {
"label": "Punane",
"description": "Punase komponent (0255) ajatempli värvi jaoks."
},
"green": {
"label": "Roheline",
"description": "Rohelise komponent (0255) ajatempli värvi jaoks."
},
"blue": {
"label": "Sinine",
"description": "Sinise komponent (0255) ajatempli värvi jaoks."
},
"label": "Ajatempli värv",
"description": "Ajatempli teksti RGB värviväärtused (kõik väärtused 0255)."
},
"thickness": {
"label": "Ajatempli paksus",
"description": "Ajatempli teksti joone paksus."
},
"effect": {
"label": "Ajatempli efekt",
"description": "Ajatempli teksti visuaalne efekt (puudub, ühtlane, vari)."
}
},
"onvif": {
"user": {
"label": "ONVIF kasutajanimi"
},
"password": {
"label": "ONVIF parool"
},
"port": {
"label": "ONVIF port"
},
"label": "ONVIF",
"host": {
"label": "ONVIF host"
}
},
"camera_mqtt": {
"quality": {
"label": "JPEG kvaliteet",
"description": "MQTT-sse saadetud piltide JPEG-kvaliteet (0100)."
},
"enabled": {
"label": "Saada pilt"
},
"label": "MQTT"
},
"profiles": {
"label": "Profiilid"
}
}
+1 -63
View File
@@ -6,67 +6,5 @@
"error": "Midagi läks valesti. Palun proovi uuesti.",
"processing": "Töötlen…",
"toolsUsed": "Kasutatud: {{tools}}",
"similarity_score": "Sarnasus",
"showTools": "Näita tööriistu ({{count}})",
"hideTools": "Peida tööriistad",
"call": "Kutse",
"result": "Tulemus",
"arguments": "Argumendid:",
"response": "Vastus:",
"send": "Saada",
"new_chat": "Uus vestlus",
"settings": {
"title": "Vestluse sätted",
"show_stats": {
"title": "Näita statistikat",
"always": "Alati",
"desc": "Kuva vastuste genereerimise kiirus ja konteksti suurus.",
"while_generating": "Genereerimise ajal"
},
"auto_scroll": {
"title": "Automaatne kerimine",
"desc": "Jälgi uusi sõnumeid kohe, kui need saabuvad."
}
},
"stats": {
"context": "{{tokens}} tokenit",
"tokens_per_second": "{{rate}} t/s"
},
"starting_requests_prompts": {
"recap": "Mis juhtus kui ma olin ära?",
"watch_camera": "Jälgi ust ja anna mulle teada kui keegi tuleb",
"show_camera_status": "Milline on minu kaamerate praegune seis?",
"show_recent_events": "Näita mulle viimase tunni viimaseid sündmusi"
},
"starting_requests": {
"show_camera_status": "Näita kaamera olekut",
"show_recent_events": "Kuva hiljutised sündmused",
"recap": "Mis juhtus kui ma olin ära?",
"watch_camera": "Jälgi kaamerat aktiivsuse osas"
},
"suggested_requests": "Proovi küsida:",
"semantic_search_required": "Sarnaste objektide leidmiseks peab olema lubatud semantiline otsing.",
"no_similar_objects_found": "Sarnaseid objekte ei leitud.",
"quick_reply_when_else": "Millal seda veel nähti?",
"quick_reply_find_similar_text": "Leia sarnaseid vaatepilte.",
"quick_reply_tell_me_more_text": "Räägi mulle sellest lähemalt.",
"quick_reply_when_else_text": "Millal seda veel nähtud on?",
"attach_event_aria": "Lisa sündmus {{eventId}}",
"attachment_picker_paste_label": "Või kleebi sündmuse ID",
"attachment_picker_attach": "Lisa",
"attachment_picker_placeholder": "Lisa sündmus",
"quick_reply_find_similar": "Leia sarnaseid vaatlusi",
"quick_reply_tell_me_more": "Räägi mulle sellest lähemalt",
"attachment_chip_remove": "Eemalda manus",
"attachment_chip_label": "{{label}} kaameras {{camera}}",
"open_in_explore": "Ava uurimisvaates",
"anchor": "Viide",
"reasoning": {
"active": "Otsin põhjendust…",
"show": "Näita põhjendust",
"hide": "Peida põhjendus"
},
"thinking": {
"toggle": "Näita mõtlemise olekut või peida see"
}
"similarity_score": "Sarnasus"
}
@@ -43,8 +43,5 @@
},
"tooltip": {
"trainingInProgress": "Mudel on parasjagu õppimas"
},
"train": {
"titleShort": "Hiljutised"
}
}
+7 -91
View File
@@ -5,8 +5,7 @@
"noTrackedObjects": "Ühtegi jälgitavat objekti ei leidunud",
"itemMenu": {
"findSimilar": {
"aria": "Otsi sarnaseid jälgitavaid objekte",
"label": "Leia sarnane"
"aria": "Otsi sarnaseid jälgitavaid objekte"
},
"downloadSnapshot": {
"label": "Laadi hetkvõte alla",
@@ -15,14 +14,6 @@
"downloadCleanSnapshot": {
"label": "Laadi puhas hetkvõte alla",
"aria": "Laadi puhas hetkvõte alla"
},
"viewTrackingDetails": {
"label": "Vaata jälgimise üksikasju",
"aria": "Näita jälgimise üksikasju"
},
"downloadVideo": {
"label": "Laadi video alla",
"aria": "Laadi video alla"
}
},
"trackingDetails": {
@@ -30,22 +21,11 @@
"showAllZones": {
"title": "Näita kõiki tsoone",
"desc": "Kui objekt on sisenenud tsooni, siis alati näida tsooni märgistust."
},
"title": "Annotatsioonide seaded",
"offset": {
"desc": "Need andmed pärinevad teie kaamera tuvastusvoost, kuid on salvestusvoo piltide peal. On ebatõenäoline, et need kaks voogu on ideaalselt sünkroonis. Seetõttu ei joondu piirav kast ja kaader ideaalselt. Selle säte abil saad annotatsioone ajas edasi või tagasi nihutada, et need salvestatud kaadriga paremini joonduks.",
"millisecondsToOffset": "Millisekundid annotatsioonide tuvastuse nihutamiseks. <em>Vaikimisi: 0</em>",
"tips": "Vähendage väärtust, kui video taasesitus on kastidest ja teekonnapunktidest ees, ning suurendage väärtust, kui video taasesitus on neist maas. See väärtus võib olla negatiivne.",
"toast": {
"success": "Kaamera '{{camera}}' annotatsiooni nihe on konfiguratsioonifaili salvestatud."
},
"label": "Annotatsiooni nihe"
}
},
"lifecycleItemDesc": {
"attribute": {
"other": "{{label}} on tuvastatud kui {{attribute}}",
"faceOrLicense_plate": "{{attribute}} tuvastatud objektil {{label}}"
"other": "{{label}} on tuvastatud kui {{attribute}}"
},
"stationary": "{{label}} jäi paigale",
"active": "{{label}} muutus aktiivseks",
@@ -57,8 +37,7 @@
"area": "Ala",
"score": "Punktiskoor",
"computedScore": "Arvutatud punktiskoor",
"topScore": "Suuremad punktiskoorid",
"toggleAdvancedScores": "Täpsemate tulemuste sisse-/väljalülitamine"
"topScore": "Suuremad punktiskoorid"
},
"external": "{{label}} on tuvastatud",
"heard": "{{label}} on kuuldud",
@@ -71,11 +50,7 @@
"previous": "Eelmine slaid",
"next": "Järgmine slaid"
},
"count": "{{first}} / {{second}}",
"adjustAnnotationSettings": "Korrigeeri annotatsioonide seadeid",
"scrollViewTips": "Klõpsake selle objekti elutsükli oluliste hetkede vaatamiseks.",
"autoTrackingTips": "Piirdekastide asukohad on automaatselt jälgivate kaamerate puhul ebatäpsed.",
"trackedPoint": "Jälgitav punkt"
"count": "{{first}} / {{second}}"
},
"documentTitle": "Avasta - Frigate",
"generativeAI": "Generatiivne tehisaru",
@@ -89,22 +64,7 @@
},
"startingUp": "Käivitun…",
"estimatedTime": "Hinnanguliselt jäänud aega:",
"finishingShortly": "Lõpetan õige pea",
"context": "Avastamist saab kasutada pärast seda, kui jälgitavate objektide manustamine on uuesti indekseerimise lõpetanud."
},
"title": "Avastamine pole saadaval",
"downloadingModels": {
"context": "Frigate laadib alla semantilise otsingu funktsiooni toetamiseks vajalikke manustamismudeleid. See võib võtta mitu minutit, olenevalt teie võrguühenduse kiirusest.",
"setup": {
"visionModel": "Nägemismudel",
"visionModelFeatureExtractor": "Nägemismudeli tunnuste eraldaja",
"textModel": "Tekstimudel",
"textTokenizer": "Teksti tokenisaator"
},
"tips": {
"context": "Pärast mudelite allalaadimist tuleks oma jälgitavate objektide manused uuesti indekseerida."
},
"error": "Tekkis viga. Kontrollige Frigate'i logisid."
"finishingShortly": "Lõpetan õige pea"
}
},
"type": {
@@ -147,52 +107,8 @@
},
"recognizedLicensePlate": "Tuvastatud sõiduki numbrimärk",
"description": {
"aiTips": "Frigate ei küsi sinu generatiivse tehisaru teenusepakkujalt kirjeldust enne, kui jälgitava objekti elutsükkel on lõppenud.",
"label": "Kirjeldus",
"placeholder": "Jälgitava objekti kirjeldus"
},
"label": "Silt",
"editSubLabel": {
"title": "Muuda alamsilti",
"desc": "Sisesta sildile '{{label}}' uus alamsilt",
"descNoLabel": "Sisesta sellele jälgitavale objektile uus alamsilt"
},
"camera": "Kaamera",
"zones": "Tsoonid",
"title": {
"label": "Pealkiri"
},
"button": {
"findSimilar": "Leia sarnane",
"regenerate": {
"title": "Taasloomine",
"label": "Jälgitava objekti kirjelduse uuesti genereerimine"
}
},
"topScore": {
"label": "Parim punktiskoor",
"info": "Kõrgeim skoor on jälgitava objekti kõrgeim mediaanskoor, seega võib see erineda otsingutulemuste pisipildil kuvatavast skoorist."
},
"objects": "Objektid",
"tips": {
"descriptionSaved": "Kirjeldus salvestati edukalt",
"saveDescriptionFailed": "Kirjelduse uuendamine ebaõnnestus: {{errorMessage}}"
},
"attributes": "Klassifikatsiooni atribuudid",
"estimatedSpeed": "Hinnanguline kiirus",
"editAttributes": {
"title": "Atribuutide muutmine",
"desc": "Valige selle sildi '{{label}}' jaoks klassifikatsiooniatribuudid"
"aiTips": "Frigate ei küsi sinu generatiivse tehisaru teenusepakkujalt kirjeldust enne, kui jälgitava objekti elutsükkel on lõppenud."
}
},
"trackedObjectDetails": "Jälgitava objekti üksikasjad",
"aiAnalysis": {
"title": "Tehisintellekti analüüs"
},
"concerns": {
"label": "Mured"
},
"objectLifecycle": {
"noImageFound": "Selle jälgitava objekti kohta ei leitud pilti."
}
"trackedObjectDetails": "Jälgitava objekti üksikasjad"
}
+2 -44
View File
@@ -16,15 +16,12 @@
"downloadVideo": "Laadi video alla",
"editName": "Muuda nime",
"deleteExport": "Kustuta eksporditud sisu",
"assignToCase": "Lisa juhtumile",
"removeFromCase": "Eemalda juhtumist"
"assignToCase": "Lisa juhtumile"
},
"toast": {
"error": {
"renameExportFailed": "Eksporditud sisu nime muutmine ei õnnestunud: {{errorMessage}}",
"assignCaseFailed": "Juhtumiga seose uuendamine ei õnnestunud: {{errorMessage}}",
"caseSaveFailed": "Juhtumi salvestamine ei õnnestunud: {{errorMessage}}",
"caseDeleteFailed": "Juhtumi kustutamine ei õnnestunud: {{errorMessage}}"
"assignCaseFailed": "Juhtumiga seose uuendamine ei õnnestunud: {{errorMessage}}"
}
},
"headings": {
@@ -38,44 +35,5 @@
"nameLabel": "Juhtumi nimi",
"descriptionLabel": "Kirjeldus",
"description": "Vali olemasolev juhtum või lisa uus."
},
"toolbar": {
"newCase": "Uus juhtum",
"addExport": "Lisa eksportimiseks",
"editCase": "Muuda juhtumit",
"deleteCase": "Kustuta juhtum"
},
"deleteCase": {
"label": "Kustuta juhtum",
"desc": "Kas oled kindel, et soovid „{{caseName}}“ juhtumi kustutada?"
},
"caseCard": {
"emptyCase": "Eksportimise veel pole"
},
"jobCard": {
"defaultName": "Eksportimine kaamerast „{{camera}}“",
"queued": "Lisatud järjekorda",
"running": "Töös",
"preparing": "Ettevalmistamisel",
"copying": "Kopeerimisel",
"encoding": "Kodeerimisel",
"encodingRetry": "Kodeerimisel (uuesti)",
"finalizing": "Lõpetamisel"
},
"caseView": {
"noDescription": "Kirjeldust pole",
"createdAt": "Loodud {{value}}",
"exportCount_one": "1 eksportimine",
"exportCount_other": "{{count}} eksportimist",
"cameraCount_one": "1 kaamera",
"cameraCount_other": "{{count}} kaamerat",
"showMore": "Näita rohkem",
"showLess": "Näita vähem",
"emptyTitle": "See juhtum on tühi"
},
"caseEditor": {
"namePlaceholder": "Juhtumi nimi",
"editTitle": "Muuda juhtumit",
"createTitle": "Lisa juhtum"
}
}
+8 -61
View File
@@ -1,11 +1,6 @@
{
"button": {
"uploadImage": "Laadi pilt üles",
"deleteFaceAttempts": "Kustuta näod",
"addFace": "Lisa nägu",
"renameFace": "Nimeta nägu ümber",
"deleteFace": "Kustuta nägu",
"reprocessFace": "Käivita näotuvastus uuesti"
"uploadImage": "Laadi pilt üles"
},
"collections": "Kogumikud",
"description": {
@@ -16,41 +11,28 @@
},
"documentTitle": "Näoteek - Frigate",
"createFaceLibrary": {
"new": "Lisa uus nägu",
"nextSteps": "Tugeva tuvastusaluse loomiseks:<li>Kasuta vahekaarti \"Hiljutised tuvastused\", et valida pilte ja treenida isikutuvastust.</li><li>Parima tulemuse saavutamiseks keskendu otsepiltidele; väldi nurga all olevaid nägusid treenimiseks.</li></ul>"
"new": "Lisa uus nägu"
},
"deleteFaceLibrary": {
"title": "Kustuta nimi",
"desc": "Kas oled kindel, et soovid isiku '{{name}}' kollektsiooni kustutada? See kustutab jäädavalt kõik seotud näod."
"title": "Kustuta nimi"
},
"toast": {
"error": {
"addFaceLibraryFailed": "Näo sidumine nimega ei õnnestunud: {{errorMessage}}",
"updateFaceScoreFailed": "Näo punktiskoori uuendamine ei õnnestunud: {{errorMessage}}",
"uploadingImageFailed": "Pildi üleslaadimine ebaõnnestus: {{errorMessage}}",
"deleteFaceFailed": "Kustutamine ebaõnnestus: {{errorMessage}}",
"deleteNameFailed": "Nime kustutamine ebaõnnestus: {{errorMessage}}",
"renameFaceFailed": "Näo ümbernimetamine ebaõnnestus: {{errorMessage}}",
"trainFailed": "Treenimine ebaõnnestus: {{errorMessage}}",
"reclassifyFailed": "Näo ümberklassifitseerimine ebaõnnestus: {{errorMessage}}"
"updateFaceScoreFailed": "Näo punktiskoori uuendamine ei õnnestunud: {{errorMessage}}"
},
"success": {
"addFaceLibrary": "Lisamine nägude kogusse õnnestus: {{name}}!",
"addFaceLibrary": "Lisamine Näoteeki õnnestus: {{name}}!",
"deletedFace_one": "{{count}} näo kustutamine õnnestus.",
"deletedFace_other": "{{count}} näo kustutamine õnnestus.",
"deletedName_one": "{{count}} näo kustutamine õnnestus.",
"deletedName_other": "{{count}} näo kustutamine õnnestus.",
"updatedFaceScore": "Näo punktiskoori uuendamine õnnestus: {{name}} ({{score}}).",
"uploadedImage": "Pildi üleslaadimine õnnestus.",
"renamedFace": "Näo ümbernimetamine õnnestus, uus nimi on {{name}}",
"trainedFace": "Edukalt treenitud nägu.",
"reclassifiedFace": "Näo ümberklassifitseerimine õnnestus."
"updatedFaceScore": "Näo punktiskoori uuendamine õnnestus: {{name}} ({{score}})."
}
},
"deleteFaceAttempts": {
"desc_one": "Kas oled kindel, et soovid kustutada {{count}} näo? Seda tegevust ei saa tagasi pöörata.",
"desc_other": "Kas oled kindel, et soovid kustutada {{count}} nägu? Seda tegevust ei saa tagasi pöörata.",
"title": "Kustuta näod"
"desc_other": "Kas oled kindel, et soovid kustutada {{count}} nägu? Seda tegevust ei saa tagasi pöörata."
},
"details": {
"timestamp": "Ajatampel",
@@ -60,40 +42,5 @@
"uploadFaceImage": {
"title": "Laadi näopilt üles",
"desc": "Laadi üles pilt, et otsida sellelt nägusid ja lisada see {{pageToggle}}'i jaoks"
},
"steps": {
"faceName": "Lisa näole nimi",
"uploadFace": "Lae näopilt üles",
"nextSteps": "Järgmised sammud",
"description": {
"uploadFace": "Laadi üles pilt isikust '{{name}}', mis näitab tema nägu eestvaates. Ainult nägu ei pea pildilt välja lõikama."
}
},
"train": {
"title": "Hiljutised tuvastamised",
"titleShort": "Hiljutised",
"aria": "Vali hiljutised tuvastamised",
"empty": "Hiljutisi näotuvastuse katseid pole",
"emptyNoLibrary": {
"title": "Laadi üles nägu",
"description": "Näotuvastuse toimimiseks peate lisama vähemalt ühe näo kogusse."
}
},
"renameFace": {
"title": "Nimeta nägu ümber",
"desc": "Sisesta uus nimi isiku '{{name}}' jaoks"
},
"imageEntry": {
"validation": {
"selectImage": "Palun vali pildifail."
},
"dropActive": "Lohista pilt siia…",
"dropInstructions": "Lohistage või kleepige pilt siia või klõpsake valimiseks",
"maxSize": "Maksimum suurus: {{size}}MB"
},
"nofaces": "Nägusid pole saadaval",
"trainFaceAs": "Treeni nägu kui:",
"trainFace": "Treeni nägu",
"reclassifyFaceAs": "Liigita nägu ümber järgmiselt:",
"reclassifyFace": "Näo ümberklassifitseerimine"
}
}
+1 -75
View File
@@ -1,78 +1,4 @@
{
"documentTitle": "Liikumise tuvastus - Frigate",
"title": "Liikumise otsing",
"cancelSearch": "Tühista",
"startSearch": "Alusta otsingut",
"selectCamera": "Liikumisotsingut laaditakse",
"description": "Joonesta hulknurk, et määratleda huvipakkuv piirkond, ja määra ajavahemik, mille jooksul otsida liikumise muutusi selles piirkonnas.",
"searchStarted": "Otsing alustatud",
"searchCancelled": "Otsing tühistatud",
"searching": "Otsing on pooleli.",
"searchComplete": "Otsing lõpetatud",
"noResultsYet": "Käivita otsing valitud piirkonnas liikumise muutuste leidmiseks",
"noChangesFound": "Valitud piirkonnas ei tuvastatud pikslimuutusi",
"results": "Tulemused",
"polygonControls": {
"drawMode": "Joonista",
"moveMode": "Liiguta",
"reset": "Lähtesta hulknurk",
"undo": "Tühista viimane punkt",
"points_one": "{{count}} punkt",
"points_other": "{{count}} punkti"
},
"newSearch": "Uus otsing",
"clearResults": "Tühista tulemused",
"clearROI": "Tühista hulknurk",
"dialog": {
"cameraLabel": "Kaamera",
"title": "Liikumisotsing",
"previewAlt": "Kaamera '{{camera}}' eelvaade"
},
"timeRange": {
"title": "Otsinguvahemik",
"start": "Algusaeg",
"end": "Lõppaeg"
},
"settings": {
"title": "Otsinguseaded",
"parallelMode": "Paralleelrežiim",
"parallelModeDesc": "Skanni mitut salvestusvahemikku korraga (kiirem; kasutab rohkem dekodeerimisressursse)",
"threshold": "Tundlikkuse lävi",
"thresholdDesc": "Väiksemad väärtused tuvastavad väiksemaid muutusi (1255)",
"minArea": "Minimaalne muutusala",
"minAreaDesc": "Ühe liikuva piirkonna minimaalne suurus protsentides huvipakkuvast piirkonnast",
"maxResults": "Maksimaalselt tulemusi",
"maxResultsDesc": "Peata pärast nii paljude ajatemplite sobivust"
},
"errors": {
"noCamera": "Palun vali kaamera",
"noROI": "Palun joonistage huvipakkuv piirkond",
"noTimeRange": "Palun valige ajavahemik",
"invalidTimeRange": "Lõppaeg peab olema pärast algusaega",
"searchFailed": "Otsing ebaõnnestus: {{message}}",
"polygonTooSmall": "Hulknurgal peab olema vähemalt 3 punkti",
"unknown": "Tundmatu viga"
},
"changePercentage": "{{percentage}}% muutus",
"metrics": {
"title": "Otsingumõõdikud",
"segmentsScanned": "Skannitud segmente",
"segmentsProcessed": "Töödeldud",
"segmentsSkippedInactive": "Vahele jäetud (tegevust pole)",
"segmentsSkippedHeatmap": "Vahele jäetud (kattuvaid piirkondi pole)",
"fallbackFullRange": "Varurežiimis täisulatusega skaneerimine",
"framesDecoded": "Kaadreid dekodeeritud",
"wallTime": "Otsingu aeg",
"seconds": "{{seconds}}s",
"minutesSeconds": "{{minutes}}m {{seconds}}s",
"segmentErrors": "Segmendi vead",
"scanSummary": "{{segments}} segmenti · {{time}}"
},
"jumpToTime": "Hüppa sellele ajale",
"framesProcessed": "{{count}} kaadrit töödeldud",
"changesFound_one": "Tuvastatud {{count}} liikumine",
"changesFound_other": "Tuvastatud {{count}} liikumist",
"motionHeatmapLabel": "Liikumise soojakaart",
"showSegmentHeatmap": "Soojakaart",
"scanning": "Skannimine {{time}}"
"title": "Liikumise otsing"
}
+2 -43
View File
@@ -12,48 +12,7 @@
"selectFromTimeline": "Vali",
"starting": "Käivitan kordust…",
"startLabel": "Algus",
"endLabel": "Lõpp",
"title": "Alusta silumise taasesitust",
"description": "Looge ajutine taasesituskaamera, mis kordab ajaloolist salvestist objektide tuvastamise ja jälgimise probleemide silumiseks. Taasesituskaameral on sama tuvastusseadistus mis lähtekaameral. Valige algusaeg.",
"toast": {
"error": "Silumise taasesitus ebaõnnestus: {{error}}",
"alreadyActive": "Kordusseanss on juba aktiivne",
"stopError": "Silumise taasesituse peatamine ebaõnnestus: {{error}}",
"goToReplay": "Mine kordusesse"
}
"endLabel": "Lõpp"
},
"title": "Kordus veaotsinguks",
"websocket_messages": "Sõnumid",
"description": "Mängi kaamera salvestisi veaotsinguks. Objektide loend näitab tuvastatud objektide ajalist viivitust ja vahekaart „Sõnumid” näitab Fregati sisemiste sõnumite voogu taasesituse materjalist.",
"page": {
"noSession": "Aktiivset silumis- ja taasesitusseanssi pole",
"noSessionDesc": "Alusta silumissalvestise taasesitust ajaloo vaates, klõpsates tööriistaribal nupul \"Toimingud\" ja valides silumissalvestise taasesituse.",
"goToRecordings": "Mine ajaloo vaatesse",
"preparingClip": "Klipi ettevalmistamine…",
"preparingClipDesc": "Frigate koondab valitud ajavahemiku salvestisi. Pikemate vahemike puhul võib see võtta kauem.",
"startingCamera": "Silumise taasesituse käivitamine…",
"startError": {
"title": "Silumise taasesituse käivitamine ebaõnnestus",
"back": "Tagasi ajaloo vaatesse"
},
"sourceCamera": "Lähtekaamera",
"replayCamera": "Taasesituse kaamera",
"initializingReplay": "Silumise taasesituse initsialiseerimine...",
"stoppingReplay": "Silumise taasesituse peatamine...",
"stopReplay": "Peata kordusesitus",
"confirmStop": {
"title": "Peata silumise kordusesitus?",
"description": "See peatab seansi ja kustutab kõik ajutised andmed. Kas oled kindel?",
"confirm": "Peata kordusesitus",
"cancel": "Tühista"
},
"activity": "Toimingud",
"objects": "Objekti loend",
"audioDetections": "Audio tuvastused",
"noActivity": "Ühtegi tegevust ei tuvastatud",
"activeTracking": "Aktiivne jälgimine",
"noActiveTracking": "Aktiivset jälgimist pole",
"configuration": "Seaded",
"configurationDesc": "Peenhäälesta liikumistuvastuse ja objektide jälgimise sätteid silumis- ja taasesituskaamera jaoks. Frigate'i konfiguratsiooni faili muudatusi ei salvestata."
}
"title": "Kordus veaotsinguks"
}
+21 -174
View File
@@ -7,28 +7,7 @@
"connectionSettings": "Ühenduse seadistused",
"port": "Port",
"username": "Kasutajanimi",
"usernamePlaceholder": "Valikuline",
"cameraName": "Kaamera nimi",
"cameraNamePlaceholder": "näiteks: eesmine_uks või Hoovi ülevaade",
"host": "Host/IP-aadress",
"cameraBrand": "Kaamera bränd",
"selectBrand": "Vali URL malli jaoks kaamera bränd",
"customUrl": "Kohandatud voo URL",
"brandInformation": "Brändi teave",
"brandUrlFormat": "Kaamerate puhul, mille RTSP URL-i vorming on järgmine: {{exampleUrl}}",
"selectTransport": "Valige transpordiprotokoll",
"description": "Sisestage oma kaamera andmed ja valige, kas soovite kaamerat tuvastada või valida tootja käsitsi.",
"onvifPort": "ONVIF port",
"probeMode": "Tuvasta kaamera",
"manualMode": "Manuaalne valik",
"errors": {
"nameRequired": "Kaamera nimi on kohustuslik",
"nameLength": "Kaamera nimi peab olema kuni 64 tähemärki pikk",
"invalidCharacters": "Kaamera nimi sisaldab sobimatuid märke",
"nameExists": "Kaamera nimi on juba olemas",
"brandOrCustomUrlRequired": "Valige kas kaamera bränd koos hosti/IP-aadressiga või valige „Muu” kohandatud URL-iga"
},
"detectionMethod": "Vootuvastus meetod"
"usernamePlaceholder": "Valikuline"
},
"step3": {
"streamUrlPlaceholder": "rtsp://kasutajanimi:salasõna@host:port/asukoht",
@@ -38,37 +17,17 @@
"roles": "Rollid",
"roleLabels": {
"record": "Salvestamine",
"audio": "Heliriba",
"detect": "Objektituvastus"
"audio": "Heliriba"
},
"connected": "Ühendatud",
"featuresTitle": "Funktsionaalsused",
"selectStream": "Vali voog",
"selectQuality": "Valige kvaliteet",
"notConnected": "Pole ühendatud",
"testFailedTitle": "Test ebaõnnestus",
"testStream": "Testi ühendust",
"testSuccess": "Voo test edukas!",
"testFailed": "Voo test ebaõnnestus",
"selectResolution": "Vali resolutsioon",
"noStreamFound": "Voogu ei leitud",
"addAnotherStream": "Lisa järgmine voog",
"streamTitle": "Voog {{number}}",
"streamUrl": "Voo URL",
"addStream": "Lisa voog",
"description": "Seadista voogedastusrolle ja lisa oma kaamerale täiendavaid vooge.",
"streamsTitle": "Kaamera vood"
"featuresTitle": "Funktsionaalsused"
},
"steps": {
"probeOrSnapshot": "Võta proov või tee hetkvõte",
"nameAndConnection": "Nimi ja ühendus",
"streamConfiguration": "Voo seaded",
"validationAndTesting": "Valideerimine ja testimine"
"probeOrSnapshot": "Võta proov või tee hetkvõte"
},
"step2": {
"testing": {
"fetchingSnapshot": "Laadin kaamera hetkvõtet alla...",
"probingMetadata": "Tuvastan kaamera metaandmeid..."
"fetchingSnapshot": "Laadin kaamera hetkvõtet alla..."
},
"retry": "Proovi uuesti",
"manufacturer": "Tootja",
@@ -78,30 +37,7 @@
"presets": "Eelseadistused",
"useCandidate": "Kasuta",
"uriCopy": "Kopeeri",
"connected": "Ühendatud",
"testSuccess": "Ühenduse test õnnestus!",
"testFailed": "Ühenduse test ebaõnnestus. Palun kontrollige sisestatud andmeid ja proovige uuesti.",
"testFailedTitle": "Test ebaõnnestus",
"streamDetails": "Voo üksikasjad",
"probing": "Tuvastan kaamerat...",
"ptzSupport": "PTZ tugi",
"testConnection": "Testi ühendust",
"toggleUriView": "Klõpsake täieliku URI vaate sisse/välja lülitamiseks",
"notConnected": "Pole ühendatud",
"errors": {
"hostRequired": "Hosti/IP-aadress on kohustuslik"
},
"candidateStreamTitle": "Kandidaat {{number}}",
"probeSuccessful": "Tuvastamine õnnestus",
"probeError": "Tuvastamise viga",
"probeNoSuccess": "Tuvastamine ebaõnnestus",
"deviceInfo": "Seadme info",
"autotrackingSupport": "Automaatse jälgimise tugi",
"uriCopied": "URI kopeeriti lõikelauale",
"rtspCandidates": "RTSP kandidaadid",
"probingDevice": "Tuvastan seadet...",
"description": "Tuvasta kaamera vooge või seadista käsitsi seaded vastavalt valitud tuvastusmeetodile.",
"probeFailed": "Kaamera tuvastamine ebaõnnestus: {{error}}"
"connected": "Ühendatud"
},
"testResultLabels": {
"resolution": "Resolutsioon",
@@ -120,17 +56,7 @@
"roles": "Rollid",
"none": "Määramata",
"error": "Viga"
},
"commonErrors": {
"noUrl": "Palun sisestage kehtiv voogesituse URL",
"testFailed": "Voo test ebaõnnestus: {{error}}"
},
"save": {
"success": "Uue kaamera '{{cameraName}}' salvestamine õnnestus.",
"failure": "Viga kaamera '{{cameraName}}' salvestamisel."
},
"title": "Lisa kaamera",
"description": "Uue kaamera lisamiseks oma Frigate paigaldisesse järgige alltoodud samme."
}
},
"users": {
"updatePassword": "Lähtesta salasõna",
@@ -246,32 +172,24 @@
},
"documentTitle": {
"default": "Seadistused - Frigate",
"authentication": "Autentimise seaded - Frigate",
"cameraReview": "Kaamerate kordusvaatuste seaded - Frigate",
"general": "Profiili seaded - Frigate",
"frigatePlus": "Frigate+ seaded - Frigate",
"notifications": "Teavituste seaded - Frigate",
"authentication": "Autentimise seadistused - Frigate",
"cameraReview": "Kaamerate kordusvaatuste seadistused - Frigate",
"general": "Profiili seadistused - Frigate",
"frigatePlus": "Frigate+ seadistused - Frigate",
"notifications": "Teavituste seadistused - Frigate",
"cameraManagement": "Kaamerate haldus - Frigate",
"masksAndZones": "Maskide ja tsoonide haldus - Frigate",
"object": "Silumine ja veaotsing - Frigate",
"enrichments": "Rikastamise seaded - Frigate",
"motionTuner": "Liikumise häälestaja Frigate",
"globalConfig": "Globaalsed seaded Frigate",
"cameraConfig": "Kaamera seaded - Frigate",
"detectorsAndModel": "Detektorid ja mudel Frigate",
"maintenance": "Hooldus Frigate",
"profiles": "Profiilid - Frigate"
"object": "Silumine ja veaotsing - Frigate"
},
"general": {
"title": "Kasutajaliidese seadistused",
"title": "Profiili seadistused",
"cameraGroupStreaming": {
"clearAll": "Kustuta kõik voogedastuse seadistused"
},
"liveDashboard": {
"title": "Töölaud reaalajas",
"automaticLiveView": {
"label": "Automaatne otseülekande vaade",
"desc": "Aktiveerib automaatselt kaamera reaalajas vaate, kui tuvastatakse tegevus. Selle valiku keelamisel uuendatakse kaamerapilti töölaual ainult üks kord minutis."
"label": "Automaatne otseülekande vaade"
}
},
"calendar": {
@@ -417,7 +335,7 @@
},
"menu": {
"ui": "Kasutajaliides",
"cameraManagement": "Kaamera haldus",
"cameraManagement": "Haldus",
"masksAndZones": "Maskid ja tsoonid",
"triggers": "Päästikud",
"debug": "Silumine ja veaotsing",
@@ -455,37 +373,7 @@
"systemMqtt": "MQTT",
"systemGo2rtcStreams": "go2rtc voogedastus",
"integrationSemanticSearch": "Semantiline otsing",
"integrationGenerativeAi": "Generatiivne tehisaru",
"general": "Üldine",
"globalConfig": "Globaalsed seaded",
"system": "Süsteem",
"integrations": "Integratsioonid",
"cameras": "Kaamera seaded",
"integrationFaceRecognition": "Nöotuvastus",
"cameraDetect": "Objektituvastus",
"cameraFfmpeg": "Vood (FFmpeg)",
"cameraRecording": "Salvestus",
"cameraSnapshots": "Hetktõmmised",
"cameraMotion": "Liikumistuvastus",
"cameraObjects": "Objektid",
"cameraConfigReview": "Ülevaade",
"cameraAudioEvents": "audiotuvastus",
"cameraAudioTranscription": "Audio transkriptsioon",
"cameraNotifications": "Teated",
"cameraLivePlayback": "Otseülekanne",
"integrationAudioTranscription": "Audio transkriptsioon",
"integrationObjectClassification": "Objektide klassifitseerimine",
"cameraFaceRecognition": "Näotuvastus",
"cameraMqttConfig": "MQTT",
"cameraOnvif": "ONVIF",
"cameraUi": "Kaamera kasutajaliides",
"cameraTimestampStyle": "Ajatempli stiil",
"cameraMqtt": "Kaamera MQTT",
"maintenance": "Hooldus",
"mediaSync": "Meedia sünkroonimine",
"regionGrid": "Regioonide ruudustik",
"enrichments": "Andmete rikastamine",
"motionTuner": "Liikumistuvastuse seadistaja"
"integrationGenerativeAi": "Generatiivne tehisaru"
},
"dialog": {
"unsavedChanges": {
@@ -501,11 +389,7 @@
"semanticSearch": {
"reindexNow": {
"confirmButton": "Indekseeri uuesti",
"label": "Indekseeri kohe uuesti",
"alreadyInProgress": "Ümberindekseerimine on juba käimas.",
"error": "Uuesti indekseerimise alustamine ebaõnnestus: {{errorMessage}}",
"success": "Ümberindekseerimine algas edukalt.",
"confirmTitle": "Kinnita uuesti indekseerimine"
"label": "Indekseeri uuesti kohe"
},
"modelSize": {
"small": {
@@ -513,9 +397,7 @@
},
"large": {
"title": "suur"
},
"label": "Mudeli suurus",
"desc": "Semantilise otsingu manustamiseks kasutatava mudeli suurus."
}
},
"title": "Semantiline otsing"
},
@@ -526,23 +408,14 @@
},
"large": {
"title": "suur"
},
"label": "Mudeli suurus",
"desc": "Näotuvastuseks kasutatava mudeli suurus."
},
"title": "Näotuvastus"
}
}
},
"birdClassification": {
"title": "Lindude klassifikatsioon"
},
"licensePlateRecognition": {
"title": "Sõidukite numbrimärkide tuvastus"
},
"title": "Andmerikastuse seaded",
"restart_required": "Taaskäivitamine on vajalik (Andmerikastuse seadeid on muudetud)",
"toast": {
"success": "Andmerikastamise seaded on salvestatud. Muudatuste rakendamiseks taaskäivitage Frigate.",
"error": "Seadete muudatuste salvestamine ebaõnnestus: {{errorMessage}}"
}
},
"cameraReview": {
@@ -624,31 +497,5 @@
"lpr": {
"vehicleNotTracked": "Sõidukite numbrimärkide tuvastus eeldab, et auto või mootorratas on jälgitav. Lülita menüüst Objektid sell kaamera jaoks sisse valikud „auto“ või „mootorratas“."
}
},
"button": {
"overriddenGlobal": "Ülekirjutatud (Globaalne)",
"overriddenGlobalTooltip": "Käesolev kaamera kirjutab selles jaotises üle globaalsed seaded",
"overriddenGlobalHeading_one": "See kaamera sürjutab {{count}} üldise seadistuse välja:",
"overriddenGlobalHeading_other": "See kaamera sürjutab {{count}} üldise seadistuse välja:"
},
"saveAllPreview": {
"title": "Salvestatavad muudatused",
"triggerLabel": "Vaadake üle ootel olevad muudatused",
"empty": "Ootel muudatusi pole.",
"scope": {
"label": "Ulatus",
"global": "Globaalne",
"camera": "Kaamera: {{cameraName}}"
},
"profile": {
"label": "Profiil"
},
"field": {
"label": "Väli"
},
"value": {
"label": "Uus väärtus",
"reset": "Lähtesta"
}
}
}
+4 -194
View File
@@ -2,14 +2,7 @@
"documentTitle": {
"general": "Üldine statistika - Frigate",
"cameras": "Kaamerate statistika - Frigate",
"storage": "Andmeruumi statistika - Frigate",
"logs": {
"frigate": "Frigate logid - Frigate",
"go2rtc": "Go2RTC logid - Frigate",
"nginx": "Nginx logid - Frigate",
"websocket": "Sõnumite logid - Frigate"
},
"enrichments": "Rikastus statistika - Frigate"
"storage": "Andmeruumi statistika - Frigate"
},
"logs": {
"download": {
@@ -23,29 +16,11 @@
"websocket": {
"filter": {
"cameras_count_one": "{{count}} kaamera",
"cameras_count_other": "{{count}} kaamerat",
"camera": "Kaamera",
"all_cameras": "Kõik kaamerad",
"events": "Sündmused",
"reviews": "Ülevaated",
"system": "Süsteem",
"topics": "Teemad",
"all": "Kõik teemad",
"face_recognition": "Näotuvastus",
"classification": "Klassifikatsioon",
"camera_activity": "Kaamera aktiivsus",
"lpr": "Numbrimärgituvastus"
"cameras_count_other": "{{count}} kaamerat"
},
"empty": "Ühtegi sõnumit pole veel hõivatud",
"count_one": "{{count}} sõnum",
"count_other": "{{count}} sõnumit",
"pause": "Peata",
"resume": "Jätka",
"label": "Sõnumid",
"clear": "Tühista",
"expanded": {
"payload": "Last"
}
"count_other": "{{count}} sõnumit"
},
"type": {
"label": "Tüüp",
@@ -61,170 +36,5 @@
}
}
},
"title": "Süsteem",
"enrichments": {
"embeddings": {
"object_description_events_per_second": "Objekti kirjeldus",
"face_recognition": "Näotuvastus",
"plate_recognition": "Numbrimärgi tuvastus",
"object_description": "Objekti kirjeldus",
"review_description_events_per_second": "Ülevaate kirjeldus",
"review_description": "Ülevaate kirjeldus",
"yolov9_plate_detection": "YOLOv9 numbrimärgi tuvastus",
"yolov9_plate_detection_speed": "YOLOv9 numbrimärgi tuvastuskiirus",
"plate_recognition_speed": "Numbrimärgituvastuse kiirus",
"face_recognition_speed": "Näotuvastuse kiirus"
},
"title": "Andmerikastused"
},
"cameras": {
"connectionQuality": {
"reconnectsLastHour": "Uuesti ühendumisi (viimase tunni jooksul)",
"stallsLastHour": "Seiskumisi (viimase tunni jooksul)",
"title": "Ühenduse kvaliteet",
"excellent": "Suurepärane",
"fair": "Rahuldav",
"poor": "Kehv",
"unusable": "Mittekasutatav",
"fps": "Kaadrisagedus",
"expectedFps": "Eeldatav kaadrisagedus (FPS)"
},
"label": {
"camera": "kaamera",
"detect": "tuvasta",
"skipped": "vahele jäetud",
"ffmpeg": "FFmpeg",
"cameraFfmpeg": "{{camName}} FFmpeg",
"cameraGpu": "{{camName}} GPU",
"cameraDetect": "{{camName}} tuvastus",
"overallFramesPerSecond": "kaadreid sekundis kokku",
"overallDetectionsPerSecond": "kogutuvastusi sekundis",
"overallSkippedDetectionsPerSecond": "vahelejäänud tuvastusi sekundis kokku",
"cameraFramesPerSecond": "{{camName}} kaadreid sekundis",
"cameraDetectionsPerSecond": "{{camName}} tuvastusi sekundis",
"cameraSkippedDetectionsPerSecond": "{{camName}} vahelejäänud tuvastusi sekundis",
"capture": "jäädvustamine"
},
"noCameras": {
"title": "Ühtegi kaamerat ei leitud"
},
"framesAndDetections": "Kaadreid / Tuvastusi",
"info": {
"keyframes": {
"recordDisabled": "Selle kaamera salvestamine on välja lülitatud.",
"segmentLength": "Salvestuse segmendi pikkus:",
"recordStream": "Salvestusvoog:",
"keyframeCount": "Vaadeldud võtmekaadrid:",
"observedDuration": "Vaadeldud kestus:"
},
"audio": "Audio:",
"error": "Viga: {{error}}",
"codec": "Koodek:",
"resolution": "Resolutsioon:",
"video": "Video:",
"aspectRatio": "kuvasuhe",
"unknown": "Tundmatu",
"fetching": "Kaameraandmete toomine",
"stream": "Voog {{idx}}",
"streamDataFromFFPROBE": "Vooandmed saadakse <code>ffprobe</code> abil.",
"fps": "Kaadrisagedus (FPS):"
},
"title": "Kaamerad",
"overview": "Ülevaade"
},
"lastRefreshed": "Viimati uuendatud: ",
"stats": {
"healthy": "Süsteem on töökorras",
"detectIsSlow": "{{detect}} on aeglane ({{speed}} ms)",
"detectIsVerySlow": "{{detect}} on väga aeglane ({{speed}} ms)",
"cameraIsOffline": "{{camera}} on ühenduseta"
},
"storage": {
"cameraStorage": {
"camera": "Kaamera",
"unused": {
"title": "Kasutamata",
"tips": "See väärtus ei pruugi Frigate'i jaoks saadaolevat vaba ruumi täpselt kajastada, kui teie draivil on lisaks Frigate'i salvestistele ka muid faile. Frigate ei jälgi salvestusruumi kasutamist väljaspool oma salvestisi."
},
"bandwidth": "Ribalaius",
"storageUsed": "Salvestusmaht",
"percentageOfTotalUsed": "protsent kogusummast",
"unusedStorageInformation": "Kasutamata salvestusmahu info",
"title": "Kaamera salvestusmaht"
},
"title": "Säilitus",
"overview": "Ülevaade",
"recordings": {
"title": "Salvestused",
"earliestRecording": "Varaseim saadaolev salvestis:"
},
"shm": {
"title": "SHM (jagatud mälu) eraldus",
"frameLifetime": {
"title": "Kaadri eluiga"
}
}
},
"metrics": "Süsteemi mõõdikud",
"general": {
"title": "Üldine",
"hardwareInfo": {
"gpuUsage": "GPU kasutus",
"gpuMemory": "GPU mälu",
"gpuInfo": {
"vainfoOutput": {
"title": "Vainfo väljund",
"processOutput": "Protsessi väljund:",
"processError": "Protsessi viga:",
"returnCode": "Tagastuskood: {{code}}"
},
"closeInfo": {
"label": "Sulge GPU info"
},
"copyInfo": {
"label": "Kopeeri GPU info"
},
"nvidiaSMIOutput": {
"title": "Nvidia SMI väljund",
"name": "Nimi: {{name}}",
"driver": "Draiver: {{driver}}",
"cudaComputerCapability": "CUDA arvutusvõimekus: {{cuda_compute}}",
"vbios": "VBios info: {{vbios}}"
},
"toast": {
"success": "GPU info kopeeriti lõikelauale"
}
},
"gpuDecoder": "GPU dekooder",
"gpuTemperature": "GPU temperatuur",
"gpuEncoder": "GPU kodeerija",
"gpuCompute": "GPU arvutus / kodeerimine",
"title": "Riistvara info",
"npuUsage": "NPU kasutus",
"npuMemory": "NPU mälu",
"npuTemperature": "NPU temperatuur",
"intelGpuWarning": {
"title": "Inteli GPU statistika hoiatus",
"message": "GPU statistika pole saadaval"
}
},
"otherProcesses": {
"series": {
"go2rtc": "go2rtc",
"recording": "salvestus",
"review_segment": "Segmendi ülevaade",
"audio_detector": "audio detektor"
},
"processCpuUsage": "Protsessi CPU kasutus",
"processMemoryUsage": "Protsessi mälukasutus"
},
"detector": {
"title": "Detektorid",
"memoryUsage": "Detektori mälukasutus",
"cpuUsage": "Detektori CPU kasutus",
"temperature": "Detektori temperatuur",
"inferenceSpeed": "Detektori järelduskiirus",
"cpuUsageInformation": "Protsessori võimsus, mida kasutatakse tuvastusmudelite sisend- ja väljundandmete ettevalmistamisel. See väärtus ei mõõda järelduste kasutamist isegi siis, kui kasutatakse graafikaprotsessorit või kiirendit."
}
}
"title": "Süsteem"
}
+1 -2
View File
@@ -26,8 +26,7 @@
"max_speed": "Maksimi nopeus",
"recognized_license_plate": "Tunnistettu rekisterikilpi",
"has_clip": "Leike löytyy",
"has_snapshot": "Tilannekuva löytyy",
"attributes": "Muuttujat"
"has_snapshot": "Tilannekuva löytyy"
},
"searchType": {
"thumbnail": "Kuvake",
+3 -3
View File
@@ -16,7 +16,7 @@
"whoop": "Cri strident",
"sigh": "Soupir",
"singing": "Chant",
"choir": "Chœur",
"choir": "Chorale",
"yodeling": "Yodel",
"chant": "Chant",
"mantra": "Mantra",
@@ -33,7 +33,7 @@
"snoring": "Ronflement",
"gasp": "Souffle coupé",
"pant": "halètement",
"snort": "Reniflement",
"snort": "Ébrouement",
"camera": "Caméra",
"cough": "Toux",
"groan": "Gémissement",
@@ -104,7 +104,7 @@
"toothbrush": "Brosse à dents",
"sink": "Évier",
"scissors": "Ciseaux",
"humming": "Fredonnement",
"humming": "Bourdonnement",
"shuffle": "Pas traînants",
"footsteps": "Bruits de pas",
"hiccup": "Hoquet",
+2 -9
View File
@@ -67,8 +67,7 @@
"error": {
"failed": "Échec du démarrage de l'exportation : {{error}}",
"endTimeMustAfterStartTime": "L'heure de fin doit être postérieure à l'heure de début.",
"noVaildTimeSelected": "La plage horaire sélectionnée n'est pas valide.",
"noValidTimeSelected": "Interval de temps invalide"
"noVaildTimeSelected": "La plage horaire sélectionnée n'est pas valide."
},
"success": "Exportation démarrée avec succès. Consultez le fichier sur la page des exportations.",
"view": "Vue",
@@ -89,9 +88,7 @@
"export": "Exporter",
"fromTimeline": {
"saveExport": "Enregistrer l'exportation",
"previewExport": "Aperçu de l'exportation",
"queueingExport": "Traitement de l'export...",
"useThisRange": "Utiliser cet interval"
"previewExport": "Aperçu de l'exportation"
},
"case": {
"label": "Dossier",
@@ -198,10 +195,6 @@
"markAsReviewed": "Marquer comme traité",
"deleteNow": "Supprimer maintenant",
"markAsUnreviewed": "Marquer comme non traité"
},
"shareTimestamp": {
"label": "Partager cette date",
"title": "Partager cette date"
}
},
"imagePicker": {
+5 -52
View File
@@ -8,59 +8,12 @@
"sigh": "Suspiro",
"singing": "Cantando",
"motorcycle": "Motocicleta",
"bus": "Autobús",
"bus": "Bus",
"train": "Tren",
"boat": "Barco",
"boat": "Bote",
"bird": "Paxaro",
"cat": "Gato",
"bellow": "Bramido",
"whoop": "Berro de alegría",
"whispering": "Susurro",
"laughter": "Risa",
"choir": "Coro",
"chant": "Canto",
"child_singing": "Neno Cantando",
"rapping": "Rapeando",
"horse": "Cabalo",
"pig": "Porco",
"goat": "Cabra",
"sheep": "Ovella",
"wild_animals": "Animais salvaxes",
"crow": "Corvo",
"dogs": "Cans",
"snicker": "Risa abafada",
"yodeling": "Iolando",
"humming": "Tarareo",
"groan": "Xemido",
"grunt": "Gruñido",
"synthetic_singing": "Canto Sintético",
"whistling": "Asubío",
"breathing": "Respiración",
"wheeze": "Sibilancia",
"snoring": "Ronquido",
"gasp": "Inspiración brusca",
"pant": "Respiración axitada",
"snort": "Bufido",
"cough": "Tose",
"throat_clearing": "Carraspeo",
"sneeze": "Espirro",
"sniff": "Cheirada",
"run": "Correr",
"shuffle": "Arrastre de pés",
"footsteps": "Pasos",
"hands": "Mans",
"dog": "Can",
"fart": "Peido",
"applause": "Aplauso",
"chatter": "Parloteo",
"crowd": "Multitude",
"children_playing": "Nenos Xogando",
"animal": "Animal",
"pets": "Mascotas",
"bark": "Ladrido",
"yip": "Gañido",
"howl": "Ouveo",
"clapping": "Aplausos",
"heartbeat": "Latexo do corazón",
"heart_murmur": "Sopro cardíaco"
"bellow": "Abaixo",
"whoop": "Ei carballeira",
"whispering": "Murmurando"
}
+1 -4
View File
@@ -10,8 +10,5 @@
"untilRestart": "Ata o reinicio",
"ago": "Fai {{timeAgo}}"
},
"readTheDocumentation": "Ler a documentación",
"button": {
"save": "Gardar"
}
"readTheDocumentation": "Ler a documentación"
}
+3 -9
View File
@@ -3,9 +3,9 @@
"bicycle": "Bicicleta",
"airplane": "Avión",
"motorcycle": "Motocicleta",
"bus": "Autobús",
"bus": "Bus",
"train": "Tren",
"boat": "Barco",
"boat": "Bote",
"traffic_light": "Luces de tráfico",
"fire_hydrant": "Boca de incendio",
"street_sign": "Sinal de tráfico",
@@ -14,11 +14,5 @@
"bench": "Banco",
"bird": "Paxaro",
"cat": "Gato",
"car": "Coche",
"horse": "Cabalo",
"goat": "Cabra",
"sheep": "Ovella",
"dog": "Can",
"animal": "Animal",
"bark": "Ladrido"
"car": "Coche"
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"description": {
"addFace": "Engade unha nova colección á Biblioteca de rostros subindo a túa primeira imaxe.",
"addFace": "Navegar para engadir unha nova colección á Libraría de Caras.",
"placeholder": "Introduce un nome para esta colección",
"invalidName": "Nome non válido. Os nomes só poden incluír letras, números, espazos, apóstrofes, guións baixos e guións."
},
+1 -1
View File
@@ -2,7 +2,7 @@
"search": "Pesquisar",
"savedSearches": "Pesquisas gardadas",
"button": {
"save": "Gardar procura",
"save": "Gardar pesquisa",
"filterActive": "Filtros activos",
"clear": "Borrar pesquisa"
},
+1 -1
View File
@@ -3,7 +3,7 @@
"default": "Preferencias - Frigate",
"authentication": "Configuracións de Autenticación - Frigate",
"camera": "Configuracións da Cámara - Frigate",
"general": "Configuracións UI - Frigate",
"general": "Configuracións xerais - Frigate",
"notifications": "Configuración de Notificacións - Frigate",
"enrichments": "Configuración complementarias - Frigate",
"masksAndZones": "Editor de máscaras e zonas - Frigate"
+1 -18
View File
@@ -433,22 +433,5 @@
"trickle": "Csörgedezés",
"gush": "Folyás",
"stir": "Kavarás",
"thump": "Puffanás",
"arrow": "Nyíl",
"bouncing": "Pattog",
"vibration": "Vibrálás",
"inside": "Belül",
"outside": "Kívül",
"mains_hum": "Hálózati zaj",
"distortion": "Torzulás",
"throbbing": "Lüktetés",
"flap": "Csapkodás",
"scratch": "Kapar",
"scrape": "Karcolás",
"rub": "Dörzsölés",
"roll": "Gördül",
"crushing": "Összenyom",
"crumpling": "Gyűrődés",
"beep": "Sípolás",
"clang": "Csengés"
"thump": "Puffanás"
}
+2 -8
View File
@@ -24,9 +24,6 @@
},
"state": {
"submitted": "Terkirim"
},
"toast": {
"error": "Gagal submit ke Frigate+. Harap periksa koneksi jaringan Anda dan coba lagi."
}
}
},
@@ -60,8 +57,7 @@
"view": "Melihat",
"batchSuccess_other": "{{count}} Ekspor dimulai. Membuka kasusnya sekarang.",
"batchPartial": "Ekspor berhasil dimulai sebanyak {{successful}} dari total {{total}} ekspor. Kamera yang gagal: {{failedCameras}}",
"batchFailed": "Gagal memulai ekspor sebanyak {{total}}. Kamera yang gagal: {{failedCameras}}",
"batchQueuedPartial": "Antrian ekspor berhasil sebanyak {{successful}} dari total {{total}} ekspor. Kamera yang gagal: {{failedCameras}}"
"batchFailed": "Gagal memulai ekspor sebanyak {{total}}. Kamera yang gagal: {{failedCameras}}"
},
"case": {
"newCaseOption": "Membuat Kasus Baru",
@@ -91,9 +87,7 @@
"selectGroup": "Pilih grup",
"noMatchingCameras": "Tidak ada kamera yang sesuai dengan pencarian Anda",
"selectedCount": "{{terpilih}} / {{total}} terpilih",
"namePlaceholder": "Nama dasar opsional untuk ekspor ini",
"searchOrSelectGroup": "Cari, atau pilih grup kamera...",
"selectAll": "Pilih semua kamera"
"namePlaceholder": "Nama dasar opsional untuk ekspor ini"
},
"multi": {
"title_other": "Ekspor {{count}} Ulasan",
+1 -4
View File
@@ -67,10 +67,7 @@
"desc": "このオプションは、ライブストリームに色のアーティファクトが表示され、画像右側に斜めの線が出る場合にのみ有効にしてください。"
}
}
},
"showAll": "全てのカメラグループを表示",
"showLess": "表示を縮小",
"editGroups": "カメラグループを編集"
}
},
"debug": {
"options": {
+2 -13
View File
@@ -24,9 +24,6 @@
},
"state": {
"submitted": "送信済み"
},
"toast": {
"error": "Frigate+への送信に失敗しました。ネットワーク接続を確認して、もう一度お試しください。"
}
}
},
@@ -59,8 +56,7 @@
"error": {
"failed": "エクスポートキューの開始に失敗しました: {{error}}",
"endTimeMustAfterStartTime": "終了時間は開始時間より後である必要があります",
"noVaildTimeSelected": "有効な時間範囲が選択されていません",
"noValidTimeSelected": "有効な時間範囲が選択されていません"
"noVaildTimeSelected": "有効な時間範囲が選択されていません"
},
"view": "表示",
"queued": "エクスポートがキューに追加されました。進捗状況はエクスポートページで確認できます。",
@@ -89,14 +85,7 @@
"detectionCount_other": "{{count}} 追跡対象",
"nameLabel": "エクスポート名",
"namePlaceholder": "これらのエクスポート用オプションのベース名",
"exportButton_other": "{{count}} 台のカメラをエクスポート",
"searchOrSelectGroup": "検索するか、カメラグループを選択してください...",
"selectAll": "全てのカメラを選択",
"clearSelection": "選択を解除",
"selectWithActivity": "追跡対象のあるカメラ",
"selectGroup": "グループを選択",
"noMatchingCameras": "検索条件に一致するカメラはありません",
"selectedCount": "{{selected}} / {{total}} 個が選択されました"
"exportButton_other": "{{count}} 台のカメラをエクスポート"
},
"case": {
"newCaseOption": "新しいケースを作成",
+4 -11
View File
@@ -33,7 +33,7 @@
},
"listen": {
"label": "リスニングタイプ",
"description": "検対象の音声イベントの種類一覧(例:吠え声、火災報知器、会話、叫び声)。"
"description": "検対象の音声イベントの種類一覧(例:吠え声、火災報知器、悲鳴、会話、叫び声)。"
},
"enabled_in_config": {
"label": "元の音声状態",
@@ -192,11 +192,11 @@
"description": "このカメラの通知を有効化・制御する設定。"
},
"ffmpeg": {
"label": "ストリーム(FFmpeg",
"description": "カメラストリームの入力およびFFmpegのオプション(バイナリパス、引数、ハードウェアアクセラレーション、ロールごとの出力引数など)。",
"label": "FFmpeg",
"description": "FFmpeg の設定。バイナリパス、引数、ハードウェアアクセラレーション、ロールの出力引数を含みます。",
"path": {
"label": "FFmpeg パス",
"description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「7.0」または「8.0」)。"
"description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「5.0」または「7.0」)。"
},
"global_args": {
"label": "FFmpeg グローバル引数",
@@ -512,9 +512,6 @@
"max_concurrent": {
"label": "同時エクスポート数の上限",
"description": "同時に処理するエクスポートジョブの最大数。"
},
"chapters": {
"label": "エクスポートされた録画に埋め込むチャプターメタデータ"
}
},
"preview": {
@@ -869,10 +866,6 @@
"dashboard": {
"label": "UI に表示",
"description": "このカメラを Frigate UI 全体に表示するかを切り替えます。無効化した場合、再表示するには設定ファイルを手動編集する必要があります。"
},
"review": {
"label": "再生画面に表示",
"description": "このカメラを再生画面(再生ページおよびそのカメラフィルター、モーション再生、履歴表示)に表示するかどうかを切り替えます。"
}
},
"webui_url": {
+2 -9
View File
@@ -31,7 +31,7 @@
},
"listen": {
"label": "リスニングタイプ",
"description": "検対象の音声イベントの種類一覧(例:吠え声、火災報知器、会話、叫び声)。"
"description": "検対象の音声イベントの種類一覧(例:吠え声、火災報知器、悲鳴、会話、叫び声)。"
},
"enabled_in_config": {
"label": "元の音声状態",
@@ -715,7 +715,7 @@
"description": "FFmpeg の設定。バイナリパス、引数、ハードウェアアクセラレーション、ロール別の出力引数を含みます。",
"path": {
"label": "FFmpeg パス",
"description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「7.0」または「8.0」)。"
"description": "使用する FFmpeg バイナリのパス、またはバージョンエイリアス(「5.0」または「7.0」)。"
},
"global_args": {
"label": "FFmpeg グローバル引数",
@@ -1067,9 +1067,6 @@
"max_concurrent": {
"label": "同時エクスポート数の上限",
"description": "同時に処理するエクスポートジョブの最大数。"
},
"chapters": {
"label": "エクスポートされた録画に埋め込むチャプターメタデータ"
}
},
"preview": {
@@ -1557,10 +1554,6 @@
"dashboard": {
"label": "UI に表示",
"description": "このカメラを Frigate UI 全体に表示するかを切り替えます。無効化した場合、再表示するには設定ファイルを手動編集する必要があります。"
},
"review": {
"label": "再生画面に表示",
"description": "このカメラを再生画面(再生ページおよびそのカメラフィルター、モーション再生、履歴表示)に表示するかどうかを切り替えます。"
}
},
"onvif": {
@@ -147,20 +147,7 @@
"title": "分類モデルを編集",
"descriptionState": "この状態分類モデルのクラスを編集します。変更を反映するにはモデルの再学習が必要です。",
"descriptionObject": "このオブジェクト分類モデルのオブジェクトタイプおよび分類タイプを編集します。",
"stateClassesInfo": "モデルが更新されました。変更を反映させるには、モデル再学習を行ってください。",
"enabled": "有効",
"enabledDesc": "このモデルを実行します。無効にすると実行が停止し、分類が行われなくなります。",
"saveAttempts": "試行回数の保存",
"saveAttemptsDesc": "「最近の分類」UIに保持する分類試行画像の数です。",
"motion": "動き検知時に実行",
"motionDesc": "設定されたクロップ範囲内で動きが検知された際に、分類を実行します。",
"interval": "間隔",
"intervalDesc": "定期的な分類実行の間隔(秒)。空欄のままにすると、動きが検知された時のみ実行されます。",
"intervalPlaceholder": "間隔なし",
"errors": {
"saveAttemptsInvalid": "セーブ回数は0以上の整数でなければなりません",
"intervalInvalid": "「間隔」は0より大きい整数である必要があります"
}
"stateClassesInfo": "注意: 状態クラスを変更すると、更新後のクラスでモデル再学習する必要があります。"
},
"deleteDatasetImages": {
"title": "データセット画像を削除",
@@ -200,6 +187,5 @@
}
},
"reclassifyImageAs": "画像を次として再分類:",
"reclassifyImage": "画像を再分類",
"disabled": "無効"
"reclassifyImage": "画像を再分類"
}
+1 -1
View File
@@ -301,7 +301,7 @@
"toast": {
"success": "{{camera}} のアノテーションオフセットが設定ファイルに保存されました。"
},
"desc": "このデータはカメラの「検出」フィードから取得されますが、「録画」フィードの画像に重ねて表示されます。2つのストリームが完全に同期している可能性は低いため、バウンディングボックスと映像が完全に一致しない場合があります。この設定を使用すると注釈を時間軸上で前後にずらすことができ、録画された映像との位置合わせをより正確に行うことができます。",
"desc": "このデータはカメラの detect ストリーム から取得されていますが、表示される画像自体は record ストリーム のものです。そのため、2 つのストリームが完全に同期している可能性は低、バウンディングボックスと実際の映像が正確に一致しない場合があります。この設定を使用すると注釈(アノテーション)を 時間的に前後へオフセット することができ、録画映像との位置合わせをより正確に行ます。",
"tips": "映像の再生がバウンディングボックスや軌跡ポイントより先行している場合は値を小さくし、遅れている場合は値を大きくしてください。この値は負の値も指定できます。"
}
},
+7 -39
View File
@@ -69,7 +69,7 @@
"integrationObjectClassification": "オブジェクト分類",
"integrationAudioTranscription": "音声文字起こし",
"cameraDetect": "物体検知",
"cameraFfmpeg": "ストリーム(FFmpeg",
"cameraFfmpeg": "FFmpeg",
"cameraRecording": "録画",
"cameraSnapshots": "スナップショット",
"cameraMotion": "モーション検知",
@@ -662,7 +662,7 @@
},
"createUser": {
"title": "新規ユーザーを作成",
"desc": "新しいユーザーアカウントを追加し、Frigate UIの各エリアへのアクセス権限となる役割を指定します。",
"desc": "新しいユーザーアカウントを追加し、Frigate UI へのアクセスロールを指定します。",
"usernameOnlyInclude": "ユーザー名に使用できるのは英数字、.、_ のみです",
"confirmPassword": "パスワードを確認してください"
},
@@ -1292,16 +1292,12 @@
"details": {
"edit": "カメラ詳細を編集",
"title": "カメラ詳細を編集",
"description": "Frigate UI 全体で、このカメラに使用されている表示名外部 URL、および公開設定を更新します。",
"description": "このカメラの表示名外部 URL を更新します。Frigate UI 全体で使用されます。",
"friendlyNameLabel": "表示名",
"friendlyNameHelp": "Frigate UI 全体でこのカメラに表示される名前です。空欄にするとカメラ ID が使用されます。",
"webuiUrlLabel": "カメラ Web UI の URL",
"webuiUrlHelp": "デバッグビューからカメラの Web UI に直接アクセスするための URL です。空欄にするとリンクが無効になります。",
"webuiUrlInvalid": "有効な URL を入力してください (例: https://example.com)。",
"dashboardLabel": "ライブダッシュボードに表示",
"dashboardHelp": "このカメラをライブダッシュボードに表示します。",
"reviewLabel": "レビューに表示",
"reviewHelp": "このカメラを、カメラフィルター、モーションレビュー、履歴ビューを含め、レビューに表示します。"
"webuiUrlInvalid": "有効な URL を入力してください (例: https://example.com)。"
}
},
"cameraConfig": {
@@ -1637,14 +1633,7 @@
"keyLabel": "キー",
"valueLabel": "値",
"keyPlaceholder": "新しいキー",
"remove": "削除",
"providerNameLabel": "プロバイダー名",
"providerNamePlaceholder": "例:openai",
"variableNameLabel": "変数名",
"variableNamePlaceholder": "例:MY_VARIABLE",
"loggerNameLabel": "ロガー名",
"loggerNamePlaceholder": "例:frigate.record",
"keyPatternError": "英字、数字、ハイフン、アンダースコアのみを使用してください(スペースは使用不可)"
"remove": "削除"
},
"knownPlates": {
"namePlaceholder": "例: 妻の車",
@@ -1696,17 +1685,7 @@
}
},
"cameraInputs": {
"itemTitle": "ストリーム {{index}}",
"sourceMode": {
"restream": "リストリーム (go2rtc)",
"manual": "手動入力パス",
"go2rtcStreamLabel": "go2rtc ストリーム",
"go2rtcStreamPlaceholder": "go2rtc ストリームを選択",
"noGo2rtcStreams": "設定済みの go2rtc ストリームはありません",
"go2rtcStreamSearch": "ストリームを検索中...",
"availableStreams": "利用可能なストリーム",
"noMatchingStreams": "一致するストリームはありません"
}
"itemTitle": "ストリーム {{index}}"
},
"restartRequiredField": "再起動が必要",
"restartRequiredFooter": "設定が変更されました - 再起動が必要です",
@@ -2075,11 +2054,7 @@
"fpsGreaterThanFive": "検知 FPS を 5 より高く設定することは推奨されません。値を大きくしてもパフォーマンス上の問題を引き起こすだけで、メリットはありません。",
"disabled": "物体検知が無効化されています。スナップショット、レビュー項目、顔認識、ナンバープレート認識、生成AI などのエンリッチメントは機能しません。",
"resolutionShouldBeMultipleOfFour": "最良の結果を得るため、検知の幅と高さは 4 の倍数にしてください。他の偶数値でも動作しますが、検知ストリームに視覚的なノイズや軽微な歪みが生じる可能性があります。",
"aspectRatioMismatch": "入力した幅と高さは現在の検知解像度のアスペクト比と一致していません。映像が引き伸ばされたり歪んだりする可能性があります。",
"maxFramesSet": "最大フレーム数を設定するとデフォルトの動作が上書きされ、静止物体の追跡が無効になります。これが必要な状況はごく稀ですので使用には注意が必要です。",
"squareResolution": "正方形の検出解像度は一般的ではありません。検出の幅と高さは、物体検出モデルの寸法ではなく、カメラのアスペクト比(例:16:9)に合わせる必要があります。アスペクト比が一致しないと、画像が引き伸ばされ、検出精度が低下する可能性があります。",
"resolutionHigh": "この検出解像度は推奨値よりも高く、検出精度が向上しないままリソース使用量が増加する可能性があります。ほとんどのカメラでは、1080p以下の検出解像度を推奨します。",
"globalResolutionMultipleCameras": "複数のカメラを設定する際は、グローバルな検出解像度が設定されます。すべてのカメラで解像度とアスペクト比が同一でない限り、各カメラのネイティブアスペクト比に合わせて、カメラごとに検出幅と検出高さを定義する必要があります。"
"aspectRatioMismatch": "入力した幅と高さは現在の検知解像度のアスペクト比と一致していません。映像が引き伸ばされたり歪んだりする可能性があります。"
},
"objects": {
"genaiNoDescriptionsProvider": "説明を生成するには「descriptions」ロールを持つ生成AIプロバイダを設定する必要があります。"
@@ -2112,13 +2087,6 @@
},
"onvif": {
"autotrackingNoZones": "オートトラッキング機能を使用するには、少なくとも1つのゾーンが必要です。「マスク / ゾーン」でこのカメラ用のゾーンを定義し、以下でそれを必須ゾーンとして設定してください。"
},
"model": {
"optimizedFor320": "Frigateは320x320のモデルに最適化されており、これはほとんどのセットアップにおいて最適な選択です。640x640のモデルは処理速度が遅く、特定のシナリオでのみ有効です。",
"inputDimensionsNotDetectResolution": "モデルの入力幅と高さはオブジェクト検出モデルの入力寸法であり、カメラの検出解像度ではありません。これらは使用しているモデルの寸法と一致している必要があります。通常、320x320や640x640のような正方形のサイズになります。"
},
"ffmpeg": {
"hwaccelManualNotRecommended": "手動でのハードウェアアクセラレーション引数の指定は推奨されません。特定の要件がない限り、お使いのハードウェアに合ったプリセットを選択してください。"
}
}
}
-15
View File
@@ -174,21 +174,6 @@
"error": "エラー: {{error}}",
"tips": {
"title": "カメラプローブ情報"
},
"keyframes": {
"title": "キーフレームの分析",
"analyzing": "キーフレームを分析中... 残り {{seconds}} 秒",
"stillAnalyzing": "キーフレームの分析を継続中...",
"recordStream": "録画ストリーム:",
"keyframeCount": "検出されたキーフレーム:",
"observedDuration": "検出された再生時間:",
"gap": "キーフレームの間隔(最小/平均/最大):",
"segmentLength": "録画セグメントの長さ:",
"ok": "キーフレーム間隔は約 {{seconds}} 秒で、録画および再生に適しています。",
"warning": "キーフレームがまばら、または変動的(最長間隔 ~{{seconds}}秒)で、スマートコーデック(H.264+/H.265+)である可能性が高いです。これは推奨されません。",
"error": "キーフレーム間隔(約{{seconds}}秒)が録画セグメントの長さ({{segmentTime}}秒)を超えています。一部のセグメントにキーフレームが含まれない場合があり、再生に支障をきたす可能性があります。カメラでスマート/+コーデックを無効にするか、キーフレーム間隔を短縮してください。",
"unknown": "キーフレーム間隔を特定できませんでした。",
"recordDisabled": "このカメラでは録画が無効になっています。"
}
},
"framesAndDetections": "フレーム / 検知",
+3 -15
View File
@@ -68,8 +68,8 @@
"choir": "Koris",
"yodeling": "Jodelēšana",
"mantra": "Mantra",
"rapping": "Repošana",
"whistling": "Svilpošana",
"rapping": "Repot",
"whistling": "Svilpot",
"sniff": "Ošņāt",
"hands": "Rokas",
"animal": "Dzīvnieks",
@@ -122,17 +122,5 @@
"fireworks": "Uguņošana",
"glass": "Stikls",
"white_noise": "Baltais troksnis",
"radio": "Radio",
"chant": "Piedziedājums",
"synthetic_singing": "Sintētiskā dziedāšana",
"groan": "Vaidēšana",
"grunt": "Rukšķēšana",
"breathing": "Elpošana",
"wheeze": "Gārgšana",
"snoring": "Krākšana",
"gasp": "Elsošana",
"pant": "Elšana",
"snort": "Šņaukt",
"cough": "Klepus",
"throat_clearing": "Kakla tīrīšana"
"radio": "Radio"
}
@@ -64,8 +64,7 @@
"error": {
"failed": "Kunne ikke legge eksport i kø: {{error}}",
"noVaildTimeSelected": "Ingen gyldig tidsperiode valgt",
"endTimeMustAfterStartTime": "Sluttid må være etter starttid",
"noValidTimeSelected": "Ingen gyldig tidsperiode valgt"
"endTimeMustAfterStartTime": "Sluttid må være etter starttid"
},
"view": "Vis",
"queued": "Eksport lagt i kø. Se fremdrift på eksportsiden.",
+2 -2
View File
@@ -330,7 +330,7 @@
},
"model_type": {
"label": "Type objektdeteksjonsmodell",
"description": "Arkitekturtype for detektormodellen (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) brukt av enkelte detektorer for optimalisering."
"description": "Arkitekturtype for detektormodellen (ssd, yolox, yolonas) brukt av enkelte detektorer for optimalisering."
}
},
"model_path": {
@@ -503,7 +503,7 @@
},
"model_type": {
"label": "Type objektdeteksjonsmodell",
"description": "Arkitekturtype for detektormodellen (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) brukt av enkelte detektorer for optimalisering."
"description": "Arkitekturtype for detektormodellen (ssd, yolox, yolonas) brukt av enkelte detektorer for optimalisering."
}
},
"genai": {
@@ -188,7 +188,7 @@
"title": "Rediger klassifiseringsmodell",
"descriptionState": "Rediger klassene for denne tilstandsklassifiseringsmodellen. Endringer vil kreve at modellen trenes på nytt.",
"descriptionObject": "Rediger objekttypen og klassifiseringstypen for denne objektklassifiseringsmodellen.",
"stateClassesInfo": "Modellen ble oppdatert. Tren modellen på nytt for at endringene i klassene skal bli iverksatt."
"stateClassesInfo": "Merk: Endring av tilstandsklasser krever at modellen trenes på nytt med de oppdaterte klassene."
},
"none": "Ingen",
"reclassifyImageAs": "Reklassifiser bilde som:",
+1 -4
View File
@@ -1722,10 +1722,7 @@
"remove": "Fjern",
"keyPlaceholder": "Ny nøkkel",
"keyLabel": "Nøkkel",
"valueLabel": "Verdi",
"providerNamePlaceholder": "f.eks. openai",
"variableNameLabel": "Variabelnavn",
"variableNamePlaceholder": "f.eks MIN_VARIABEL"
"valueLabel": "Verdi"
},
"roleMap": {
"remove": "Fjern",
+1 -11
View File
@@ -34,9 +34,6 @@
"label": "Bevestig dit label voor Frigate Plus",
"ask_a": "Is dit object een <code>{{label}}</code>?",
"ask_full": "Is dit object een <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"toast": {
"error": "Gefaald bij Frigate+ in te dienen. Controleer je netwerkverbinding en probeer opnieuw."
}
}
},
@@ -107,14 +104,7 @@
"namePlaceholder": "Optionele basisnaam voor deze exporten",
"queueingButton": "Exporten in wachtrij plaatsen...",
"exportButton_one": "Export 1 Camera",
"exportButton_other": "{{count}} camera's exporteren",
"searchOrSelectGroup": "Zoek of selecteer een cameragroep...",
"selectAll": "Selecteer alle camera's",
"clearSelection": "Wis selectie",
"selectWithActivity": "Camera's met gevolgde objecten",
"selectGroup": "Selecteer groep",
"noMatchingCameras": "Geen camera's komen overeen met je zoekopdracht",
"selectedCount": "{{selected}} / {{total}} geselecteerd"
"exportButton_other": "{{count}} camera's exporteren"
},
"multi": {
"title_one": "Review 1 exporteren",
+1 -5
View File
@@ -36,9 +36,6 @@
"ask_an": "Czy ten obiekt to <code>{{label}}</code>?",
"ask_full": "Czy ten obiekt to <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?",
"label": "Potwierdź tę etykietę dla Frigate Plus"
},
"toast": {
"error": "Nie udało się przesłać do Frigate+. Sprawdź połączenie sieciowe i spróbuj ponownie."
}
}
},
@@ -73,8 +70,7 @@
"error": {
"failed": "Nie udało się zakolejkować eksportu: {{error}}",
"endTimeMustAfterStartTime": "Czas zakończenia musi być późniejszy niż czas rozpoczęcia",
"noVaildTimeSelected": "Nie wybrano prawidłowego zakresu czasu",
"noValidTimeSelected": "Nie wybrano prawidłowego zakresu czasu"
"noVaildTimeSelected": "Nie wybrano prawidłowego zakresu czasu"
},
"view": "Widok",
"queued": "Eksport dodany do kolejki. Postęp można sprawdzić na stronie eksportów.",
+2 -10
View File
@@ -192,7 +192,7 @@
},
"listen": {
"label": "Typy nasłuchu",
"description": "Lista typów zdarzeń audio do wykrywania (na przykład: szczekanie, alarm pożarowy, mowa, krzyk)."
"description": "Lista typów zdarzeń audio do wykrywania (na przykład: szczekanie, alarm pożarowy, krzyk, mowa, wrzask)."
},
"filters": {
"label": "Filtry audio",
@@ -322,8 +322,7 @@
},
"record": {
"description": "Domyślne argumenty wyjściowe dla strumieni z rolą zapisu."
},
"description": "Domyślne argumenty wyjściowe używane dla różnych ról FFmpeg, takich jak wykrywanie i nagrywanie."
}
},
"retry_interval": {
"label": "Czas ponownej próby FFmpeg",
@@ -336,13 +335,6 @@
"gpu": {
"label": "Indeks GPU",
"description": "Domyślny indeks karty graficznej używany do akceleracji sprzętowej, jeśli jest dostępna."
},
"description": "Wejścia strumienia kamery i opcje FFmpeg, w tym ścieżka do pliku binarnego, args, hwaccel oraz argumenty wyjściowe dla poszczególnych ról.",
"path": {
"description": "Ścieżka do pliku binarnego FFmpeg lub alias wersji („7.0” lub „8.0”)."
},
"global_args": {
"label": "Argumenty globalne FFmpeg"
}
}
}
+2 -9
View File
@@ -14,7 +14,7 @@
},
"listen": {
"label": "Typy nasłuchu",
"description": "Lista typów zdarzeń audio do wykrywania (na przykład: szczekanie, alarm pożarowy, mowa, krzyk)."
"description": "Lista typów zdarzeń audio do wykrywania (na przykład: szczekanie, alarm pożarowy, krzyk, mowa, wrzask)."
},
"filters": {
"label": "Filtry audio",
@@ -165,8 +165,7 @@
},
"record": {
"description": "Domyślne argumenty wyjściowe dla strumieni z rolą zapisu."
},
"description": "Domyślne argumenty wyjściowe używane dla różnych ról FFmpeg, takich jak wykrywanie i nagrywanie."
}
},
"retry_interval": {
"label": "Czas ponownej próby FFmpeg",
@@ -179,12 +178,6 @@
"gpu": {
"label": "Indeks GPU",
"description": "Domyślny indeks karty graficznej używany do akceleracji sprzętowej, jeśli jest dostępna."
},
"path": {
"description": "Ścieżka do pliku binarnego FFmpeg lub alias wersji („7.0” lub „8.0”)."
},
"global_args": {
"label": "Argumenty globalne FFmpeg"
}
}
}
@@ -19,8 +19,8 @@
"question": {
"label": "Confirmar esse rótulo para Frigate Plus",
"ask_a": "Este objeto é um <code>{{label}}</code>?",
"ask_an": "Este objeto é um <code>{{label}}</code>?",
"ask_full": "Este objeto é um <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
"ask_an": "Este objeto é um<code>{{label}}</code>?",
"ask_full": "Este objeto é um<code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"state": {
"submitted": "Enviado"
@@ -71,10 +71,7 @@
"batchQueueFailed": "Falha ao enfileirar {{total}} exportações. Câmeras com falha: {{failedCameras}}",
"batchPartial": "Iniciadas {{successful}} de {{total}} exportações. Câmeras com falha: {{failedCameras}}",
"batchFailed": "Falha ao iniciar {{total}} exportações. Câmeras com falha: {{failedCameras}}",
"queued": "Exportação na fila. Acompanhe o progresso na página de exportações.",
"batchSuccess_one": "1 exportação iniciada. Abrindo o caso agora.",
"batchSuccess_many": "{{count}} exportações iniciadas. Abrindo o caso agora.",
"batchSuccess_other": "{{count}} exportações iniciadas. Abrindo o caso agora."
"queued": "Exportação na fila. Acompanhe o progresso na página de exportações."
},
"fromTimeline": {
"saveExport": "Salvar Exportação",
@@ -135,10 +132,7 @@
"started_many": "Iniciadas {{count}} exportações. Abrindo o caso agora.",
"started_other": "",
"failed": "Falha ao iniciar {{total}} exportações. Falhas: {{failedItems}}",
"partial": "Iniciadas {{successful}} de {{total}} exportações. Falhas: {{failedItems}}",
"startedNoCase_one": "1 exportação iniciada.",
"startedNoCase_many": "{{count}} exportações iniciadas.",
"startedNoCase_other": "{{count}} exportações iniciadas."
"partial": "Iniciadas {{successful}} de {{total}} exportações. Falhas: {{failedItems}}"
}
}
},
+2 -17
View File
@@ -215,8 +215,7 @@
"label": "Birdseye",
"description": "Configurações para a visualização composta \"Birdseye\", que combina múltiplas transmissões de câmera em um único layout.",
"enabled": {
"label": "Ativar Birdseye",
"description": "Habilita ou desabilita a função Birdseye."
"label": "Ativar Birdseye"
}
},
"live": {
@@ -402,9 +401,7 @@
"enhancement": {
"label": "Nível de aprimoramento",
"description": "Nível de aprimoramento (0-10) a ser aplicado aos recortes da placa antes do OCR; valores mais altos nem sempre melhoram os resultados, e níveis acima de 5 podem funcionar apenas com placas noturnas, devendo ser utilizados com cautela."
},
"label": "Reconhecimento de placa veicular",
"description": "Configurações de reconhecimento de placa veicular, incluindo limites de detecção, formatação e placas conhecidas."
}
},
"record": {
"label": "Gravação",
@@ -542,18 +539,6 @@
"enabled": {
"label": "Ativar detecções",
"description": "Ative ou desative eventos de detecção para esta câmera."
},
"labels": {
"label": "Rótulos de detecção",
"description": "Lista de rótulos de objetos que são considerados eventos de detecção."
},
"required_zones": {
"label": "Zonas requeridas",
"description": "Zonas em que um objeto deve entrar para ser considerado detectado. Deixe em branco para permitir qualquer zona."
},
"cutoff_time": {
"label": "Tempo limite de detecção",
"description": "Segundos a esperar após o fim da atividade antes de encerrar a detecção."
}
}
}
+2 -17
View File
@@ -239,8 +239,7 @@
"label": "Birdseye",
"description": "Configurações para a visualização composta \"Birdseye\", que combina múltiplas transmissões de câmera em um único layout.",
"enabled": {
"label": "Ativar Birdseye",
"description": "Habilita ou desabilita a função Birdseye."
"label": "Ativar Birdseye"
}
},
"live": {
@@ -421,9 +420,7 @@
"enhancement": {
"label": "Nível de aprimoramento",
"description": "Nível de aprimoramento (0-10) a ser aplicado aos recortes da placa antes do OCR; valores mais altos nem sempre melhoram os resultados, e níveis acima de 5 podem funcionar apenas com placas noturnas, devendo ser utilizados com cautela."
},
"label": "Reconhecimento de placa veicular",
"description": "Configurações de reconhecimento de placa veicular, incluindo limites de detecção, formatação e placas conhecidas."
}
},
"record": {
"label": "Gravação",
@@ -556,18 +553,6 @@
"description": "Configurações que definem para quais objetos rastreados são geradas detecções (sem gerar alerta) e como essas detecções são retidas.",
"enabled": {
"label": "Ativar detecções"
},
"labels": {
"label": "Rótulos de detecção",
"description": "Lista de rótulos de objetos que são considerados eventos de detecção."
},
"required_zones": {
"label": "Zonas requeridas",
"description": "Zonas em que um objeto deve entrar para ser considerado detectado. Deixe em branco para permitir qualquer zona."
},
"cutoff_time": {
"label": "Tempo limite de detecção",
"description": "Segundos a esperar após o fim da atividade antes de encerrar a detecção."
}
}
}
@@ -12,12 +12,12 @@
},
"toast": {
"success": {
"deletedCategory_one": "{{count}} classe removida",
"deletedCategory_many": "{{count}} classes removidas",
"deletedCategory_other": "{{count}} classes removidas",
"deletedImage_one": "{{count}} imagem removida",
"deletedImage_many": "{{count}} imagens removidas",
"deletedImage_other": "{{count}} imagens removidas",
"deletedCategory_one": "Classe Apagada",
"deletedCategory_many": "Classes apagadas",
"deletedCategory_other": "",
"deletedImage_one": "Imagen Apagada",
"deletedImage_many": "Imagens Apagadas",
"deletedImage_other": "",
"categorizedImage": "Imagem Classificada com Sucesso",
"trainedModel": "Modelo treinado com sucesso.",
"trainingModel": "Treinamento do modelo iniciado com sucesso.",
+3 -3
View File
@@ -296,7 +296,7 @@
}
},
"motionMaskLabel": "Máscara de Movimento {{number}}",
"objectMaskLabel": "Máscara de Objeto {{number}}",
"objectMaskLabel": "Máscara de Objeto {{number}} ({{label}})",
"form": {
"zoneName": {
"error": {
@@ -437,7 +437,7 @@
"add": "Nova Máscara de Movimento",
"edit": "Editar Máscara de Movimento",
"context": {
"title": "Máscaras de movimento são usadas para prevenir tipos de movimento não desejados de ativarem uma detecção (exemplo: galhos de árvores, timestamps de câmeras). Máscaras de movimento devem ser usadas <em>com moderação</em>. Excesso de mascaramento tornará o rastreamento de objetos mais difícil.",
"title": "Máscaras de movimento são usadas para prevenir tipos de movimento não desejados de ativarem uma detecção (exemplo: galhos de árvores, timestamps de câmeras). Máscaras de movimento devem ser usadas <em> com moderação </em>. Excesso de mascaramento tornará o rastreamento de objetos mais difícil.",
"documentation": "Leia a documentação"
},
"point_one": "{{count}} ponto",
@@ -723,7 +723,7 @@
"title": "Configuração de Captura de Imagem",
"desc": "Envios ao Frigate+ requerem tanto a captura de imagem normais quanto a captura de imagem <code>clean_copy</code> estarem habilitadas na sua configuração.",
"documentation": "Leia a documentação",
"cleanCopyWarning": "Algumas câmeras estão com os snapshots desativados",
"cleanCopyWarning": "Algumas câmeras possuem captura de imagem habilitada porém têm a cópia limpa desabilitada. Você precisa habilitar a <code>clean_copy</code> nas suas configurações de captura de imagem para poder submeter imagems dessa câmera ao Frigate+.",
"table": {
"camera": "Câmera",
"snapshots": "Capturas de Imagem",
+1 -1
View File
@@ -3,7 +3,7 @@
"machine_gun": "Mitraliera",
"speech": "Vorbire",
"babbling": "Murmur",
"yell": "Strigăt",
"yell": "Striga",
"bellow": "Sub",
"dog": "Câine",
"horse": "Cal",
+2 -13
View File
@@ -32,9 +32,6 @@
"ask_a": "Este acest obiect un <code>{{label}}</code>?",
"ask_an": "Este acest obiect un <code>{{label}}</code>?",
"ask_full": "Este acest obiect un <code>{{untranslatedLabel}}</code> ({{translatedLabel}})?"
},
"toast": {
"error": "Trimiterea către Frigate+ a eșuat. Te rog să verifici conexiunea la rețea și să încerci din nou."
}
},
"submitToPlus": {
@@ -99,8 +96,7 @@
"error": {
"failed": "Nu s-a putut adăuga exportul în coadă: {{error}}",
"endTimeMustAfterStartTime": "Ora de sfârșit trebuie să fie după ora de început",
"noVaildTimeSelected": "Nu a fost selectat un interval de timp valid",
"noValidTimeSelected": "Niciun interval de timp valid selectat"
"noVaildTimeSelected": "Nu a fost selectat un interval de timp valid"
},
"view": "Vizualizează",
"queued": "Export pus la coadă. Vezi progresul pe pagina de exporturi.",
@@ -149,14 +145,7 @@
"queueingButton": "Se adaugă exporturile la coadă...",
"exportButton_one": "Exportă 1 cameră",
"exportButton_few": "Exportă {{count}} camere",
"exportButton_other": "Exportă {{count}} de camere",
"searchOrSelectGroup": "Caută sau selectează un grup de camere...",
"selectAll": "Selectează toate camerele",
"clearSelection": "Șterge selecția",
"selectWithActivity": "Camere cu obiecte urmărite",
"selectGroup": "Selectează grupul",
"noMatchingCameras": "Nicio cameră nu corespunde căutării tale",
"selectedCount": "{{selected}} / {{total}} selectate"
"exportButton_other": "Exportă {{count}} de camere"
},
"multi": {
"title_one": "Exportă o revizuire",
+2 -5
View File
@@ -371,7 +371,7 @@
"description": "Folosește snapshot-urile obiectelor în loc de miniaturi pentru GenAI."
},
"prompt": {
"label": "Prompt de descriere",
"label": "Prompt descriere",
"description": "Șablonul de prompt implicit pentru descrierile GenAI."
},
"object_prompts": {
@@ -493,9 +493,6 @@
"max_concurrent": {
"description": "Numărul maxim de sarcini de export de procesat în același timp.",
"label": "Număr maxim de exporturi simultane"
},
"chapters": {
"label": "Metadate de capitol de încorporat în înregistrările exportate"
}
},
"preview": {
@@ -771,7 +768,7 @@
"description": "Adresa de email folosită pentru notificări push sau cerută de anumiți furnizori de notificări."
},
"cooldown": {
"label": "Perioadă de repaus",
"label": "Perioadă de răcire",
"description": "Timpul de așteptare (secunde) între notificări pentru a evita spamarea destinatarilor."
},
"enabled_in_config": {
+5 -8
View File
@@ -217,7 +217,7 @@
},
"ffmpeg": {
"label": "FFmpeg",
"description": "Setări FFmpeg: inclusiv calea către binar, argumente, accelerare hardware și ieșiri per rol.",
"description": "Setări FFmpeg: cale binar, argumente, accelerare hardware și ieșiri per rol.",
"path": {
"label": "Cale FFmpeg",
"description": "Calea către binarul FFmpeg sau un alias de versiune (\"7.0\" sau \"8.0\")."
@@ -481,7 +481,7 @@
"description": "Folosește snapshot-urile obiectelor în loc de miniaturi pentru GenAI."
},
"prompt": {
"label": "Prompt de descriere",
"label": "Prompt descriere",
"description": "Șablonul de prompt implicit pentru descrierile GenAI."
},
"object_prompts": {
@@ -637,9 +637,6 @@
"max_concurrent": {
"description": "Numărul maxim de sarcini de export de procesat în același timp.",
"label": "Număr maxim de exporturi simultane"
},
"chapters": {
"label": "Metadate de capitol de încorporat în înregistrările exportate"
}
},
"preview": {
@@ -955,7 +952,7 @@
"description": "Adresa de email folosită pentru notificări push sau cerută de anumiți furnizori de notificări."
},
"cooldown": {
"label": "Perioadă de repaus",
"label": "Perioadă de răcire",
"description": "Timpul de așteptare (secunde) între notificări pentru a evita spamarea destinatarilor."
},
"enabled_in_config": {
@@ -2134,7 +2131,7 @@
},
"model_type": {
"label": "Tipul modelului de detecție a obiectelor",
"description": "Tipul de arhitectură al modelului detectorului (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) utilizat de unele detectoare pentru optimizare."
"description": "Tipul arhitecturii modelului detectorului (ssd, yolox, yolonas) folosit de unii detectori pentru optimizare."
}
},
"model_path": {
@@ -2183,7 +2180,7 @@
},
"model_type": {
"label": "Tip model detecție",
"description": "Tipul de arhitectură al modelului detectorului (ssd, yolox, yolonas, yolo-generic, rfdetr, dfine) utilizat de unele detectoare pentru optimizare."
"description": "Arhitectura modelului (ssd, yolox, yolonas)."
}
},
"genai": {
@@ -192,20 +192,7 @@
"title": "Editează modelul de clasificare",
"descriptionState": "Editează clasele pentru acest model de clasificare a stării. Modificările vor necesita reantrenarea modelului.",
"descriptionObject": "Editează tipul de obiect și tipul de clasificare pentru acest model de clasificare a obiectelor.",
"stateClassesInfo": "Model actualizat. Reantrenea modelul pentru ca modificările claselor să aibă efect.",
"enabled": "Activat",
"enabledDesc": "Rulează acest model. Când este dezactivat, se oprește și nu mai clasifică.",
"saveAttempts": "Încercări de salvare",
"saveAttemptsDesc": "Numărul de imagini cu încercări de clasificare de păstrat pentru interfața de clasificări recente.",
"motion": "Rulează la mișcare",
"motionDesc": "Rulează clasificarea atunci când este detectată mișcare în decupajul configurat.",
"interval": "Interval",
"intervalDesc": "Secunde între rulările periodice de clasificare. Lasă necompletat pentru a rula doar la mișcare.",
"intervalPlaceholder": "Niciun interval",
"errors": {
"saveAttemptsInvalid": "Încercările de salvare trebuie să fie un număr întreg de 0 sau mai mare",
"intervalInvalid": "Intervalul trebuie să fie un număr întreg mai mare decât 0"
}
"stateClassesInfo": "Notă: Modificarea claselor de stare necesită reantrenarea modelului cu clasele actualizate."
},
"tooltip": {
"trainingInProgress": "Modelul este în curs de antrenare",
@@ -215,6 +202,5 @@
},
"none": "Niciuna",
"reclassifyImageAs": "Reclasifică imaginea ca:",
"reclassifyImage": "Reclasifică imaginea",
"disabled": "Dezactivat"
"reclassifyImage": "Reclasifică imaginea"
}
+1 -1
View File
@@ -120,7 +120,7 @@
},
"editSubLabel": {
"title": "Editează subeticheta",
"desc": "Introdu o sub-etichetă nouă pentru acest/această {{label}}",
"desc": "Introdu o sub-etichetă nouă pentru acest {{label}}",
"descNoLabel": "Introduceți o nouă subetichetă pentru acest obiect urmărit"
},
"editLPR": {
+4 -16
View File
@@ -122,7 +122,7 @@
"desc": "Arată întotdeauna numele camerelor într-un tag (chip) în dashboard-ul live multi-cameră."
},
"liveFallbackTimeout": {
"label": "Timp de expirare pentru player-ul live",
"label": "Timeout Rezecție Player Live",
"desc": "Când stream-ul live de înaltă calitate nu este disponibil, comută pe modul de bandă redusă după acest număr de secunde. Implicit: 3."
}
},
@@ -1337,7 +1337,7 @@
"reviewHelp": "Arată această cameră în revizuiri, inclusiv filtrul de camere, revizuirea mișcărilor și vizualizarea istoricului."
},
"label": "Stare cameră",
"description": "Setează starea de funcționare pentru fiecare cameră.<br /><br /><strong>Pornit</strong>: stream-urile sunt procesate normal.<br /><strong>Oprit</strong>: pune temporar pe pauză procesarea. Nu se menține după repornirile Frigate.<br /><strong>Dezactivat</strong>: oprește procesarea și salvează modificarea în configurația ta. Este necesară o repornire pentru a reactiva o cameră dezactivată.<br /><br /><em>Notă: Dezactivarea nu afectează restream-urile go2rtc.</em><br /><br />Trage pentru a reordona camerele active așa cum apar în interfață, inclusiv în panoul Live și în meniurile drop-down de selecție a camerei.",
"description": "Setează starea de funcționare pentru fiecare cameră.<br /><br /><strong>Pornit</strong>: stream-urile sunt procesate normal.<br /><strong>Oprit</strong>: pune temporar pe pauză procesarea. Nu se menține după repornirile Frigate.<br /><strong>Dezactivat</strong>: oprește procesarea și salvează modificarea în configurația ta. Este necesară o repornire pentru a reactiva o cameră dezactivată.<br /><br /><em>Notă: Dezactivarea nu afectează restream-urile go2rtc.</em><br /><br />Trage de mâner pentru a reordona camerele active așa cum apar în interfață, inclusiv în panoul Live și în meniurile drop-down de selecție a camerei.",
"disabledSubheading": "Dezactivat în configurație",
"status": {
"on": "Pornit",
@@ -1643,14 +1643,7 @@
"keyLabel": "Cheie",
"valueLabel": "Valoare",
"keyPlaceholder": "Cheie nouă",
"remove": "Elimină",
"providerNamePlaceholder": "de ex., openai",
"providerNameLabel": "Nume furnizor",
"variableNameLabel": "Nume variabilă",
"variableNamePlaceholder": "de ex., MY_VARIABLE",
"loggerNameLabel": "Nume logger",
"loggerNamePlaceholder": "de ex., frigate.record",
"keyPatternError": "Folosește doar litere, cifre, cratime și linii de subliniere (fără spații)"
"remove": "Elimină"
},
"timezone": {
"defaultOption": "Folosește fusul orar al browserului"
@@ -2104,12 +2097,7 @@
"autotrackingNoZones": "Autotracking-ul necesită cel puțin o zonă. Definește o zonă pentru această cameră în Măști / Zone, apoi seteaz-o ca zonă obligatorie mai jos."
},
"ffmpeg": {
"hwaccelManualNotRecommended": "Argumentele manuale pentru accelerarea hardware nu sunt recomandate. Dacă nu există o cerință specifică, selectează presetarea care se potrivește cu hardware-ul tău.",
"inputsMissingGo2rtcStream": "Un câmp de mai jos indică o retransmisie go2rtc care nu mai există. Selectează o retransmisie existentă sau introdu manual URL-ul camerei, altfel această cameră nu se va putea conecta."
},
"model": {
"optimizedFor320": "Frigate este optimizat pentru un model de 320x320, care este cea mai bună alegere pentru majoritatea configurațiilor. Un model de 640x640 este mai lent și ajută doar în scenarii specifice.",
"inputDimensionsNotDetectResolution": "Lățimea și înălțimea de intrare ale modelului reprezintă dimensiunile de intrare ale modelului de detectare a obiectelor, nu rezoluția de detecție a camerei tale. Acestea ar trebui să se potrivească cu dimensiunile modelului pe care îl folosești — de obicei o dimensiune pătrată, cum ar fi 320x320 sau 640x640."
"hwaccelManualNotRecommended": "Argumentele manuale pentru accelerarea hardware nu sunt recomandate. Dacă nu există o cerință specifică, selectează presetarea care se potrivește cu hardware-ul tău."
}
},
"birdseye": {
+24 -24
View File
@@ -1,9 +1,9 @@
{
"time": {
"untilForTime": "Do {{time}}",
"untilForTime": "Do{{time}}",
"untilForRestart": "Do reštartu Frigate.",
"untilRestart": "Do reštartu",
"ago": "pred {{timeAgo}}",
"ago": "{{timeAgo}} pred časom",
"justNow": "Práve teraz",
"today": "Dnes",
"yesterday": "Včera",
@@ -23,32 +23,32 @@
"am": "ráno",
"yr": "{{time}}r",
"pm": "popoludní",
"year_one": "{{time}} rok",
"year_few": "{{time}} roky",
"year_other": "{{time}} rokov",
"year_one": "{{time}}rok",
"year_few": "{{time}}rokov",
"year_other": "{{time}}rokov",
"mo": "{{time}}mes",
"month_one": "{{time}} mesiac",
"month_one": "{{time}}mesiac",
"month_few": "{{time}} mesiace",
"month_other": "{{time}} mesiacov",
"month_other": "{{time}} mesiaca",
"d": "{{time}}d",
"day_one": "{{time}} deň",
"day_few": "{{time}} dni",
"day_other": "{{time}} dní",
"day_one": "{{time}}deň",
"day_few": "{{time}}dni",
"day_other": "{{time}}dni",
"h": "{{time}}h",
"hour_one": "{{time}} hodina",
"hour_few": "{{time}} hodiny",
"hour_other": "{{time}} hodín",
"hour_one": "{{time}}hodina",
"hour_few": "{{time}}hodiny",
"hour_other": "{{time}}hodin",
"m": "{{time}} min",
"s": "{{time}}s",
"minute_one": "{{time}} minúta",
"minute_few": "{{time}} minúty",
"minute_other": "{{time}} minút",
"second_one": "{{time}} sekunda",
"second_few": "{{time}} sekundy",
"second_other": "{{time}} sekúnd",
"minute_one": "{{time}}minuta",
"minute_few": "{{time}}minuty",
"minute_other": "{{time}}minut",
"second_one": "{{time}}sekunda",
"second_few": "{{time}}sekundy",
"second_other": "{{time}}sekund",
"formattedTimestamp": {
"12hour": "d MMM, h:mm:ss aaa",
"24hour": "d MMM, HH:mm:ss"
"12hour": "Deň MMM, h:mm:ss aaa",
"24hour": "Deň MMM, HH:mm:ss"
},
"formattedTimestamp2": {
"12hour": "MM/dd h:mm:ssa",
@@ -219,9 +219,9 @@
"allCameras": "Všetky kamery",
"cameras": {
"title": "Kamery",
"count_one": "{{count}} kamera",
"count_few": "{{count}} kamery",
"count_other": "{{count}} kamier"
"count_one": "{{count}}kamera",
"count_few": "{{count}}kamery",
"count_other": "{{count}}kamier"
}
},
"export": "Exportovať",
+3 -3
View File
@@ -43,9 +43,9 @@
"title": "Čas ukončenia",
"label": "Vybrat čas ukončenia"
},
"lastHour_one": "Posledná hodina",
"lastHour_few": "Posledné {{count}} hodiny",
"lastHour_other": "Posledných {{count}} hodín"
"lastHour_one": "Minulu hodinu",
"lastHour_few": "Minule{{count}}hodiny",
"lastHour_other": "Minulych{{count}}hodin"
},
"name": {
"placeholder": "Pomenujte Export"
@@ -12,12 +12,12 @@
},
"toast": {
"success": {
"deletedCategory_one": "Vymazaná {{count}} trieda",
"deletedCategory_few": "Vymazané {{count}} triedy",
"deletedCategory_other": "Vymazaných {{count}} tried",
"deletedImage_one": "Vymazaný {{count}} obrázok",
"deletedImage_few": "Vymazané {{count}} obrázky",
"deletedImage_other": "Vymazaných {{count}} obrázkov",
"deletedCategory_one": "Vymazaná Trieda",
"deletedCategory_few": "",
"deletedCategory_other": "",
"deletedImage_one": "Vymazané Obrázky",
"deletedImage_few": "",
"deletedImage_other": "",
"categorizedImage": "Obrázok bol úspešne klasifikovaný",
"trainedModel": "Úspešne vyškolený model.",
"trainingModel": "Úspešne spustené trénovanie modelu.",
@@ -81,7 +81,7 @@
"buttonText": "Vytvorte objektový model"
},
"state": {
"title": "Žiadne modely klasifikácie stavov",
"title": "Žiadne modely klasifikácie štátov",
"description": "Vytvorte si vlastný model na monitorovanie a klasifikáciu zmien stavu v špecifických oblastiach kamery.",
"buttonText": "Vytvorte model stavu"
}
@@ -90,7 +90,7 @@
"title": "Vytvorte novú klasifikáciu",
"steps": {
"nameAndDefine": "Názov a definícia",
"stateArea": "Oblasť stavu",
"stateArea": "Štátna oblasť",
"chooseExamples": "Vyberte Príklady"
},
"step1": {
@@ -98,7 +98,7 @@
"name": "Meno",
"namePlaceholder": "Zadajte názov modelu...",
"type": "Typ",
"typeState": "Stav",
"typeState": "štátu",
"typeObject": "Objekt",
"objectLabel": "Označenie objektu",
"objectLabelPlaceholder": "Vyberte typ objektu...",
@@ -118,12 +118,12 @@
"nameOnlyNumbers": "Názov modelu nemôže obsahovať iba čísla",
"classRequired": "Vyžaduje sa aspoň 1 kurz",
"classesUnique": "Názvy tried musia byť jedinečné",
"stateRequiresTwoClasses": "Stavové modely vyžadujú aspoň 2 triedy",
"stateRequiresTwoClasses": "Modely štátov vyžadujú aspoň 2 triedy",
"objectLabelRequired": "Vyberte označenie objektu",
"objectTypeRequired": "Vyberte typ klasifikácie",
"noneNotAllowed": "Trieda 'none' nie je povolená"
},
"states": "Stavy"
"states": "Štátov"
},
"step2": {
"description": "Vyberte kamery a definujte oblasť, ktorú chcete pre každú kameru monitorovať. Model klasifikuje stav týchto oblastí.",
@@ -134,7 +134,7 @@
},
"step3": {
"selectImagesPrompt": "Vybrať všetky obrázky s: {{className}}",
"selectImagesDescription": "Kliknite na obrázky a vyberte ich. Po dokončení tejto triedy kliknite na tlačidlo Pokračovať.",
"selectImagesDescription": "Kliknite na obrázky a vyberte ich. Po dokončení tejto hodiny kliknite na tlačidlo Pokračovať.",
"generating": {
"title": "Generovanie vzorových obrázkov",
"description": "Frigate načítava reprezentatívne obrázky z vašich nahrávok. Môže to chvíľu trvať..."
@@ -155,9 +155,9 @@
"classifyFailed": "Nepodarilo sa klasifikovať obrázky: {{error}}"
},
"generateSuccess": "Vzorové obrázky boli úspešne vygenerované",
"allImagesRequired_one": "Klasifikujte všetky obrázky. Zostáva {{count}} obrázok.",
"allImagesRequired_few": "Klasifikujte všetky obrázky. Zostávajú {{count}} obrázky.",
"allImagesRequired_other": "Klasifikujte všetky obrázky. Zostáva {{count}} obrázkov.",
"allImagesRequired_one": "Uveďte všetky obrázky. {{count}} obrázok zostáva.",
"allImagesRequired_few": "Uveďte všetky obrázky. {{count}} obrázky zostávajú.",
"allImagesRequired_other": "Uveďte všetky obrázky. {{count}} obrázkov zostávajú.",
"modelCreated": "Model vytvorený úspešne. Použite aktuálne klasifikácie na pridanie obrázkov pre chýbajúce stavy a nasledne dajte trénovať model.",
"missingStatesWarning": {
"title": "Chýbajúce príklady stavov",
@@ -174,7 +174,7 @@
},
"menu": {
"objects": "Objekty",
"states": "Stavy"
"states": "Štátov"
},
"details": {
"scoreInfo": "Skóre predstavuje priemernú istotu klasifikácie naprieč všetkými detekciami tohoto objektu.",
+2 -2
View File
@@ -40,8 +40,8 @@
"detail": {
"noDataFound": "Žiadne podrobné údaje na kontrolu",
"aria": "Prepnúť zobrazenie detailov",
"trackedObject_one": "{{count}} objekt",
"trackedObject_other": "{{count}} objektov",
"trackedObject_one": "objekt",
"trackedObject_other": "objekty",
"noObjectDetailData": "Nie sú k dispozícii žiadne podrobné údaje o objekte.",
"label": "Detail",
"settings": "Nastavenia podrobného zobrazenia",
+9 -11
View File
@@ -18,12 +18,12 @@
"title": "Nahrať obrázok tváre",
"desc": "Nahrajte obrázok na skenovanie tvárí a zahrňte ho do {{pageToggle}}"
},
"collections": "Kolekcie",
"collections": "Zbierky",
"createFaceLibrary": {
"title": "Vytvoriť Zbierku",
"desc": "Vytvoriť novú zbierku",
"new": "Vytvoriť novú tvár",
"nextSteps": "Vybudovanie silného základu:<li>Použite kartu Nedávno rozpoznané tváre na výber a trénovanie obrázkov pre každú rozpoznanú osobu.</li><li>Pre dosiahnutie najlepších výsledkov sa zamerajte na priame obrázky; vyhnite sa trénovaniu obrázkov, ktoré zachytávajú tváre pod uhlom.</li></ul>"
"nextSteps": "Vybudovanie silného základu:<li>Použite kartu Nedávne rozpoznania na výber a trénovanie obrázkov pre každú rozpoznanú osobu.</li><li>Pre dosiahnutie najlepších výsledkov sa zamerajte na priame obrázky; vyhnite sa trénovaniu obrázkov, ktoré zachytávajú tváre pod uhlom.</li></ul>"
},
"steps": {
"faceName": "Zadajte Meno tváre",
@@ -34,8 +34,8 @@
}
},
"train": {
"title": "Nedávno rozpoznané tváre",
"aria": "Vyberte nedávno rozpoznané tváre",
"title": "Nedávne uznania",
"aria": "Vyberte posledné rozpoznania",
"empty": "Neexistujú žiadne predchádzajúce pokusy o rozpoznávanie tváre"
},
"selectItem": "Vyberte {{item}}",
@@ -85,10 +85,9 @@
"deletedName_one": "{{count}} tvár bola úspešne odstránená.",
"deletedName_few": "{{count}} tváre boli úspešne odstránené.",
"deletedName_other": "{{count}} tvárí bolo úspešne odstránených.",
"renamedFace": "Tvár bola úspešne premenovaná na {{name}}.",
"trainedFace": "Tvár bola úspešne natrénovaná.",
"updatedFaceScore": "Skóre tváre bolo úspešne aktualizované na {{name}} ({{score}}).",
"reclassifiedFace": "Tvár bola úspešne preklasifikovaná."
"renamedFace": "Úspešne premenovaná tvár na {{name}}",
"trainedFace": "Úspešne natrénovaná tvár.",
"updatedFaceScore": "Úspešne aktualizované skóre tváre."
},
"error": {
"uploadingImageFailed": "Nepodarilo sa nahrať obrázok: {{errorMessage}}",
@@ -96,9 +95,8 @@
"deleteFaceFailed": "Nepodarilo sa odstrániť: {{errorMessage}}",
"deleteNameFailed": "Nepodarilo sa odstrániť meno: {{errorMessage}}",
"renameFaceFailed": "Nepodarilo sa premenovať tvár: {{errorMessage}}",
"trainFailed": "Nepodarilo sa natrénovať tvár: {{errorMessage}}",
"updateFaceScoreFailed": "Nepodarilo sa aktualizovať skóre tváre: {{errorMessage}}",
"reclassifyFailed": "Nepodarilo sa preklasifikovať tvár: {{errorMessage}}"
"trainFailed": "Nepodarilo sa trénovať: {{errorMessage}}",
"updateFaceScoreFailed": "Nepodarilo sa aktualizovať skóre tváre: {{errorMessage}}"
}
}
}
+6 -6
View File
@@ -339,9 +339,9 @@
},
"add": "Pridať zónu",
"edit": "Upraviť zónu",
"point_one": "{{count}} bod",
"point_few": "{{count}} body",
"point_other": "{{count}} bodov"
"point_one": "{{count}}bod",
"point_few": "{{count}}body",
"point_other": "{{count}}bodov"
},
"motionMasks": {
"label": "Maska Detekcia pohybu",
@@ -380,8 +380,8 @@
"add": "Pridať Masku Objektu",
"edit": "Upraviť Masku Objektu",
"context": "Masky filtrovania objektov slúžia na odfiltrovanie falošných poplachov konkrétneho typu objektu na základe jeho umiestnenia.",
"point_one": "{{count}} bod",
"point_few": "{{count}} body",
"point_one": "{{count}}bod",
"point_few": "{{count}}body",
"point_other": "{{count}} bodov",
"clickDrawPolygon": "Kliknutím nakreslite polygón do obrázku.",
"objects": {
@@ -397,7 +397,7 @@
}
},
"motionMaskLabel": "Maska Detekcia pohybu {{number}}",
"objectMaskLabel": "Maska objektu {{number}}"
"objectMaskLabel": "Maska Objektu {{number}} {{label}}"
},
"motionDetectionTuner": {
"title": "Ladenie detekcie pohybu",
+20 -21
View File
@@ -3,7 +3,7 @@
"cameras": "Štatistiky kamier - Frigate",
"storage": "Štatistiky úložiska - Frigate",
"general": "Všeobecné štatistiky - Frigate",
"enrichments": "Štatistiky AI funkcií - Frigate",
"enrichments": "Štatistiky obohatenia - Frigate",
"logs": {
"frigate": "Protokoly Frigate - Frigate",
"go2rtc": "Protokoly Go2RTC - Frigate",
@@ -36,7 +36,7 @@
}
},
"general": {
"title": "Všeobecné",
"title": "Hlavný",
"detector": {
"title": "Detektory",
"inferenceSpeed": "Detekčná rýchlosť",
@@ -96,7 +96,7 @@
}
},
"storage": {
"title": "Úložisko",
"title": "Skladovanie",
"overview": "Prehľad",
"recordings": {
"title": "Nahrávky",
@@ -108,11 +108,11 @@
"warning": "Aktuálna veľkosť SHM {{total}}MB je príliš malá. Zvýšte ju aspoň na {{min_shm}}MB."
},
"cameraStorage": {
"title": "Úložisko kamier",
"title": "Úložisko kamery",
"camera": "Kamera",
"unusedStorageInformation": "Informácie o nevyužitom úložisku",
"storageUsed": "Úložisko",
"percentageOfTotalUsed": "Percento z celku",
"unusedStorageInformation": "Nepoužité informácie o úložisku",
"storageUsed": "Skladovanie",
"percentageOfTotalUsed": "Percento z celkového počtu",
"bandwidth": "Šírka pásma",
"unused": {
"title": "Nepoužité",
@@ -125,7 +125,7 @@
"overview": "Prehľad",
"info": {
"aspectRatio": "pomer strán",
"cameraProbeInfo": "Údaje o kamere {{camera}}",
"cameraProbeInfo": "{{camera}} Informácie o sonde kamery",
"streamDataFromFFPROBE": "Údaje zo streamu sa získavajú pomocou príkazu <code>ffprobe</code>.",
"fetching": "Načítavajú sa údaje z kamery",
"stream": "Stream {{idx}}",
@@ -137,33 +137,32 @@
"audio": "Zvuk:",
"error": "Chyba: {{error}}",
"tips": {
"title": "Údaje o kamere"
"title": "Informácie o kamerovej sonde"
}
},
"framesAndDetections": "Snímky / Detekcie",
"framesAndDetections": "Rámy / Detekcie",
"label": {
"camera": "kamera",
"detect": "detekcie",
"detect": "odhaliť",
"skipped": "preskočené",
"ffmpeg": "FFmpeg",
"capture": "zachytávanie",
"capture": "zachyt",
"cameraFfmpeg": "{{camName}} FFmpeg",
"cameraCapture": "{{camName}} zachytávanie",
"cameraDetect": "{{camName}} detekcie",
"cameraCapture": "zachytiť{{camName}}",
"cameraDetect": "Detekcia {{camName}}",
"overallFramesPerSecond": "celkový počet snímok za sekundu",
"overallDetectionsPerSecond": "celkový počet detekcií za sekundu",
"overallSkippedDetectionsPerSecond": "celkový počet preskočených detekcií za sekundu",
"overallSkippedDetectionsPerSecond": "celkový počet vynechaných detekcií za sekundu",
"cameraFramesPerSecond": "{{camName}} snímky za sekundu",
"cameraDetectionsPerSecond": "{{camName}} detekcie za sekundu",
"cameraSkippedDetectionsPerSecond": "{{camName}} preskočené detekcie za sekundu",
"cameraGpu": "{{camName}} GPU"
"cameraDetectionsPerSecond": "{{camName}}detekcie za sekundu",
"cameraSkippedDetectionsPerSecond": "{{camName}} vynechaných detekcií za sekundu"
},
"toast": {
"success": {
"copyToClipboard": "Údaje o kamere boli skopírované do schránky."
"copyToClipboard": "Dáta sondy boli skopírované do schránky."
},
"error": {
"unableToProbeCamera": "Nepodarilo sa načítať údaje z kamery: {{errorMessage}}"
"unableToProbeCamera": "Nepodarilo sa overiť kameru: {{errorMessage}}"
}
}
},
@@ -179,7 +178,7 @@
"shmTooLow": "Alokácia /dev/shm ({{total}} MB) by sa mala zvýšiť aspoň na {{min}} MB."
},
"enrichments": {
"title": "AI funkcie",
"title": "Obohatenia",
"infPerSecond": "Inferencie za sekundu",
"embeddings": {
"image_embedding": "Vkladanie obrázkov",
+1 -5
View File
@@ -75,9 +75,5 @@
"24hour": "MM-dd-yy-HH-mm-ss"
}
},
"readTheDocumentation": "Прочитајте документацију",
"menu": {
"system": "Систем",
"profiles": "Профили"
}
"readTheDocumentation": "Прочитајте документацију"
}
File diff suppressed because it is too large Load Diff
+166 -166
View File
@@ -7,131 +7,131 @@
"motorcycle": "Motorcykel",
"whispering": "Viskning",
"bus": "Buss",
"babbling": "Babbel",
"whoop": "Jubelrop",
"babbling": "Babblande",
"whoop": "Skrika",
"camera": "Kamera",
"laughter": "Skratt",
"snicker": "Fnittrande",
"snicker": "Fnittra",
"crying": "Gråt",
"choir": "Kör",
"singing": "Sång",
"singing": "Sjunger",
"yodeling": "Joddling",
"chant": "Mässande",
"chant": "Sång",
"mantra": "Mantra",
"synthetic_singing": "Syntetisk sång",
"rapping": "Rappning",
"groan": "Stönande",
"grunt": "Gruntande",
"whistling": "Vissling",
"breathing": "Andning",
"rapping": "Rappar",
"groan": "Stöna",
"grunt": "Grymta",
"whistling": "Visslar",
"breathing": "Andas",
"snoring": "Snarkning",
"gasp": "Flämtning",
"pant": "Flämtande",
"cough": "Hostning",
"pant": "Flämta",
"cough": "Hosta",
"throat_clearing": "Halsrensning",
"sneeze": "Nysning",
"run": "Löpning",
"shuffle": "Släpande steg",
"sneeze": "Nysa",
"run": "Spring",
"shuffle": "Blanda",
"footsteps": "Fotsteg",
"chewing": "Tuggande",
"biting": "Bitande",
"gargling": "Gurglande",
"chewing": "Tugga",
"biting": "Biter",
"gargling": "Gurgling",
"stomach_rumble": "Magljud",
"burping": "Rapning",
"hiccup": "Hicka",
"fart": "Fis",
"hands": "Händer",
"finger_snapping": "Knäppning med fingrar",
"clapping": "Handklappning",
"clapping": "Klappar",
"heartbeat": "Hjärtslag",
"heart_murmur": "Blåsljud i hjärtat",
"cheering": "Jubel",
"cheering": "Glädjande",
"applause": "Applåder",
"chatter": "Prat",
"crowd": "Folkmassa",
"animal": "Djur",
"yip": "Gällt skall",
"yip": "Japp",
"howl": "Tjut",
"bow_wow": "Hundskall",
"bow_wow": "Bow Wow",
"growling": "Morrande",
"whimper_dog": "Hundgnäll",
"whimper_dog": "Hund gnäll",
"cat": "Katt",
"meow": "Mjau",
"hiss": "Väsande",
"hiss": "Väsa",
"caterwaul": "Kattgräl",
"livestock": "Boskap",
"horse": "Häst",
"clip_clop": "Hovklapper",
"neigh": "Gnäggande",
"clip_clop": "Klipp Clop",
"neigh": "Gnägga",
"cattle": "Boskap",
"oink": "Nöffande",
"oink": "Oink",
"goat": "Get",
"bleat": "Bräkande",
"bleat": "Bräka",
"fowl": "Fjäderfä",
"cluck": "Kacklande",
"cock_a_doodle_doo": "Kuckeliku",
"turkey": "Kalkon",
"gobble": "Kalkonläte",
"cluck": "Kluck",
"cock_a_doodle_doo": "kukilikuk",
"turkey": "kalkon",
"gobble": "Gobble",
"duck": "Anka",
"quack": "Kvackande",
"quack": "Quack",
"goose": "Gås",
"honk": "Tutande",
"honk": "Tuta",
"wild_animals": "Vilda djur",
"roaring_cats": "Rytande katter",
"roar": "Rytande",
"bird": "Fågel",
"chirp": "Kvittrande",
"squawk": "Skrän",
"chirp": "Kvittra",
"squawk": "Skriande",
"pigeon": "Duva",
"caw": "Kraxande",
"caw": "Kraxa",
"owl": "Uggla",
"hoot": "Ugglehoande",
"hoot": "Tuta",
"dogs": "Hundar",
"rats": "Råttor",
"mouse": "Mus",
"mouse": "Älg",
"music": "Musik",
"sigh": "Suck",
"child_singing": "Barn som sjunger",
"child_singing": "Barnsång",
"sheep": "Får",
"wheeze": "Väsande andning",
"wheeze": "Väsande",
"dog": "Hund",
"sniff": "Sniffning",
"humming": "Nynnande",
"sniff": "Sniffa",
"humming": "Hummar",
"pets": "Husdjur",
"coo": "Kuttrande",
"snort": "Frustande",
"coo": "Kuttra",
"snort": "Fnysa",
"children_playing": "Barn som leker",
"bark": "Skall",
"purr": "Spinnande",
"moo": "Råmande",
"purr": "Spinna",
"moo": "Muu",
"cowbell": "Koskälla",
"pig": "Gris",
"chicken": "Kyckling",
"crow": "Kråka",
"frog": "Groda",
"patter": "Smattrande",
"patter": "Droppar",
"insect": "Insekt",
"cricket": "Syrsa",
"fly": "Fluga",
"buzz": "Surr",
"croak": "Kväkande",
"rattle": "Skrammel",
"croak": "Kvack",
"rattle": "Skallra",
"musical_instrument": "Musikinstrument",
"plucked_string_instrument": "Knäppinstrument",
"plucked_string_instrument": "Stränginstrument",
"guitar": "Gitarr",
"electric_guitar": "Elgitarr",
"electric_guitar": "Elektrisk Gitarr",
"bass_guitar": "Basgitarr",
"steel_guitar": "Stålgitarr",
"tapping": "Knackning",
"snake": "Orm",
"acoustic_guitar": "Akustisk gitarr",
"acoustic_guitar": "Aukustisk gitarr",
"mosquito": "Mygga",
"flapping_wings": "Vingslag",
"whale_vocalization": "Valläten",
"whale_vocalization": "Val-ljud",
"bass_drum": "Bastrumma",
"timpani": "Pukor",
"tabla": "Tabla",
"hi_hat": "Hi-hat",
"hi_hat": "Hi-Hat",
"wood_block": "Träblock",
"tambourine": "Tamburin",
"maraca": "Maracas",
@@ -142,16 +142,16 @@
"mandolin": "Mandolin",
"boat": "Båt",
"train": "Tåg",
"bowed_string_instrument": "Stråkinstrument",
"bowed_string_instrument": "stråkinstrument",
"banjo": "Banjo",
"sitar": "Sitar",
"clock": "Klocka",
"keyboard": "Tangentbord",
"vehicle": "Fordon",
"skateboard": "Skateboard",
"skateboard": "Skatebord",
"door": "Dörr",
"blender": "Blandare",
"sink": "Diskho",
"sink": "Vask",
"hair_dryer": "Hårfön",
"toothbrush": "Tandborste",
"scissors": "Sax",
@@ -164,22 +164,22 @@
"electronic_organ": "Elektronisk orgel",
"hammond_organ": "Hammondorgel",
"synthesizer": "Synthesizer",
"sampler": "Sampler",
"sampler": "Provtagare",
"harpsichord": "Cembalo",
"percussion": "Slagverk",
"drum_kit": "Trumset",
"drum_machine": "Trummaskin",
"drum": "Trumma",
"french_horn": "Valthorn",
"french_horn": "Franskt horn",
"trumpet": "Trumpet",
"flute": "Flöjt",
"gong": "Gong",
"gong": "Gonggong",
"tubular_bells": "Rörklockor",
"mallet_percussion": "Klubbaslagverk",
"mallet_percussion": "Malletinstrument",
"marimba": "Marimba",
"glockenspiel": "Klockspel",
"vibraphone": "Vibrafon",
"steelpan": "Steelpan",
"steelpan": "Stålpanna",
"orchestra": "Orkester",
"brass_instrument": "Bleckblåsinstrument",
"trombone": "Trombon",
@@ -194,23 +194,23 @@
"harp": "Harpa",
"bell": "Klocka",
"church_bell": "Kyrkklocka",
"jingle_bell": "Bjällra",
"jingle_bell": "Bjällerklang",
"bicycle_bell": "Cykelklocka",
"tuning_fork": "Stämgaffel",
"chime": "Klockklang",
"chime": "Klämta",
"wind_chime": "Vindspel",
"harmonica": "Munspel",
"accordion": "Dragspel",
"bagpipes": "Säckpipor",
"didgeridoo": "Didjeridu",
"theremin": "Teremin",
"singing_bowl": "Klangskål",
"scratching": "Skrapande",
"singing_bowl": "Sjungande skål",
"scratching": "Repa",
"pop_music": "Popmusik",
"hip_hop_music": "Hiphopmusik",
"beatboxing": "Beatboxning",
"rock_music": "Rockmusik",
"heavy_metal": "Heavy metal",
"heavy_metal": "Heavy Metal musik",
"punk_rock": "Punkrock",
"grunge": "Grunge",
"progressive_rock": "Progressiv rock",
@@ -219,22 +219,22 @@
"rhythm_and_blues": "Rytm och blues",
"soul_music": "Soulmusik",
"reggae": "Reggae",
"country": "Countrymusik",
"country": "Land",
"swing_music": "Swingmusik",
"bluegrass": "Bluegrass",
"funk": "Funk",
"folk_music": "Folkmusik",
"middle_eastern_music": "Mellanösternmusik",
"jazz": "Jazz",
"disco": "Disco",
"disco": "Disko",
"classical_music": "Klassisk musik",
"opera": "Opera",
"electronic_music": "Elektronisk musik",
"house_music": "Housemusik",
"techno": "Techno",
"techno": "Tekno",
"dubstep": "Dubstep",
"drum_and_bass": "Drum and bass",
"electronica": "Electronica",
"drum_and_bass": "Trumma och bas",
"electronica": "Elektronisk musik",
"electronic_dance_music": "Elektronisk dansmusik",
"ambient_music": "Ambientmusik",
"trance_music": "Trancemusik",
@@ -243,24 +243,24 @@
"flamenco": "Flamenco",
"blues": "Blues",
"music_for_children": "Musik för barn",
"new-age_music": "New age-musik",
"new-age_music": "New Age-musik",
"vocal_music": "Vokalmusik",
"a_capella": "A cappella",
"music_of_africa": "Afrikansk musik",
"afrobeat": "Afrobeat",
"christian_music": "Kristen musik",
"gospel_music": "Gospelmusik",
"music_of_asia": "Asiatisk musik",
"music_of_asia": "Asiens musik",
"carnatic_music": "Karnatisk musik",
"music_of_bollywood": "Bollywoodmusik",
"music_of_bollywood": "Bollywoods musik",
"ska": "Ska",
"traditional_music": "Traditionell musik",
"independent_music": "Indiemusik",
"independent_music": "Oberoende musik",
"song": "Låt",
"background_music": "Bakgrundsmusik",
"theme_music": "Temamusik",
"jingle": "Jingel",
"soundtrack_music": "Filmmusik",
"jingle": "Klingande",
"soundtrack_music": "Soundtrackmusik",
"lullaby": "Vaggvisa",
"video_game_music": "Videospelsmusik",
"christmas_music": "Julmusik",
@@ -268,7 +268,7 @@
"wedding_music": "Bröllopsmusik",
"happy_music": "Glad musik",
"sad_music": "Sorglig musik",
"tender_music": "Ljuv musik",
"tender_music": "Öm musik",
"exciting_music": "Spännande musik",
"angry_music": "Arg musik",
"scary_music": "Skräckmusik",
@@ -281,14 +281,14 @@
"rain": "Regn",
"raindrop": "Regndroppe",
"rain_on_surface": "Regn på ytan",
"stream": "Bäck",
"stream": "Strömma",
"waterfall": "Vattenfall",
"ocean": "Hav",
"waves": "Vågor",
"steam": "Ånga",
"gurgling": "Gurglande",
"fire": "Eld",
"crackle": "Sprakande",
"fire": "Brand",
"crackle": "Spraka",
"sailboat": "Segelbåt",
"rowboat": "Roddbåt",
"motorboat": "Motorbåt",
@@ -297,34 +297,34 @@
"power_windows": "Elfönster",
"skidding": "Slirning",
"tire_squeal": "Däckskrik",
"toot": "Kort signal",
"toot": "Tuta",
"car_alarm": "Billarm",
"car_passing_by": "Bil som passerar",
"race_car": "Tävlingsbil",
"race_car": "Racerbil",
"truck": "Lastbil",
"air_brake": "Tryckluftsbroms",
"air_horn": "Tryckluftshorn",
"reversing_beeps": "Backningssignal",
"air_brake": "Luftbroms",
"air_horn": "Lufthorn",
"reversing_beeps": "Backningljud",
"ice_cream_truck": "Glassbil",
"emergency_vehicle": "Utryckningsfordon",
"emergency_vehicle": "Akutbil",
"police_car": "Polisbil",
"ambulance": "Ambulans",
"fire_engine": "Brandbil",
"traffic_noise": "Trafikbuller",
"rail_transport": "Järnvägstransport",
"train_whistle": "Tågvissling",
"train_whistle": "Tågvissla",
"train_horn": "Tåghorn",
"railroad_car": "Järnvägsvagn",
"train_wheels_squealing": "Gnisslande tåghjul",
"train_wheels_squealing": "Tåghjul skriker",
"subway": "Tunnelbana",
"aircraft": "Flygplan",
"aircraft_engine": "Flygplansmotor",
"aircraft_engine": "Flygmotor",
"jet_engine": "Jetmotor",
"propeller": "Propeller",
"helicopter": "Helikopter",
"fixed-wing_aircraft": "Flygplan med fasta vingar",
"engine": "Motor",
"light_engine": "Lätt motor",
"light_engine": "Ljusmotor",
"lawn_mower": "Gräsklippare",
"chainsaw": "Motorsåg",
"doorbell": "Dörrklocka",
@@ -333,30 +333,30 @@
"alarm": "Larm",
"telephone": "Telefon",
"ringtone": "Ringsignal",
"dial_tone": "Kopplingston",
"dial_tone": "Rington",
"busy_signal": "Upptagetsignal",
"alarm_clock": "Väckarklocka",
"alarm_clock": "Alarmklocka",
"smoke_detector": "Brandvarnare",
"fire_alarm": "Brandlarm",
"dental_drill's_drill": "Tandläkarborr",
"medium_engine": "Medelstor motor",
"heavy_engine": "Tung motor",
"engine_knocking": "Motorknackning",
"engine_starting": "Motorstart",
"engine_starting": "Motor startar",
"idling": "Tomgång",
"accelerating": "Acceleration",
"accelerating": "Accelererar",
"ding-dong": "Ring-ring",
"sliding_door": "Skjutdörr",
"slam": "Smäll",
"knock": "Knack",
"tap": "Lätt knackning",
"squeak": "Gnissel",
"tap": "Knacka",
"squeak": "Gnissla",
"cupboard_open_or_close": "Skåp öppnas eller stängs",
"drawer_open_or_close": "Låda öppnas eller stängs",
"dishes": "Tallrikar",
"cutlery": "Bestick",
"chopping": "Hackning",
"frying": "Stekning",
"frying": "Steka",
"microwave_oven": "Mikrovågsugn",
"water_tap": "Vattenkran",
"bathtub": "Badkar",
@@ -366,22 +366,22 @@
"keys_jangling": "Nycklar som klirrar",
"coin": "Mynt",
"electric_shaver": "Elektrisk rakhyvel",
"shuffling_cards": "Kortblandning",
"typing": "Skrivande på tangentbord",
"shuffling_cards": "Blanda kort",
"typing": "Skrivar",
"typewriter": "Skrivmaskin",
"writing": "Skrivande",
"telephone_bell_ringing": "Telefonringning",
"telephone_dialing": "Telefonuppringning",
"writing": "Skriva",
"telephone_bell_ringing": "Telefonen ringer",
"telephone_dialing": "Ljud för telefonuppringning",
"siren": "Siren",
"civil_defense_siren": "Civilförsvarssiren",
"buzzer": "Summerljud",
"buzzer": "Summer",
"foghorn": "Mistlur",
"whistle": "Vissling",
"whistle": "Vissla",
"steam_whistle": "Ångvissla",
"mechanisms": "Mekanismer",
"ratchet": "Spärrhake",
"tick": "Tick",
"tick-tock": "Tick-tack",
"tick-tock": "Tick Tack",
"gears": "Kugghjul",
"pulleys": "Remskivor",
"sewing_machine": "Symaskin",
@@ -389,115 +389,115 @@
"mechanical_fan": "Mekanisk fläkt",
"air_conditioning": "Luftkonditionering",
"cash_register": "Kassaapparat",
"single-lens_reflex_camera": "Spegelreflexkamera",
"single-lens_reflex_camera": "Enkellinsreflexkamera",
"tools": "Verktyg",
"hammer": "Hammare",
"jackhammer": "Bilningshammare",
"jackhammer": "Tryckluftsborr",
"sawing": "Sågning",
"filing": "Filning",
"sanding": "Sandning",
"power_tool": "Elverktyg",
"drill": "Borrning",
"drill": "Borra",
"explosion": "Explosion",
"gunshot": "Skott",
"machine_gun": "Kulspruteeld",
"fusillade": "Salva",
"artillery_fire": "Artillerield",
"cap_gun": "Knallpulverpistol",
"gunshot": "Skottlossning",
"machine_gun": "Kulspruta",
"fusillade": "Fusillad",
"artillery_fire": "Artillerieeld",
"cap_gun": "Kapsylpistol",
"fireworks": "Fyrverkeri",
"firecracker": "Smällare",
"burst": "Knall",
"eruption": "Vulkanutbrott",
"burst": "Brista",
"eruption": "Utbrott",
"boom": "Pang",
"wood": "Trä",
"chop": "Huggande",
"splinter": "Splittring",
"crack": "Knak",
"chop": "Hugga",
"splinter": "Flisa",
"crack": "Spricka",
"glass": "Glas",
"chink": "Klirr",
"shatter": "Krossat glas",
"chink": "Skaka",
"shatter": "Splittras",
"silence": "Tystnad",
"sound_effect": "Ljudeffekt",
"environmental_noise": "Miljöbuller",
"static": "Statiskt brus",
"static": "Statisk",
"white_noise": "Vitt brus",
"pink_noise": "Rosa brus",
"television": "TV",
"television": "Tv",
"radio": "Radio",
"field_recording": "Fältinspelning",
"scream": "Skrik",
"sodeling": "Joddling",
"scream": "Skrika",
"sodeling": "dling",
"chird": "Ackord",
"change_ringing": "Växelringning",
"change_ringing": "Ljud från myntväxling",
"shofar": "Shofar",
"liquid": "Vätska",
"liquid": "Flytande",
"splash": "Stänk",
"slosh": "Skvalp",
"squish": "Klafs",
"slosh": "Plaska",
"squish": "Stryk",
"drip": "Dropp",
"pour": "Hällande",
"trickle": "Rinnande",
"gush": "Forsande",
"fill": "Fyllning",
"spray": "Sprejning",
"pump": "Pumpning",
"stir": "Omrörning",
"boiling": "Kokning",
"pour": "Hälla",
"trickle": "Sippra",
"gush": "Välla",
"fill": "Fylla",
"spray": "Sprej",
"pump": "Pump",
"stir": "Rör",
"boiling": "Kokande",
"sonar": "Ekolod",
"arrow": "Pil",
"whoosh": "Svisch",
"whoosh": "Svischande",
"thump": "Dunk",
"thunk": "Dunkande",
"electronic_tuner": "Elektronisk stämapparat",
"effects_unit": "Effektenhet",
"chorus_effect": "Choruseffekt",
"chorus_effect": "Chorus-effekt",
"basketball_bounce": "Basketbollstuds",
"bang": "Smäll",
"slap": "Slag",
"whack": "Hårt slag",
"smash": "Krasch",
"breaking": "Något går sönder",
"whack": "Slog",
"smash": "Smälla",
"breaking": "Brytning",
"bouncing": "Studsande",
"whip": "Piskrapp",
"flap": "Flaxande",
"scratch": "Skrapande",
"scrape": "Skrapljud",
"rub": "Gnuggande",
"roll": "Rullande",
"crushing": "Krossning",
"crumpling": "Skrynkling",
"whip": "Piska",
"flap": "Flaxa",
"scratch": "Repa",
"scrape": "Skrapa",
"rub": "Gnugga",
"roll": "Rulla",
"crushing": "Krossa",
"crumpling": "Skrynkliga",
"tearing": "Rivning",
"beep": "Pip",
"ping": "Ping",
"ding": "Ding",
"clang": "Klang",
"squeal": "Gällt skrik",
"squeal": "Skrika",
"creak": "Knarr",
"rustle": "Prassel",
"whir": "Surrande",
"clatter": "Skrammel",
"sizzle": "Fräsande",
"whir": "Surra",
"clatter": "Slammer",
"sizzle": "Fräsa vid matlagning",
"clicking": "Klickande",
"clickety_clack": "Klapprande",
"rumble": "Muller",
"clickety_clack": "Klickigt klack",
"rumble": "Mullrande",
"plop": "Plopp",
"hum": "Brum",
"zing": "Vinande",
"boing": "Fjädrande ljud",
"boing": "Pling",
"crunch": "Knastrande",
"sine_wave": "Sinusvåg",
"harmonic": "Överton",
"harmonic": "Harmonisk",
"chirp_tone": "Kvittringston",
"pulse": "Puls",
"inside": "Inomhus",
"outside": "Utomhus",
"reverberation": "Efterklang",
"inside": "Inuti",
"outside": "Utanför",
"reverberation": "Eko",
"echo": "Eko",
"noise": "Buller",
"mains_hum": "Nätbrum",
"mains_hum": "Huvudbrum",
"distortion": "Distorsion",
"sidetone": "Medhörning",
"sidetone": "Sidoton",
"cacophony": "Kakofoni",
"throbbing": "Pulserande ljud",
"throbbing": "Bultande",
"vibration": "Vibration"
}

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