diff --git a/web/public/locales/he/audio.json b/web/public/locales/he/audio.json
index 841dfa83b..711a8d338 100644
--- a/web/public/locales/he/audio.json
+++ b/web/public/locales/he/audio.json
@@ -94,7 +94,7 @@
"electronic_organ": "אורגן חשמלי",
"hammond_organ": "עוגב המונד",
"synthesizer": "סינתיסייזר",
- "sampler": "דגם",
+ "sampler": "דוגם",
"harpsichord": "צֶ'מבָּלוֹ",
"percussion": "הַקָשָׁה",
"boat": "סירה",
@@ -102,7 +102,7 @@
"motorcycle": "אופנוע",
"bus": "אוטובוס",
"bicycle": "אופניים",
- "train": "למד פנים",
+ "train": "אימון",
"skateboard": "סקייטבורד",
"camera": "מצלמה",
"howl": "יללה",
@@ -474,5 +474,30 @@
"bouncing": "הַקפָּצָה",
"whip": "שׁוֹט",
"flap": "מַדָף",
- "scratch": "לְגַרֵד"
+ "scratch": "לְגַרֵד",
+ "scrape": "סריקה",
+ "rub": "שפשוף",
+ "roll": "גלגול",
+ "crushing": "מעיכה",
+ "crumpling": "קימוט",
+ "tearing": "קריעה",
+ "beep": "ביפ",
+ "ping": "פינג",
+ "ding": "דינג",
+ "clang": "צלצול מתכתי",
+ "squeal": "חריקה",
+ "creak": "חריקה",
+ "rustle": "רשרוש",
+ "whir": "זמזום",
+ "clatter": "רעש נקישות",
+ "chird": "Chird",
+ "sizzle": "צליל חריכה",
+ "clicking": "נקישות",
+ "clickety_clack": "נקישות רצופות",
+ "rumble": "רעם נמוך",
+ "plop": "פלופ",
+ "hum": "המהום",
+ "zing": "זמזום חד",
+ "boing": "בּוֹאִינְג (צליל קפיצי / אלסטי)",
+ "crunch": "חריקה / פיצוח"
}
diff --git a/web/public/locales/he/common.json b/web/public/locales/he/common.json
index 813d44e51..0496941bb 100644
--- a/web/public/locales/he/common.json
+++ b/web/public/locales/he/common.json
@@ -78,7 +78,10 @@
"12hour": "MMM d, yyyy"
},
"30minutes": "30 דקות",
- "thisMonth": "החודש"
+ "thisMonth": "החודש",
+ "inProgress": "בתהליך",
+ "invalidStartTime": "זמן התחלה לא תקין",
+ "invalidEndTime": "זמן סיום לא תקין"
},
"unit": {
"speed": {
@@ -88,10 +91,23 @@
"length": {
"feet": "רגל",
"meters": "מטרים"
+ },
+ "data": {
+ "kbps": "kB/s",
+ "mbps": "MB/s",
+ "gbps": "GB/s",
+ "kbph": "kB/hour",
+ "mbph": "MB/hour",
+ "gbph": "GB/hour"
}
},
"label": {
- "back": "אחורה"
+ "back": "אחורה",
+ "hide": "הסתר {{item}}",
+ "show": "הצג {{item}}",
+ "ID": "ID",
+ "none": "ללא",
+ "all": "הכל"
},
"button": {
"apply": "החל",
@@ -128,7 +144,8 @@
"on": "פעיל",
"download": "הורדה",
"info": "מידע",
- "next": "הבא"
+ "next": "הבא",
+ "continue": "המשך"
},
"menu": {
"system": "מערכת",
@@ -229,7 +246,8 @@
"current": "משתמש מחובר: {{user}}",
"setPassword": "קביעת סיסמה",
"title": "משתמש"
- }
+ },
+ "classification": "סיווג"
},
"toast": {
"copyUrlToClipboard": "כתובת האתר המועתקת.",
@@ -270,5 +288,17 @@
"desc": "דף לא נמצא"
},
"selectItem": "בחירה:{{item}}",
- "readTheDocumentation": "קרא את התיעוד"
+ "readTheDocumentation": "קרא את התיעוד",
+ "list": {
+ "two": "{{0}} ו־{{1}}",
+ "many": "{{items}}, ו־{{last}}",
+ "separatorWithSpace": ", "
+ },
+ "field": {
+ "optional": "אופציונלי",
+ "internalID": "המזהה הפנימי ש־Frigate משתמש בו בהגדרות ובמסד הנתונים"
+ },
+ "information": {
+ "pixels": "{{area}}px"
+ }
}
diff --git a/web/public/locales/he/components/auth.json b/web/public/locales/he/components/auth.json
index 17b28cba1..0f6caf3cf 100644
--- a/web/public/locales/he/components/auth.json
+++ b/web/public/locales/he/components/auth.json
@@ -10,6 +10,7 @@
"webUnknownError": "שגיאה לא ידועה, בדוק את הלוגים.",
"rateLimit": "חרגת מהמגבלת בקשות. נסה שוב מאוחר יותר.",
"loginFailed": "ההתחברות נכשלה"
- }
+ },
+ "firstTimeLogin": "מתחבר בפעם הראשונה? פרטי ההתחברות מודפסים בלוגים של פריגייט."
}
}
diff --git a/web/public/locales/he/components/camera.json b/web/public/locales/he/components/camera.json
index f9de9a6c1..184b192bd 100644
--- a/web/public/locales/he/components/camera.json
+++ b/web/public/locales/he/components/camera.json
@@ -41,7 +41,8 @@
"label": "מצב תאימות",
"desc": "הפעל אפשרות זו רק אם השידור החי של המצלמה שלך מציג עיוותים בצבע ויש לו קו אלכסוני בצד ימין של התמונה."
}
- }
+ },
+ "birdseye": "מבט על"
},
"edit": "ערכית קבוצת מצלמות",
"delete": {
diff --git a/web/public/locales/he/components/dialog.json b/web/public/locales/he/components/dialog.json
index 472d3d541..85353b993 100644
--- a/web/public/locales/he/components/dialog.json
+++ b/web/public/locales/he/components/dialog.json
@@ -15,7 +15,8 @@
"failed": "נכשל בהתחלת הייצוא: {{error}}",
"noVaildTimeSelected": "לא נבחר טווח זמן תקף"
},
- "success": "הייצוא הוחל בהצלחה. הצג את הקובץ בתיקייה /ייצוא."
+ "success": "הייצוא התחיל בהצלחה. ניתן לצפות בקובץ בעמוד הייצוא.",
+ "view": "תצוגה"
},
"time": {
"end": {
@@ -108,7 +109,16 @@
"button": {
"export": "ייצוא",
"markAsReviewed": "סמן כסוקר",
- "deleteNow": "מחיקה כעת"
+ "deleteNow": "מחיקה כעת",
+ "markAsUnreviewed": "סימון כלא נבדק"
}
+ },
+ "imagePicker": {
+ "selectImage": "בחר תמונה ממוזערת של אובייקט במעקב",
+ "unknownLabel": "תמונת הטריגר נשמרה",
+ "search": {
+ "placeholder": "חיפוש לפי תווית או תווית משנה…"
+ },
+ "noImages": "לא נמצאו תמונות ממוזערות עבור מצלמה זו"
}
}
diff --git a/web/public/locales/he/components/filter.json b/web/public/locales/he/components/filter.json
index 17f7914cf..b11aba954 100644
--- a/web/public/locales/he/components/filter.json
+++ b/web/public/locales/he/components/filter.json
@@ -5,7 +5,7 @@
"tips": "עליך תחילה לסנן לפי אובייקטים במעקב שיש להם תמונת מצב.
לא ניתן לשלוח ל-Frigate+ אובייקטים במעקב ללא תמונת מצב.",
"label": "העלאה ל- +Frigate"
},
- "label": "מאפיינים",
+ "label": "תכונות",
"hasVideoClip": "קיים סרטון",
"hasSnapshot": "קיימת לכידת תמונה"
},
@@ -132,5 +132,9 @@
},
"count_one": "{{count}} מחלקה",
"count_other": "{{count}} מחלקות"
+ },
+ "attributes": {
+ "label": "מאפייני סיווג",
+ "all": "כל המאפיינים"
}
}
diff --git a/web/public/locales/he/objects.json b/web/public/locales/he/objects.json
index 68f648da0..65f00b1b7 100644
--- a/web/public/locales/he/objects.json
+++ b/web/public/locales/he/objects.json
@@ -5,7 +5,7 @@
"motorcycle": "אופנוע",
"airplane": "מטוס",
"bus": "אוטובוס",
- "train": "למד פנים",
+ "train": "אימון",
"boat": "סירה",
"traffic_light": "רמזור",
"fire_hydrant": "ברז כיבוי אש",
diff --git a/web/public/locales/he/views/classificationModel.json b/web/public/locales/he/views/classificationModel.json
index 0967ef424..0e965eb74 100644
--- a/web/public/locales/he/views/classificationModel.json
+++ b/web/public/locales/he/views/classificationModel.json
@@ -1 +1,192 @@
-{}
+{
+ "documentTitle": "מודלי סיווג - Frigate",
+ "details": {
+ "scoreInfo": "הציון מייצג את ממוצע רמת הביטחון של הסיווג, על פני כל הזיהויים של האובייקט הזה.",
+ "none": "ללא ערך",
+ "unknown": "לא ידוע"
+ },
+ "button": {
+ "deleteClassificationAttempts": "מחיקת אוסף התמונות",
+ "renameCategory": "שינוי שם קטגוריה",
+ "deleteCategory": "מחיקת קטגוריה",
+ "deleteImages": "מחיקת תמונות",
+ "trainModel": "אימון מודל",
+ "addClassification": "הוספת סיווג",
+ "deleteModels": "מחיקת מודלים",
+ "editModel": "עריכת מודל"
+ },
+ "tooltip": {
+ "trainingInProgress": "המודל נמצא כרגע בתהליך אימון",
+ "noNewImages": "אין תמונות חדשות לאימון. קודם סווג עוד תמונות במערך הנתונים (Dataset).",
+ "noChanges": "לא בוצעו שינויים במערך הנתונים מאז האימון האחרון.",
+ "modelNotReady": "המודל עדיין לא מוכן לאימון"
+ },
+ "toast": {
+ "success": {
+ "deletedCategory": "הקטגוריה נמחקה",
+ "deletedImage": "התמונות נמחקו",
+ "deletedModel_one": "נמחק בהצלחה {{count}} מודל",
+ "deletedModel_two": "נמחקו בהצלחה {{count}} מודלים",
+ "deletedModel_other": "",
+ "categorizedImage": "התמונה סווגה בהצלחה",
+ "trainedModel": "המודל אומן בהצלחה.",
+ "trainingModel": "אימון המודל התחיל בהצלחה.",
+ "updatedModel": "תצורת המודל עודכנה בהצלחה.",
+ "renamedCategory": "שם הקטגוריה שונה בהצלחה ל־{{name}}"
+ },
+ "error": {
+ "deleteImageFailed": "המחיקה נכשלה: {{errorMessage}}",
+ "deleteCategoryFailed": "מחיקת הקטגוריה נכשלה: {{errorMessage}}",
+ "deleteModelFailed": "מחיקת המודל נכשלה: {{errorMessage}}",
+ "categorizeFailed": "סיווג התמונה נכשל: {{errorMessage}}",
+ "trainingFailed": "אימון המודל נכשל. בדוק בלוגים של Frigate לפרטים.",
+ "trainingFailedToStart": "הפעלת אימון המודל נכשלה: {{errorMessage}}",
+ "updateModelFailed": "עדכון המודל נכשל: {{errorMessage}}",
+ "renameCategoryFailed": "שינוי שם הקטגוריה נכשל: {{errorMessage}}"
+ }
+ },
+ "train": {
+ "titleShort": "לאחרונה",
+ "title": "סיווגים אחרונים",
+ "aria": "בחר סיווגים אחרונים"
+ },
+ "deleteCategory": {
+ "title": "מחיקת קטגוריה",
+ "desc": "האם אתה בטוח שברצונך למחוק את הקטגוריה {{name}}? פעולה זו תמחק לצמיתות את כל התמונות המשויכות, ותדרוש אימון מחדש של המודל.",
+ "minClassesTitle": "לא ניתן למחוק את הקטגוריה",
+ "minClassesDesc": "מודל סיווג חייב לכלול לפחות 2 קטגוריות. הוסף קטגוריה נוספת לפני שתמחק את הקטגוריה הזו."
+ },
+ "deleteModel": {
+ "title": "מחיקת מודל סיווג",
+ "single": "האם אתה בטוח שברצונך למחוק את {{name}}? פעולה זו תמחק לצמיתות את כל הנתונים המשויכים, כולל תמונות ונתוני אימון. לא ניתן לבטל פעולה זו.",
+ "desc_one": "האם אתה בטוח שברצונך למחוק מודל אחד ({{count}})? פעולה זו תמחק לצמיתות את כל הנתונים המשויכים, כולל תמונות ונתוני אימון. לא ניתן לבטל פעולה זו.",
+ "desc_two": "האם אתה בטוח שברצונך למחוק {{count}} מודלים? פעולה זו תמחק לצמיתות את כל הנתונים המשויכים, כולל תמונות ונתוני אימון. לא ניתן לבטל פעולה זו.",
+ "desc_other": ""
+ },
+ "edit": {
+ "title": "עריכת מודל סיווג",
+ "descriptionState": "ערוך את הקטגוריות של מודל הסיווג הזה. כל שינוי ידרוש אימון מחדש של המודל.",
+ "descriptionObject": "ערוך את סוג האובייקט ואת סוג הסיווג עבור מודל סיווג האובייקטים הזה.",
+ "stateClassesInfo": "הערה: שינוי קטגוריות המצבים מחייב אימון מחדש של המודל עם הקטגוריות המעודכנות."
+ },
+ "deleteDatasetImages": {
+ "title": "מחיקת תמונות מערך הנתונים",
+ "desc_one": "האם אתה בטוח שברצונך למחוק {{count}} תמונה מתוך {{dataset}}? לא ניתן לבטל פעולה זו, והיא תדרוש אימון מחדש של המודל.",
+ "desc_two": "האם אתה בטוח שברצונך למחוק {{count}} תמונות מתוך {{dataset}}? לא ניתן לבטל פעולה זו, והיא תדרוש אימון מחדש של המודל.",
+ "desc_other": ""
+ },
+ "deleteTrainImages": {
+ "title": "מחיקת תמונות אימון",
+ "desc_one": "האם אתה בטוח שברצונך למחוק {{count}} תמונה? לא ניתן לבטל פעולה זו.",
+ "desc_two": "האם אתה בטוח שברצונך למחוק {{count}} תמונות? לא ניתן לבטל פעולה זו.",
+ "desc_other": ""
+ },
+ "renameCategory": {
+ "title": "שינוי שם קטגוריה",
+ "desc": "הזן שם חדש עבור {{name}}. יהיה עליך לאמן מחדש את המודל כדי שהשינוי בשם ייכנס לתוקף."
+ },
+ "description": {
+ "invalidName": "שם לא תקין. שמות יכולים לכלול רק אותיות, מספרים, רווחים, גרש (’), קו תחתון (_) ומקף (-)."
+ },
+ "categories": "קטגוריות",
+ "createCategory": {
+ "new": "יצירת קטגוריה חדשה"
+ },
+ "wizard": {
+ "step3": {
+ "errors": {
+ "noObjectLabel": "לא נבחרה תווית אובייקט",
+ "generateFailed": "יצירת דוגמאות נכשלה: {{error}}",
+ "generationFailed": "היצירה נכשלה. נסה שוב.",
+ "classifyFailed": "סיווג התמונות נכשל: {{error}}",
+ "noCameras": "לא הוגדרו מצלמות"
+ },
+ "generateSuccess": "תמונות לדוגמה נוצרו בהצלחה",
+ "missingStatesWarning": {
+ "title": "חסרות דוגמאות מצב",
+ "description": "מומלץ לבחור דוגמאות לכל המצבים כדי לקבל את התוצאות הטובות ביותר. אפשר להמשיך גם בלי לבחור את כל המצבים, אבל המודל לא יאומן עד שלכל המצבים יהיו תמונות.\nאחרי שתמשיך, השתמש בתצוגת סיווגים אחרונים כדי לסווג תמונות למצבים החסרים, ואז בצע אימון מודל."
+ },
+ "training": {
+ "title": "אימון מודל",
+ "description": "המודל שלך נמצא כעת בתהליך אימון ברקע. אפשר לסגור את החלון הזה, והמודל יתחיל לפעול מיד לאחר סיום האימון."
+ },
+ "classifying": "מסווג ומאמן...",
+ "trainingStarted": "האימון התחיל בהצלחה",
+ "modelCreated": "המודל נוצר בהצלחה. השתמש בתצוגת סיווגים אחרונים כדי להוסיף תמונות למצבים חסרים, ולאחר מכן אמן את המודל.",
+ "selectImagesPrompt": "בחר את כל התמונות עם: {{className}}",
+ "selectImagesDescription": "לחץ על תמונות כדי לבחור אותן. לחץ על המשך כשתסיים עם מחלקה זו.",
+ "allImagesRequired_one": "אנא סווג את כל התמונות. נותרה {{count}} תמונה.",
+ "allImagesRequired_two": "אנא סווג את כל התמונות. נותרו {{count}} תמונות.",
+ "allImagesRequired_other": "",
+ "generating": {
+ "title": "יוצר תמונות לדוגמה",
+ "description": "Frigate שואב תמונות מייצגות מההקלטות שלך. פעולה זו עשויה להימשך מספר רגעים..."
+ },
+ "retryGenerate": "נסה ליצור מחדש",
+ "noImages": "לא נוצרו תמונות לדוגמה"
+ },
+ "title": "צור סיווג חדש",
+ "steps": {
+ "nameAndDefine": "תן שם והגדר",
+ "stateArea": "אזור מצב",
+ "chooseExamples": "בחר דוגמאות"
+ },
+ "step1": {
+ "description": "מודלי מצבים מנטרים אזורים קבועים במצלמה ומזהים בהם שינויי מצב (למשל: דלת פתוחה/סגורה). מודלי אובייקטים מוסיפים סיווגים לאובייקטים שזוהו (למשל: בעלי חיים מוכרים, שליחים, וכד׳).",
+ "name": "שם",
+ "namePlaceholder": "הזן שם למודל...",
+ "type": "סוג",
+ "typeState": "מצב",
+ "typeObject": "אובייקט",
+ "objectLabel": "תווית אובייקט",
+ "objectLabelPlaceholder": "בחר סוג אובייקט...",
+ "classificationType": "סוג סיווג",
+ "classificationTypeTip": "למד על סוגי הסיווגים",
+ "classificationTypeDesc": "תוויות משנה (Sub Labels) מוסיפות טקסט נוסף לתווית האובייקט (למשל: 'Person: UPS'). מאפיינים (Attributes) הם מטא־נתונים שניתנים לחיפוש, הנשמרים בנפרד בתוך מטא־הנתונים של האובייקט.",
+ "classificationSubLabel": "תווית משנה",
+ "classificationAttribute": "מאפיינים",
+ "classes": "מחלקות",
+ "states": "מצבים",
+ "classesTip": "למד על מחלקות",
+ "classesStateDesc": "הגדר את המצבים השונים שבהם אזור המצלמה יכול להיות. לדוגמה: 'open' ו־'closed' עבור דלת מוסך.",
+ "classesObjectDesc": "הגדר את הקטגוריות השונות לסיווג אובייקטים שזוהו. לדוגמה:\n'delivery_person', 'resident', 'stranger' עבור סיווג אנשים.",
+ "classPlaceholder": "הזן שם מחלקה...",
+ "errors": {
+ "nameRequired": "שם מודל הוא שדה חובה",
+ "nameLength": "שם המודל חייב להיות באורך של עד 64 תווים",
+ "nameOnlyNumbers": "שם המודל אינו יכול להכיל מספרים בלבד",
+ "classRequired": "נדרשת לפחות מחלקה אחת",
+ "classesUnique": "שמות המחלקות חייבים להיות ייחודיים",
+ "noneNotAllowed": "המחלקה 'none' אינה מותרת",
+ "stateRequiresTwoClasses": "מודלי מצבים דורשים לפחות שתי מחלקות",
+ "objectLabelRequired": "אנא בחר תווית אובייקט",
+ "objectTypeRequired": "אנא בחר סוג סיווג"
+ }
+ },
+ "step2": {
+ "description": "בחר מצלמות והגדר את האזור לניטור עבור כל מצלמה. המודל יסווג את מצב האזורים הללו.",
+ "cameras": "מצלמות",
+ "selectCamera": "בחר מצלמה",
+ "noCameras": "לחץ על + כדי להוסיף מצלמות",
+ "selectCameraPrompt": "בחר מצלמה מהרשימה כדי להגדיר את אזור הניטור שלה"
+ }
+ },
+ "categorizeImageAs": "סווג תמונה כ־:",
+ "categorizeImage": "סווג תמונה",
+ "menu": {
+ "objects": "אובייקטים",
+ "states": "מצבים"
+ },
+ "noModels": {
+ "object": {
+ "title": "אין מודלים לסיווג אובייקטים",
+ "description": "צור מודל מותאם אישית לסיווג אובייקטים שזוהו.",
+ "buttonText": "צור מודל אובייקט"
+ },
+ "state": {
+ "title": "אין מודלים לסיווג מצבים",
+ "description": "צור מודל מותאם אישית לניטור ולסיווג שינויים במצב באזורים מסוימים במצלמה.",
+ "buttonText": "צור מודל מצב"
+ }
+ }
+}
diff --git a/web/public/locales/he/views/events.json b/web/public/locales/he/views/events.json
index fbccbeeb2..6abcccd11 100644
--- a/web/public/locales/he/views/events.json
+++ b/web/public/locales/he/views/events.json
@@ -38,12 +38,24 @@
"detail": {
"noDataFound": "אין נתונים מפורטים לבדיקה",
"aria": "הפעלה/כיבוי תצוגת פרטים",
- "trackedObject_one": "אובייקט במעקב",
- "trackedObject_other": "אובייקטים במעקב",
- "noObjectDetailData": "אין נתוני אובייקט זמינים."
+ "trackedObject_one": "אובייקט {{count}}",
+ "trackedObject_other": "{{count}} אובייקטים",
+ "noObjectDetailData": "אין נתוני אובייקט זמינים.",
+ "label": "פרטים",
+ "settings": "הגדרות תצוגת פרטים",
+ "alwaysExpandActive": {
+ "title": "תמיד להרחיב את הפעיל",
+ "desc": "כאשר אפשר, תמיד להציג בהרחבה את פרטי האובייקט של פריט הבדיקה הפעיל."
+ }
},
"objectTrack": {
"trackedPoint": "נקודה במעקב",
"clickToSeek": "לחץ כדי לחפש את הזמן הזה"
- }
+ },
+ "zoomIn": "הגדל (זום פנימה)",
+ "zoomOut": "הקטן (זום החוצה)",
+ "select_all": "הכל",
+ "normalActivity": "רגיל",
+ "needsReview": "טעון בדיקה",
+ "securityConcern": "חשש אבטחה"
}
diff --git a/web/public/locales/he/views/explore.json b/web/public/locales/he/views/explore.json
index 0646e5089..07be1ceec 100644
--- a/web/public/locales/he/views/explore.json
+++ b/web/public/locales/he/views/explore.json
@@ -27,6 +27,28 @@
},
"deleteTrackedObject": {
"label": "מחק את אובייקט המעקב הזה"
+ },
+ "audioTranscription": {
+ "aria": "בקשת תמלול אודיו",
+ "label": "תמלל"
+ },
+ "showObjectDetails": {
+ "label": "הצגת מסלול האובייקט"
+ },
+ "hideObjectDetails": {
+ "label": "הסתרת מסלול האובייקט"
+ },
+ "downloadCleanSnapshot": {
+ "label": "הורד תמונה נקיה",
+ "aria": "הורד תמונה נקיה"
+ },
+ "viewTrackingDetails": {
+ "label": "הצג פרטי מעקב",
+ "aria": "הצג את פרטי המעקב"
+ },
+ "addTrigger": {
+ "label": "הוסף טריגר",
+ "aria": "הוסף טריגר לאובייקט במעקב זה"
}
},
"generativeAI": "Generative - AI",
@@ -64,7 +86,9 @@
"details": "פרטים",
"snapshot": "לכידת תמונה",
"video": "וידיאו",
- "object_lifecycle": "שלבי זיהוי של האובייקט"
+ "object_lifecycle": "שלבי זיהוי של האובייקט",
+ "thumbnail": "תמונה ממוזערת",
+ "tracking_details": "פרטי מעקב"
},
"objectLifecycle": {
"title": "שלבי זיהוי של האובייקט",
@@ -132,12 +156,16 @@
"success": {
"updatedSublabel": "תווית המשנה עודכנה בהצלחה.",
"updatedLPR": "לוחית הרישוי עודכנה בהצלחה.",
- "regenerate": "תיאור חדש התבקש מ-{{provider}}. בהתאם למהירות הספק שלך, ייתכן שייקח זמן מה ליצירת התיאור החדש."
+ "regenerate": "תיאור חדש התבקש מ-{{provider}}. בהתאם למהירות הספק שלך, ייתכן שייקח זמן מה ליצירת התיאור החדש.",
+ "updatedAttributes": "המאפיינים עודכנו בהצלחה.",
+ "audioTranscription": "בקשת תמלול האודיו נשלחה בהצלחה. בהתאם למהירות שרת ה־Frigate שלך, התמלול עשוי להימשך זמן מה עד להשלמתו."
},
"error": {
"regenerate": "ההתקשרות ל-{{provider}} לקבלת תיאור חדש נכשלה: {{errorMessage}}",
"updatedSublabelFailed": "עדכון תווית המשנה נכשל: {{errorMessage}}",
- "updatedLPRFailed": "עדכון לוחית הרישוי נכשל: {{errorMessage}}"
+ "updatedLPRFailed": "עדכון לוחית הרישוי נכשל: {{errorMessage}}",
+ "updatedAttributesFailed": "נכשל בעדכון המאפיינים: {{errorMessage}}",
+ "audioTranscription": "נכשל בשליחת בקשה לתמלול אודיו: {{errorMessage}}"
}
},
"title": "סקירת הפריט",
@@ -184,12 +212,20 @@
"descriptionSaved": "התיאור נשמר בהצלחה",
"saveDescriptionFailed": "עדכון התיאור נכשל: {{errorMessage}}"
},
- "zones": "אזורים"
+ "zones": "אזורים",
+ "editAttributes": {
+ "title": "ערוך מאפיינים",
+ "desc": "בחר מאפייני סיווג עבור {{label}} זה"
+ },
+ "score": {
+ "label": "ציון"
+ },
+ "attributes": "מאפייני סיווג"
},
"dialog": {
"confirmDelete": {
"title": "אישור מחיקה",
- "desc": "מחיקת אובייקט זה במעקב מסירה את תמונת המצב, כל ההטמעות שנשמרו וכל ערכי שלבי האובייקט המשויכים. קטעי וידאו מוקלטים של אובייקט זה במעקב בתצוגת היסטוריה לא יימחקו.
האם אתה בטוח שברצונך להמשיך?"
+ "desc": "מחיקת אובייקט זה במעקב תסיר את הצילום, כל ה־embeddings השמורים וכל רשומות פרטי המעקב המשויכות. קטעי וידאו מוקלטים של אובייקט זה בתצוגת היסטוריה לא יימחקו.
האם אתה בטוח שברצונך להמשיך?"
}
},
"searchResult": {
@@ -199,11 +235,68 @@
"error": "מחיקת האובייקט במעקב נכשלה: {{errorMessage}}",
"success": "האובייקט המעקב נמחק בהצלחה."
}
- }
+ },
+ "previousTrackedObject": "האובייקט הקודם במעקב",
+ "nextTrackedObject": "האובייקט הבא במעקב"
},
"noTrackedObjects": "לא נמצאו אובייקטים במעקב",
"fetchingTrackedObjectsFailed": "שגיאה באחזור אובייקטים במעקב: {{errorMessage}}",
"trackedObjectsCount_one": "אובייקט במעקב ({{count}}) ",
"trackedObjectsCount_two": "אובייקטים במעקב ({{count}}) ",
- "trackedObjectsCount_other": "אובייקטים במעקב ({{count}}) "
+ "trackedObjectsCount_other": "אובייקטים במעקב ({{count}}) ",
+ "trackingDetails": {
+ "title": "פרטי מעקב",
+ "noImageFound": "לא נמצאה תמונה עבור חותמת הזמן הזו.",
+ "createObjectMask": "יצירת מסכת אובייקט",
+ "adjustAnnotationSettings": "התאמת הגדרות הסימון",
+ "scrollViewTips": "לחץ כדי לראות את הרגעים החשובים לאורך כל זמן המעקב אחרי האובייקט הזה.",
+ "autoTrackingTips": "מיקומי תיבות התחימה (Bounding Boxes) לא יהיו מדויקים עבור מצלמות עם מעקב אוטומטי (Autotracking).",
+ "count": "{{first}} מתוך {{second}}",
+ "trackedPoint": "נקודת מעקב",
+ "lifecycleItemDesc": {
+ "visible": "זוהה {{label}}",
+ "entered_zone": "{{label}} נכנס ל־{{zones}}",
+ "active": "{{label}} הפך לפעיל",
+ "stationary": "{{label}} הפך לנייח",
+ "attribute": {
+ "faceOrLicense_plate": "זוהה {{attribute}} עבור {{label}}",
+ "other": "{{label}} זוהה כ־{{attribute}}"
+ },
+ "gone": "{{label}} יצא",
+ "heard": "{{label}} נשמע",
+ "external": "זוהה {{label}}",
+ "header": {
+ "zones": "אזורים",
+ "ratio": "יחס",
+ "area": "אזור",
+ "score": "ציון"
+ }
+ },
+ "annotationSettings": {
+ "title": "הגדרות סימון",
+ "showAllZones": {
+ "title": "הצגת כל האזורים",
+ "desc": "תמיד להציג אזורים בפריימים שבהם אובייקטים נכנסו לאזור."
+ },
+ "offset": {
+ "label": "היסט סימון",
+ "desc": "הנתונים האלה מגיעים מזרם ה־Detect של המצלמה, אבל מוצגים כשכבה מעל תמונות מזרם ה־Record. סביר ששני הזרמים לא מסונכרנים בצורה מושלמת. לכן, מסגרת הזיהוי (Bounding Box) והווידאו לא תמיד יסתדרו בדיוק אחד על השני.\nאפשר להשתמש בהגדרה הזו כדי להזיז את הסימונים קדימה או אחורה בזמן (היסט), וכך ליישר אותם טוב יותר עם ההקלטה.",
+ "millisecondsToOffset": "מספר המילישניות להיסט סימוני ה־Detect. ברירת מחדל: 0",
+ "tips": "הקטן את הערך אם הווידאו מקדים את המסגרות ונקודות המסלול, והגדל את הערך אם הווידאו מאחוריהם. הערך יכול להיות גם שלילי.",
+ "toast": {
+ "success": "היסט הסימון עבור {{camera}} נשמר בקובץ התצורה."
+ }
+ }
+ },
+ "carousel": {
+ "previous": "שקופית קודמת",
+ "next": "שקופית הבאה"
+ }
+ },
+ "aiAnalysis": {
+ "title": "ניתוח AI"
+ },
+ "concerns": {
+ "label": "סיכונים"
+ }
}
diff --git a/web/public/locales/he/views/exports.json b/web/public/locales/he/views/exports.json
index 93e26a7b8..2bd8c7e00 100644
--- a/web/public/locales/he/views/exports.json
+++ b/web/public/locales/he/views/exports.json
@@ -13,5 +13,11 @@
"title": "שנה שם ייצוא",
"desc": "הכנס שם חדש עבור הייצוא הזה.",
"saveExport": "שמירת ייצוא"
+ },
+ "tooltip": {
+ "shareExport": "שתף ייצוא",
+ "downloadVideo": "הורדת סרטון",
+ "editName": "עריכת שם",
+ "deleteExport": "מחיקת ייצוא"
}
}
diff --git a/web/public/locales/he/views/faceLibrary.json b/web/public/locales/he/views/faceLibrary.json
index 96b248100..0918c847d 100644
--- a/web/public/locales/he/views/faceLibrary.json
+++ b/web/public/locales/he/views/faceLibrary.json
@@ -1,11 +1,11 @@
{
"description": {
- "addFace": "עיין בהוספת אוסף חדש לספריית הפנים.",
+ "addFace": "הוסף אוסף חדש לספריית הפנים באמצעות העלאת התמונה הראשונה שלך.",
"placeholder": "הזנת שם לאוסף זה",
- "invalidName": "שם לא חוקי. שמות יכולים לכלול רק אותיות, מספרים, רווחים, גרשים, קווים תחתונים ומקפים."
+ "invalidName": "שם לא תקין. שמות יכולים לכלול רק אותיות, מספרים, רווחים, גרש (’), קו תחתון (_) ומקף (-)."
},
"createFaceLibrary": {
- "nextSteps": "כדי לבנות בסיס חזק:
נתיבים
קווים ועיגולים יציינו נקודות משמעותיות שבהן האובייקט במעקב נע במהלך מחזור חייו.
" + } }, "users": { "title": "משתמשים", @@ -436,7 +458,7 @@ "desc": "נהל את חשבונות המשתמשים של מופע Frigate זה." }, "addUser": "הוספת משתמש", - "updatePassword": "עדכון סיסמה", + "updatePassword": "איפוס סיסמה", "toast": { "success": { "createUser": "המשתמש {{user}} נוצר בהצלחה", @@ -456,7 +478,7 @@ "role": "הרשאות", "noUsers": "לא נמצאו משתמשים.", "changeRole": "שינוי הרשאות משתמש", - "password": "סיסמה", + "password": "איפוס סיסמה", "deleteUser": "מחיקת משתמש", "username": "שם משתמש" }, @@ -482,7 +504,16 @@ "veryStrong": "מאוד חזק" }, "match": "סיסמאות תואמות", - "notMatch": "הסיסמאות אינן תואמות." + "notMatch": "הסיסמאות אינן תואמות.", + "show": "הצג סיסמה", + "hide": "הסתר סיסמה", + "requirements": { + "title": "דרישות סיסמה:", + "length": "לפחות 8 תווים", + "uppercase": "לפחות אות גדולה אחת", + "digit": "לפחות ספרה אחת", + "special": "לפחות תו מיוחד אחד (!@#$%^&*(),.?\":{}|<>)" + } }, "newPassword": { "title": "סיסמה חדשה", @@ -492,7 +523,11 @@ } }, "usernameIsRequired": "נדרש שם משתמש", - "passwordIsRequired": "נדרשת סיסמה" + "passwordIsRequired": "נדרשת סיסמה", + "currentPassword": { + "title": "סיסמה נוכחית", + "placeholder": "הזן את הסיסמה הנוכחית שלך" + } }, "createUser": { "title": "יצירת משתמש חדש", @@ -510,7 +545,12 @@ "doNotMatch": "הסיסמאות אינן תואמות", "updatePassword": "עדכון סיסמה עבור {{username}}", "setPassword": "קבע סיסמה", - "desc": "צור סיסמה חזקה כדי לאבטח חשבון זה." + "desc": "צור סיסמה חזקה כדי לאבטח חשבון זה.", + "currentPasswordRequired": "נדרשת הסיסמה הנוכחית", + "incorrectCurrentPassword": "הסיסמה הנוכחית שגויה", + "passwordVerificationFailed": "נכשל באימות הסיסמה", + "multiDeviceWarning": "כל מכשיר אחר שבו אתה מחובר יידרש להתחבר מחדש בתוך {{refresh_time}}.", + "multiDeviceAdmin": "ניתן גם לאלץ את כל המשתמשים להתחבר מחדש באופן מיידי על־ידי החלפת מפתח ה־JWT שלך." }, "changeRole": { "title": "שינוי הרשאות משתמש", @@ -521,7 +561,8 @@ "admin": "מנהל", "adminDesc": "גישה מלאה לכל התכונות.", "viewer": "צופה", - "viewerDesc": "מוגבל לדשבורד שידור חי, סקירה, גילוי וייצוא בלבד." + "viewerDesc": "מוגבל לדשבורד שידור חי, סקירה, גילוי וייצוא בלבד.", + "customDesc": "תפקיד מותאם אישית עם גישה למצלמות מסוימות." } } } @@ -624,5 +665,454 @@ "success": "הגדרות Frigate+ נשמרו. הפעל מחדש את Frigate כדי להחיל את השינויים.", "error": "שמירת שינויי התצורה נכשלה: {{errorMessage}}" } + }, + "cameraWizard": { + "step1": { + "brandInformation": "פרטי יצרן", + "brandUrlFormat": "למצלמות עם פורמט כתובת RTSP כמו: {{exampleUrl}}", + "connectionSettings": "הגדרות חיבור", + "detectionMethod": "שיטת זיהוי זרם", + "onvifPort": "פורט ONVIF", + "probeMode": "בדיקת מצלמה", + "manualMode": "בחירה ידנית", + "detectionMethodDescription": "בדוק את המצלמה באמצעות ONVIF (אם נתמך) כדי למצוא את כתובות הזרמים שלה, או בחר ידנית את יצרן המצלמה כדי להשתמש בכתובות מוגדרות מראש.\nכדי להזין כתובת RTSP מותאמת אישית, בחר בשיטה ידנית ואז בחר \"אחר\".", + "onvifPortDescription": "במצלמות שתומכות ב-ONVIF, זה בדרך כלל 80 או 8080.", + "useDigestAuth": "שימוש באימות Digest", + "useDigestAuthDescription": "השתמש באימות HTTP Digest עבור ONVIF. בחלק מהמצלמות נדרש שם משתמש/סיסמה ייעודיים ל-ONVIF, ולא משתמש ה-Admin הרגיל.", + "errors": { + "brandOrCustomUrlRequired": "בחר יצרן מצלמה והזן Host/IP, או בחר “אחר” והזן כתובת מותאמת אישית", + "nameRequired": "שם המצלמה הוא שדה חובה", + "nameLength": "שם המצלמה חייב להיות באורך של עד 64 תווים", + "invalidCharacters": "שם המצלמה מכיל תווים לא חוקיים", + "nameExists": "שם המצלמה כבר קיים", + "customUrlRtspRequired": "כתובות מותאמות אישית חייבות להתחיל ב־\"rtsp://\". עבור זרמי מצלמה שאינם RTSP נדרשת הגדרה ידנית." + }, + "description": "הזן את פרטי המצלמה ובחר אם לבצע בדיקה למצלמה או לבחור ידנית את היצרן.", + "cameraName": "שם מצלמה", + "cameraNamePlaceholder": "לדוגמה: front_door או סקירת החצר האחורית", + "host": "HOST / כתובת IP", + "port": "פורט", + "username": "שם משתמש", + "usernamePlaceholder": "אופציונלי", + "password": "סיסמה", + "passwordPlaceholder": "אופציונלי", + "selectTransport": "בחר פרוטוקול תעבורה", + "cameraBrand": "יצרן מצלמה", + "selectBrand": "בחר יצרן מצלמה עבור תבנית כתובת ה-URL", + "customUrl": "כתובת (URL) זרם מותאמת אישית", + "customUrlPlaceholder": "rtsp://username:password@host:port/path" + }, + "step2": { + "description": "בדוק את המצלמה כדי לאתר זרמים זמינים, או הגדר ידנית את ההגדרות לפי שיטת הזיהוי שבחרת.", + "testSuccess": "בדיקת החיבור הצליחה!", + "testFailed": "בדיקת החיבור נכשלה. בדוק את הנתונים שהזנת ונסה שוב.", + "testFailedTitle": "הבדיקה נכשלה", + "streamDetails": "פרטי זרם", + "probing": "בודק מצלמה...", + "retry": "נסה שוב", + "testing": { + "probingMetadata": "בודק את נתוני המטא של המצלמה…", + "fetchingSnapshot": "שולף תמונת מצב מהמצלמה…" + }, + "probeFailed": "בדיקת המצלמה נכשלה: {{error}}", + "probingDevice": "בודק את ההתקן…", + "probeSuccessful": "הבדיקה הצליחה", + "probeError": "בדיקה נכשלה", + "probeNoSuccess": "הבדיקה לא הצליחה", + "deviceInfo": "מידע על ההתקן", + "manufacturer": "יצרן", + "model": "דגם", + "firmware": "קושחה", + "profiles": "פרופילים", + "ptzSupport": "תמיכה ב-PTZ", + "autotrackingSupport": "תמיכה ב-Autotracking", + "presets": "פריסטים", + "rtspCandidates": "כתובות RTSP מוצעות", + "rtspCandidatesDescription": "כתובות ה־RTSP הבאות נמצאו בבדיקת המצלמה. בצע בדיקת חיבור כדי לצפות בנתוני הזרם (Metadata).", + "noRtspCandidates": "לא נמצאו כתובות RTSP מהמצלמה. ייתכן שפרטי ההתחברות שגויים, או שהמצלמה לא תומכת ב-ONVIF, או שהשיטה שבה השתמשנו לשליפת כתובות RTSP אינה נתמכת. חזור אחורה והזן את כתובת ה-RTSP ידנית.", + "candidateStreamTitle": "אפשרות {{number}}", + "useCandidate": "השתמש", + "uriCopy": "העתק", + "uriCopied": "הכתובת (URI) הועתקה ללוח", + "testConnection": "בדיקת חיבור", + "toggleUriView": "לחץ כדי להציג/להסתיר את הכתובת המלאה", + "connected": "מחובר", + "notConnected": "לא מחובר", + "errors": { + "hostRequired": "כתובת Host/IP היא שדה חובה" + } + }, + "step3": { + "description": "הגדר תפקידי זרם (Roles) והוסף זרמים נוספים למצלמה שלך.", + "streamsTitle": "זרמי מצלמה", + "addStream": "הוסף זרם", + "addAnotherStream": "הוסף זרם נוסף", + "streamTitle": "זרם {{number}}", + "streamUrl": "כתובת הזרם (URL)", + "selectStream": "בחר זרם", + "searchCandidates": "חיפוש אפשרויות…", + "noStreamFound": "לא נמצא זרם", + "url": "URL", + "resolution": "רזולוציה", + "selectResolution": "בחר רזולוציה", + "quality": "איכות", + "selectQuality": "בחר איכות", + "roles": "תפקידים", + "roleLabels": { + "detect": "זיהוי אובייקטים", + "record": "הקלטה", + "audio": "קול (Audio)" + }, + "testStream": "בדיקת חיבור", + "testSuccess": "בדיקת הזרם הצליחה!", + "testFailed": "בדיקת הזרם נכשלה", + "testFailedTitle": "הבדיקה נכשלה", + "connected": "מחובר", + "notConnected": "לא מחובר", + "featuresTitle": "תכונות", + "go2rtc": "הפחתת חיבורים למצלמה", + "detectRoleWarning": "כדי להמשיך, לפחות זרם אחד חייב להיות עם ייעוד \"detect\".", + "rolesPopover": { + "title": "ייעודי הזרם", + "detect": "הזרם הראשי לזיהוי אובייקטים.", + "record": "שומר קטעים מזרם הווידאו לפי הגדרות התצורה.", + "audio": "זרם לזיהוי מבוסס אודיו." + }, + "featuresPopover": { + "title": "תכונות הזרם", + "description": "השתמש ב־go2rtc לריסטרים (Restream) כדי להפחית את מספר החיבורים למצלמה שלך." + }, + "streamUrlPlaceholder": "rtsp://username:password@host:port/path" + }, + "step4": { + "description": "אימות וניתוח סופיים לפני שמירת המצלמה החדשה. התחבר לכל זרם לפני השמירה.", + "validationTitle": "אימות הזרם", + "connectAllStreams": "התחברות לכל הזרמים", + "reconnectionSuccess": "חיבור מחדש הצליח.", + "reconnectionPartial": "חלק מהזרמים לא הצליחו להתחבר מחדש.", + "streamUnavailable": "תצוגה מקדימה של הזרם אינה זמינה", + "reload": "טעינה מחדש", + "connecting": "מתחבר...", + "streamTitle": "זרם {{number}}", + "valid": "תקין", + "failed": "נכשל", + "notTested": "לא נבדק", + "connectStream": "התחבר", + "connectingStream": "מתחבר", + "disconnectStream": "נתק", + "estimatedBandwidth": "רוחב־פס משוער", + "roles": "ייעודים", + "ffmpegModule": "שימוש במצב תאימות לזרם", + "ffmpegModuleDescription": "אם הזרם לא נטען אחרי כמה ניסיונות, נסה להפעיל את זה. כשהאפשרות פעילה, Frigate ישתמש במודול ffmpeg יחד עם go2rtc. זה עשוי לשפר תאימות עם זרמים של חלק מהמצלמות.", + "none": "ללא", + "error": "שגיאה", + "streamValidated": "הזרם {{number}} אומת בהצלחה", + "streamValidationFailed": "אימות הזרם {{number}} נכשל", + "saveAndApply": "שמירת מצלמה חדשה", + "saveError": "תצורה לא תקינה. בדוק את ההגדרות שלך.", + "issues": { + "title": "אימות הזרם", + "videoCodecGood": "קידוד הווידאו הוא {{codec}}.", + "audioCodecGood": "קידוד האודיו הוא {{codec}}.", + "resolutionHigh": "רזולוציה של {{resolution}} עשויה לגרום לשימוש מוגבר במשאבים.", + "resolutionLow": "רזולוציה של {{resolution}} עשויה להיות נמוכה מדי לזיהוי אמין של אובייקטים קטנים.", + "noAudioWarning": "לא זוהה אודיו בזרם הזה, ולכן ההקלטות יהיו ללא שמע.", + "audioCodecRecordError": "כדי לכלול אודיו בהקלטות נדרש קידוד שמע AAC.", + "audioCodecRequired": "כדי לאפשר זיהוי אודיו נדרש זרם שמע.", + "restreamingWarning": "הפחתת מספר החיבורים למצלמה עבור זרם ההקלטה (record) עשויה להעלות מעט את השימוש ב־CPU.", + "brands": { + "reolink-rtsp": "RTSP של Reolink לא מומלץ. הפעל HTTP בהגדרות הקושחה של המצלמה, ואז הפעל מחדש את אשף ההגדרה.", + "reolink-http": "בזרמי HTTP של Reolink מומלץ להשתמש ב־FFmpeg לתאימות טובה יותר. הפעל עבור הזרם הזה את האפשרות “שימוש במצב תאימות לזרם”." + }, + "dahua": { + "substreamWarning": "זרם משנה 1 נעול לרזולוציה נמוכה. מצלמות רבות של Dahua / Amcrest / EmpireTech תומכות בזרמי משנה נוספים שצריך להפעיל בהגדרות המצלמה מומלץ לבדוק אם קיימים זרמי משנה כאלה ולהשתמש בהם במידה וזמינים." + }, + "hikvision": { + "substreamWarning": "זרם משנה 1 נעול לרזולוציה נמוכה. מצלמות רבות של Hikvision תומכות בזרמי משנה נוספים שצריך להפעיל בהגדרות המצלמה. מומלץ לבדוק אם קיימים זרמי משנה כאלה ולהשתמש בהם, אם הם זמינים." + } + } + }, + "title": "הוסף מצלמה", + "description": "בצע את השלבים הבאים כדי להוסיף מצלמה חדשה להתקנת ה־Frigate שלך.", + "steps": { + "nameAndConnection": "שם וחיבור", + "probeOrSnapshot": "בדיקה (Probe) או צילום תמונה (Snapshot)", + "streamConfiguration": "הגדרות זרם", + "validationAndTesting": "אימות ובדיקה" + }, + "save": { + "success": "המצלמה החדשה {{cameraName}} נשמרה בהצלחה.", + "failure": "שגיאה בשמירת {{cameraName}}." + }, + "testResultLabels": { + "resolution": "רזולוציה", + "video": "וידיאו", + "audio": "אודיו", + "fps": "FPS" + }, + "commonErrors": { + "noUrl": "אנא ספק כתובת URL תקינה לזרם", + "testFailed": "בדיקת הזרם נכשלה: {{error}}" + } + }, + "cameraManagement": { + "title": "ניהול מצלמות", + "addCamera": "הוספת מצלמה חדשה", + "editCamera": "עריכת מצלמה:", + "selectCamera": "בחירת מצלמה", + "backToSettings": "חזרה להגדרות מצלמה", + "streams": { + "title": "הפעלה / השבתה של מצלמות", + "desc": "השבת מצלמה זמנית עד ש־Frigate יופעל מחדש. השבתת מצלמה עוצרת לחלוטין את העיבוד של Frigate עבור זרמי המצלמה הזו. זיהוי, הקלטה וניפוי שגיאות לא יהיו זמינים.