mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-12-16 10:06:42 +03:00
Compare commits
22 Commits
9142bd6040
...
dd02e2d88c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd02e2d88c | ||
|
|
c368ceb110 | ||
|
|
c7fd610c6e | ||
|
|
ef25c39c92 | ||
|
|
49181dbc18 | ||
|
|
ef569afa87 | ||
|
|
946c9e7cc0 | ||
|
|
53286a49e9 | ||
|
|
5a1d4257ec | ||
|
|
eec9eefa7b | ||
|
|
f1f1188ac5 | ||
|
|
a741440b81 | ||
|
|
e61c9e20bd | ||
|
|
4e1b3faafd | ||
|
|
ee468ac9ad | ||
|
|
cb58031c1f | ||
|
|
194f875669 | ||
|
|
1c969f3250 | ||
|
|
7577483009 | ||
|
|
3e80b0d5a6 | ||
|
|
dfd837cfb0 | ||
|
|
152e585206 |
@ -123,7 +123,7 @@ auth:
|
||||
# Optional: Refresh time in seconds (default: shown below)
|
||||
# When the session is going to expire in less time than this setting,
|
||||
# it will be refreshed back to the session_length.
|
||||
refresh_time: 43200 # 12 hours
|
||||
refresh_time: 1800 # 30 minutes
|
||||
# Optional: Rate limiting for login failures to help prevent brute force
|
||||
# login attacks (default: shown below)
|
||||
# See the docs for more information on valid values
|
||||
|
||||
@ -55,8 +55,8 @@ def require_admin_by_default():
|
||||
"/auth",
|
||||
"/auth/first_time_login",
|
||||
"/login",
|
||||
# Authenticated user endpoints (allow_any_authenticated)
|
||||
"/logout",
|
||||
# Authenticated user endpoints (allow_any_authenticated)
|
||||
"/profile",
|
||||
# Public info endpoints (allow_public)
|
||||
"/",
|
||||
@ -311,7 +311,10 @@ def get_jwt_secret() -> str:
|
||||
)
|
||||
jwt_secret = secrets.token_hex(64)
|
||||
try:
|
||||
with open(jwt_secret_file, "w") as f:
|
||||
fd = os.open(
|
||||
jwt_secret_file, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600
|
||||
)
|
||||
with os.fdopen(fd, "w") as f:
|
||||
f.write(str(jwt_secret))
|
||||
except Exception:
|
||||
logger.warning(
|
||||
@ -356,9 +359,35 @@ def verify_password(password, password_hash):
|
||||
return secrets.compare_digest(password_hash, compare_hash)
|
||||
|
||||
|
||||
def validate_password_strength(password: str) -> tuple[bool, Optional[str]]:
|
||||
"""
|
||||
Validate password strength.
|
||||
|
||||
Returns a tuple of (is_valid, error_message).
|
||||
"""
|
||||
if not password:
|
||||
return False, "Password cannot be empty"
|
||||
|
||||
if len(password) < 8:
|
||||
return False, "Password must be at least 8 characters long"
|
||||
|
||||
if not any(c.isupper() for c in password):
|
||||
return False, "Password must contain at least one uppercase letter"
|
||||
|
||||
if not any(c.isdigit() for c in password):
|
||||
return False, "Password must contain at least one digit"
|
||||
|
||||
if not any(c in '!@#$%^&*(),.?":{}|<>' for c in password):
|
||||
return False, "Password must contain at least one special character"
|
||||
|
||||
return True, None
|
||||
|
||||
|
||||
def create_encoded_jwt(user, role, expiration, secret):
|
||||
return jwt.encode(
|
||||
{"alg": "HS256"}, {"sub": user, "role": role, "exp": expiration}, secret
|
||||
{"alg": "HS256"},
|
||||
{"sub": user, "role": role, "exp": expiration, "iat": int(time.time())},
|
||||
secret,
|
||||
)
|
||||
|
||||
|
||||
@ -619,13 +648,27 @@ def auth(request: Request):
|
||||
return fail_response
|
||||
|
||||
# if the jwt cookie is expiring soon
|
||||
elif jwt_source == "cookie" and expiration - JWT_REFRESH <= current_time:
|
||||
if jwt_source == "cookie" and expiration - JWT_REFRESH <= current_time:
|
||||
logger.debug("jwt token expiring soon, refreshing cookie")
|
||||
# ensure the user hasn't been deleted
|
||||
|
||||
# Check if password has been changed since token was issued
|
||||
# If so, force re-login by rejecting the refresh
|
||||
try:
|
||||
User.get_by_id(user)
|
||||
except DoesNotExist:
|
||||
user_obj = User.get_by_id(user)
|
||||
if user_obj.password_changed_at is not None:
|
||||
token_iat = int(token.claims.get("iat", 0))
|
||||
password_changed_timestamp = int(
|
||||
user_obj.password_changed_at.timestamp()
|
||||
)
|
||||
if token_iat < password_changed_timestamp:
|
||||
logger.debug(
|
||||
"jwt token issued before password change, rejecting refresh"
|
||||
)
|
||||
return fail_response
|
||||
except DoesNotExist:
|
||||
logger.debug("user not found")
|
||||
return fail_response
|
||||
|
||||
new_expiration = current_time + JWT_SESSION_LENGTH
|
||||
new_encoded_jwt = create_encoded_jwt(
|
||||
user, role, new_expiration, request.app.jwt_token
|
||||
@ -660,7 +703,7 @@ def profile(request: Request):
|
||||
)
|
||||
|
||||
|
||||
@router.get("/logout", dependencies=[Depends(allow_any_authenticated())])
|
||||
@router.get("/logout", dependencies=[Depends(allow_public())])
|
||||
def logout(request: Request):
|
||||
auth_config: AuthConfig = request.app.frigate_config.auth
|
||||
response = RedirectResponse("/login", status_code=303)
|
||||
@ -782,10 +825,63 @@ async def update_password(
|
||||
|
||||
HASH_ITERATIONS = request.app.frigate_config.auth.hash_iterations
|
||||
|
||||
password_hash = hash_password(body.password, iterations=HASH_ITERATIONS)
|
||||
User.set_by_id(username, {User.password_hash: password_hash})
|
||||
try:
|
||||
user = User.get_by_id(username)
|
||||
except DoesNotExist:
|
||||
return JSONResponse(content={"message": "User not found"}, status_code=404)
|
||||
|
||||
return JSONResponse(content={"success": True})
|
||||
# Require old_password when:
|
||||
# 1. Non-admin user is changing another user's password (admin only action)
|
||||
# 2. Any user is changing their own password
|
||||
is_changing_own_password = current_username == username
|
||||
is_non_admin = current_role != "admin"
|
||||
|
||||
if is_changing_own_password or is_non_admin:
|
||||
if not body.old_password:
|
||||
return JSONResponse(
|
||||
content={"message": "Current password is required"},
|
||||
status_code=400,
|
||||
)
|
||||
if not verify_password(body.old_password, user.password_hash):
|
||||
return JSONResponse(
|
||||
content={"message": "Current password is incorrect"},
|
||||
status_code=401,
|
||||
)
|
||||
|
||||
# Validate new password strength
|
||||
is_valid, error_message = validate_password_strength(body.password)
|
||||
if not is_valid:
|
||||
return JSONResponse(
|
||||
content={"message": error_message},
|
||||
status_code=400,
|
||||
)
|
||||
|
||||
password_hash = hash_password(body.password, iterations=HASH_ITERATIONS)
|
||||
User.update(
|
||||
{
|
||||
User.password_hash: password_hash,
|
||||
User.password_changed_at: datetime.now(),
|
||||
}
|
||||
).where(User.username == username).execute()
|
||||
|
||||
response = JSONResponse(content={"success": True})
|
||||
|
||||
# If user changed their own password, issue a new JWT to keep them logged in
|
||||
if current_username == username:
|
||||
JWT_COOKIE_NAME = request.app.frigate_config.auth.cookie_name
|
||||
JWT_COOKIE_SECURE = request.app.frigate_config.auth.cookie_secure
|
||||
JWT_SESSION_LENGTH = request.app.frigate_config.auth.session_length
|
||||
|
||||
expiration = int(time.time()) + JWT_SESSION_LENGTH
|
||||
encoded_jwt = create_encoded_jwt(
|
||||
username, current_role, expiration, request.app.jwt_token
|
||||
)
|
||||
# Set new JWT cookie on response
|
||||
set_jwt_cookie(
|
||||
response, JWT_COOKIE_NAME, encoded_jwt, expiration, JWT_COOKIE_SECURE
|
||||
)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
@router.put(
|
||||
|
||||
@ -11,6 +11,7 @@ class AppConfigSetBody(BaseModel):
|
||||
|
||||
class AppPutPasswordBody(BaseModel):
|
||||
password: str
|
||||
old_password: Optional[str] = None
|
||||
|
||||
|
||||
class AppPostUsersBody(BaseModel):
|
||||
|
||||
@ -20,7 +20,7 @@ class AuthConfig(FrigateBaseModel):
|
||||
default=86400, title="Session length for jwt session tokens", ge=60
|
||||
)
|
||||
refresh_time: int = Field(
|
||||
default=43200,
|
||||
default=1800,
|
||||
title="Refresh the session if it is going to expire in this many seconds",
|
||||
ge=30,
|
||||
)
|
||||
|
||||
@ -133,6 +133,7 @@ class User(Model):
|
||||
default="admin",
|
||||
)
|
||||
password_hash = CharField(null=False, max_length=120)
|
||||
password_changed_at = DateTimeField(null=True)
|
||||
notification_tokens = JSONField()
|
||||
|
||||
@classmethod
|
||||
|
||||
@ -54,7 +54,9 @@ def migrate(migrator, database, fake=False, **kwargs):
|
||||
|
||||
# Migrate existing has_been_reviewed data to UserReviewStatus for all users
|
||||
def migrate_data():
|
||||
all_users = list(User.select())
|
||||
# Use raw SQL to avoid ORM issues with columns that don't exist yet
|
||||
cursor = database.execute_sql('SELECT "username" FROM "user"')
|
||||
all_users = cursor.fetchall()
|
||||
if not all_users:
|
||||
return
|
||||
|
||||
@ -63,7 +65,7 @@ def migrate(migrator, database, fake=False, **kwargs):
|
||||
)
|
||||
reviewed_segment_ids = [row[0] for row in cursor.fetchall()]
|
||||
# also migrate for anonymous (unauthenticated users)
|
||||
usernames = [user.username for user in all_users] + ["anonymous"]
|
||||
usernames = [user[0] for user in all_users] + ["anonymous"]
|
||||
|
||||
for segment_id in reviewed_segment_ids:
|
||||
for username in usernames:
|
||||
|
||||
42
migrations/032_add_password_changed_at.py
Normal file
42
migrations/032_add_password_changed_at.py
Normal file
@ -0,0 +1,42 @@
|
||||
"""Peewee migrations -- 032_add_password_changed_at.py.
|
||||
|
||||
Some examples (model - class or model name)::
|
||||
|
||||
> Model = migrator.orm['model_name'] # Return model in current state by name
|
||||
|
||||
> migrator.sql(sql) # Run custom SQL
|
||||
> migrator.python(func, *args, **kwargs) # Run python code
|
||||
> migrator.create_model(Model) # Create a model (could be used as decorator)
|
||||
> migrator.remove_model(model, cascade=True) # Remove a model
|
||||
> migrator.add_fields(model, **fields) # Add fields to a model
|
||||
> migrator.change_fields(model, **fields) # Change fields
|
||||
> migrator.remove_fields(model, *field_names, cascade=True)
|
||||
> migrator.rename_field(model, old_field_name, new_field_name)
|
||||
> migrator.rename_table(model, new_table_name)
|
||||
> migrator.add_index(model, *col_names, unique=False)
|
||||
> migrator.drop_index(model, *col_names)
|
||||
> migrator.add_not_null(model, *field_names)
|
||||
> migrator.drop_not_null(model, *field_names)
|
||||
> migrator.add_default(model, field_name, default)
|
||||
|
||||
"""
|
||||
|
||||
import peewee as pw
|
||||
|
||||
SQL = pw.SQL
|
||||
|
||||
|
||||
def migrate(migrator, database, fake=False, **kwargs):
|
||||
migrator.sql(
|
||||
"""
|
||||
ALTER TABLE user ADD COLUMN password_changed_at DATETIME NULL
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def rollback(migrator, database, fake=False, **kwargs):
|
||||
migrator.sql(
|
||||
"""
|
||||
ALTER TABLE user DROP COLUMN password_changed_at
|
||||
"""
|
||||
)
|
||||
@ -1,5 +1,6 @@
|
||||
{
|
||||
"form": {
|
||||
"user": "Потребителско име"
|
||||
"user": "Потребителско име",
|
||||
"password": "Парола"
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
"select": "Избери"
|
||||
},
|
||||
"restart": {
|
||||
"title": "Сигурен ли сте, че искате да рестартирате Frigate?"
|
||||
"title": "Сигурен ли сте, че искате да рестартирате Frigate?",
|
||||
"button": "Рестартирай"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
{
|
||||
"iconPicker": {
|
||||
"selectIcon": "Изберете иконка"
|
||||
"selectIcon": "Изберете иконка",
|
||||
"search": {
|
||||
"placeholder": "Потърси за икона…"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,10 @@
|
||||
{
|
||||
"button": {
|
||||
"downloadVideo": {
|
||||
"label": "Свали видео"
|
||||
"label": "Свали видео",
|
||||
"toast": {
|
||||
"success": "Вашето видео за преглеждане почна да се изтегля."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1,3 @@
|
||||
{}
|
||||
{
|
||||
"documentTitle": "Модели за класификация"
|
||||
}
|
||||
|
||||
@ -1 +1,4 @@
|
||||
{}
|
||||
{
|
||||
"documentTitle": "Настройки на конфигурацията - Фригейт",
|
||||
"configEditor": "Настройки на конфигурацията"
|
||||
}
|
||||
|
||||
@ -9,5 +9,7 @@
|
||||
"aria": "Избери събития",
|
||||
"noFoundForTimePeriod": "Няма намерени събития за този времеви период."
|
||||
},
|
||||
"allCameras": "Всички камери"
|
||||
"allCameras": "Всички камери",
|
||||
"alerts": "Известия",
|
||||
"detections": "Засичания"
|
||||
}
|
||||
|
||||
@ -8,5 +8,7 @@
|
||||
}
|
||||
},
|
||||
"trackedObjectsCount_one": "{{count}} проследен обект ",
|
||||
"trackedObjectsCount_other": "{{count}} проследени обекта "
|
||||
"trackedObjectsCount_other": "{{count}} проследени обекта ",
|
||||
"documentTitle": "Разгледай - Фригейт",
|
||||
"generativeAI": "Генериращ Изкъствен Интелект"
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
{
|
||||
"documentTitle": "Експорт - Frigate"
|
||||
"documentTitle": "Експорт - Frigate",
|
||||
"search": "Търси"
|
||||
}
|
||||
|
||||
@ -10,5 +10,9 @@
|
||||
"deletedName_one": "{{count}} лице бе изтрито успешно.",
|
||||
"deletedName_other": "{{count}} лица бяха изтрити успешно."
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"addFace": "Добавете нова колекция във библиотеката за лица при качването на първата ви снимка.",
|
||||
"placeholder": "Напишете име за тази колекция"
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,5 +64,6 @@
|
||||
"cameraSettings": {
|
||||
"cameraEnabled": "Камерата е включена"
|
||||
},
|
||||
"documentTitle": "Наживо - Frigate"
|
||||
"documentTitle": "Наживо - Frigate",
|
||||
"documentTitle.withCamera": "{{camera}} - На живо - Фригейт"
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
{
|
||||
"button": {
|
||||
"save": "Запазване на търсенето"
|
||||
}
|
||||
},
|
||||
"search": "Търси",
|
||||
"savedSearches": "Запазени търсения"
|
||||
}
|
||||
|
||||
@ -12,5 +12,9 @@
|
||||
"point_one": "{{count}} точка",
|
||||
"point_other": "{{count}} точки"
|
||||
}
|
||||
},
|
||||
"documentTitle": {
|
||||
"default": "Настройки - Фригейт",
|
||||
"authentication": "Настройки за сигурността - Фругейт"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
{
|
||||
"stats": {
|
||||
"healthy": "Системата е изправна"
|
||||
},
|
||||
"documentTitle": {
|
||||
"cameras": "Статистики за Камери - Фригейт",
|
||||
"storage": "Статистика за паметта - Фригейт"
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,7 +58,8 @@
|
||||
"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}}"
|
||||
}
|
||||
},
|
||||
"view": "Vista"
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Guardar exportació",
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"documentTitle": "Models de classificació",
|
||||
"documentTitle": "Models de classificació - Frigate",
|
||||
"button": {
|
||||
"deleteClassificationAttempts": "Suprimeix les imatges de classificació",
|
||||
"renameCategory": "Reanomena la classe",
|
||||
@ -152,7 +152,12 @@
|
||||
"generateSuccess": "Imatges de mostra generades amb èxit",
|
||||
"allImagesRequired_one": "Classifiqueu totes les imatges. Queda {{count}} imatge.",
|
||||
"allImagesRequired_many": "Classifiqueu totes les imatges. Queden {{count}} imatges.",
|
||||
"allImagesRequired_other": "Classifiqueu totes les imatges. Queden {{count}} imatges."
|
||||
"allImagesRequired_other": "Classifiqueu totes les imatges. Queden {{count}} imatges.",
|
||||
"modelCreated": "El model s'ha creat correctament. Utilitzeu la vista Classificacions recents per a afegir imatges per als estats que falten i, a continuació, entrenar el model.",
|
||||
"missingStatesWarning": {
|
||||
"title": "Falten exemples d'estat",
|
||||
"description": "Es recomana seleccionar exemples per a tots els estats per obtenir els millors resultats. Podeu continuar sense seleccionar tots els estats, però el model no serà entrenat fins que tots els estats tinguin imatges. Després de continuar, utilitzeu la vista Classificacions recents per classificar imatges per als estats que falten, i després entrenar el model."
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteModel": {
|
||||
@ -180,5 +185,6 @@
|
||||
"noNewImages": "Sense noves imatges per entrenar. Classifica més imatges primer.",
|
||||
"modelNotReady": "El model no está preparat per entrenar",
|
||||
"noChanges": "No hi ha canvis al conjunt de dades des de l'última formació."
|
||||
}
|
||||
},
|
||||
"none": "Cap"
|
||||
}
|
||||
|
||||
@ -55,5 +55,8 @@
|
||||
"trackedPoint": "Punt de seguiment"
|
||||
},
|
||||
"zoomIn": "Amplia",
|
||||
"zoomOut": "Redueix"
|
||||
"zoomOut": "Redueix",
|
||||
"normalActivity": "Normal",
|
||||
"needsReview": "Necessita revisió",
|
||||
"securityConcern": "Preocupació per la seguretat"
|
||||
}
|
||||
|
||||
@ -220,6 +220,10 @@
|
||||
"viewTrackingDetails": {
|
||||
"label": "Veure detalls de seguiment",
|
||||
"aria": "Mostra els detalls de seguiment"
|
||||
},
|
||||
"downloadCleanSnapshot": {
|
||||
"label": "Descarrega la instantània neta",
|
||||
"aria": "Descarrega la instantània neta"
|
||||
}
|
||||
},
|
||||
"noTrackedObjects": "No s'han trobat objectes rastrejats",
|
||||
@ -263,7 +267,8 @@
|
||||
"header": {
|
||||
"zones": "Zones",
|
||||
"ratio": "Ràtio",
|
||||
"area": "Àrea"
|
||||
"area": "Àrea",
|
||||
"score": "Puntuació"
|
||||
}
|
||||
},
|
||||
"annotationSettings": {
|
||||
@ -278,7 +283,7 @@
|
||||
"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": {
|
||||
"success": "L'Òfset d'anotació per a {{camera}} s'ha desat al fitxer de configuració. Reinicieu Frigate per aplicar els canvis."
|
||||
"success": "El desplaçament de l'anotació per {{camera}} s'ha desat al fitxer de configuració."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -172,7 +172,7 @@
|
||||
"name": {
|
||||
"inputPlaceHolder": "Introduïu un nom…",
|
||||
"title": "Nom",
|
||||
"tips": "El nom ha de tenir almenys 2 caràcters, ha de tenir almenys una lletra, i no ha de ser el nom d'una càmera o una altra zona."
|
||||
"tips": "El nom ha de tenir almenys 2 caràcters, ha de tenir almenys una lletra, i no ha de ser el nom d'una càmera o una altra zona en aquesta càmera."
|
||||
},
|
||||
"label": "Zones",
|
||||
"desc": {
|
||||
@ -199,7 +199,7 @@
|
||||
},
|
||||
"clickDrawPolygon": "Fes click per a dibuixar un polígon a la imatge.",
|
||||
"toast": {
|
||||
"success": "La zona {{zoneName}} ha estat desada. Reinicia Frigate per a aplicar els canvis."
|
||||
"success": "S'ha desat la zona ({{zoneName}})."
|
||||
}
|
||||
},
|
||||
"filter": {
|
||||
@ -229,8 +229,8 @@
|
||||
"clickDrawPolygon": "Fes click per a dibuixar un polígon a la imatge.",
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "{{polygonName}} s'ha desat. Reinicia Frigate per a aplicar els canvis.",
|
||||
"noName": "La màscara de moviment ha estat desada. Reinicia Frigate per aplicar els canvis."
|
||||
"title": "{{polygonName}} s'ha desat.",
|
||||
"noName": "La màscara de moviment ha estat desada."
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -254,8 +254,8 @@
|
||||
"clickDrawPolygon": "Fes click per a dibuixar un polígon a la imatge.",
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "{{polygonName}} s'ha desat. Reinicia Frigate per a aplicar els canvis.",
|
||||
"noName": "La màscara d'objectes ha estat desada. Reincia Frigate per a aplicar els canvis."
|
||||
"title": "{{polygonName}} s'ha desat.",
|
||||
"noName": "La màscara d'objectes ha estat desada."
|
||||
}
|
||||
},
|
||||
"context": "Les màscares de filtratge d’objectes s’utilitzen per descartar falsos positius d’un tipus d’objecte concret segons la seva ubicació."
|
||||
|
||||
@ -25,7 +25,10 @@
|
||||
"deletedModel_one": "Úspešne odstranený {{count}} model",
|
||||
"deletedModel_few": "Úspešne odstranené {{count}} modely",
|
||||
"deletedModel_other": "Úspěšne ostranených {{count}} modelov",
|
||||
"deletedCategory": "Zmazať triedu"
|
||||
"deletedCategory": "Zmazať triedu",
|
||||
"categorizedImage": "Obrázek úspěšně klasifikován",
|
||||
"trainedModel": "Úspěšně vytrénovaný model.",
|
||||
"trainingModel": "Trénování modelu bylo úspěšně zahájeno."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,6 +41,8 @@
|
||||
"zoomOut": "Oddálit",
|
||||
"detail": {
|
||||
"label": "Detail",
|
||||
"noDataFound": "Žádná detailní data k prohlédnutí"
|
||||
"noDataFound": "Žádná detailní data k prohlédnutí",
|
||||
"aria": "Přepnout detailní zobrazení",
|
||||
"trackedObject_other": "{{count}} objektů"
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
"desc": "Skutečně chcete vymazat kolekci {{name}}? Toto trvale vymaže všechny přiřazené obličeje."
|
||||
},
|
||||
"train": {
|
||||
"title": "Trénovat",
|
||||
"title": "Nedávná rozpoznání",
|
||||
"empty": "Nejsou zde žádné předchozí pokusy o rozpoznání obličeje",
|
||||
"aria": "Vybrat trénink"
|
||||
},
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
"masksAndZones": "Editor masky a zón - Frigate",
|
||||
"motionTuner": "Ladění detekce pohybu - Frigate",
|
||||
"object": "Ladění - Frigate",
|
||||
"general": "Obecné nastavení - Frigate",
|
||||
"general": "Nastavení rozhraní- Frigate",
|
||||
"frigatePlus": "Frigate+ nastavení - Frigate",
|
||||
"enrichments": "Nastavení obohacení - Frigate",
|
||||
"cameraManagement": "Správa kamer - Frigate",
|
||||
@ -307,7 +307,9 @@
|
||||
"frigateplus": "Frigate+",
|
||||
"enrichments": "Obohacení",
|
||||
"triggers": "Spouštěče",
|
||||
"cameraManagement": "Správa"
|
||||
"cameraManagement": "Správa",
|
||||
"cameraReview": "Kontrola",
|
||||
"roles": "Role"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"time": {
|
||||
"untilForTime": "Indtil{{time}}",
|
||||
"untilForTime": "Indtil {{time}}",
|
||||
"untilForRestart": "Indtil Frigate genstarter.",
|
||||
"untilRestart": "Indtil genstart",
|
||||
"ago": "{{timeAgo}} siden",
|
||||
|
||||
@ -15,5 +15,36 @@
|
||||
},
|
||||
"count_one": "{{count}} Label",
|
||||
"label": "Etiketter"
|
||||
},
|
||||
"zones": {
|
||||
"label": "Zoner",
|
||||
"all": {
|
||||
"title": "Alle zoner",
|
||||
"short": "Zoner"
|
||||
}
|
||||
},
|
||||
"more": "Flere filtre",
|
||||
"sort": {
|
||||
"label": "Sortér",
|
||||
"dateAsc": "Dato (Stigende)",
|
||||
"dateDesc": "Dato (Faldende)",
|
||||
"speedAsc": "Anslået hastighed (Stigende)",
|
||||
"speedDesc": "Anslået hastighed (Faldende)",
|
||||
"relevance": "Relevans"
|
||||
},
|
||||
"dates": {
|
||||
"selectPreset": "Vælg en forudindstilling…",
|
||||
"all": {
|
||||
"title": "Alle datoer",
|
||||
"short": "Datoer"
|
||||
}
|
||||
},
|
||||
"reset": {
|
||||
"label": "Nulstille filtre til standardværdier"
|
||||
},
|
||||
"timeRange": "Tidsinterval",
|
||||
"estimatedSpeed": "Anslået hastighed ({{unit}})",
|
||||
"features": {
|
||||
"hasVideoClip": "Har et videoklip"
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,7 +296,7 @@
|
||||
"doorbell": "Türklingel",
|
||||
"ding-dong": "BimBam",
|
||||
"sliding_door": "Schiebetür",
|
||||
"slam": "Knall",
|
||||
"slam": "zuknallen",
|
||||
"knock": "Klopfen",
|
||||
"tap": "Schlag",
|
||||
"squeak": "Quietschen",
|
||||
@ -355,7 +355,7 @@
|
||||
"shatter": "Zerspringen",
|
||||
"silence": "Stille",
|
||||
"environmental_noise": "Umgebungsgeräusch",
|
||||
"static": "Rauschen",
|
||||
"static": "Statisch",
|
||||
"pink_noise": "Rosa Rauschen",
|
||||
"television": "Fernsehgerät",
|
||||
"radio": "Radio",
|
||||
@ -441,5 +441,63 @@
|
||||
"arrow": "Pfeil",
|
||||
"electronic_tuner": "Elektronischer Tuner",
|
||||
"effects_unit": "Effekteinheit",
|
||||
"chorus_effect": "Chorus-Effekt"
|
||||
"chorus_effect": "Chorus-Effekt",
|
||||
"sodeling": "Verfilzen",
|
||||
"chird": "Akkord",
|
||||
"change_ringing": "Wechsle RingRing",
|
||||
"shofar": "Schofar",
|
||||
"gush": "sprudeln",
|
||||
"sonar": "Sonar",
|
||||
"whoosh": "Rauschen",
|
||||
"thump": "Ruck",
|
||||
"basketball_bounce": "Basketball Abbraller",
|
||||
"bang": "Knall",
|
||||
"slap": "Ohrfeige",
|
||||
"whack": "verhauen",
|
||||
"smash": "zerschlagen",
|
||||
"breaking": "zerbrechen",
|
||||
"bouncing": "Abbraller",
|
||||
"whip": "Peitsche",
|
||||
"flap": "Lasche",
|
||||
"scratch": "Kratzer",
|
||||
"scrape": "Abfall",
|
||||
"rub": "scheuern",
|
||||
"roll": "rollen",
|
||||
"crushing": "Stauchen",
|
||||
"crumpling": "zerknüllen",
|
||||
"tearing": "Reißen",
|
||||
"beep": "Piep",
|
||||
"ping": "Ping",
|
||||
"ding": "klingeln",
|
||||
"thunk": "dumpfes Geräusch",
|
||||
"clang": "Geklirr",
|
||||
"squeal": "Ausruf",
|
||||
"creak": "Knarren",
|
||||
"rustle": "Geknister",
|
||||
"whir": "schwirren",
|
||||
"clatter": "Geratter",
|
||||
"sizzle": "brutzeln",
|
||||
"clicking": "Klicken",
|
||||
"clickety_clack": "Klappergeräuschen",
|
||||
"rumble": "Grollen",
|
||||
"plop": "plumpsen",
|
||||
"hum": "Brummen",
|
||||
"zing": "Schwung",
|
||||
"boing": "ferderndes Geräusch",
|
||||
"crunch": "knirschendes",
|
||||
"sine_wave": "Sinus Kurve",
|
||||
"harmonic": "harmonisch",
|
||||
"chirp_tone": "Frequenzwobbelung",
|
||||
"pulse": "Takt",
|
||||
"inside": "drinnen",
|
||||
"outside": "draußen",
|
||||
"reverberation": "Widerhall",
|
||||
"echo": "Echo",
|
||||
"noise": "Lärm",
|
||||
"mains_hum": "Netzbrummen",
|
||||
"distortion": "Verzerrung",
|
||||
"sidetone": "Nebengeräusch",
|
||||
"cacophony": "Dissonanz",
|
||||
"throbbing": "Pochen",
|
||||
"vibration": "Vibration"
|
||||
}
|
||||
|
||||
@ -81,7 +81,10 @@
|
||||
"formattedTimestampMonthDayYear": {
|
||||
"12hour": "d. MMM yyyy",
|
||||
"24hour": "d. MMM yyyy"
|
||||
}
|
||||
},
|
||||
"inProgress": "In Bearbeitung",
|
||||
"invalidStartTime": "Ungültige Startzeit",
|
||||
"invalidEndTime": "Ungültige Endzeit"
|
||||
},
|
||||
"button": {
|
||||
"save": "Speichern",
|
||||
@ -118,7 +121,8 @@
|
||||
"pictureInPicture": "Bild in Bild",
|
||||
"on": "AN",
|
||||
"suspended": "Pausierte",
|
||||
"unsuspended": "fortsetzen"
|
||||
"unsuspended": "fortsetzen",
|
||||
"continue": "Weiter"
|
||||
},
|
||||
"label": {
|
||||
"back": "Zurück",
|
||||
@ -227,7 +231,8 @@
|
||||
"logout": "Abmelden"
|
||||
},
|
||||
"uiPlayground": "Testgebiet für Benutzeroberfläche",
|
||||
"export": "Exportieren"
|
||||
"export": "Exportieren",
|
||||
"classification": "Klassifizierung"
|
||||
},
|
||||
"unit": {
|
||||
"speed": {
|
||||
|
||||
@ -11,6 +11,6 @@
|
||||
},
|
||||
"user": "Benutzername",
|
||||
"password": "Kennwort",
|
||||
"firstTimeLogin": "Versuchen Sie sich zum ersten Mal anzumelden? Die Anmeldedaten sind in den Frigate-Logs aufgeführt."
|
||||
"firstTimeLogin": "Ist dies der erste Loginversuch? Die Zugangsdaten werden in den Frigate Logs angezeigt."
|
||||
}
|
||||
}
|
||||
|
||||
@ -66,7 +66,8 @@
|
||||
"failed": "Fehler beim Starten des Exports: {{error}}",
|
||||
"noVaildTimeSelected": "Kein gültiger Zeitraum ausgewählt"
|
||||
},
|
||||
"success": "Export erfolgreich gestartet. Die Datei befindet sich auf der Exportseite."
|
||||
"success": "Export erfolgreich gestartet. Die Datei befindet sich auf der Exportseite.",
|
||||
"view": "Ansicht"
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Export speichern",
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
{
|
||||
"documentTitle": "Klassifizierungsmodelle",
|
||||
"documentTitle": "Klassifizierungsmodelle - Fregatte",
|
||||
"details": {
|
||||
"scoreInfo": "Die Punktzahl gibt die durchschnittliche Klassifizierungssicherheit aller Erkennungen dieses Objekts wieder."
|
||||
"scoreInfo": "Die Punktzahl gibt die durchschnittliche Konfidenz aller Erkennungen dieses Objekts wieder."
|
||||
},
|
||||
"button": {
|
||||
"deleteClassificationAttempts": "Lösche Klassifizierungs-Bilder",
|
||||
"deleteClassificationAttempts": "Lösche klassifizierte Bilder",
|
||||
"renameCategory": "Klasse umbenennen",
|
||||
"deleteCategory": "Klasse löschen",
|
||||
"deleteImages": "Bilder löschen",
|
||||
@ -17,15 +17,15 @@
|
||||
"trainingInProgress": "Modell wird gerade trainiert",
|
||||
"noNewImages": "Keine weiteren Bilder zum trainieren. Bitte klassifiziere weitere Bilder im Datensatz.",
|
||||
"noChanges": "Keine Veränderungen des Datensatzes seit dem letzten Training.",
|
||||
"modelNotReady": "Modell ist nicht bereit trainiert zu werden."
|
||||
"modelNotReady": "Modell ist nicht bereit zum Training"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"deletedCategory": "Klasse gelöscht",
|
||||
"deletedImage": "Gelöschte Bilder",
|
||||
"deletedModel_one": "{{count}} Model erfolgreich gelöscht",
|
||||
"deletedImage": "Bilder gelöscht",
|
||||
"deletedModel_one": "{{count}} Modell erfolgreich gelöscht",
|
||||
"deletedModel_other": "{{count}} Modelle erfolgreich gelöscht",
|
||||
"categorizedImage": "Bild erfolgreich klassifiziert",
|
||||
"categorizedImage": "Erfolgreich klassifizierte Bilder",
|
||||
"trainedModel": "Modell erfolgreich trainiert.",
|
||||
"trainingModel": "Modelltraining erfolgreich gestartet.",
|
||||
"updatedModel": "Modellkonfiguration erfolgreich aktualisiert",
|
||||
@ -33,8 +33,153 @@
|
||||
},
|
||||
"error": {
|
||||
"deleteImageFailed": "Löschen fehlgeschlagen: {{errorMessage}}",
|
||||
"deleteCategoryFailed": "Klasse konnte nicht gelöscht werden: {{errorMessage}}",
|
||||
"deleteModelFailed": "Model konnte nicht gelöscht werden: {{errorMessage}}"
|
||||
"deleteCategoryFailed": "Löschen der Klasse fehlgeschlagen: {{errorMessage}}",
|
||||
"deleteModelFailed": "Model konnte nicht gelöscht werden: {{errorMessage}}",
|
||||
"trainingFailedToStart": "Modelltraining konnte nicht gestartet werden: {{errorMessage}}",
|
||||
"updateModelFailed": "Aktualisierung des Modells fehlgeschlagen: {{errorMessage}}",
|
||||
"renameCategoryFailed": "Umbenennung der Klasse fehlgeschlagen: {{errorMessage}}",
|
||||
"categorizeFailed": "Bildkategorisierung fehlgeschlagen: {{errorMessage}}",
|
||||
"trainingFailed": "Modelltraining fehlgeschlagen. Details sind in den Frigate-Protokollen zu finden."
|
||||
}
|
||||
},
|
||||
"deleteCategory": {
|
||||
"title": "Klasse löschen",
|
||||
"desc": "Möchten Sie die Klasse {{name}} wirklich löschen? Dadurch werden alle zugehörigen Bilder dauerhaft gelöscht und das Modell muss neu trainiert werden.",
|
||||
"minClassesTitle": "Klasse kann nicht gelöscht werden",
|
||||
"minClassesDesc": "Ein Klassifizierungsmodell benötigt mindestens zwei Klassen. Fügen Sie eine weitere Klasse hinzu, bevor Sie diese löschen."
|
||||
},
|
||||
"deleteModel": {
|
||||
"title": "Klassifizierungsmodell löschen",
|
||||
"single": "Möchten Sie {{name}} wirklich löschen? Dadurch werden alle zugehörigen Daten, einschließlich Bilder und Trainingsdaten, dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.",
|
||||
"desc_one": "Möchtest du {{count}} Modell wirklich löschen? Dadurch werden alle zugehörigen Daten, einschließlich Bilder und Trainingsdaten, dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.",
|
||||
"desc_other": "Möchtest du {{count}} Modelle wirklich löschen? Dadurch werden alle zugehörigen Daten, einschließlich Bilder und Trainingsdaten, dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden."
|
||||
},
|
||||
"edit": {
|
||||
"title": "Klassifikationsmodell bearbeiten",
|
||||
"descriptionState": "Bearbeite die Klassen für dieses Zustandsklassifikationsmodell. Änderungen erfordern erneutes Trainieren des Modells.",
|
||||
"descriptionObject": "Bearbeite den Objekttyp und Klassifizierungstyp für dieses Objektklassifikationsmodell.",
|
||||
"stateClassesInfo": "Hinweis: Die Änderung der Statusklassen erfordert ein erneutes Trainieren des Modells mit den aktualisierten Klassen."
|
||||
},
|
||||
"deleteDatasetImages": {
|
||||
"title": "Datensatz Bilder löschen",
|
||||
"desc_one": "Bist du sicher, dass {{count}} Bild von {{dataset}} gelöscht werden sollen? Diese Aktion kann nicht rückgängig gemacht werden und erfordert ein erneutes Trainieren des Modells.",
|
||||
"desc_other": "Bist du sicher, dass {{count}} Bilder von {{dataset}} gelöscht werden sollen? Diese Aktion kann nicht rückgängig gemacht werden und erfordert ein erneutes Trainieren des Modells."
|
||||
},
|
||||
"deleteTrainImages": {
|
||||
"title": "Trainingsbilder löschen",
|
||||
"desc_one": "Bist du sicher, dass du {{count}} Bild löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
|
||||
"desc_other": "Bist du sicher, dass du {{count}} Bilder löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden."
|
||||
},
|
||||
"renameCategory": {
|
||||
"title": "Klasse umbenennen",
|
||||
"desc": "Neuen Namen für {{name}} eingeben. Das Modell muss neu trainiert werden, damit die Änderungen wirksam werden."
|
||||
},
|
||||
"description": {
|
||||
"invalidName": "Ungültiger Name. Namen dürfen nur Buchstaben, Zahlen, Leerzeichen, Apostrophe, Unterstriche und Bindestriche enthalten."
|
||||
},
|
||||
"train": {
|
||||
"title": "Neue Klassifizierungen",
|
||||
"titleShort": "kürzlich",
|
||||
"aria": "Neue Klassifizierungen auswählen"
|
||||
},
|
||||
"categories": "Klassen",
|
||||
"createCategory": {
|
||||
"new": "Neue Klasse erstellen"
|
||||
},
|
||||
"categorizeImageAs": "Bild klassifizieren als:",
|
||||
"categorizeImage": "Bild klassifizieren",
|
||||
"menu": {
|
||||
"objects": "Objekte",
|
||||
"states": "Zustände"
|
||||
},
|
||||
"noModels": {
|
||||
"object": {
|
||||
"title": "Keine Objektklassifikationsmodelle",
|
||||
"description": "Erstelle ein benutzerdefiniertes Modell, um erkannte Objekte zu klassifizieren.",
|
||||
"buttonText": "Objektmodell erstellen"
|
||||
},
|
||||
"state": {
|
||||
"title": "Keine Statusklassifizierungsmodelle",
|
||||
"description": "Erstellen Sie ein benutzerdefiniertes Modell, um Zustandsänderungen in bestimmten Kamerabereichen zu überwachen und zu klassifizieren.",
|
||||
"buttonText": "Zustandsmodell erstellen"
|
||||
}
|
||||
},
|
||||
"wizard": {
|
||||
"title": "Neue Klassifizierung erstellen",
|
||||
"steps": {
|
||||
"nameAndDefine": "Benennen und definieren",
|
||||
"stateArea": "Gebiet",
|
||||
"chooseExamples": "Beispiel auswählen"
|
||||
},
|
||||
"step1": {
|
||||
"description": "Zustandsmodelle überwachen feste Kamerabereiche auf Veränderungen (z. B. Tür offen/geschlossen). Objektmodelle fügen den erkannten Objekten Klassifizierungen hinzu (z. B. bekannte Tiere, Lieferanten usw.).",
|
||||
"name": "Name",
|
||||
"namePlaceholder": "Eingeben Modell Name...",
|
||||
"type": "Typ",
|
||||
"typeState": "Zustand",
|
||||
"typeObject": "Objekt",
|
||||
"objectLabel": "Objekt Bezeichnung",
|
||||
"objectLabelPlaceholder": "Auswahl Objekt Typ...",
|
||||
"classificationType": "Klassifizierungstyp",
|
||||
"classificationTypeTip": "Etwas über Klassifizierungstyp lernen",
|
||||
"classificationTypeDesc": "Unterbezeichnungen fügen dem Objektnamen zusätzlichen Text hinzu (z. B. „Person: UPS“). Attribute sind durchsuchbare Metadaten, die separat in den Objektmetadaten gespeichert sind.",
|
||||
"classificationSubLabel": "Unterlabel",
|
||||
"classificationAttribute": "Merkmal",
|
||||
"classes": "Klasse",
|
||||
"states": "Gebiet",
|
||||
"classesTip": "Über Klassen lernen",
|
||||
"classesStateDesc": "Definieren Sie die verschiedenen Zustände, in denen sich Ihr Kamerabereich befinden kann. Beispiel: „offen” und „geschlossen” für ein Garagentor.",
|
||||
"classesObjectDesc": "Definieren Sie die verschiedenen Kategorien, in die erkannte Objekte klassifiziert werden sollen. Beispiel: „Lieferant“, „Bewohner“, „Fremder“ für die Klassifizierung von Personen.",
|
||||
"classPlaceholder": "Eingabe Klassenbezeichnung...",
|
||||
"errors": {
|
||||
"nameRequired": "Modellname ist erforderlich",
|
||||
"nameLength": "Der Modellname darf maximal 64 Zeichen lang sein",
|
||||
"nameOnlyNumbers": "Der Modellname darf nicht nur aus Zahlen bestehen",
|
||||
"classRequired": "Mindestens eine Klasse ist erforderlich",
|
||||
"classesUnique": "Klassenname muss eindeutig sein",
|
||||
"stateRequiresTwoClasses": "Gebietsmodelle erfordern mindestens zwei Klassen",
|
||||
"objectLabelRequired": "Bitte wähle eine Objektbeschriftung",
|
||||
"objectTypeRequired": "Bitte wählen Sie einen Klassifizierungstyp aus"
|
||||
}
|
||||
},
|
||||
"step2": {
|
||||
"description": "Wählen Sie Kameras aus und legen Sie für jede Kamera den zu überwachenden Bereich fest. Das Modell klassifiziert den Zustand dieser Bereiche.",
|
||||
"cameras": "Kameras",
|
||||
"selectCamera": "Kamera auswählen",
|
||||
"noCameras": "Klick + zum hinzufügen der Kameras",
|
||||
"selectCameraPrompt": "Wählen Sie eine Kamera aus der Liste aus, um ihren Überwachungsbereich festzulegen"
|
||||
},
|
||||
"step3": {
|
||||
"selectImagesPrompt": "Wählen sie alle Bilder mit: {{className}}",
|
||||
"selectImagesDescription": "Klicken Sie auf die Bilder, um sie auszuwählen. Klicken Sie auf „Weiter“, wenn Sie mit diesem Kurs fertig sind.",
|
||||
"allImagesRequired_one": "Bitte klassifizieren Sie alle Bilder. {{count}} Bild verbleibend.",
|
||||
"allImagesRequired_other": "Bitte klassifizieren Sie alle Bilder. {{count}} Bilder verbleiben.",
|
||||
"generating": {
|
||||
"title": "Beispielbilder generieren",
|
||||
"description": "Frigate extrahiert repräsentative Bilder aus Ihren Aufnahmen. Dies kann einen Moment dauern..."
|
||||
},
|
||||
"training": {
|
||||
"title": "Trainingsmodell",
|
||||
"description": "Ihr Modell wird im Hintergrund trainiert. Schließen Sie diesen Dialog, und Ihr Modell wird ausgeführt, sobald das Training abgeschlossen ist."
|
||||
},
|
||||
"retryGenerate": "Generierung wiederholen",
|
||||
"noImages": "Keine Bilder generiert",
|
||||
"classifying": "Klassifizieren und Trainieren...",
|
||||
"trainingStarted": "Training wurde erfolgreich gestartet",
|
||||
"errors": {
|
||||
"noCameras": "Keine Kameras konfiguriert",
|
||||
"noObjectLabel": "Kein Objektlabel ausgewählt",
|
||||
"generateFailed": "Beispiele konnten nicht generiert werden: {{error}}",
|
||||
"generationFailed": "Generierung fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
||||
"classifyFailed": "Bilder konnten nicht klassifiziert werden: {{error}}"
|
||||
},
|
||||
"generateSuccess": "Erfolgreich generierte Beispielbilder",
|
||||
"modelCreated": "Modell erfolgreich erstellt. Verwenden Sie die Ansicht „Aktuelle Klassifizierungen“, um Bilder für fehlende Zustände hinzuzufügen, und trainieren Sie dann das Modell.",
|
||||
"missingStatesWarning": {
|
||||
"title": "Beispiele für fehlende Zustände",
|
||||
"description": "Es wird empfohlen für alle Zustände Beispiele auszuwählen. Das Modell wird erst trainiert, wenn für alle Zustände Bilder vorhanden sind. Fahren Sie fort und verwenden Sie die Ansicht „Aktuelle Klassifizierungen“, um Bilder für die fehlenden Zustände zu klassifizieren. Trainieren Sie anschließend das Modell."
|
||||
}
|
||||
}
|
||||
},
|
||||
"none": "Keiner"
|
||||
}
|
||||
|
||||
@ -48,10 +48,15 @@
|
||||
"noDataFound": "Keine Detaildaten zur Überprüfung",
|
||||
"settings": "Detailansicht Einstellungen",
|
||||
"alwaysExpandActive": {
|
||||
"desc": "Immer die Objektdetails des aktiven Überprüfungselements erweitern, sofern verfügbar."
|
||||
"desc": "Immer die Objektdetails vom aktivem Überprüfungselement erweitern, sofern verfügbar.",
|
||||
"title": "Immer aktiv erweitern"
|
||||
}
|
||||
},
|
||||
"objectTrack": {
|
||||
"trackedPoint": "Verfolgter Punkt"
|
||||
}
|
||||
"trackedPoint": "Verfolgter Punkt",
|
||||
"clickToSeek": "Klicke, um zu dieser Zeit zu springen"
|
||||
},
|
||||
"normalActivity": "normal",
|
||||
"needsReview": "benötigt Überprüfung",
|
||||
"securityConcern": "Sicherheitsbedenken"
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"updatedSublabel": "Unterkategorie erfolgreich aktualisiert.",
|
||||
"updatedLPR": "Nummernschild erfolgreich aktualisiert.",
|
||||
"regenerate": "Eine neue Beschreibung wurde von {{provider}} angefordert. Je nach Geschwindigkeit des Anbieters kann es einige Zeit dauern, bis die neue Beschreibung generiert ist.",
|
||||
"audioTranscription": "Audio Transkription erfolgreich angefordert."
|
||||
"audioTranscription": "Die Audio-Transkription wurde erfolgreich angefordert. Je nach Geschwindigkeit Ihres Frigate-Servers kann die Transkription einige Zeit in Anspruch nehmen."
|
||||
},
|
||||
"error": {
|
||||
"regenerate": "Der Aufruf von {{provider}} für eine neue Beschreibung ist fehlgeschlagen: {{errorMessage}}",
|
||||
@ -159,7 +159,8 @@
|
||||
"video": "Video",
|
||||
"object_lifecycle": "Objekt-Lebenszyklus",
|
||||
"snapshot": "Snapshot",
|
||||
"thumbnail": "Vorschaubild"
|
||||
"thumbnail": "Vorschaubild",
|
||||
"tracking_details": "Nachverfolgungs-Details"
|
||||
},
|
||||
"itemMenu": {
|
||||
"downloadSnapshot": {
|
||||
@ -206,6 +207,10 @@
|
||||
},
|
||||
"hideObjectDetails": {
|
||||
"label": "Objektpfad verbergen"
|
||||
},
|
||||
"downloadCleanSnapshot": {
|
||||
"label": "Bereinigte Momentaufnahme herunterladen",
|
||||
"aria": "Bereinigte Momentaufnahme herunterladen"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
@ -249,13 +254,14 @@
|
||||
"faceOrLicense_plate": "{{attribute}} erkannt für {{label}}",
|
||||
"other": "{{label}} erkannt als {{attribute}}"
|
||||
},
|
||||
"gone": "{{label}} verließ",
|
||||
"gone": "{{label}} hat verlassen",
|
||||
"heard": "{{label}} wurde gehört",
|
||||
"external": "{{label}} erkannt",
|
||||
"header": {
|
||||
"zones": "Zonen",
|
||||
"ratio": "Verhältnis",
|
||||
"area": "Bereich"
|
||||
"area": "Bereich",
|
||||
"score": "Bewertung"
|
||||
}
|
||||
},
|
||||
"annotationSettings": {
|
||||
@ -270,7 +276,7 @@
|
||||
"millisecondsToOffset": "Millisekunden, um Erkennungs-Anmerkungen zu verschieben. <em>Standard: 0</em>",
|
||||
"tips": "Verringere den Wert, wenn die Videowiedergabe den Boxen und Wegpunkten voraus ist, und erhöhe den Wert, wenn die Videowiedergabe hinter ihnen zurückbleibt. Dieser Wert kann negativ sein.",
|
||||
"toast": {
|
||||
"success": "Der Anmerkungs-Offset für {{camera}} wurde in der Konfigurationsdatei gespeichert. Starte Frigate neu, um Ihre Änderungen zu übernehmen."
|
||||
"success": "Der Anmerkungs-Offset für {{camera}} wurde in der Konfigurationsdatei gespeichert."
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -278,6 +284,10 @@
|
||||
"previous": "Vorherige Anzeige",
|
||||
"next": "Nächste Anzeige"
|
||||
},
|
||||
"title": "Verfolgungsdetails"
|
||||
"title": "Verfolgungsdetails",
|
||||
"adjustAnnotationSettings": "Anmerkungseinstellungen anpassen",
|
||||
"autoTrackingTips": "Die Positionen der Begrenzungsrahmen sind bei Kameras mit automatischer Verfolgung ungenau.",
|
||||
"count": "{{first}} von {{second}}",
|
||||
"trackedPoint": "Verfolgter Punkt"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"description": {
|
||||
"placeholder": "Gib einen Name für diese Kollektion ein",
|
||||
"addFace": "Füge der Gesichtsbibliothek eine neue Sammlung hinzu, indem ein erstes Bild hochgeladen wird.",
|
||||
"addFace": "Füge der Gesichtsbibliothek eine neue Sammlung hinzu, indem ein Bild hinzufügst.",
|
||||
"invalidName": "Ungültiger Name. Namen dürfen nur Buchstaben, Zahlen, Leerzeichen, Apostrophe, Unterstriche und Bindestriche enthalten."
|
||||
},
|
||||
"details": {
|
||||
@ -44,7 +44,7 @@
|
||||
"deleteFace": "Lösche Gesicht"
|
||||
},
|
||||
"train": {
|
||||
"title": "Aktuelle Erkennungen",
|
||||
"title": "Kürzliche Erkennungen",
|
||||
"aria": "Wähle aktuelle Erkennungen",
|
||||
"empty": "Es gibt keine aktuellen Versuche zur Gesichtserkennung"
|
||||
},
|
||||
@ -64,7 +64,7 @@
|
||||
"deletedName_other": "{{count}} Gesichter wurden erfolgreich gelöscht.",
|
||||
"addFaceLibrary": "{{name}} wurde erfolgreich in die Gesichtsbibliothek aufgenommen!",
|
||||
"trainedFace": "Gesicht erfolgreich trainiert.",
|
||||
"updatedFaceScore": "Gesichtsbewertung erfolgreich aktualisiert.",
|
||||
"updatedFaceScore": "Gesichtsbewertung erfolgreich auf {{name}} ({{score}}) aktualisiert.",
|
||||
"renamedFace": "Gesicht erfolgreich in {{name}} umbenannt"
|
||||
},
|
||||
"error": {
|
||||
|
||||
@ -172,9 +172,13 @@
|
||||
"disable": "Live Audio Transkription ausschalten"
|
||||
},
|
||||
"noCameras": {
|
||||
"title": "Keine Kameras eingerichtet",
|
||||
"title": "Keine Kameras konfiguriert",
|
||||
"description": "Beginne indem du eine Kamera anschließt.",
|
||||
"buttonText": "Kamera hinzufügen"
|
||||
"buttonText": "Kamera hinzufügen",
|
||||
"restricted": {
|
||||
"title": "Keine Kamera verfügbar",
|
||||
"description": "Sie haben keine Berechtigung, Kameras in dieser Gruppe anzuzeigen."
|
||||
}
|
||||
},
|
||||
"snapshot": {
|
||||
"takeSnapshot": "Sofort-Schnappschuss herunterladen",
|
||||
|
||||
@ -3,16 +3,16 @@
|
||||
"default": "Einstellungen - Frigate",
|
||||
"authentication": "Authentifizierungseinstellungen – Frigate",
|
||||
"camera": "Kameraeinstellungen - Frigate",
|
||||
"masksAndZones": "Masken- und Zonen-Editor – Frigate",
|
||||
"masksAndZones": "Masken- und Zoneneditor – Frigate",
|
||||
"object": "Debug - Frigate",
|
||||
"general": "UI Einstellungen – Frigate",
|
||||
"general": "UI-Einstellungen – Frigate",
|
||||
"frigatePlus": "Frigate+ Einstellungen – Frigate",
|
||||
"classification": "Klassifizierungseinstellungen – Frigate",
|
||||
"motionTuner": "Bewegungserkennungs-Optimierer – Frigate",
|
||||
"notifications": "Benachrichtigungs-Einstellungen",
|
||||
"notifications": "Benachrichtigungseinstellungen",
|
||||
"enrichments": "Erweiterte Statistiken - Frigate",
|
||||
"cameraManagement": "Kameras verwalten - Frigate",
|
||||
"cameraReview": "Kamera Einstellungen prüfen - Frigate"
|
||||
"cameraReview": "Kameraeinstellungen prüfen - Frigate"
|
||||
},
|
||||
"menu": {
|
||||
"ui": "Benutzeroberfläche",
|
||||
@ -41,7 +41,7 @@
|
||||
"noCamera": "Keine Kamera"
|
||||
},
|
||||
"general": {
|
||||
"title": "Allgemeine Einstellungen",
|
||||
"title": "Einstellungen der Benutzeroberfläche",
|
||||
"liveDashboard": {
|
||||
"title": "Live Übersicht",
|
||||
"playAlertVideos": {
|
||||
@ -51,6 +51,14 @@
|
||||
"automaticLiveView": {
|
||||
"desc": "Wechsle automatisch zur Live Ansicht der Kamera, wenn einen Aktivität erkannt wurde. Wenn du diese Option deaktivierst, werden die statischen Kamerabilder auf der Liveübersicht nur einmal pro Minute aktualisiert.",
|
||||
"label": "Automatische Live Ansicht"
|
||||
},
|
||||
"displayCameraNames": {
|
||||
"label": "Immer Namen der Kamera anzeigen",
|
||||
"desc": "Kamerabezeichnung immer im einem Chip im Live-View-Dashboard für mehrere Kameras anzeigen."
|
||||
},
|
||||
"liveFallbackTimeout": {
|
||||
"label": "Live Player Ausfallzeitlimit",
|
||||
"desc": "Wenn der hochwertige Live-Stream einer Kamera nicht verfügbar ist, wechsle nach dieser Anzahl von Sekunden in den Modus für geringe Bandbreite. Standard: 3."
|
||||
}
|
||||
},
|
||||
"storedLayouts": {
|
||||
@ -232,7 +240,8 @@
|
||||
"alreadyExists": "Für diese Kamera existiert bereits eine Zone mit diesem Namen.",
|
||||
"mustBeAtLeastTwoCharacters": "Der Zonenname muss aus mindestens 2 Zeichen bestehen.",
|
||||
"mustNotBeSameWithCamera": "Der Zonenname darf nicht mit dem Kameranamen identisch sein.",
|
||||
"mustNotContainPeriod": "Der Zonenname darf keine Punkte enthalten."
|
||||
"mustNotContainPeriod": "Der Zonenname darf keine Punkte enthalten.",
|
||||
"mustHaveAtLeastOneLetter": "Der Name der Zone muss mindestens einen Buchstaben enthalten."
|
||||
}
|
||||
},
|
||||
"loiteringTime": {
|
||||
@ -289,7 +298,7 @@
|
||||
"zones": {
|
||||
"edit": "Zone bearbeiten",
|
||||
"toast": {
|
||||
"success": "Die Zone ({{zoneName}}) wurde gespeichert. Starten Sie Frigate neu, um die Änderungen zu übernehmen."
|
||||
"success": "Die Zone ({{zoneName}}) wurde gespeichert."
|
||||
},
|
||||
"desc": {
|
||||
"documentation": "Dokumentation",
|
||||
@ -311,7 +320,7 @@
|
||||
"name": {
|
||||
"title": "Name",
|
||||
"inputPlaceHolder": "Geben Sie einen Namen ein…",
|
||||
"tips": "Der Name muss aus mindestens 2 Zeichen bestehen und sollte nicht den Namen einer Kamera oder anderen Zone entsprechen."
|
||||
"tips": "Die Bezeichnung muss mindestens 2 Zeichen lang sein, mindestens einen Buchstaben enthalten und darf nicht die Bezeichnung einer Kamera oder einer anderen Zone sein."
|
||||
},
|
||||
"objects": {
|
||||
"title": "Objekte",
|
||||
@ -352,8 +361,8 @@
|
||||
"clickDrawPolygon": "Klicke, um ein Polygon auf dem Bild zu zeichnen.",
|
||||
"toast": {
|
||||
"success": {
|
||||
"noName": "Bewegungsmaske wurde gespeichert. Starte Frigate neu, um die Änderungen zu übernehmen.",
|
||||
"title": "{{polygonName}} wurde gespeichert. Starte Frigate neu, um die Änderungen zu übernehmen."
|
||||
"noName": "Bewegungsmaske wurde gespeichert.",
|
||||
"title": "{{polygonName}} wurde gespeichert."
|
||||
}
|
||||
},
|
||||
"add": "Neue Bewegungsmaske",
|
||||
@ -373,8 +382,8 @@
|
||||
"documentTitle": "Objektmaske bearbeiten – Frigate",
|
||||
"toast": {
|
||||
"success": {
|
||||
"noName": "Objektmaske wurde gespeichert. Starte Frigate neu, um die Änderungen zu übernehmen.",
|
||||
"title": "{{polygonName}} wurde gespeichert. Starte Frigate neu, um die Änderungen zu übernehmen."
|
||||
"noName": "Objektmaske wurde gespeichert.",
|
||||
"title": "{{polygonName}} wurde gespeichert."
|
||||
}
|
||||
},
|
||||
"desc": {
|
||||
@ -686,13 +695,13 @@
|
||||
"semanticSearch": {
|
||||
"reindexNow": {
|
||||
"confirmDesc": "Sind Sie sicher, dass Sie alle verfolgten Objekteinbettungen neu indizieren wollen? Dieser Prozess läuft im Hintergrund, kann aber Ihre CPU auslasten und eine gewisse Zeit in Anspruch nehmen. Sie können den Fortschritt auf der Seite Explore verfolgen.",
|
||||
"label": "Jetzt neu indizien",
|
||||
"label": "Jetzt neu indizieren",
|
||||
"desc": "Bei der Neuindizierung werden die Einbettungen für alle verfolgten Objekte neu generiert. Dieser Prozess läuft im Hintergrund und kann je nach Anzahl der verfolgten Objekte Ihre CPU auslasten und eine gewisse Zeit in Anspruch nehmen.",
|
||||
"confirmTitle": "Neuinszenierung bestätigen",
|
||||
"confirmTitle": "Neuindizierung bestätigen",
|
||||
"confirmButton": "Neuindizierung",
|
||||
"success": "Die Neuindizierung wurde erfolgreich gestartet.",
|
||||
"alreadyInProgress": "Die Neuindizierung ist bereits im Gange.",
|
||||
"error": "Neuindizierung konnte nicht gestartet werden: {{errorMessage}}"
|
||||
"error": "Die Neuindizierung konnte nicht gestartet werden: {{errorMessage}}"
|
||||
},
|
||||
"modelSize": {
|
||||
"small": {
|
||||
@ -715,7 +724,7 @@
|
||||
"desc": "Die Gesichtserkennung ermöglicht es, Personen Namen zuzuweisen, und wenn ihr Gesicht erkannt wird, ordnet Frigate den Namen der Person als Untertitel zu. Diese Informationen sind in der Benutzeroberfläche, den Filtern und in den Benachrichtigungen enthalten.",
|
||||
"readTheDocumentation": "Lies die Dokumentation",
|
||||
"modelSize": {
|
||||
"label": "Modell Größe",
|
||||
"label": "Modellgröße",
|
||||
"desc": "Die Größe des für die Gesichtserkennung verwendeten Modells.",
|
||||
"small": {
|
||||
"title": "klein",
|
||||
@ -741,7 +750,7 @@
|
||||
"triggers": {
|
||||
"documentTitle": "Auslöser",
|
||||
"management": {
|
||||
"title": "Auslöser Verwaltung",
|
||||
"title": "Auslöser",
|
||||
"desc": "Auslöser für {{camera}} verwalten. Verwenden Sie den Vorschaubild Typ, um ähnliche Vorschaubilder wie das ausgewählte verfolgte Objekt auszulösen, und den Beschreibungstyp, um ähnliche Beschreibungen wie den von Ihnen angegebenen Text auszulösen."
|
||||
},
|
||||
"addTrigger": "Auslöser hinzufügen",
|
||||
@ -762,7 +771,9 @@
|
||||
},
|
||||
"actions": {
|
||||
"alert": "Als Alarm markieren",
|
||||
"notification": "Benachrichtigung senden"
|
||||
"notification": "Benachrichtigung senden",
|
||||
"sub_label": "Unterlabel hinzufügen",
|
||||
"attribute": "Attribut hinzufügen"
|
||||
},
|
||||
"dialog": {
|
||||
"createTrigger": {
|
||||
@ -780,25 +791,28 @@
|
||||
"form": {
|
||||
"name": {
|
||||
"title": "Name",
|
||||
"placeholder": "Auslöser Name eingeben",
|
||||
"placeholder": "Benennen Sie diesen Auslöser",
|
||||
"error": {
|
||||
"minLength": "Der Name muss mindestens 2 Zeichen lang sein.",
|
||||
"invalidCharacters": "Der Name darf nur Buchstaben, Zahlen, Unterstriche und Bindestriche enthalten.",
|
||||
"alreadyExists": "Ein Auslöser mit diesem Namen existiert bereits für diese Kamera."
|
||||
}
|
||||
},
|
||||
"description": "Geben Sie einen eindeutigen Namen oder eine Beschreibung ein, um diesen Auslöser zu identifizieren"
|
||||
},
|
||||
"enabled": {
|
||||
"description": "Diesen Auslöser aktivieren oder deaktivieren"
|
||||
},
|
||||
"type": {
|
||||
"title": "Typ",
|
||||
"placeholder": "Auslöser Typ wählen"
|
||||
"placeholder": "Auslöser Typ wählen",
|
||||
"description": "Auslösen, wenn eine ähnliche Beschreibung eines verfolgten Objekts erkannt wird",
|
||||
"thumbnail": "Auslösen, wenn eine ähnliche Miniaturansicht eines verfolgten Objekts erkannt wird"
|
||||
},
|
||||
"content": {
|
||||
"title": "Inhalt",
|
||||
"imagePlaceholder": "Ein Bild auswählen",
|
||||
"imagePlaceholder": "Miniaturansicht auswählen",
|
||||
"textPlaceholder": "Inhaltstext eingeben",
|
||||
"imageDesc": "Ein Bild auswählen, um diese Aktion auszulösen, wenn ein ähnliches Bild erkannt wird.",
|
||||
"imageDesc": "Es werden nur die letzten 100 Miniaturansichten angezeigt. Wenn Sie die gewünschte Miniaturansicht nicht finden können, überprüfen Sie bitte frühere Objekte in „Explore“ und richten Sie dort über das Menü einen Trigger ein.",
|
||||
"textDesc": "Einen Text eingeben, um diese Aktion auszulösen, wenn eine ähnliche Beschreibung eines verfolgten Objekts erkannt wird.",
|
||||
"error": {
|
||||
"required": "Inhalt ist erforderlich."
|
||||
@ -809,11 +823,12 @@
|
||||
"error": {
|
||||
"min": "Schwellenwert muss mindestens 0 sein",
|
||||
"max": "Schwellenwert darf höchstens 1 sein"
|
||||
}
|
||||
},
|
||||
"desc": "Legen Sie den Ähnlichkeitsschwellenwert für diesen Trigger fest. Ein höherer Schwellenwert bedeutet, dass eine größere Übereinstimmung erforderlich ist, um den Trigger auszulösen."
|
||||
},
|
||||
"actions": {
|
||||
"title": "Aktionen",
|
||||
"desc": "Standardmäßig sendet Frigate eine MQTT-Nachricht für alle Trigger. Wähle eine zusätzliche Aktion aus, die ausgeführt werden soll, wenn dieser Trigger ausgelöst wird.",
|
||||
"desc": "Standardmäßig sendet Frigate für alle Trigger eine MQTT-Nachricht. Unterbezeichnungen fügen den Triggernamen zur Objektbezeichnung hinzu. Attribute sind durchsuchbare Metadaten, die separat in den Metadaten des verfolgten Objekts gespeichert werden.",
|
||||
"error": {
|
||||
"min": "Mindesten eine Aktion muss ausgewählt sein."
|
||||
}
|
||||
@ -840,6 +855,23 @@
|
||||
"semanticSearch": {
|
||||
"title": "Semantische Suche ist deaktiviert",
|
||||
"desc": "Semantische Suche muss aktiviert sein um Auslöser nutzen zu können."
|
||||
},
|
||||
"wizard": {
|
||||
"title": "Auslöser erstellen",
|
||||
"step1": {
|
||||
"description": "Konfigurieren Sie die Grundeinstellungen für Ihren Auslöser."
|
||||
},
|
||||
"step2": {
|
||||
"description": "Legen Sie den Inhalt fest, der diese Aktion auslöst."
|
||||
},
|
||||
"step3": {
|
||||
"description": "Konfigurieren Sie den Schwellenwert und die Aktionen für diesen Trigger."
|
||||
},
|
||||
"steps": {
|
||||
"nameAndType": "Name und Typ",
|
||||
"configureData": "Daten konfigurieren",
|
||||
"thresholdAndActions": "Schwellenwert und Maßnahmen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"roles": {
|
||||
@ -893,7 +925,7 @@
|
||||
"updateCameras": "Kameras für Rolle {{role}} aktualisiert",
|
||||
"deleteRole": "Rolle {{role}} erfolgreich gelöscht",
|
||||
"userRolesUpdated_one": "{{count}} Benutzer, denen diese Rolle zugewiesen wurde, wurden auf „Zuschauer“ aktualisiert, der Zugriff auf alle Kameras hat.",
|
||||
"userRolesUpdated_other": ""
|
||||
"userRolesUpdated_other": "{{count}} Benutzer, denen diese Rollen zugewiesen wurde, wurden auf „Zuschauer“ aktualisiert, der Zugriff auf alle Kameras habem."
|
||||
},
|
||||
"error": {
|
||||
"createRoleFailed": "Fehler beim Erstellen der Rolle: {{errorMessage}}",
|
||||
@ -909,7 +941,8 @@
|
||||
"steps": {
|
||||
"nameAndConnection": "Name & Verbindung",
|
||||
"streamConfiguration": "Stream Konfiguration",
|
||||
"validationAndTesting": "Überprüfung & Testen"
|
||||
"validationAndTesting": "Überprüfung & Testen",
|
||||
"probeOrSnapshot": "Test oder Momentaufnahme"
|
||||
},
|
||||
"save": {
|
||||
"success": "Neue Kamera {{cameraName}} erfolgreich hinzugefügt.",
|
||||
@ -926,8 +959,8 @@
|
||||
"testFailed": "Stream Test fehlgeschlagen: {{error}}"
|
||||
},
|
||||
"step1": {
|
||||
"description": "Gib deine Kameradaten ein und teste die Verbindung.",
|
||||
"cameraName": "Kamera-Name",
|
||||
"description": "Geben Sie Ihre Kameradaten ein und wählen Sie, ob Sie die Kamera automatisch erkennen lassen oder die Marke manuell auswählen möchten.",
|
||||
"cameraName": "Kameraname",
|
||||
"cameraNamePlaceholder": "z.B. vordere_tür oder Hof Übersicht",
|
||||
"host": "Host/IP Adresse",
|
||||
"port": "Port",
|
||||
@ -936,8 +969,8 @@
|
||||
"password": "Passwort",
|
||||
"passwordPlaceholder": "Optional",
|
||||
"selectTransport": "Transport-Protokoll auswählen",
|
||||
"cameraBrand": "Kamera-Hersteller",
|
||||
"selectBrand": "Wähle die Kamera-Hersteller für die URL-Vorlage aus",
|
||||
"cameraBrand": "Kamerahersteller",
|
||||
"selectBrand": "Wähle die Kamerahersteller für die URL-Vorlage aus",
|
||||
"customUrl": "Benutzerdefinierte Stream-URL",
|
||||
"brandInformation": "Hersteller Information",
|
||||
"brandUrlFormat": "Für Kameras mit RTSP URL nutze folgendes Format: {{exampleUrl}}",
|
||||
@ -950,21 +983,31 @@
|
||||
"noSnapshot": "Es kann kein Snapshot aus dem konfigurierten Stream abgerufen werden."
|
||||
},
|
||||
"errors": {
|
||||
"brandOrCustomUrlRequired": "Wählen Sie entweder einen Kamera-Hersteller mit Host/IP aus oder wählen Sie „Andere“ mit einer benutzerdefinierten URL",
|
||||
"nameRequired": "Kamera-Name benötigt",
|
||||
"nameLength": "Kamera-Name darf höchsten 64 Zeichen lang sein",
|
||||
"invalidCharacters": "Kamera-Name enthält ungültige Zeichen",
|
||||
"nameExists": "Kamera-Name existiert bereits",
|
||||
"brandOrCustomUrlRequired": "Wählen Sie entweder einen Kamerahersteller mit Host/IP aus oder wählen Sie „Andere“ mit einer benutzerdefinierten URL",
|
||||
"nameRequired": "Der Kameraname wird benötigt",
|
||||
"nameLength": "Der Kameraname darf höchsten 64 Zeichen lang sein",
|
||||
"invalidCharacters": "Der Kameraname enthält ungültige Zeichen",
|
||||
"nameExists": "Der Kameraname existiert bereits",
|
||||
"brands": {
|
||||
"reolink-rtsp": "Reolink RTSP wird nicht empfohlen. Es wird empfohlen, http in den Kameraeinstellungen zu aktivieren und den Kamera-Assistenten neu zu starten."
|
||||
}
|
||||
},
|
||||
"customUrlRtspRequired": "Benutzerdefinierte URLs müssen mit „rtsp://“ beginnen. Für Nicht-RTSP-Kamerastreams ist eine manuelle Konfiguration erforderlich."
|
||||
},
|
||||
"docs": {
|
||||
"reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras"
|
||||
}
|
||||
},
|
||||
"connectionSettings": "Verbindungseinstellungen",
|
||||
"detectionMethod": "Stream Erkennungsmethode",
|
||||
"onvifPort": "ONVIF Port",
|
||||
"probeMode": "Untersuche Kamera",
|
||||
"detectionMethodDescription": "Suchen Sie die Kamera mit ONVIF (sofern unterstützt), um die URLs der Kamerastreams zu finden, oder wählen Sie manuell die Kameramarke aus, um vordefinierte URLs zu verwenden. Um eine benutzerdefinierte RTSP-URL einzugeben, wählen Sie die manuelle Methode und dann „Andere“.",
|
||||
"onvifPortDescription": "Bei Kameras, die ONVIF unterstützen, ist dies in der Regel 80 oder 8080.",
|
||||
"useDigestAuth": "Digest-Authentifizierung verwenden",
|
||||
"useDigestAuthDescription": "Verwenden Sie die HTTP-Digest-Authentifizierung für ONVIF. Einige Kameras erfordern möglicherweise einen speziellen ONVIF-Benutzernamen/ein spezielles ONVIF-Passwort anstelle des Standard-Admin-Benutzers.",
|
||||
"manualMode": "Manuelle Auswahl"
|
||||
},
|
||||
"step2": {
|
||||
"description": "Konfigurieren Sie Stream-Rollen und fügen Sie zusätzliche Streams für Ihre Kamera hinzu.",
|
||||
"description": "Suchen Sie in der Kamera nach verfügbaren Streams oder konfigurieren Sie manuelle Einstellungen basierend auf der von Ihnen ausgewählten Erkennungsmethode.",
|
||||
"streamsTitle": "Kamera Streams",
|
||||
"addStream": "Stream hinzufügen",
|
||||
"addAnotherStream": "Weiteren Stream hinzufügen",
|
||||
@ -983,8 +1026,8 @@
|
||||
"audio": "Audio"
|
||||
},
|
||||
"testStream": "Verbindung testen",
|
||||
"testSuccess": "Stream erfolgreich getestet!",
|
||||
"testFailed": "Stream-Test fehlgeschlagen",
|
||||
"testSuccess": "Verbindung erfolgreich getestet!",
|
||||
"testFailed": "Verbindungstest fehlgeschlagen. Bitte überprüfen Sie ihre Eingaben und versuchen Sie es erneut.",
|
||||
"testFailedTitle": "Test fehlgeschlagen",
|
||||
"connected": "Verbunden",
|
||||
"notConnected": "Nicht verbunden",
|
||||
@ -1000,10 +1043,42 @@
|
||||
"featuresPopover": {
|
||||
"title": "Stream Funktionen",
|
||||
"description": "Verwende go2rtc Restreaming, um die Verbindungen zu deiner Kamera zu reduzieren."
|
||||
},
|
||||
"streamDetails": "Verbindungsdetails",
|
||||
"probing": "Kamera wird geprüft...",
|
||||
"retry": "Wiederholen",
|
||||
"testing": {
|
||||
"probingMetadata": "Metadaten der Kamera werden überprüft...",
|
||||
"fetchingSnapshot": "Kamera-Schnappschuss wird abgerufen..."
|
||||
},
|
||||
"probeFailed": "Fehler beim Untersuchen der Kamera: {{error}}",
|
||||
"probingDevice": "Untersuche Gerät...",
|
||||
"probeSuccessful": "Erkennung erfolgreich",
|
||||
"probeError": "Erkennungsfehler",
|
||||
"probeNoSuccess": "Erkennung fehlgeschlagen",
|
||||
"deviceInfo": "Geräteinformationen",
|
||||
"manufacturer": "Hersteller",
|
||||
"model": "Modell",
|
||||
"firmware": "Firmware",
|
||||
"profiles": "Profile",
|
||||
"ptzSupport": "PTZ Unterstützung",
|
||||
"autotrackingSupport": "Unterstützung für Autoverfolgung",
|
||||
"presets": "Voreinstellung",
|
||||
"rtspCandidates": "RTSP Kandidaten",
|
||||
"rtspCandidatesDescription": "Die folgenden RTSP-URLs wurden bei der Kameraerkennung gefunden. Testen Sie die Verbindung, um die Stream-Metadaten anzuzeigen.",
|
||||
"noRtspCandidates": "Es wurden keine RTSP-URLs von der Kamera gefunden. Möglicherweise sind Ihre Anmeldedaten falsch oder die Kamera unterstützt ONVIF oder die Methode zum Abrufen von RTSP-URLs nicht. Gehen Sie zurück und geben Sie die RTSP-URL manuell ein.",
|
||||
"candidateStreamTitle": "Kandidate {{number}}",
|
||||
"useCandidate": "Verwenden",
|
||||
"uriCopy": "Kopieren",
|
||||
"uriCopied": "URI in die Zwischenablage kopiert",
|
||||
"testConnection": "Test Verbindung",
|
||||
"toggleUriView": "Klicken Sie hier, um die vollständige URI zu sehen",
|
||||
"errors": {
|
||||
"hostRequired": "Host/IP adresse wird benötigt"
|
||||
}
|
||||
},
|
||||
"step3": {
|
||||
"description": "Endgültige Validierung und Analyse vor dem Speichern Ihrer neuen Kamera. Verbinde jeden Stream vor dem Speichern.",
|
||||
"description": "Konfigurieren Sie Stream-Rollen und fügen Sie zusätzliche Streams für Ihre Kamera hinzu",
|
||||
"validationTitle": "Stream Validierung",
|
||||
"connectAllStreams": "Verbinde alle Streams",
|
||||
"reconnectionSuccess": "Wiederverbindung erfolgreich.",
|
||||
@ -1040,6 +1115,90 @@
|
||||
"hikvision": {
|
||||
"substreamWarning": "Substream 1 ist auf eine niedrige Auflösung festgelegt. Viele Hikvision-Kameras unterstützen zusätzliche Substreams, die in den Kameraeinstellungen aktiviert werden müssen. Es wird empfohlen, diese Streams zu nutzen, sofern sie verfügbar sind."
|
||||
}
|
||||
},
|
||||
"streamsTitle": "Kamera Stream",
|
||||
"addStream": "Stream hinzufügen",
|
||||
"addAnotherStream": "weiteren Stream hinzufügen",
|
||||
"streamUrl": "Stream URL",
|
||||
"streamUrlPlaceholder": "rtsp://benutzername:passwort@host:port/path",
|
||||
"selectStream": "Auswahl Stream",
|
||||
"searchCandidates": "Suche Kandidaten...",
|
||||
"noStreamFound": "Kein Stream gefunden",
|
||||
"url": "URL",
|
||||
"resolution": "Auflösung",
|
||||
"selectResolution": "Wähle Auflösung",
|
||||
"quality": "Qualität",
|
||||
"selectQuality": "Wähle Qualität",
|
||||
"roleLabels": {
|
||||
"detect": "Objekterkennung",
|
||||
"record": "Aufnahme",
|
||||
"audio": "Ton"
|
||||
},
|
||||
"testStream": "Verbindungstest",
|
||||
"testSuccess": "Verbindungstest erfolgreich!",
|
||||
"testFailed": "Verbindungstest fehlgeschlagen",
|
||||
"testFailedTitle": "Test fehlgeschlagen",
|
||||
"connected": "Verbunden",
|
||||
"notConnected": "nicht verbunden",
|
||||
"featuresTitle": "Funktionen",
|
||||
"go2rtc": "Verbindungen zur Kamera reduzieren",
|
||||
"detectRoleWarning": "Mindestens ein Stream muss die Rolle „detect“ haben, um fortfahren zu können.",
|
||||
"rolesPopover": {
|
||||
"title": "Stream Rollen",
|
||||
"detect": "Hauptfeed für die Objekterkennung.",
|
||||
"record": "Speichert Segmente des Video-Feeds basierend auf den Konfigurationseinstellungen.",
|
||||
"audio": "Feed für audiobasierte Erkennung."
|
||||
},
|
||||
"featuresPopover": {
|
||||
"title": "Stream Funktionen",
|
||||
"description": "Verwenden Sie go2rtc-Restreaming, um die Verbindungen zu Ihrer Kamera zu reduzieren."
|
||||
}
|
||||
},
|
||||
"step4": {
|
||||
"description": "Endgültige Validierung und Analyse vor dem Speichern Ihrer neuen Kamera. Verbinden Sie jeden Stream vor dem Speichern.",
|
||||
"validationTitle": "Stream-Validierung",
|
||||
"connectAllStreams": "Alle Streams verbinden",
|
||||
"reconnectionSuccess": "Wiederverbindung erfolgreich.",
|
||||
"reconnectionPartial": "Einige Streams konnten nicht wieder verbunden werden.",
|
||||
"streamUnavailable": "Stream Vorschau nicht verfügbar",
|
||||
"reload": "neu Laden",
|
||||
"connecting": "Verbinden...",
|
||||
"streamTitle": "Stream {{number}}",
|
||||
"valid": "gültig",
|
||||
"failed": "fehlgeschlagen",
|
||||
"notTested": "nicht getestet",
|
||||
"connectStream": "Verbinden",
|
||||
"connectingStream": "Verbinden",
|
||||
"disconnectStream": "getrennt",
|
||||
"estimatedBandwidth": "Voraussichtliche Bandbreite",
|
||||
"roles": "Rollen",
|
||||
"ffmpegModule": "Stream-Kompatibilitätsmodus verwenden",
|
||||
"ffmpegModuleDescription": "Wenn der Stream nach mehreren Versuchen nicht geladen wird, versuchen Sie, diese Option zu aktivieren. Wenn diese Option aktiviert ist, verwendet Frigate das ffmpeg-Modul mit go2rtc. Dies kann zu einer besseren Kompatibilität mit einigen Kamerastreams führen.",
|
||||
"none": "keiner",
|
||||
"error": "Fehler",
|
||||
"streamValidated": "Steam {{number}} erfolgreich validiert",
|
||||
"streamValidationFailed": "Stream {{number}} Validierung fehlgeschlagen",
|
||||
"saveAndApply": "Neue Kamera speichern",
|
||||
"saveError": "Ungültige Konfiguration. Bitte überprüfen Sie Ihre Einstellungen.",
|
||||
"issues": {
|
||||
"title": "Stream-Validierung",
|
||||
"videoCodecGood": "Video codec ist {{codec}}.",
|
||||
"audioCodecGood": "Audio codec ist {{codec}}.",
|
||||
"resolutionHigh": "Eine Auflösung von {{resolution}} kann zu einem erhöhten Ressourcenverbrauch führen.",
|
||||
"resolutionLow": "Eine Auflösung von {{resolution}} ist möglicherweise zu gering, um kleine Objekte zuverlässig zu erkennen.",
|
||||
"noAudioWarning": "Für diesen Stream wurde kein Ton erkannt, die Aufzeichnungen enthalten keinen Ton.",
|
||||
"audioCodecRecordError": "Der AAC-Audio-Codec ist erforderlich, um Audio in Aufnahmen zu unterstützen.",
|
||||
"audioCodecRequired": "Ein Audiostream ist erforderlich, um die Audioerkennung zu unterstützen.",
|
||||
"restreamingWarning": "Die Reduzierung der Verbindungen zur Kamera für den Aufzeichnungsstream kann zu einer geringfügigen Erhöhung der CPU-Auslastung führen.",
|
||||
"brands": {
|
||||
"reolink-rtsp": "Reolink RTSP wird nicht empfohlen. Aktivieren Sie HTTP in den Firmware-Einstellungen der Kamera und starten Sie den Assistenten neu."
|
||||
},
|
||||
"dahua": {
|
||||
"substreamWarning": "Substream 1 ist auf eine niedrige Auflösung festgelegt. Viele Kameras von Dahua / Amcrest / EmpireTech unterstützen zusätzliche Substreams, die in den Kameraeinstellungen aktiviert werden müssen. Es wird empfohlen, diese Streams zu überprüfen und zu nutzen, sofern sie verfügbar sind."
|
||||
},
|
||||
"hikvision": {
|
||||
"substreamWarning": "Substream 1 ist auf eine niedrige Auflösung festgelegt. Viele Hikvision-Kameras unterstützen zusätzliche Substreams, die in den Kameraeinstellungen aktiviert werden müssen. Es wird empfohlen, diese Streams zu überprüfen und zu nutzen, sofern sie verfügbar sind."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1057,9 +1216,9 @@
|
||||
"add": "Kamera hinzufügen",
|
||||
"edit": "Kamera bearbeiten",
|
||||
"description": "Konfiguriere die Kameraeinstellungen, einschließlich Streams und Rollen.",
|
||||
"name": "Kamera-Name",
|
||||
"nameRequired": "Kamera-Name benötigt",
|
||||
"nameLength": "Kamera-Name darf maximal 64 Zeichen lang sein.",
|
||||
"name": "Kameraname",
|
||||
"nameRequired": "Kameraname benötigt",
|
||||
"nameLength": "Kameraname darf maximal 64 Zeichen lang sein.",
|
||||
"namePlaceholder": "z.B. vordere_tür oder Hof Übersicht",
|
||||
"enabled": "Aktiviert",
|
||||
"ffmpeg": {
|
||||
@ -1094,14 +1253,14 @@
|
||||
"desc": "Generative KI Review Beschreibungen für diese Kamera vorübergehend aktivieren/deaktivieren. Wenn diese Option deaktiviert ist, werden für die Review Elemente dieser Kamera keine KI-generierten Beschreibungen angefordert."
|
||||
},
|
||||
"review": {
|
||||
"title": "Review",
|
||||
"title": "Überprüfung",
|
||||
"desc": "Aktivieren/deaktivieren Sie vorübergehend Warnmeldungen und Erkennungen für diese Kamera, bis Frigate neu gestartet wird. Wenn diese Funktion deaktiviert ist, werden keine neuen Überprüfungselemente generiert. ",
|
||||
"alerts": "Warnungen ",
|
||||
"detections": "Erkennungen "
|
||||
},
|
||||
"reviewClassification": {
|
||||
"title": "Bewertungsklassifizierung",
|
||||
"desc": "Frigate kategorisiert zu überprüfende Elemente als Warnmeldungen und Erkennungen. Standardmäßig werden alle Objekte vom Typ <em>person</em> und <em>car</em> als Warnmeldungen betrachtet. Sie können die Kategorisierung der zu überprüfenden Elemente verfeinern, indem Sie die erforderlichen Zonen für sie konfigurieren.",
|
||||
"desc": "Frigate kategorisiert zu überprüfende Elemente als Warnmeldungen und Erkennungen. Standardmäßig werden alle Objekte vom Typ <em>Person</em> und <em>Auto</em> als Warnmeldungen betrachtet. Sie können die Kategorisierung der zu überprüfenden Elemente verfeinern, indem Sie die erforderlichen Zonen für sie konfigurieren.",
|
||||
"noDefinedZones": "Für diese Kamera sind keine Zonen definiert.",
|
||||
"objectAlertsTips": "Alle {{alertsLabels}}-Objekte auf {{cameraName}} werden als Warnmeldungen angezeigt.",
|
||||
"zoneObjectAlertsTips": "Alle {{alertsLabels}}-Objekte, die in {{zone}} auf {{cameraName}} erkannt wurden, werden als Warnmeldungen angezeigt.",
|
||||
|
||||
@ -31,7 +31,12 @@
|
||||
"gpuDecoder": "GPU Decoder",
|
||||
"gpuEncoder": "GPU Encoder",
|
||||
"npuUsage": "NPU Verwendung",
|
||||
"npuMemory": "NPU Speicher"
|
||||
"npuMemory": "NPU Speicher",
|
||||
"intelGpuWarning": {
|
||||
"title": "Intel GPU Statistik Warnung",
|
||||
"message": "GPU stats nicht verfügbar",
|
||||
"description": "Dies ist ein bekannter Fehler in den GPU-Statistik-Tools von Intel (intel_gpu_top), bei dem das Tool ausfällt und wiederholt eine GPU-Auslastung von 0 % anzeigt, selbst wenn die Hardwarebeschleunigung und die Objekterkennung auf der (i)GPU korrekt funktionieren. Dies ist kein Fehler von Frigate. Du kannst den Host neu starten, um das Problem vorübergehend zu beheben und zu prüfen, ob die GPU korrekt funktioniert. Dies hat keine Auswirkungen auf die Leistung."
|
||||
}
|
||||
},
|
||||
"title": "Allgemein",
|
||||
"detector": {
|
||||
@ -167,10 +172,17 @@
|
||||
"face_recognition": "Gesichts Erkennung",
|
||||
"image_embedding": "Bild Embedding",
|
||||
"yolov9_plate_detection_speed": "YOLOv9 Kennzeichenerkennungsgeschwindigkeit",
|
||||
"yolov9_plate_detection": "YOLOv9 Kennzeichenerkennung"
|
||||
"yolov9_plate_detection": "YOLOv9 Kennzeichenerkennung",
|
||||
"review_description": "Bewertung Beschreibung",
|
||||
"review_description_speed": "Bewertungsbeschreibung Geschwindigkeit",
|
||||
"review_description_events_per_second": "Bewertungsbeschreibung",
|
||||
"object_description": "Objekt Beschreibung",
|
||||
"object_description_speed": "Objektbeschreibung Geschwindigkeit",
|
||||
"object_description_events_per_second": "Objektbeschreibung"
|
||||
},
|
||||
"title": "Optimierungen",
|
||||
"infPerSecond": "Rückschlüsse pro Sekunde"
|
||||
"infPerSecond": "Rückschlüsse pro Sekunde",
|
||||
"averageInf": "Durchschnittliche Inferenzzeit"
|
||||
},
|
||||
"stats": {
|
||||
"healthy": "Das System läuft problemlos",
|
||||
|
||||
@ -712,6 +712,8 @@
|
||||
"password": {
|
||||
"title": "Password",
|
||||
"placeholder": "Enter password",
|
||||
"show": "Show password",
|
||||
"hide": "Hide password",
|
||||
"confirm": {
|
||||
"title": "Confirm Password",
|
||||
"placeholder": "Confirm Password"
|
||||
@ -723,6 +725,13 @@
|
||||
"strong": "Strong",
|
||||
"veryStrong": "Very Strong"
|
||||
},
|
||||
"requirements": {
|
||||
"title": "Password requirements:",
|
||||
"length": "At least 8 characters",
|
||||
"uppercase": "At least one uppercase letter",
|
||||
"digit": "At least one digit",
|
||||
"special": "At least one special character (!@#$%^&*(),.?\":{}|<>)"
|
||||
},
|
||||
"match": "Passwords match",
|
||||
"notMatch": "Passwords don't match"
|
||||
},
|
||||
@ -733,6 +742,10 @@
|
||||
"placeholder": "Re-enter new password"
|
||||
}
|
||||
},
|
||||
"currentPassword": {
|
||||
"title": "Current Password",
|
||||
"placeholder": "Enter your current password"
|
||||
},
|
||||
"usernameIsRequired": "Username is required",
|
||||
"passwordIsRequired": "Password is required"
|
||||
},
|
||||
@ -750,9 +763,13 @@
|
||||
"passwordSetting": {
|
||||
"cannotBeEmpty": "Password cannot be empty",
|
||||
"doNotMatch": "Passwords do not match",
|
||||
"currentPasswordRequired": "Current password is required",
|
||||
"incorrectCurrentPassword": "Current password is incorrect",
|
||||
"passwordVerificationFailed": "Failed to verify password",
|
||||
"updatePassword": "Update Password for {{username}}",
|
||||
"setPassword": "Set Password",
|
||||
"desc": "Create a strong password to secure this account."
|
||||
"desc": "Create a strong password to secure this account.",
|
||||
"multiDeviceWarning": "Any other devices where you are logged in will be required to re-login within {{refresh_time}}. You can also force all users to re-authenticate immediately by rotating your JWT secret."
|
||||
},
|
||||
"changeRole": {
|
||||
"title": "Change User Role",
|
||||
|
||||
@ -124,7 +124,7 @@
|
||||
"twoWayTalk": {
|
||||
"tips.documentation": "Leer la documentación ",
|
||||
"available": "La conversación bidireccional está disponible para esta transmisión",
|
||||
"unavailable": "La conversación bidireccional está disponible para esta transmisión",
|
||||
"unavailable": "La conversación bidireccional no está disponible para esta transmisión",
|
||||
"tips": "Tu dispositivo debe soportar la función y WebRTC debe estar configurado para la conversación bidireccional."
|
||||
},
|
||||
"lowBandwidth": {
|
||||
|
||||
1
web/public/locales/et/audio.json
Normal file
1
web/public/locales/et/audio.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
11
web/public/locales/et/common.json
Normal file
11
web/public/locales/et/common.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"time": {
|
||||
"untilForTime": "Kuni {{time}}",
|
||||
"today": "Täna"
|
||||
},
|
||||
"menu": {
|
||||
"user": {
|
||||
"setPassword": "Lisa salasõna"
|
||||
}
|
||||
}
|
||||
}
|
||||
8
web/public/locales/et/components/auth.json
Normal file
8
web/public/locales/et/components/auth.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"form": {
|
||||
"password": "Salasõna",
|
||||
"errors": {
|
||||
"passwordRequired": "Salasõna on vajalik"
|
||||
}
|
||||
}
|
||||
}
|
||||
5
web/public/locales/et/components/camera.json
Normal file
5
web/public/locales/et/components/camera.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"group": {
|
||||
"label": "Kaameragrupid"
|
||||
}
|
||||
}
|
||||
6
web/public/locales/et/components/dialog.json
Normal file
6
web/public/locales/et/components/dialog.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"restart": {
|
||||
"title": "Kas oled kindel, et soovid Frigate'i uuesti käivitada?",
|
||||
"button": "Käivita uuesti"
|
||||
}
|
||||
}
|
||||
3
web/public/locales/et/components/filter.json
Normal file
3
web/public/locales/et/components/filter.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"filter": "Filter"
|
||||
}
|
||||
8
web/public/locales/et/components/icons.json
Normal file
8
web/public/locales/et/components/icons.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"iconPicker": {
|
||||
"selectIcon": "Vali ikoon",
|
||||
"search": {
|
||||
"placeholder": "Otsi ikooni…"
|
||||
}
|
||||
}
|
||||
}
|
||||
10
web/public/locales/et/components/input.json
Normal file
10
web/public/locales/et/components/input.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"button": {
|
||||
"downloadVideo": {
|
||||
"label": "Laadi video alla",
|
||||
"toast": {
|
||||
"success": "Sinu ülevaatamisel video allalaadimine algas."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
3
web/public/locales/et/components/player.json
Normal file
3
web/public/locales/et/components/player.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"noRecordingsFoundForThisTime": "Hetkel ei leidu ühtego salvestust"
|
||||
}
|
||||
1
web/public/locales/et/objects.json
Normal file
1
web/public/locales/et/objects.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
1
web/public/locales/et/views/classificationModel.json
Normal file
1
web/public/locales/et/views/classificationModel.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
1
web/public/locales/et/views/configEditor.json
Normal file
1
web/public/locales/et/views/configEditor.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
3
web/public/locales/et/views/events.json
Normal file
3
web/public/locales/et/views/events.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"alerts": "Häired"
|
||||
}
|
||||
1
web/public/locales/et/views/explore.json
Normal file
1
web/public/locales/et/views/explore.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
3
web/public/locales/et/views/exports.json
Normal file
3
web/public/locales/et/views/exports.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"documentTitle": "Eksport Frigate'ist"
|
||||
}
|
||||
1
web/public/locales/et/views/faceLibrary.json
Normal file
1
web/public/locales/et/views/faceLibrary.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
1
web/public/locales/et/views/live.json
Normal file
1
web/public/locales/et/views/live.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
12
web/public/locales/et/views/recording.json
Normal file
12
web/public/locales/et/views/recording.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"export": "Ekspordi",
|
||||
"calendar": "Kalender",
|
||||
"filter": "Filter",
|
||||
"filters": "Filtrid",
|
||||
"toast": {
|
||||
"error": {
|
||||
"noValidTimeSelected": "Ühtegi kehtivat ajavahemikku pole valitud",
|
||||
"endTimeMustAfterStartTime": "Ajavahemiku lõpp peab olema peale algust"
|
||||
}
|
||||
}
|
||||
}
|
||||
1
web/public/locales/et/views/search.json
Normal file
1
web/public/locales/et/views/search.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
62
web/public/locales/et/views/settings.json
Normal file
62
web/public/locales/et/views/settings.json
Normal file
@ -0,0 +1,62 @@
|
||||
{
|
||||
"cameraWizard": {
|
||||
"step1": {
|
||||
"password": "Salasõna",
|
||||
"passwordPlaceholder": "Valikuline",
|
||||
"customUrlPlaceholder": "rtsp://kasutajanimi:salasõna@host:port/asukoht"
|
||||
}
|
||||
},
|
||||
"users": {
|
||||
"updatePassword": "Muuda salasõna",
|
||||
"toast": {
|
||||
"success": {
|
||||
"updatePassword": "Salasõna muutmine õnnestus."
|
||||
},
|
||||
"error": {
|
||||
"setPasswordFailed": "Salasõna salvestamine ei õnnestunud: {{errorMessage}}"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"password": "Salasõna"
|
||||
},
|
||||
"dialog": {
|
||||
"form": {
|
||||
"password": {
|
||||
"title": "Salasõna",
|
||||
"placeholder": "Sisesta salasõna",
|
||||
"confirm": {
|
||||
"title": "Korda salasõna",
|
||||
"placeholder": "Korda salasõna"
|
||||
},
|
||||
"strength": {
|
||||
"title": "Salasõna tugevus: ",
|
||||
"weak": "Nõrk",
|
||||
"medium": "Keskmime",
|
||||
"strong": "Tugev",
|
||||
"veryStrong": "Väga tugev"
|
||||
},
|
||||
"match": "Salasõnad klapivad omavahel",
|
||||
"notMatch": "Salasõnad ei klapi omavahel"
|
||||
},
|
||||
"newPassword": {
|
||||
"title": "Uus salasõna",
|
||||
"placeholder": "Sisesta uus salasõna",
|
||||
"confirm": {
|
||||
"placeholder": "Sisesta uus salasõna uuesti"
|
||||
}
|
||||
},
|
||||
"passwordIsRequired": "Salasõna on vajalik"
|
||||
},
|
||||
"createUser": {
|
||||
"confirmPassword": "Palun kinnita oma uus salasõna"
|
||||
},
|
||||
"passwordSetting": {
|
||||
"cannotBeEmpty": "Salasõna ei või jääda tühjaks",
|
||||
"doNotMatch": "Salasõnad ei klapi omavahel",
|
||||
"updatePassword": "Muuda kasutaja {{username}} salasõna",
|
||||
"setPassword": "Sisesta salasõna",
|
||||
"desc": "Selle kasutajakonto turvalisuse tagamiseks lisa tugev salasõna."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1
web/public/locales/et/views/system.json
Normal file
1
web/public/locales/et/views/system.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -185,7 +185,7 @@
|
||||
},
|
||||
"label": "Mode sombre"
|
||||
},
|
||||
"review": "Événements",
|
||||
"review": "Activités",
|
||||
"explore": "Explorer",
|
||||
"export": "Exporter",
|
||||
"user": {
|
||||
@ -247,7 +247,7 @@
|
||||
"title": "Rôle",
|
||||
"viewer": "Observateur",
|
||||
"admin": "Administrateur",
|
||||
"desc": "Les administrateurs ont un accès complet à toutes les fonctionnalités de l'interface Frigate. Les observateurs sont limités à la consultation des caméras, des événements, et à l'historique des enregistrements dans l'interface."
|
||||
"desc": "Les administrateurs ont un accès complet à toutes les fonctionnalités de l'interface Frigate. Les observateurs sont limités à la consultation des caméras, des activités, et à l'historique des enregistrements dans l'interface."
|
||||
},
|
||||
"pagination": {
|
||||
"next": {
|
||||
|
||||
@ -65,7 +65,8 @@
|
||||
"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."
|
||||
},
|
||||
"success": "Exportation démarrée avec succès. Consultez le fichier sur la page des exportations."
|
||||
"success": "Exportation démarrée avec succès. Consultez le fichier sur la page des exportations.",
|
||||
"view": "Vue"
|
||||
},
|
||||
"select": "Sélectionner",
|
||||
"name": {
|
||||
@ -109,19 +110,19 @@
|
||||
"recording": {
|
||||
"confirmDelete": {
|
||||
"desc": {
|
||||
"selected": "Êtes-vous sûr(e) de vouloir supprimer toutes les vidéos enregistrées associées à cet événement ? <br /><br />Maintenez la touche <em>Maj</em> enfoncée pour éviter cette boîte de dialogue à l'avenir."
|
||||
"selected": "Êtes-vous sûr(e) de vouloir supprimer toutes les vidéos enregistrées associées à cette activité ? <br /><br />Maintenez la touche <em>Maj</em> enfoncée pour éviter cette boîte de dialogue à l'avenir."
|
||||
},
|
||||
"title": "Confirmer la suppression",
|
||||
"toast": {
|
||||
"success": "Les vidéos associées aux événements sélectionnés ont été supprimées.",
|
||||
"success": "Les vidéos associées aux activités sélectionnées ont été supprimées.",
|
||||
"error": "Échec de la suppression : {{error}}"
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"export": "Exporter",
|
||||
"markAsReviewed": "Marquer comme vérifié",
|
||||
"markAsReviewed": "Marquer comme traité",
|
||||
"deleteNow": "Supprimer maintenant",
|
||||
"markAsUnreviewed": "Marquer comme non vérifié"
|
||||
"markAsUnreviewed": "Marquer comme non traité"
|
||||
}
|
||||
},
|
||||
"imagePicker": {
|
||||
|
||||
@ -83,7 +83,7 @@
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
"showReviewed": "Afficher les éléments vérifiés"
|
||||
"showReviewed": "Afficher les activités traitées"
|
||||
},
|
||||
"cameras": {
|
||||
"label": "Filtre des caméras",
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
"downloadVideo": {
|
||||
"label": "Télécharger la vidéo",
|
||||
"toast": {
|
||||
"success": "Le téléchargement de la vidéo de votre événement a commencé."
|
||||
"success": "Le téléchargement de la vidéo a commencé."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"documentTitle": "Modèles de classification",
|
||||
"documentTitle": "Modèles de classification - Frigate",
|
||||
"button": {
|
||||
"deleteClassificationAttempts": "Supprimer les images de classification",
|
||||
"renameCategory": "Renommer la classe",
|
||||
@ -152,7 +152,12 @@
|
||||
"generateSuccess": "Génération des images d'exemple réussie",
|
||||
"allImagesRequired_one": "Veuillez classifier toutes les images. {{count}} image restante.",
|
||||
"allImagesRequired_many": "Veuillez classifier toutes les images. {{count}} images restantes.",
|
||||
"allImagesRequired_other": "Veuillez classifier toutes les images. {{count}} images restantes."
|
||||
"allImagesRequired_other": "Veuillez classifier toutes les images. {{count}} images restantes.",
|
||||
"modelCreated": "Modèle créé avec succès. Utilisez la vue Classifications récentes pour ajouter des images pour les états manquants, puis entraînez le modèle.",
|
||||
"missingStatesWarning": {
|
||||
"title": "Exemples d'états manquants",
|
||||
"description": "Pour des résultats optimaux, il est recommandé de sélectionner des exemples pour tous les états. Vous pouvez continuer sans cette étape, mais le modèle ne sera entraîné que lorsque chaque état disposera d'images. Continuez, puis utilisez la vue Classifications récentes pour classer les images manquantes et lancer l'entraînement."
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteModel": {
|
||||
@ -180,5 +185,6 @@
|
||||
"noNewImages": "Aucune nouvelle image pour l'entraînement. Veuillez d'abord classifier plus d'images dans le jeu de données.",
|
||||
"modelNotReady": "Le modèle n'est pas prêt pour l'entraînement.",
|
||||
"noChanges": "Aucune modification du jeu de données depuis le dernier entraînement"
|
||||
}
|
||||
},
|
||||
"none": "Aucun"
|
||||
}
|
||||
|
||||
@ -7,8 +7,8 @@
|
||||
"alerts": "Alertes",
|
||||
"allCameras": "Toutes les caméras",
|
||||
"empty": {
|
||||
"alert": "Il n'y a aucune alerte à examiner.",
|
||||
"detection": "Il n'y a aucune détection à examiner.",
|
||||
"alert": "Aucune alerte à traiter",
|
||||
"detection": "Aucune détection à traiter",
|
||||
"motion": "Aucune donnée de mouvement trouvée"
|
||||
},
|
||||
"timeline": "Chronologie",
|
||||
@ -17,7 +17,7 @@
|
||||
"aria": "Sélectionner les événements",
|
||||
"noFoundForTimePeriod": "Aucun événement n'a été trouvé pour cette plage de temps."
|
||||
},
|
||||
"documentTitle": "Événements - Frigate",
|
||||
"documentTitle": "Activités - Frigate",
|
||||
"recordings": {
|
||||
"documentTitle": "Enregistrements - Frigate"
|
||||
},
|
||||
@ -25,13 +25,13 @@
|
||||
"last24Hours": "Dernières 24 heures"
|
||||
},
|
||||
"timeline.aria": "Sélectionner une chronologie",
|
||||
"markAsReviewed": "Marquer comme vérifié",
|
||||
"markAsReviewed": "Marquer comme traitê",
|
||||
"newReviewItems": {
|
||||
"button": "Nouveaux événements à examiner",
|
||||
"label": "Afficher les nouveaux événements"
|
||||
"button": "Nouvelles activités à traiter",
|
||||
"label": "Afficher les nouvelles activités"
|
||||
},
|
||||
"camera": "Caméra",
|
||||
"markTheseItemsAsReviewed": "Marquer ces éléments comme vérifiés",
|
||||
"markTheseItemsAsReviewed": "Marquer ces activités comme traitées",
|
||||
"selected": "{{count}} sélectionné(s)",
|
||||
"selected_other": "{{count}} sélectionné(s)",
|
||||
"selected_one": "{{count}} sélectionné(s)",
|
||||
@ -39,7 +39,7 @@
|
||||
"suspiciousActivity": "Activité suspecte",
|
||||
"threateningActivity": "Activité menaçante",
|
||||
"detail": {
|
||||
"noDataFound": "Aucun détail à examiner",
|
||||
"noDataFound": "Aucun détail à traiter",
|
||||
"aria": "Activer/désactiver la vue détaillée",
|
||||
"trackedObject_one": "{{count}} objet",
|
||||
"trackedObject_other": "{{count}} objets",
|
||||
@ -48,7 +48,7 @@
|
||||
"settings": "Paramètres de la vue Détail",
|
||||
"alwaysExpandActive": {
|
||||
"title": "Toujours développer l'élément actif",
|
||||
"desc": "Toujours développer les détails de l'objet de l'événement actif si disponibles"
|
||||
"desc": "Toujours développer les détails de l'objet pour l'activité en cours"
|
||||
}
|
||||
},
|
||||
"objectTrack": {
|
||||
@ -56,5 +56,8 @@
|
||||
"clickToSeek": "Cliquez pour atteindre ce moment."
|
||||
},
|
||||
"zoomIn": "Zoom avant",
|
||||
"zoomOut": "Zoom arrière"
|
||||
"zoomOut": "Zoom arrière",
|
||||
"normalActivity": "Normal",
|
||||
"needsReview": "À traiter",
|
||||
"securityConcern": "Problème de sécurité"
|
||||
}
|
||||
|
||||
@ -32,9 +32,9 @@
|
||||
"details": {
|
||||
"timestamp": "Horodatage",
|
||||
"item": {
|
||||
"title": "Détails de l'événement",
|
||||
"title": "Détails de l'activité",
|
||||
"button": {
|
||||
"share": "Partager cet événement",
|
||||
"share": "Partager cette activité",
|
||||
"viewInExplore": "Afficher dans Explorer"
|
||||
},
|
||||
"toast": {
|
||||
@ -52,12 +52,12 @@
|
||||
}
|
||||
},
|
||||
"tips": {
|
||||
"mismatch_one": "{{count}} objet indisponible a été détecté et intégré dans cet événement. Cet objet n'a pas été qualifié comme une alerte ou une détection, ou a déjà été nettoyé / supprimé.",
|
||||
"mismatch_many": "{{count}} objets indisponibles ont été détectés et intégrés dans cet événement. Ces objets n'ont pas été qualifiés comme une alerte ou une détection, ou ont déjà été nettoyés / supprimés.",
|
||||
"mismatch_other": "{{count}} objets indisponibles ont été détectés et intégrés dans cet événement. Ces objets n'ont pas été qualifiés comme une alerte ou une détection, ou ont déjà été nettoyés / supprimés.",
|
||||
"mismatch_one": "{{count}} objet indisponible a été détecté et intégré dans cette activité. Cet objet n'a pas été qualifié comme une alerte ou une détection, ou a déjà été nettoyé / supprimé.",
|
||||
"mismatch_many": "{{count}} objets indisponibles ont été détectés et intégrés dans cette activité. Ces objets n'ont pas été qualifiés comme une alerte ou une détection, ou ont déjà été nettoyés / supprimés.",
|
||||
"mismatch_other": "{{count}} objets indisponibles ont été détectés et intégrés dans cette activité. Ces objets n'ont pas été qualifiés comme une alerte ou une détection, ou ont déjà été nettoyés / supprimés.",
|
||||
"hasMissingObjects": "Ajustez votre configuration si vous souhaitez que Frigate enregistre les objets suivis pour les étiquettes suivantes : <em>{{objects}}</em>"
|
||||
},
|
||||
"desc": "Détails de l'événement"
|
||||
"desc": "Détails de l'activité"
|
||||
},
|
||||
"label": "Étiquette",
|
||||
"editSubLabel": {
|
||||
@ -208,6 +208,10 @@
|
||||
"viewTrackingDetails": {
|
||||
"label": "Voir les détails du suivi",
|
||||
"aria": "Afficher les détails du suivi"
|
||||
},
|
||||
"downloadCleanSnapshot": {
|
||||
"label": "Télécharger l'instantané vierge",
|
||||
"aria": "Télécharger l'instantané vierge"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
@ -263,7 +267,8 @@
|
||||
"header": {
|
||||
"zones": "Zones",
|
||||
"ratio": "Ratio",
|
||||
"area": "Surface"
|
||||
"area": "Surface",
|
||||
"score": "Score"
|
||||
}
|
||||
},
|
||||
"annotationSettings": {
|
||||
@ -272,7 +277,7 @@
|
||||
"millisecondsToOffset": "Millisecondes de décalage pour les annotations de détection. <em>Par défaut : 0</em>",
|
||||
"tips": "Diminuez la valeur si la lecture vidéo est en avance sur les cadres de détection et les points de tracé, et augmentez-la si la lecture vidéo est en retard sur ceux-ci. Cette valeur peut être négative.",
|
||||
"toast": {
|
||||
"success": "Le décalage des annotations pour {{camera}} a été sauvegardé dans le fichier de configuration. Redémarrez Frigate pour appliquer vos modifications."
|
||||
"success": "Le décalage des annotations pour {{camera}} a été sauvegardé dans le fichier de configuration."
|
||||
},
|
||||
"label": "Décalage d'annotation"
|
||||
},
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"notifications": "Paramètres de notification - Frigate",
|
||||
"enrichments": "Paramètres d'enrichissements - Frigate",
|
||||
"cameraManagement": "Gestion des caméras - Frigate",
|
||||
"cameraReview": "Paramètres des événements de caméra - Frigate"
|
||||
"cameraReview": "Paramètres des activités - Frigate"
|
||||
},
|
||||
"menu": {
|
||||
"ui": "Interface utilisateur",
|
||||
@ -28,7 +28,7 @@
|
||||
"triggers": "Déclencheurs",
|
||||
"roles": "Rôles",
|
||||
"cameraManagement": "Gestion",
|
||||
"cameraReview": "Événements"
|
||||
"cameraReview": "Activités"
|
||||
},
|
||||
"dialog": {
|
||||
"unsavedChanges": {
|
||||
@ -395,7 +395,7 @@
|
||||
"name": {
|
||||
"title": "Nom",
|
||||
"inputPlaceHolder": "Saisissez un nom.",
|
||||
"tips": "Le nom doit comporter au moins 2 caractères, dont une lettre, et ne doit pas être le nom d'une caméra ou d'une autre zone."
|
||||
"tips": "Le nom doit comporter au moins 2 caractères, dont une lettre, et ne doit pas être le nom d'une caméra ou d'une autre zone sur cette caméra."
|
||||
},
|
||||
"loiteringTime": {
|
||||
"desc": "Définit une durée minimale en secondes pendant laquelle l'objet doit rester dans la zone pour qu'elle s'active. <em>Par défaut : 0</em>",
|
||||
@ -429,7 +429,7 @@
|
||||
"title": "Inertie"
|
||||
},
|
||||
"toast": {
|
||||
"success": "La zone ({{zoneName}}) a été enregistrée. Redémarrez Frigate pour appliquer les modifications."
|
||||
"success": "La zone ({{zoneName}}) a été enregistrée."
|
||||
},
|
||||
"objects": {
|
||||
"title": "Objets",
|
||||
@ -457,8 +457,8 @@
|
||||
"clickDrawPolygon": "Cliquer pour dessiner un polygone sur l'image.",
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "{{polygonName}} a été enregistré. Redémarrez Frigate pour appliquer les modifications.",
|
||||
"noName": "Le masque de mouvement a été enregistré. Redémarrez Frigate pour appliquer les modifications."
|
||||
"title": "{{polygonName}} a été enregistré.",
|
||||
"noName": "Le masque de mouvement a été enregistré."
|
||||
}
|
||||
},
|
||||
"desc": {
|
||||
@ -482,8 +482,8 @@
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"noName": "Le masque d'objet a été enregistré. Redémarrez Frigate pour appliquer les modifications.",
|
||||
"title": "{{polygonName}} a été enregistré. Redémarrez Frigate pour appliquer les modifications."
|
||||
"noName": "Le masque d'objet a été enregistré.",
|
||||
"title": "{{polygonName}} a été enregistré."
|
||||
}
|
||||
},
|
||||
"point_one": "{{count}} point",
|
||||
@ -720,7 +720,7 @@
|
||||
},
|
||||
"label": "Taille du modèle"
|
||||
},
|
||||
"desc": "La recherche sémantique de Frigate vous permet de retrouver les objets suivis dans vos événements en utilisant soit l'image elle-même, soit une description textuelle définie par l'utilisateur, soit une description générée automatiquement."
|
||||
"desc": "La recherche sémantique de Frigate vous permet de retrouver les objets suivis dans vos activités en utilisant soit l'image elle-même, soit une description textuelle définie par l'utilisateur, soit une description générée automatiquement."
|
||||
},
|
||||
"unsavedChanges": "Modifications non enregistrées des paramètres d'enrichissements",
|
||||
"faceRecognition": {
|
||||
@ -1256,17 +1256,17 @@
|
||||
}
|
||||
},
|
||||
"cameraReview": {
|
||||
"title": "Paramètres des événements de la caméra",
|
||||
"title": "Paramètres des activités caméra",
|
||||
"object_descriptions": {
|
||||
"title": "Descriptions d'objets par l'IA générative",
|
||||
"desc": "Active ou désactive temporairement les descriptions d'objets générées par l'IA générative pour cette caméra. Lorsque cette option est désactivée, aucune description par l'IA n'est générée pour les objets suivis sur cette caméra."
|
||||
},
|
||||
"review_descriptions": {
|
||||
"title": "Descriptions des événements par l'IA générative",
|
||||
"desc": "Active ou désactive temporairement les descriptions par l'IA générative pour cette caméra. Lorsque cette option est désactivée, aucune description par l'IA ne sera générée pour les événements de cette caméra."
|
||||
"title": "Descriptions des activités par l'IA générative",
|
||||
"desc": "Active ou désactive temporairement les descriptions par l'IA générative pour cette caméra. Lorsque cette option est désactivée, aucune description par l'IA ne sera générée pour les activités sur cette caméra."
|
||||
},
|
||||
"review": {
|
||||
"title": "Événements",
|
||||
"title": "Activités",
|
||||
"desc": "Active ou désactive temporairement les alertes et les détections pour cette caméra jusqu'au redémarrage de Frigate. Lorsque cette option est désactivée, aucun nouvel événement n'est généré. ",
|
||||
"alerts": "Alertes ",
|
||||
"detections": "Détections "
|
||||
|
||||
@ -186,9 +186,9 @@
|
||||
"face_recognition": "Reconnaissance faciale",
|
||||
"text_embedding": "Vitesse d'embedding de visage",
|
||||
"yolov9_plate_detection_speed": "Vitesse de détection de plaques d'immatriculation YOLOv9",
|
||||
"review_description": "Description de la revue",
|
||||
"review_description_speed": "Vitesse de la description de la revue",
|
||||
"review_description_events_per_second": "Description de la revue",
|
||||
"review_description": "Description de l'activité",
|
||||
"review_description_speed": "Vitesse de description des activités",
|
||||
"review_description_events_per_second": "Description de l'activité",
|
||||
"object_description": "Description de l'objet",
|
||||
"object_description_speed": "Vitesse de la description d'objet",
|
||||
"object_description_events_per_second": "Description de l'objet"
|
||||
|
||||
@ -66,7 +66,8 @@
|
||||
"failed": "Impossibile avviare l'esportazione: {{error}}",
|
||||
"endTimeMustAfterStartTime": "L'ora di fine deve essere successiva all'ora di inizio",
|
||||
"noVaildTimeSelected": "Nessun intervallo di tempo valido selezionato"
|
||||
}
|
||||
},
|
||||
"view": "Visualizzazione"
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Salva esportazione",
|
||||
|
||||
@ -152,7 +152,12 @@
|
||||
"generateSuccess": "Immagini campione generate correttamente",
|
||||
"allImagesRequired_one": "Classifica tutte le immagini. Rimane {{count}} immagine.",
|
||||
"allImagesRequired_many": "Classifica tutte le immagini. Rimangono {{count}} immagini.",
|
||||
"allImagesRequired_other": "Classifica tutte le immagini. Rimangono {{count}} immagini."
|
||||
"allImagesRequired_other": "Classifica tutte le immagini. Rimangono {{count}} immagini.",
|
||||
"modelCreated": "Modello creato correttamente. Utilizza la vista Classificazioni recenti per aggiungere immagini per gli stati mancanti, quindi addestrare il modello.",
|
||||
"missingStatesWarning": {
|
||||
"title": "Esempi di stati mancanti",
|
||||
"description": "Non hai selezionato esempi per tutti gli stati. Il modello non verrà addestrato finché tutti gli stati non avranno immagini. Dopo aver continuato, utilizza la vista Classificazioni recenti per classificare le immagini per gli stati mancanti, quindi addestra il modello."
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteModel": {
|
||||
|
||||
@ -56,5 +56,8 @@
|
||||
"clickToSeek": "Premi per cercare in questo momento"
|
||||
},
|
||||
"zoomIn": "Ingrandisci",
|
||||
"zoomOut": "Rimpicciolisci"
|
||||
"zoomOut": "Rimpicciolisci",
|
||||
"normalActivity": "Normale",
|
||||
"needsReview": "Necessita revisione",
|
||||
"securityConcern": "Rischio per la sicurezza"
|
||||
}
|
||||
|
||||
@ -263,7 +263,8 @@
|
||||
"header": {
|
||||
"zones": "Zone",
|
||||
"ratio": "Rapporto",
|
||||
"area": "Area"
|
||||
"area": "Area",
|
||||
"score": "Punteggio"
|
||||
}
|
||||
},
|
||||
"annotationSettings": {
|
||||
|
||||
@ -61,7 +61,8 @@
|
||||
"failed": "Klarte ikke å starte eksport: {{error}}",
|
||||
"noVaildTimeSelected": "Ingen gyldig tidsperiode valgt",
|
||||
"endTimeMustAfterStartTime": "Sluttid må være etter starttid"
|
||||
}
|
||||
},
|
||||
"view": "Vis"
|
||||
},
|
||||
"fromTimeline": {
|
||||
"previewExport": "Forhåndsvis eksport",
|
||||
|
||||
@ -23,8 +23,8 @@
|
||||
"label": "Sorter",
|
||||
"dateAsc": "Dato (Stigende)",
|
||||
"dateDesc": "Dato (Synkende)",
|
||||
"scoreAsc": "Objektpoengsum (Stigende)",
|
||||
"scoreDesc": "Objektpoengsum (Synkende)",
|
||||
"scoreAsc": "Objektscore (Stigende)",
|
||||
"scoreDesc": "Objektscore (Synkende)",
|
||||
"speedAsc": "Estimert hastighet (Stigende)",
|
||||
"speedDesc": "Estimert hastighet (Synkende)",
|
||||
"relevance": "Relevans"
|
||||
@ -104,7 +104,7 @@
|
||||
"label": "Underetiketter",
|
||||
"all": "Alle underetiketter"
|
||||
},
|
||||
"score": "Poengsum",
|
||||
"score": "Score",
|
||||
"estimatedSpeed": "Estimert hastighet ({{unit}})",
|
||||
"cameras": {
|
||||
"all": {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"documentTitle": "Klassifiseringsmodeller",
|
||||
"documentTitle": "Klassifiseringsmodeller - Frigate",
|
||||
"button": {
|
||||
"deleteClassificationAttempts": "Slett klassifiseringsbilder",
|
||||
"renameCategory": "Omdøp klasse",
|
||||
@ -12,19 +12,19 @@
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"deletedCategory": "Kategori slettet",
|
||||
"deletedCategory": "Klasse slettet",
|
||||
"deletedImage": "Bilder slettet",
|
||||
"categorizedImage": "Bildet ble klassifisert",
|
||||
"categorizedImage": "Klassifiserte bildet",
|
||||
"trainedModel": "Modellen ble trent.",
|
||||
"trainingModel": "Modelltrening startet.",
|
||||
"deletedModel_one": "{{count}} modell ble slettet",
|
||||
"deletedModel_other": "{{count}} modeller ble slettet",
|
||||
"updatedModel": "Modellkonfigurasjonen ble oppdatert",
|
||||
"renamedCategory": "Kategorien ble omdøpt til {{name}}"
|
||||
"renamedCategory": "Klassen ble omdøpt til {{name}}"
|
||||
},
|
||||
"error": {
|
||||
"deleteImageFailed": "Kunne ikke slette: {{errorMessage}}",
|
||||
"deleteCategoryFailed": "Kunne ikke slette kategori: {{errorMessage}}",
|
||||
"deleteCategoryFailed": "Kunne ikke slette klasse: {{errorMessage}}",
|
||||
"categorizeFailed": "Kunne ikke klassifisere bilde: {{errorMessage}}",
|
||||
"trainingFailed": "Modelltrening mislyktes. Sjekk Frigate-loggene for detaljer.",
|
||||
"deleteModelFailed": "Kunne ikke slette modell: {{errorMessage}}",
|
||||
@ -34,10 +34,10 @@
|
||||
}
|
||||
},
|
||||
"deleteCategory": {
|
||||
"title": "Slett kategori",
|
||||
"desc": "Er du sikker på at du vil slette kategorien {{name}}? Dette vil permanent slette alle tilknyttede bilder og kreve at modellen trenes på nytt.",
|
||||
"title": "Slett klasse",
|
||||
"desc": "Er du sikker på at du vil slette klassen {{name}}? Dette vil permanent slette alle tilknyttede bilder og kreve at modellen trenes på nytt.",
|
||||
"minClassesTitle": "Kan ikke slette klasse",
|
||||
"minClassesDesc": "En klassifiseringsmodell må ha minst 2 kategorier. Legg til en ny kategori før du sletter denne."
|
||||
"minClassesDesc": "En klassifiseringsmodell må ha minst 2 klasser. Legg til en ny klasse før du sletter denne."
|
||||
},
|
||||
"deleteDatasetImages": {
|
||||
"title": "Slett datasettbilder",
|
||||
@ -48,7 +48,7 @@
|
||||
"desc": "Er du sikker på at du vil slette {{count}} bilder? Denne handlingen kan ikke angres."
|
||||
},
|
||||
"renameCategory": {
|
||||
"title": "Gi nytt navn til kategori",
|
||||
"title": "Omdøp klasse",
|
||||
"desc": "Skriv inn et nytt navn for {{name}}. Du må trene modellen på nytt for at navneendringen skal tre i kraft."
|
||||
},
|
||||
"description": {
|
||||
@ -59,9 +59,9 @@
|
||||
"aria": "Velg nylige klassifiseringer",
|
||||
"titleShort": "Nylig"
|
||||
},
|
||||
"categories": "Kategorier",
|
||||
"categories": "Klasser",
|
||||
"createCategory": {
|
||||
"new": "Opprett ny kategori"
|
||||
"new": "Opprett ny klasse"
|
||||
},
|
||||
"categorizeImageAs": "Klassifiser bilde som:",
|
||||
"categorizeImage": "Klassifiser bilde",
|
||||
@ -98,18 +98,18 @@
|
||||
"classificationTypeDesc": "Underetiketter legger til ekstra tekst på objektetiketten (f.eks. 'Person: Posten'). Attributter er søkbare metadata som lagres separat i objektets metadata.",
|
||||
"classificationSubLabel": "Underetikett",
|
||||
"classificationAttribute": "Attributt",
|
||||
"classes": "Kategorier",
|
||||
"classesTip": "Lær om kategorier",
|
||||
"classes": "Klasser",
|
||||
"classesTip": "Lær om klasser",
|
||||
"classesStateDesc": "Definer de ulike tilstandene kamerasonen kan være i. For eksempel: 'åpen' og 'lukket' for en garasjeport.",
|
||||
"classesObjectDesc": "Definer kategoriene du vil klassifisere oppdagede objekter i. For eksempel: 'bud', 'beboer', 'fremmed' for personklassifisering.",
|
||||
"classPlaceholder": "Skriv inn tilstandsnavn...",
|
||||
"classesObjectDesc": "Definer klassene du vil klassifisere oppdagede objekter i. For eksempel: 'bud', 'beboer', 'fremmed' for personklassifisering.",
|
||||
"classPlaceholder": "Skriv inn klassenavn...",
|
||||
"errors": {
|
||||
"nameRequired": "Modellnavn er påkrevd",
|
||||
"nameLength": "Modellnavn må være på 64 tegn eller mindre",
|
||||
"nameOnlyNumbers": "Modellnavn kan ikke bare inneholde tall",
|
||||
"classRequired": "Minst én kategori er påkrevd",
|
||||
"classesUnique": "Kategorinavn må være unike",
|
||||
"stateRequiresTwoClasses": "Tilstandsmodeller krever minst to kategorier",
|
||||
"classRequired": "Minst én klasse er påkrevd",
|
||||
"classesUnique": "Klassenavn må være unike",
|
||||
"stateRequiresTwoClasses": "Tilstandsmodeller krever minst to klasser",
|
||||
"objectLabelRequired": "Velg en objektetikett",
|
||||
"objectTypeRequired": "Velg en klassifiseringstype"
|
||||
},
|
||||
@ -124,7 +124,7 @@
|
||||
},
|
||||
"step3": {
|
||||
"selectImagesPrompt": "Velg alle bilder med: {{className}}",
|
||||
"selectImagesDescription": "Klikk på bilder for å velge dem. Klikk Fortsett når du er ferdig med denne kategorien.",
|
||||
"selectImagesDescription": "Klikk på bilder for å velge dem. Klikk Fortsett når du er ferdig med denne klassen.",
|
||||
"generating": {
|
||||
"title": "Genererer eksempelbilder",
|
||||
"description": "Frigate henter representative bilder fra opptakene dine. Dette kan ta litt tid..."
|
||||
@ -146,7 +146,12 @@
|
||||
},
|
||||
"generateSuccess": "Eksempelbilder ble generert",
|
||||
"allImagesRequired_one": "Vennligst klassifiser alle bildene. {{count}} bilde gjenstår.",
|
||||
"allImagesRequired_other": "Vennligst klassifiser alle bildene. {{count}} bilder gjenstår."
|
||||
"allImagesRequired_other": "Vennligst klassifiser alle bildene. {{count}} bilder gjenstår.",
|
||||
"modelCreated": "Modellen ble opprettet. Bruk visningen Nylige klassifiseringer for å legge til bilder for manglende tilstander, og tren deretter modellen.",
|
||||
"missingStatesWarning": {
|
||||
"title": "Manglende tilstandseksempler",
|
||||
"description": "Du har ikke valgt eksempler for alle tilstander. Modellen vil ikke trenes før alle tilstander har bilder. Når du har gått videre, bruk visningen Nylige klassifiseringer til å klassifisere bilder for de manglende tilstandene, og tren deretter modellen."
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteModel": {
|
||||
@ -159,7 +164,7 @@
|
||||
"states": "Tilstander"
|
||||
},
|
||||
"details": {
|
||||
"scoreInfo": "Poengsummen representerer gjennomsnittlig klassifiseringskonfidens på tvers av alle deteksjoner av dette objektet."
|
||||
"scoreInfo": "Score representerer gjennomsnittlig klassifiseringskonfidens på tvers av alle deteksjoner av dette objektet."
|
||||
},
|
||||
"tooltip": {
|
||||
"trainingInProgress": "Modellen trenes for øyeblikket",
|
||||
@ -172,5 +177,6 @@
|
||||
"descriptionState": "Rediger klassene for denne tilstandsklassifiseringsmodellen. Endringer vil kreve at modellen trenes på nytt.",
|
||||
"descriptionObject": "Rediger objekttypen og klassifiseringstypen for denne objektklassifiseringsmodellen.",
|
||||
"stateClassesInfo": "Merk: Endring av tilstandsklasser krever at modellen trenes på nytt med de oppdaterte klassene."
|
||||
}
|
||||
},
|
||||
"none": "Ingen"
|
||||
}
|
||||
|
||||
@ -55,5 +55,8 @@
|
||||
"clickToSeek": "Klikk for å gå til dette tidspunktet"
|
||||
},
|
||||
"zoomIn": "Zoom inn",
|
||||
"zoomOut": "Zoom ut"
|
||||
"zoomOut": "Zoom ut",
|
||||
"normalActivity": "Normal",
|
||||
"needsReview": "Trenger inspeksjon",
|
||||
"securityConcern": "Sikkerhetsrisiko"
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
"updatedSublabel": "Underetikett ble oppdatert.",
|
||||
"updatedLPR": "Vellykket oppdatering av kjennemerke.",
|
||||
"regenerate": "En ny beskrivelse har blitt anmodet fra {{provider}}. Avhengig av hastigheten til leverandøren din, kan den nye beskrivelsen ta litt tid å regenerere.",
|
||||
"audioTranscription": "Lydtranskripsjon ble forespurt."
|
||||
"audioTranscription": "Lydtranskripsjon ble forespurt. Avhengig av ytelsen på din Frigate server kan transkripsjonen ta noe tid å fullføre."
|
||||
},
|
||||
"error": {
|
||||
"regenerate": "Feil ved anrop til {{provider}} for en ny beskrivelse: {{errorMessage}}",
|
||||
@ -107,8 +107,8 @@
|
||||
}
|
||||
},
|
||||
"topScore": {
|
||||
"info": "Den høyeste poengsummen er den høyeste medianverdi for det sporede objektet, så denne kan avvike fra poengsummen som vises på miniatyrbildet for søkeresultatet.",
|
||||
"label": "Høyeste poengsum"
|
||||
"info": "Toppscoren er den høyeste medianverdien for det sporede objektet, så denne kan avvike fra scoren som vises på miniatyrbildet i søkeresultatet.",
|
||||
"label": "Toppscore"
|
||||
},
|
||||
"estimatedSpeed": "Estimert hastighet",
|
||||
"objects": "Objekter",
|
||||
@ -147,10 +147,10 @@
|
||||
"descNoLabel": "Angi en ny underetikett for dette sporede objektet"
|
||||
},
|
||||
"snapshotScore": {
|
||||
"label": "Øyeblikksbilde poengsum"
|
||||
"label": "Øyeblikksbilde score"
|
||||
},
|
||||
"score": {
|
||||
"label": "Poengsum"
|
||||
"label": "Score"
|
||||
}
|
||||
},
|
||||
"itemMenu": {
|
||||
@ -261,7 +261,8 @@
|
||||
"header": {
|
||||
"zones": "Soner",
|
||||
"ratio": "Forhold",
|
||||
"area": "Område"
|
||||
"area": "Område",
|
||||
"score": "Score"
|
||||
}
|
||||
},
|
||||
"annotationSettings": {
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
"face": "Ansiktsdetaljer",
|
||||
"faceDesc": "Detaljer for sporet objekt som genererte dette ansiktet",
|
||||
"timestamp": "Tidsstempel",
|
||||
"scoreInfo": "Under-merkelappens poengsum er basert på en vektet sum ut ifra hvor sikre gjenkjenningene av ansiktene er, så den kan avvike fra poengsummen som vises på øyeblikksbildet.",
|
||||
"scoreInfo": "Score er et vektet gjennomsnitt av alle ansiktsscorer, vektet etter størrelsen på ansiktet i hvert bilde.",
|
||||
"subLabelScore": "Poengsum for under-merkelapp",
|
||||
"unknown": "Ukjent"
|
||||
},
|
||||
@ -38,7 +38,7 @@
|
||||
"deleteFaceFailed": "Kunne ikke slette: {{errorMessage}}",
|
||||
"uploadingImageFailed": "Kunne ikke laste opp bilde: {{errorMessage}}",
|
||||
"trainFailed": "Kunne ikke trene: {{errorMessage}}",
|
||||
"updateFaceScoreFailed": "Kunne ikke oppdatere ansiktsskåring: {{errorMessage}}",
|
||||
"updateFaceScoreFailed": "Kunne ikke oppdatere ansiktsscore: {{errorMessage}}",
|
||||
"addFaceLibraryFailed": "Kunne ikke angi ansiktsnavn: {{errorMessage}}",
|
||||
"deleteNameFailed": "Kunne ikke slette navn: {{errorMessage}}",
|
||||
"renameFaceFailed": "Kunne ikke gi nytt navn til ansikt: {{errorMessage}}"
|
||||
@ -49,7 +49,7 @@
|
||||
"deletedName_one": "{{count}} ansikt ble slettet.",
|
||||
"deletedName_other": "{{count}} ansikter ble slettet.",
|
||||
"trainedFace": "Ansiktet ble trent.",
|
||||
"updatedFaceScore": "Ansiktsskåring ble oppdatert til {{name}} ({{score}}).",
|
||||
"updatedFaceScore": "Oppdaterte ansiktsscore for {{name}} ({{score}}).",
|
||||
"uploadedImage": "Bildet ble lastet opp.",
|
||||
"addFaceLibrary": "{{name}} ble lagt til i ansiktsbiblioteket!",
|
||||
"renamedFace": "Nytt navn ble gitt til ansikt {{name}}"
|
||||
|
||||
@ -15,8 +15,8 @@
|
||||
"labels": "Etiketter",
|
||||
"search_type": "Søketype",
|
||||
"after": "Etter",
|
||||
"min_score": "Min. poengsum",
|
||||
"max_score": "Maks. poengsum",
|
||||
"min_score": "Min. score",
|
||||
"max_score": "Maks. score",
|
||||
"min_speed": "Min. hastighet",
|
||||
"zones": "Soner",
|
||||
"sub_labels": "Underetiketter",
|
||||
@ -36,8 +36,8 @@
|
||||
"minSpeedMustBeLessOrEqualMaxSpeed": "Minimum hastighet 'min_speed' må være mindre enn eller lik maksimum hastighet 'max_speed'.",
|
||||
"beforeDateBeLaterAfter": "Før-datoen 'before' må være senere enn etter-datoen 'after'.",
|
||||
"afterDatebeEarlierBefore": "Etter-datoen 'after' må være tidligere enn før-datoen 'before'.",
|
||||
"minScoreMustBeLessOrEqualMaxScore": "Minimum poengsum 'min_score' må være mindre enn eller lik maksimum poengsum 'max_score'.",
|
||||
"maxScoreMustBeGreaterOrEqualMinScore": "Maksimum poengsum 'max_score' må være større enn eller lik minimum poengsum 'min_score'.",
|
||||
"minScoreMustBeLessOrEqualMaxScore": "Minimum score 'min_score' må være mindre enn eller lik maksimum score 'max_score'.",
|
||||
"maxScoreMustBeGreaterOrEqualMinScore": "Maksimum score 'max_score' må være større enn eller lik minimum score 'min_score'.",
|
||||
"maxSpeedMustBeGreaterOrEqualMinSpeed": "Maksimum hastighet 'max_speed' må være større enn eller lik minimum hastighet 'min_speed'."
|
||||
}
|
||||
},
|
||||
|
||||
@ -460,7 +460,7 @@
|
||||
},
|
||||
"objectShapeFilterDrawing": {
|
||||
"document": "Se dokumentasjonen ",
|
||||
"score": "Poengsum",
|
||||
"score": "Score",
|
||||
"ratio": "Forhold",
|
||||
"area": "Areal",
|
||||
"title": "Tegning av objektformfilter",
|
||||
@ -478,7 +478,7 @@
|
||||
"audio": {
|
||||
"title": "Lyd",
|
||||
"noAudioDetections": "Ingen lyddeteksjoner",
|
||||
"score": "poengsum",
|
||||
"score": "score",
|
||||
"currentRMS": "Nåværende RMS",
|
||||
"currentdbFS": "Nåværende dbFS"
|
||||
},
|
||||
|
||||
@ -76,7 +76,7 @@
|
||||
"npuMemory": "NPU minne",
|
||||
"npuUsage": "NPU belastning",
|
||||
"intelGpuWarning": {
|
||||
"title": "Advarsel om Intel GPU-statistikk",
|
||||
"title": "Til info om Intel GPU-statistikk",
|
||||
"message": "GPU statistikk ikke tilgjengelig",
|
||||
"description": "Dette er en kjent feil i Intels verktøy for rapportering av GPU-statistikk (intel_gpu_top), der verktøyet slutter å fungere og gjentatte ganger viser 0 % GPU-bruk, selv om maskinvareakselerasjon og objektdeteksjon kjører korrekt på (i)GPU-en. Dette er ikke en feil i Frigate. Du kan starte verten på nytt for å løse problemet midlertidig, og for å bekrefte at GPU-en fungerer som den skal. Dette påvirker ikke ytelsen."
|
||||
}
|
||||
|
||||
@ -65,7 +65,8 @@
|
||||
"noVaildTimeSelected": "Geen geldig tijdsbereik geselecteerd",
|
||||
"endTimeMustAfterStartTime": "Eindtijd moet na starttijd zijn"
|
||||
},
|
||||
"success": "Export is succesvol gestart. Bekijk het bestand op de exportpagina."
|
||||
"success": "Export is succesvol gestart. Bekijk het bestand op de exportpagina.",
|
||||
"view": "Weergeven"
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Export opslaan",
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"documentTitle": "Classificatiemodellen",
|
||||
"documentTitle": "Classificatiemodellen - Frigate",
|
||||
"button": {
|
||||
"deleteClassificationAttempts": "Classificatieafbeeldingen verwijderen",
|
||||
"renameCategory": "Klasse hernoemen",
|
||||
@ -148,7 +148,12 @@
|
||||
},
|
||||
"generateSuccess": "Met succes gegenereerde voorbeeldafbeeldingen",
|
||||
"allImagesRequired_one": "Classificeer alle afbeeldingen. {{count}} afbeelding resterend.",
|
||||
"allImagesRequired_other": "Classificeer alle afbeeldingen. {{count}} afbeeldingen resterend."
|
||||
"allImagesRequired_other": "Classificeer alle afbeeldingen. {{count}} afbeeldingen resterend.",
|
||||
"modelCreated": "Model succesvol aangemaakt. Gebruik de weergave Recente classificaties om afbeeldingen voor ontbrekende statussen toe te voegen en train vervolgens het model.",
|
||||
"missingStatesWarning": {
|
||||
"title": "Voorbeelden van ontbrekende staten",
|
||||
"description": "Het wordt aanbevolen om voor alle staten voorbeelden te selecteren voor het beste resultaat. Je kunt doorgaan zonder alle staten te selecteren, maar het model wordt pas getraind zodra alle staten afbeeldingen hebben. Na het doorgaan kun je in de weergave ‘Recente Classificaties’ de ontbrekende staten van afbeeldingen voorzien, en daarna het model trainen."
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteModel": {
|
||||
@ -175,5 +180,6 @@
|
||||
"noNewImages": "Geen nieuwe afbeeldingen om te trainen. Classificeer eerst meer afbeeldingen in de dataset.",
|
||||
"modelNotReady": "Model is niet klaar voor training",
|
||||
"noChanges": "Geen wijzigingen in de dataset sinds de laatste training."
|
||||
}
|
||||
},
|
||||
"none": "Geen herkenning"
|
||||
}
|
||||
|
||||
@ -55,5 +55,8 @@
|
||||
"clickToSeek": "Klik om naar deze tijd te zoeken"
|
||||
},
|
||||
"zoomIn": "Zoom in",
|
||||
"zoomOut": "Zoom uit"
|
||||
"zoomOut": "Zoom uit",
|
||||
"normalActivity": "Normaal",
|
||||
"needsReview": "Heeft een beoordeling nodig",
|
||||
"securityConcern": "Beveiligingsprobleem"
|
||||
}
|
||||
|
||||
@ -207,6 +207,10 @@
|
||||
"viewTrackingDetails": {
|
||||
"label": "Bekijk trackinggegevens",
|
||||
"aria": "Toon de trackinggegevens"
|
||||
},
|
||||
"downloadCleanSnapshot": {
|
||||
"label": "Download schone snapshot",
|
||||
"aria": "Download schone snapshot"
|
||||
}
|
||||
},
|
||||
"noTrackedObjects": "Geen gevolgde objecten gevonden",
|
||||
@ -261,7 +265,8 @@
|
||||
"header": {
|
||||
"zones": "Zones",
|
||||
"ratio": "Verhouding",
|
||||
"area": "Gebied"
|
||||
"area": "Gebied",
|
||||
"score": "Score"
|
||||
}
|
||||
},
|
||||
"annotationSettings": {
|
||||
@ -276,7 +281,7 @@
|
||||
"millisecondsToOffset": "Aantal milliseconden om objectkader mee te verschuiven. <em>Standaard: 0</em>",
|
||||
"tips": "Verlaag de waarde als de videoweergave sneller is dan de objectkaders en hun trajectpunten, en verhoog de waarde als de videoweergave achterloopt. Deze waarde kan negatief zijn.",
|
||||
"toast": {
|
||||
"success": "Annotatieverschuiving voor {{camera}} is opgeslagen in het configuratiebestand. Herstart Frigate om je wijzigingen toe te passen."
|
||||
"success": "Annotatieverschuiving voor {{camera}} is opgeslagen in het configuratiebestand."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -306,7 +306,7 @@
|
||||
"name": {
|
||||
"title": "Naam",
|
||||
"inputPlaceHolder": "Voer een naam in…",
|
||||
"tips": "De naam moet minimaal 2 tekens lang zijn, minimaal één letter bevatten en mag niet gelijk zijn aan de naam van een camera of andere zone."
|
||||
"tips": "De naam moet minimaal 2 tekens lang zijn, minimaal één letter bevatten en mag niet gelijk zijn aan de naam van een camera of andere zone op deze camera."
|
||||
},
|
||||
"inertia": {
|
||||
"title": "Traagheid",
|
||||
@ -345,7 +345,7 @@
|
||||
"add": "Zone toevoegen",
|
||||
"allObjects": "Alle objecten",
|
||||
"toast": {
|
||||
"success": "Zone ({{zoneName}}) is opgeslagen. Start Frigate opnieuw om de wijzigingen toe te passen."
|
||||
"success": "Zone ({{zoneName}}) is opgeslagen."
|
||||
}
|
||||
},
|
||||
"motionMasks": {
|
||||
@ -370,8 +370,8 @@
|
||||
"point_other": "{{count}} punten",
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "{{polygonName}} is opgeslagen. Herstart Frigate om de wijzigingen toe te passen.",
|
||||
"noName": "Bewegingsmasker is opgeslagen. Herstart Frigate om de wijzigingen toe te passen."
|
||||
"title": "{{polygonName}} is opgeslagen.",
|
||||
"noName": "Bewegingsmasker is opgeslagen."
|
||||
}
|
||||
},
|
||||
"add": "Nieuw bewegingsmasker"
|
||||
@ -391,8 +391,8 @@
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "{{polygonName}} is opgeslagen. Herstart Frigate om de wijzigingen toe te passen.",
|
||||
"noName": "Objectmasker is opgeslagen. Herstart Frigate om de wijzigingen toe te passen."
|
||||
"title": "{{polygonName}} is opgeslagen.",
|
||||
"noName": "Objectmasker is opgeslagen."
|
||||
}
|
||||
},
|
||||
"point_one": "{{count}} punt",
|
||||
|
||||
@ -87,7 +87,10 @@
|
||||
"formattedTimestampMonthDayYear": {
|
||||
"12hour": "d MMMM yyyy",
|
||||
"24hour": "d MMMM yyyy"
|
||||
}
|
||||
},
|
||||
"inProgress": "W trakcie",
|
||||
"invalidStartTime": "Nieprawidłowy czas rozpoczęcia",
|
||||
"invalidEndTime": "Nieprawidłowy czas zakończenia"
|
||||
},
|
||||
"unit": {
|
||||
"speed": {
|
||||
@ -97,10 +100,23 @@
|
||||
"length": {
|
||||
"feet": "stopy",
|
||||
"meters": "metry"
|
||||
},
|
||||
"data": {
|
||||
"kbps": "kB/s",
|
||||
"mbps": "MB/s",
|
||||
"gbps": "GB/s",
|
||||
"kbph": "kB/godz.",
|
||||
"mbph": "MB/godz.",
|
||||
"gbph": "GB/godz."
|
||||
}
|
||||
},
|
||||
"label": {
|
||||
"back": "Wróć"
|
||||
"back": "Wróć",
|
||||
"hide": "Ukryj {{item}}",
|
||||
"show": "Pokaż {{item}}",
|
||||
"ID": "ID",
|
||||
"none": "Brak",
|
||||
"all": "Wszystko"
|
||||
},
|
||||
"button": {
|
||||
"apply": "Zastosuj",
|
||||
@ -137,7 +153,8 @@
|
||||
"cameraAudio": "Dźwięk kamery",
|
||||
"off": "WYŁĄCZ",
|
||||
"edit": "Edytuj",
|
||||
"copyCoordinates": "Kopiuj współrzędne"
|
||||
"copyCoordinates": "Kopiuj współrzędne",
|
||||
"continue": "Kontynuuj"
|
||||
},
|
||||
"menu": {
|
||||
"system": "System",
|
||||
@ -239,7 +256,8 @@
|
||||
"configurationEditor": "Edytor konfiguracji",
|
||||
"help": "Pomoc",
|
||||
"settings": "Ustawienia",
|
||||
"export": "Eksportuj"
|
||||
"export": "Eksportuj",
|
||||
"classification": "Klasyfikacja"
|
||||
},
|
||||
"role": {
|
||||
"viewer": "Przeglądający",
|
||||
@ -283,5 +301,9 @@
|
||||
"readTheDocumentation": "Przeczytaj dokumentację",
|
||||
"information": {
|
||||
"pixels": "{{area}}px"
|
||||
},
|
||||
"list": {
|
||||
"two": "{{0}} i {{1}}",
|
||||
"many": "{{items}}, oraz {{last}}"
|
||||
}
|
||||
}
|
||||
|
||||
@ -70,7 +70,8 @@
|
||||
"failed": "Nie udało się rozpocząć eksportu: {{error}}",
|
||||
"endTimeMustAfterStartTime": "Czas zakończenia musi być późniejszy niż czas rozpoczęcia",
|
||||
"noVaildTimeSelected": "Nie wybrano prawidłowego zakresu czasu"
|
||||
}
|
||||
},
|
||||
"view": "Widok"
|
||||
},
|
||||
"fromTimeline": {
|
||||
"saveExport": "Zapisz Eksport",
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
{
|
||||
"documentTitle": "Modele klasyfikacji",
|
||||
"documentTitle": "Modele klasyfikacji - Frigate",
|
||||
"button": {
|
||||
"deleteClassificationAttempts": "Usuń obrazy klasyfikacyjne",
|
||||
"renameCategory": "Zmień nazwę klasy",
|
||||
"deleteCategory": "Usuń klasę",
|
||||
"deleteCategory": "Usuń klasyfikację",
|
||||
"deleteImages": "Usuń obrazy",
|
||||
"trainModel": "Przeszkol model",
|
||||
"addClassification": "Dodaj klasyfikację",
|
||||
@ -39,7 +39,9 @@
|
||||
},
|
||||
"deleteCategory": {
|
||||
"title": "Usuń klasę",
|
||||
"desc": "Czy na pewno chcesz usunąć klasę {{name}}? Spowoduje to trawałe usunięcie wszystkich powiązanych obrazków i konieczność ponownego trenowania modelu."
|
||||
"desc": "Czy na pewno chcesz usunąć klasę {{name}}? Spowoduje to trawałe usunięcie wszystkich powiązanych obrazków i konieczność ponownego trenowania modelu.",
|
||||
"minClassesTitle": "Nie można usunąć kategorii",
|
||||
"minClassesDesc": "Model klasyfikacyjny musi posiadać co najmniej dwie kategorie. Dodaj inną kategorię aby możliwe było usunięcie tej kategorii."
|
||||
},
|
||||
"deleteModel": {
|
||||
"title": "Usuń model klasyfikacji",
|
||||
@ -49,10 +51,30 @@
|
||||
"desc_many": "Czy na pewno chcesz usunąć {{count}} modeli? Spowoduje to trwałe usunięcie wszystkich powiązanych danych, włącznie z obrazami i danymi treningowymi. Nie można cofnąć tej operacji."
|
||||
},
|
||||
"edit": {
|
||||
"title": "Edytuj model klasyfikacji"
|
||||
"title": "Edytuj model klasyfikacji",
|
||||
"descriptionObject": "Zmień typ obiektu i kryteria dla tego modelu klasyfikacji.",
|
||||
"stateClassesInfo": "Uwaga: Zmiana typu klasyfikacji wymaga treningu nowego modelu."
|
||||
},
|
||||
"tooltip": {
|
||||
"trainingInProgress": "Trwa trenowanie modelu",
|
||||
"modelNotReady": "Mode nie jest gotowy do trenowania"
|
||||
"modelNotReady": "Mode nie jest gotowy do trenowania",
|
||||
"noChanges": "Brak zmian w zbiorze danych od czasu ostatniego treningu.",
|
||||
"noNewImages": "Nie ma więcej obrazów do trenowania. Zaklasyfikuj więcej obrazów do zbioru danych."
|
||||
},
|
||||
"deleteDatasetImages": {
|
||||
"title": "Usuń obrazy z puli danych"
|
||||
},
|
||||
"renameCategory": {
|
||||
"title": "Zmień nazwę klasy",
|
||||
"desc": "Wprowadź nową nazwę dla {{name}}. Zastosowanie tej zmiany wymagać będzie treningu nowego modelu."
|
||||
},
|
||||
"description": {
|
||||
"invalidName": "Niepoprawna nazwa. Nazwy mogą zawierać tylko: litery, cyfry, spacje, cudzysłowy, podkreślniniki i myślniki."
|
||||
},
|
||||
"train": {
|
||||
"title": "Ostatnie Klasyfikacje"
|
||||
},
|
||||
"createCategory": {
|
||||
"new": "Stwórz nową klasyfikację"
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,8 +43,8 @@
|
||||
"label": "Szczegóły",
|
||||
"noDataFound": "Brak szczegółów do przejrzenia",
|
||||
"aria": "Przełącz widok szczegółów",
|
||||
"trackedObject_one": "obiekt",
|
||||
"trackedObject_other": "obiekty",
|
||||
"trackedObject_one": "{{count}} obiekt",
|
||||
"trackedObject_other": "{{count}} obiekty",
|
||||
"noObjectDetailData": "Brak danych szczegółowych dla obiektu.",
|
||||
"settings": "Ustawienia widoku szczegółów",
|
||||
"alwaysExpandActive": {
|
||||
@ -55,5 +55,7 @@
|
||||
"objectTrack": {
|
||||
"trackedPoint": "Śledzony punkt",
|
||||
"clickToSeek": "Kliknij aby przewinąć do tego miejsca"
|
||||
}
|
||||
},
|
||||
"needsReview": "Wymaga manualnego sprawdzenia",
|
||||
"normalActivity": "Normalne"
|
||||
}
|
||||
|
||||
@ -160,7 +160,8 @@
|
||||
"snapshot": "zrzut ekranu",
|
||||
"video": "wideo",
|
||||
"object_lifecycle": "cykl życia obiektu",
|
||||
"thumbnail": "miniaturka"
|
||||
"thumbnail": "miniaturka",
|
||||
"tracking_details": "szczegóły śledzenia"
|
||||
},
|
||||
"itemMenu": {
|
||||
"downloadSnapshot": {
|
||||
@ -232,6 +233,30 @@
|
||||
"createObjectMask": "Utwórz maskę obiektu",
|
||||
"adjustAnnotationSettings": "Dostosuj ustawienia adnotacji",
|
||||
"scrollViewTips": "Kliknij, aby zobaczyć najważniejsze momenty cyklu życia tego obiektu.",
|
||||
"count": "{{first}} z {{second}}"
|
||||
"count": "{{first}} z {{second}}",
|
||||
"autoTrackingTips": "Pozycja znacznika obiektu jest niedokładna dla kamer z automatycznym śledzeniem.",
|
||||
"lifecycleItemDesc": {
|
||||
"visible": "Wykryto {{label}}",
|
||||
"entered_zone": "{{label}} pojawił się w {{zones}}",
|
||||
"active": "{{label}} poruszył się",
|
||||
"stationary": "{{label}} zatrzymał się",
|
||||
"attribute": {
|
||||
"faceOrLicense_plate": "Wykryto {{attribute}} dla obiektu {{label}}",
|
||||
"other": "{{label}} został rozpoznany jako {{attribute}}"
|
||||
},
|
||||
"gone": "Utracono śledzenie dla {{label}}",
|
||||
"external": "Wykryto {{label}}",
|
||||
"header": {
|
||||
"zones": "Strefy"
|
||||
}
|
||||
},
|
||||
"annotationSettings": {
|
||||
"title": "Ustawienia adnotacji",
|
||||
"showAllZones": {
|
||||
"title": "Pokaż wszystkie strefy",
|
||||
"desc": "Pokazuj linie stref w momencie wejścia obiektu w strefę."
|
||||
}
|
||||
},
|
||||
"trackedPoint": "Śledzony Punkt"
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
"description": {
|
||||
"addFace": "Dodaj nową kolekcję do biblioteki twarzy, przesyłając swoje pierwsze zdjęcie.",
|
||||
"placeholder": "Wprowadź nazwę tej kolekcji",
|
||||
"invalidName": "Nieprawidłowa nazwa. Nazwy mogą zawierać tylko litery, cyfry, spacje, apostrofy, podkreślenia oraz myślniki."
|
||||
"invalidName": "Niepoprawna nazwa. Nazwy mogą zawierać tylko: litery, cyfry, spacje, cudzysłowy, podkreślniniki i myślniki."
|
||||
},
|
||||
"details": {
|
||||
"person": "Osoba",
|
||||
|
||||
@ -67,7 +67,7 @@
|
||||
},
|
||||
"manualRecording": {
|
||||
"title": "Nagrywanie na żądanie",
|
||||
"tips": "Rozpocznij ręczne zdarzenie w oparciu o ustawienia przechowywania nagrań tej kamery.",
|
||||
"tips": "Ręcznie rozpocznij zdarzenie w oparciu o ustawienia przechowywania nagrań tej kamery.",
|
||||
"playInBackground": {
|
||||
"label": "Odtwarzaj w tle",
|
||||
"desc": "Włącz tę opcję, aby kontynuować transmisję, gdy odtwarzacz jest ukryty."
|
||||
@ -173,7 +173,17 @@
|
||||
},
|
||||
"noCameras": {
|
||||
"buttonText": "Dodaj kamerę",
|
||||
"description": "Zacznij od podłączenia kamery.",
|
||||
"title": "Nie ustawiono żadnej kamery"
|
||||
"description": "Zacznij od podłączenia kamery do Frigate.",
|
||||
"title": "Nie skonfigurowano żadnej kamery",
|
||||
"restricted": {
|
||||
"title": "Brak dostępnych kamer",
|
||||
"description": "Nie masz uprawnień aby przeglądać kamery w tej grupie."
|
||||
}
|
||||
},
|
||||
"snapshot": {
|
||||
"takeSnapshot": "Pobierz miniaturę",
|
||||
"captureFailed": "Nie udało się wykonać migawki.",
|
||||
"downloadStarted": "Pobieranie migawki rozpoczęte.",
|
||||
"noVideoSource": "Brak źródeł video dostępnych do wykonania migawki."
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user