This commit is contained in:
Linrador 2026-06-23 15:27:25 +02:00
parent a49483f9d7
commit bf4e1f19e9
9 changed files with 14 additions and 14 deletions

View File

@ -220,7 +220,7 @@ func applyVideoMAEPositionClipsForAnalyze(
predictions, err := predictVideoMAEPositionClipsForAnalyze(ctx, clips)
if err != nil {
if ctx.Err() == nil {
appLogln("VideoMAE Clip-Analyse uebersprungen:", err)
appLogln("VideoMAE Clip-Analyse übersprungen:", err)
}
return highlightHits, positionEvidence
}

View File

@ -249,7 +249,7 @@ Beenden:
nsfwapp-stop
Desktop:
Der Launcher "NSFW App" startet das Backend und oeffnet https://localhost:9999.
Der Launcher "NSFW App" startet das Backend und öffnet https://localhost:9999.
Per Rechtsklick auf "NSFW App" gibt es Aktionen fuer Frontend, Datenordner,
Log und Beenden, sofern die Desktop-Umgebung Desktop Actions anzeigt.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -200,7 +200,7 @@ func settingsDatabaseBackupHandler(w http.ResponseWriter, r *http.Request) {
f, err := os.Open(tmpPath)
if err != nil {
http.Error(w, "Backup-Datei konnte nicht geoeffnet werden: "+err.Error(), http.StatusInternalServerError)
http.Error(w, "Backup-Datei konnte nicht geöffnet werden: "+err.Error(), http.StatusInternalServerError)
return
}
defer f.Close()
@ -230,7 +230,7 @@ func settingsSQLiteDatabaseBackupHandler(w http.ResponseWriter, r *http.Request,
db, err := sql.Open("sqlite", storeConfig.SQLitePath)
if err != nil {
http.Error(w, "SQLite konnte nicht geoeffnet werden: "+err.Error(), http.StatusInternalServerError)
http.Error(w, "SQLite konnte nicht geöffnet werden: "+err.Error(), http.StatusInternalServerError)
return
}
defer db.Close()
@ -252,7 +252,7 @@ func settingsSQLiteDatabaseBackupHandler(w http.ResponseWriter, r *http.Request,
f, err := os.Open(tmpPath)
if err != nil {
http.Error(w, "Backup-Datei konnte nicht geoeffnet werden: "+err.Error(), http.StatusInternalServerError)
http.Error(w, "Backup-Datei konnte nicht geöffnet werden: "+err.Error(), http.StatusInternalServerError)
return
}
defer f.Close()

View File

@ -233,7 +233,7 @@ func settingsDatabaseMigrateHandler(w http.ResponseWriter, r *http.Request) {
refreshedStore := NewModelStore(targetConfig)
if err := refreshedStore.Load(); err != nil {
http.Error(w, "Ziel-Datenbank konnte nach Migration nicht geoeffnet werden: "+err.Error(), http.StatusInternalServerError)
http.Error(w, "Ziel-Datenbank konnte nach Migration nicht geöffnet werden: "+err.Error(), http.StatusInternalServerError)
return
}
@ -297,13 +297,13 @@ func migrateModelStoreData(sourceConfig, targetConfig ModelStoreConfig) (int64,
source := NewModelStore(sourceConfig)
if err := source.Load(); err != nil {
return 0, appErrorf("Quelle konnte nicht geoeffnet werden: %w", err)
return 0, appErrorf("Quelle konnte nicht geöffnet werden: %w", err)
}
defer source.Close()
target := NewModelStore(targetConfig)
if err := target.Load(); err != nil {
return 0, appErrorf("Ziel konnte nicht geoeffnet werden: %w", err)
return 0, appErrorf("Ziel konnte nicht geöffnet werden: %w", err)
}
defer target.Close()

View File

@ -2767,7 +2767,7 @@ func trainingRunJob(ctx context.Context, root string, count int) {
} else if poseStatus != "failed" {
poseStatus = "skipped_no_pose_data"
poseOutput = fmt.Sprintf(
"YOLO26 Pose uebersprungen: zu wenige Skeleton-Beispiele. Train=%d, Val=%d. Benoetigt: mindestens %d Train und %d Val.",
"YOLO26 Pose übersprungen: zu wenige Skeleton-Beispiele. Train=%d, Val=%d. Benoetigt: mindestens %d Train und %d Val.",
poseTrainCount,
poseValCount,
minPoseTrainCount,
@ -2865,7 +2865,7 @@ func trainingRunJob(ctx context.Context, root string, count int) {
} else if videoMAEStatus != "failed" {
videoMAEStatus = "skipped_no_videomae_data"
videoMAEOutput = fmt.Sprintf(
"VideoMAE uebersprungen: zu wenige Clip-Beispiele. Train=%d, Val=%d. Benoetigt: mindestens %d Train und %d Val.",
"VideoMAE übersprungen: zu wenige Clip-Beispiele. Train=%d, Val=%d. Benoetigt: mindestens %d Train und %d Val.",
videoMAETrainCount,
videoMAEValCount,
minVideoMAETrainCount,
@ -2905,7 +2905,7 @@ func trainingRunJob(ctx context.Context, root string, count int) {
} else if poseStatus == "trained" && detectorStatus != "failed" {
message = "Training abgeschlossen. YOLO26 Pose wurde trainiert."
} else if poseStatus == "skipped_no_pose_data" && detectorStatus == "trained" {
message += " YOLO26 Pose wurde uebersprungen: zu wenige Skeleton-Beispiele."
message += " YOLO26 Pose wurde übersprungen: zu wenige Skeleton-Beispiele."
} else if poseStatus == "failed" {
if detectorStatus == "failed" {
message += " YOLO26 Pose ist ebenfalls fehlgeschlagen."
@ -2925,7 +2925,7 @@ func trainingRunJob(ctx context.Context, root string, count int) {
message += " VideoMAE wurde trainiert."
} else if videoMAEStatus == "skipped_no_videomae_data" {
if detectorStatus == "trained" || poseStatus == "trained" {
message += " VideoMAE wurde uebersprungen: zu wenige Clip-Beispiele."
message += " VideoMAE wurde übersprungen: zu wenige Clip-Beispiele."
}
} else if videoMAEStatus == "failed" {
message += " VideoMAE ist fehlgeschlagen."

View File

@ -1351,7 +1351,7 @@ export default function RecorderSettings({ onAssetsGenerated }: Props) {
const ok = window.confirm(
`Datenbank-Backup "${file.name}" wiederherstellen?\n\n` +
'Das ueberschreibt die aktuelle Datenbank. Dieser Schritt kann nicht automatisch rueckgaengig gemacht werden.'
'Das überschreibt die aktuelle Datenbank. Dieser Schritt kann nicht automatisch rueckgaengig gemacht werden.'
)
if (!ok) return
@ -1414,7 +1414,7 @@ export default function RecorderSettings({ onAssetsGenerated }: Props) {
const ok = window.confirm(
`Aktive Datenbank von ${databaseTypeLabel(loadedDatabaseType)} nach ${databaseTypeLabel(databaseType)} migrieren?\n\n` +
'Die Ziel-Datenbank wird mit den aktuellen Model-Daten ueberschrieben. Danach wird die App auf die Ziel-Datenbank umgestellt.'
'Die Ziel-Datenbank wird mit den aktuellen Model-Daten überschrieben. Danach wird die App auf die Ziel-Datenbank umgestellt.'
)
if (!ok) return