From b1d96766386e8ebfb57021c9ec875cf7eba23aa1 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Fri, 21 Aug 2026 21:27:51 +0200 Subject: [PATCH] Translated using Weblate (Persian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (46 of 46 strings) Translated using Weblate (Persian) Currently translated at 100.0% (800 of 800 strings) Translated using Weblate (Persian) Currently translated at 100.0% (474 of 474 strings) Translated using Weblate (Persian) Currently translated at 100.0% (141 of 141 strings) Translated using Weblate (Persian) Currently translated at 100.0% (185 of 185 strings) Translated using Weblate (Persian) Currently translated at 100.0% (1295 of 1295 strings) Translated using Weblate (Persian) Currently translated at 100.0% (86 of 86 strings) Translated using Weblate (Persian) Currently translated at 100.0% (86 of 86 strings) Translated using Weblate (Persian) Currently translated at 100.0% (74 of 74 strings) Translated using Weblate (Persian) Currently translated at 100.0% (108 of 108 strings) Translated using Weblate (Persian) Currently translated at 100.0% (108 of 108 strings) Translated using Weblate (Persian) Currently translated at 100.0% (239 of 239 strings) Translated using Weblate (Persian) Currently translated at 100.0% (500 of 500 strings) Translated using Weblate (Persian) Currently translated at 100.0% (800 of 800 strings) Translated using Weblate (Persian) Currently translated at 100.0% (474 of 474 strings) Translated using Weblate (Persian) Currently translated at 100.0% (45 of 45 strings) Translated using Weblate (Persian) Currently translated at 100.0% (62 of 62 strings) Translated using Weblate (Persian) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Persian) Currently translated at 100.0% (23 of 23 strings) Translated using Weblate (Persian) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (Persian) Currently translated at 100.0% (800 of 800 strings) Translated using Weblate (Persian) Currently translated at 100.0% (474 of 474 strings) Translated using Weblate (Persian) Currently translated at 100.0% (141 of 141 strings) Translated using Weblate (Persian) Currently translated at 100.0% (185 of 185 strings) Translated using Weblate (Persian) Currently translated at 100.0% (1295 of 1295 strings) Translated using Weblate (Persian) Currently translated at 100.0% (100 of 100 strings) Translated using Weblate (Persian) Currently translated at 100.0% (86 of 86 strings) Translated using Weblate (Persian) Currently translated at 100.0% (145 of 145 strings) Translated using Weblate (Persian) Currently translated at 100.0% (67 of 67 strings) Translated using Weblate (Persian) Currently translated at 100.0% (108 of 108 strings) Translated using Weblate (Persian) Currently translated at 100.0% (129 of 129 strings) Translated using Weblate (Persian) Currently translated at 100.0% (239 of 239 strings) Translated using Weblate (Persian) Currently translated at 65.1% (71 of 109 strings) Co-authored-by: Abdollah Ashjaa Co-authored-by: Amir reza Irani ali poor Co-authored-by: Hosted Weblate Co-authored-by: حمید ملک محمدی Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-groups/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-replay/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/fa/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/fa/ Translation: Frigate NVR/Config - Cameras Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Groups Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/audio Translation: Frigate NVR/common Translation: Frigate NVR/components-dialog Translation: Frigate NVR/components-filter Translation: Frigate NVR/objects Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-exports Translation: Frigate NVR/views-live Translation: Frigate NVR/views-motionSearch Translation: Frigate NVR/views-replay Translation: Frigate NVR/views-settings Translation: Frigate NVR/views-system --- web/public/locales/fa/audio.json | 2 +- web/public/locales/fa/common.json | 10 +- web/public/locales/fa/components/dialog.json | 89 +- web/public/locales/fa/components/filter.json | 2 +- web/public/locales/fa/config/cameras.json | 37 +- web/public/locales/fa/config/global.json | 890 ++++++++++++++++- web/public/locales/fa/config/groups.json | 74 +- web/public/locales/fa/config/validation.json | 36 +- web/public/locales/fa/objects.json | 13 +- web/public/locales/fa/views/chat.json | 73 +- .../locales/fa/views/classificationModel.json | 41 +- web/public/locales/fa/views/events.json | 38 +- web/public/locales/fa/views/explore.json | 21 +- web/public/locales/fa/views/exports.json | 108 +- web/public/locales/fa/views/live.json | 29 +- web/public/locales/fa/views/motionSearch.json | 79 +- web/public/locales/fa/views/replay.json | 61 +- web/public/locales/fa/views/settings.json | 944 +++++++++++++++++- web/public/locales/fa/views/system.json | 87 +- 19 files changed, 2525 insertions(+), 109 deletions(-) diff --git a/web/public/locales/fa/audio.json b/web/public/locales/fa/audio.json index b3e547006e..d4cbe0ef1a 100644 --- a/web/public/locales/fa/audio.json +++ b/web/public/locales/fa/audio.json @@ -413,7 +413,7 @@ "typewriter": "ماشین تحریر", "computer_keyboard": "صفحه‌کلید رایانه", "writing": "نوشتن", - "alarm": "هشدار", + "alarm": "زنگ هشدار", "telephone": "تلفن", "siren": "آژیر", "civil_defense_siren": "آژیر دفاع مدنی", diff --git a/web/public/locales/fa/common.json b/web/public/locales/fa/common.json index 5cd5a1e1c9..f0fd347d89 100644 --- a/web/public/locales/fa/common.json +++ b/web/public/locales/fa/common.json @@ -134,7 +134,7 @@ "export": "خروجی گرفتن", "next": "بعدی", "reset": "بازنشانی", - "enabled": "فعال", + "enabled": "فعال شده", "disable": "غیرفعال کردن", "save": "ذخیره", "saving": "در حال ذخیره‌سازی…", @@ -161,7 +161,8 @@ "resetToDefault": "بازنشانی به پیش‌فرض", "saveAll": "ذخیره همه", "savingAll": "ذخیره‌سازی همه…", - "undoAll": "بازگردانی همه" + "undoAll": "بازگردانی همه", + "overridden": "نادیده‌گرفته‌شده" }, "menu": { "systemMetrics": "شاخص‌های سیستم", @@ -211,9 +212,10 @@ "label": "برای زبان از تنظیمات سامانه استفاده کنید" }, "zhHant": "چینی سنتی", - "hr": "کرواسیایی" + "hr": "کرواسیایی", + "bs": "بوسنیایی" }, - "system": "سامانه", + "system": "سیستم", "systemLogs": "لاگ‌های سامانه", "configurationEditor": "ویرایشگر پیکربندی", "languages": "زبان‌ها", diff --git a/web/public/locales/fa/components/dialog.json b/web/public/locales/fa/components/dialog.json index 99095fc9d9..4b94c7ce28 100644 --- a/web/public/locales/fa/components/dialog.json +++ b/web/public/locales/fa/components/dialog.json @@ -1,12 +1,13 @@ { "restart": { "title": "آیا برای راه اندازی مجدد Frigate مطمئن هستید؟", - "button": "ری‌استارت", + "button": "راه‌اندازی دوباره", "restarting": { "title": "فریگیت در حال ری‌استارت شدن", "content": "صفحه تا {{countdown}} ثانیه دیگر مجددا بارگزاری خواهد شد.", "button": "بارگزاری مجدد هم اکنون اجرا شود" - } + }, + "description": "این کار به‌طور موقت Frigate را هنگام راه‌اندازی مجدد متوقف می‌کند." }, "explore": { "plus": { @@ -23,6 +24,9 @@ }, "state": { "submitted": "ارسال شد" + }, + "toast": { + "error": "ارسال به Frigate+ انجام نشد. لطفاً اتصال شبکه خود را بررسی کرده و دوباره تلاش کنید." } } }, @@ -49,21 +53,86 @@ "error": { "endTimeMustAfterStartTime": "زمان پایان باید بعد از زمان شروع باشد", "noVaildTimeSelected": "بازهٔ زمانی معتبر انتخاب نشده است", - "failed": "شروع خروجی‌گیری ناموفق بود: {{error}}" + "failed": "شروع خروجی‌گیری ناموفق بود: {{error}}", + "noValidTimeSelected": "بازهٔ زمانی معتبر انتخاب نشده است" }, "success": "ساخت خروجی با موفقیت آغاز شد. فایل را در صفحه خروجی‌ها مشاهده کنید.", - "view": "مشاهده" + "view": "مشاهده", + "queued": "خروجی در صف قرار گرفت. پیشرفت را در صفحهٔ خروجی‌ها مشاهده کنید.", + "batchSuccess_one": "۱ خروجی شروع شد. در حال باز کردن مورد.", + "batchSuccess_other": "{{count}} خروجی شروع شد. در حال باز کردن مورد.", + "batchPartial": "{{successful}} از {{total}} خروجی شروع شد. دوربین‌های ناموفق: {{failedCameras}}", + "batchFailed": "شروع {{total}} خروجی ناموفق بود. دوربین‌های ناموفق: {{failedCameras}}", + "batchQueuedSuccess_one": "۱ خروجی در صف قرار گرفت.", + "batchQueuedSuccess_other": "{{count}} خروجی در صف قرار گرفت.", + "batchQueuedPartial": "{{successful}} از {{total}} خروجی در صف قرار گرفت. دوربین‌های ناموفق: {{failedCameras}}", + "batchQueueFailed": "صف‌بندی {{total}} خروجی ناموفق بود. دوربین‌های ناموفق: {{failedCameras}}" }, "fromTimeline": { "saveExport": "ذخیرهٔ خروجی", - "previewExport": "پیش‌نمایش خروجی" + "previewExport": "پیش‌نمایش خروجی", + "queueingExport": "در حال صف‌بندی خروجی...", + "useThisRange": "استفاده از این بازه" }, "name": { "placeholder": "برای خروجی نام بگذارید" }, "select": "انتخاب", "export": "خروجی", - "selectOrExport": "انتخاب یا خروجی" + "selectOrExport": "انتخاب یا خروجی", + "multiCamera": { + "selectGroup": "انتخاب گروه", + "noMatchingCameras": "هیچ دوربینی با جستجوی شما مطابقت ندارد", + "checkingActivity": "در حال بررسی فعالیت دوربین...", + "noCameras": "هیچ دوربینی در دسترس نیست", + "detectionCount_one": "1 شیء ردیابی شده", + "detectionCount_other": "{{count}} شیء ردیابی شده", + "nameLabel": "نام خروجی", + "namePlaceholder": "نام پایه اختیاری برای این خروجی‌ها", + "queueingButton": "به صف کردن خروجی‌ها...", + "exportButton_one": "خروجی 1 دوربین", + "exportButton_other": "خروجی {{count}} دوربین", + "timeRange": "محدوده زمانی", + "selectFromTimeline": "انتخاب از تایم‌لاین", + "cameraSelection": "دوربین‌ها", + "cameraSelectionHelp": "دوربین‌هایی که در این بازه زمانی دارای اشیاء ردیابی‌شده هستند، از قبل انتخاب شده‌اند", + "searchOrSelectGroup": "جستجو یا انتخاب گروه دوربین...", + "selectAll": "انتخاب همه دوربین‌ها", + "clearSelection": "پاک کردن انتخاب‌ها", + "selectWithActivity": "دوربین‌های دارای اشیاء ردیابی‌شده", + "selectedCount": "{{selected}} / {{total}} انتخاب شده" + }, + "multi": { + "title_one": "خروجی ۱ بازبینی", + "title_other": "خروجی {{count}} بازبینی", + "description": "از هر بازبینی انتخاب‌شده خروجی بگیرید. تمام خروجی‌ها تحت یک پرونده واحد گروه‌بندی خواهند شد.", + "descriptionNoCase": "از هر بازبینی انتخاب‌شده خروجی بگیرید.", + "caseNamePlaceholder": "بازبینی خروجی - {{date}}", + "exportButton_one": "خروجی 1 بازبینی", + "exportButton_other": "خروجی {{count}} بازبینی", + "exportingButton": "خروجی گرفتن...", + "toast": { + "started_one": "۱ خروجی شروع شد.", + "started_other": "{{count}} خروجی شروع شد.", + "startedNoCase_one": "۱ خروجی آغاز شد.", + "startedNoCase_other": "{{count}} خروجی آغاز شد.", + "partial": "{{successful}} از {{total}} خروجی آغاز شد. موارد ناموفق: {{failedItems}}", + "failed": "شروع {{total}} خروجی ناموفق بود. ناموفق: {{failedItems}}" + } + }, + "case": { + "newCaseOption": "ایجاد پرونده جدید", + "newCaseNamePlaceholder": "نام پرونده جدید", + "newCaseDescriptionPlaceholder": "توضیحات مورد", + "label": "مورد", + "nonAdminHelp": "یک مورد جدید برای این خروجی‌ها ایجاد خواهد شد.", + "placeholder": "انتخاب یک مورد" + }, + "queueing": "در حال قرار دادن خروجی در صف...", + "tabs": { + "export": "تک دوربین", + "multiCamera": "چند-دوربین" + } }, "streaming": { "label": "جریان", @@ -109,6 +178,14 @@ "markAsReviewed": "علامت‌گذاری به‌عنوان بازبینی‌شده", "markAsUnreviewed": "علامت‌گذاری به‌عنوان بازبینی‌نشده", "deleteNow": "حذف فوری" + }, + "shareTimestamp": { + "label": "اشتراک‌گذاری مهر زمانی", + "title": "اشتراک‌گذاری مهر زمانی", + "description": "یک نشانی اینترنتی با مهر زمانی از موقعیت فعلی پخش‌کننده به اشتراک بگذارید یا یک مهر زمانی سفارشی انتخاب کنید. توجه کنید که این یک لینک اشتراک‌گذاری عمومی نیست و فقط برای کاربرانی که به Frigate و این دوربین دسترسی دارند قابل دسترسی است.", + "custom": "مهر زمانی سفارشی", + "button": "اشتراک‌گذاری نشانی مهر زمانی", + "shareTitle": "مهر زمانی بازبینی فریگیت: {{camera}}" } }, "imagePicker": { diff --git a/web/public/locales/fa/components/filter.json b/web/public/locales/fa/components/filter.json index fe60049abb..aeedf537f3 100644 --- a/web/public/locales/fa/components/filter.json +++ b/web/public/locales/fa/components/filter.json @@ -18,7 +18,7 @@ "count_other": "{{count}} برچسب‌ها" }, "zones": { - "label": "مناطق", + "label": "نواحی", "all": { "title": "همهٔ ناحیه‌ها", "short": "ناحیه‌ها" diff --git a/web/public/locales/fa/config/cameras.json b/web/public/locales/fa/config/cameras.json index 0c123fbba4..b1127cefe3 100644 --- a/web/public/locales/fa/config/cameras.json +++ b/web/public/locales/fa/config/cameras.json @@ -33,7 +33,11 @@ }, "filters": { "label": "فیلترهای صوتی", - "description": "تنظیمات فیلتر بر اساس نوع صدا مانند آستانه‌های اطمینان که برای کاهش تشخیص‌های مثبت کاذب استفاده می‌شوند." + "description": "تنظیمات فیلتر بر اساس نوع صدا مانند آستانه‌های اطمینان که برای کاهش تشخیص‌های مثبت کاذب استفاده می‌شوند.", + "threshold": { + "label": "حداقل اطمینان صوتی", + "description": "حداقل آستانه اطمینان برای رویداد صوتی تا شمارش شود." + } }, "enabled_in_config": { "label": "وضعیت صوتی اصلی", @@ -471,7 +475,7 @@ "description": "تنظیمات نگهداری برای ضبط رویدادهای تشخیص.", "days": { "label": "روزهای نگهداری", - "description": "تعداد روزهایی که لازم است سوابق رویدادهای شناسایی‌شده نگهداری EMSebi شوند ." + "description": "تعداد روزهایی که ضبط‌های رویدادهای تشخیص باید نگهداری شوند." }, "mode": { "label": "حالت نگهداری", @@ -485,6 +489,13 @@ "hwaccel_args": { "label": "خروجی گرفتن از آرگومان‌های hwaccel", "description": "آرگومان‌های شتاب سخت‌افزاری برای استفاده در عملیات صادرات/تبدیل کد." + }, + "max_concurrent": { + "label": "حداکثر خروجی‌های همزمان", + "description": "حداکثر تعداد کارهای خروجی که همزمان پردازش می‌شوند." + }, + "chapters": { + "label": "فرادادهٔ فصل برای جاسازی در ضبط‌های خروجی‌گرفته‌شده" } }, "preview": { @@ -672,8 +683,8 @@ } }, "quality": { - "label": "کیفیت JPEG", - "description": "کیفیت کدگذاری JPEG برای عکس‌های ذخیره شده (0-100)." + "label": "کیفیت عکس فوری", + "description": "کیفیت کدگذاری برای عکس‌های فوری ذخیره‌شده (0-100)." } }, "timestamp_style": { @@ -823,7 +834,7 @@ }, "timeout": { "label": "مهلت بازگشت", - "description": "چند ثانیه صبر کن پس از از دست دادن ردیابی قبل از بازگرداندن دوربین به موقعیت از پیش تعیین شده ." + "description": "پس از قطع ردیابی، این تعداد ثانیه صبر کنید قبل از بازگرداندن دوربین به موقعیت از پیش تعیین‌شده." }, "movement_weights": { "label": "وزنه‌های حرکتی", @@ -838,7 +849,11 @@ "label": "عدم تطابق زمانی را نادیده بگیرید", "description": "برای ارتباط ONVIF، از تفاوت‌های همگام‌سازی زمانی بین دوربین و سرور Frigate صرف نظر کنید." }, - "label": "ONVIF پروتکل استاندارد انتقال تصویر ." + "label": "ONVIF", + "profile": { + "label": "پروفایل ONVIF", + "description": "پروفایل رسانهٔ ONVIF خاص برای کنترل PTZ، مطابقت‌شده با توکن یا نام. اگر تنظیم نشود، اولین پروفایل با پیکربندی PTZ معتبر به‌طور خودکار انتخاب می‌شود." + } }, "type": { "label": "نوع دوربین", @@ -854,6 +869,10 @@ "dashboard": { "label": "نمایش در رابط کاربری", "description": "مشخص کنید که آیا این دوربین در همه جای رابط کاربری Frigate قابل مشاهده باشد یا خیر. غیرفعال کردن این گزینه مستلزم ویرایش دستی پیکربندی برای مشاهده مجدد این دوربین در رابط کاربری است." + }, + "review": { + "label": "نمایش در بازبینی", + "description": "مشخص کنید که آیا این دوربین در بازبینی قابل مشاهده باشد (صفحهٔ بازبینی و فیلتر دوربین آن، بازبینی حرکت، و نمای تاریخچه)." } }, "webui_url": { @@ -861,7 +880,7 @@ "description": "آدرس اینترنتی برای بازدید مستقیم از دوربین از صفحه سیستم" }, "zones": { - "label": "مناطق", + "label": "نواحی", "description": "مناطق به شما امکان می‌دهند ناحیه خاصی از قاب را تعریف کنید تا بتوانید تعیین کنید که آیا یک شیء در یک ناحیه خاص قرار دارد یا خیر.", "friendly_name": { "label": "نام منطقه", @@ -937,5 +956,9 @@ "enabled_in_config": { "label": "وضعیت دوربین اصلی", "description": "وضعیت اولیه دوربین را پیگیری کنید." + }, + "profiles": { + "label": "پروفایل‌ها", + "description": "پروفایل‌های پیکربندی نام‌گذاری‌شده با لغوهای جزئی که در زمان اجرا قابل فعال‌سازی هستند." } } diff --git a/web/public/locales/fa/config/global.json b/web/public/locales/fa/config/global.json index ea5ad48461..8a323db3ac 100644 --- a/web/public/locales/fa/config/global.json +++ b/web/public/locales/fa/config/global.json @@ -2,7 +2,8 @@ "audio": { "label": "رویدادهای صوتی", "enabled": { - "label": "فعال کردن تشخیص صدا" + "label": "فعال کردن تشخیص صدا", + "description": "فعال یا غیرفعال کردن تشخیص رویداد صوتی برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "max_not_heard": { "label": "پایان مهلت", @@ -18,7 +19,11 @@ }, "filters": { "label": "فیلترهای صوتی", - "description": "تنظیمات فیلتر بر اساس نوع صدا مانند آستانه‌های اطمینان که برای کاهش تشخیص‌های مثبت کاذب استفاده می‌شوند." + "description": "تنظیمات فیلتر بر اساس نوع صدا مانند آستانه‌های اطمینان که برای کاهش تشخیص‌های مثبت کاذب استفاده می‌شوند.", + "threshold": { + "label": "حداقل اطمینان صوتی", + "description": "حداقل آستانه اطمینان برای رویداد صوتی تا شمارش شود." + } }, "enabled_in_config": { "label": "وضعیت صوتی اصلی", @@ -27,7 +32,8 @@ "num_threads": { "label": "رشته‌های تشخیص", "description": "تعداد رشته‌های مورد استفاده برای پردازش تشخیص صدا." - } + }, + "description": "تنظیمات تشخیص رویداد مبتنی بر صدا برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "audio_transcription": { "label": "رونویسی صوتی", @@ -37,7 +43,20 @@ "description": "فعال کردن پخش زنده رونویسی برای صدا هنگام دریافت آن." }, "enabled": { - "label": "فعال کردن رونویسی صوتی" + "label": "فعال کردن رونویسی صوتی", + "description": "فعال یا غیرفعال کردن رونویسی خودکار صدا برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." + }, + "language": { + "label": "زبان رونویسی", + "description": "کد زبان مورد استفاده برای رونویسی/ترجمه (مثلاً 'en' برای انگلیسی). برای کدهای زبان پشتیبانی‌شده به https://whisper-api.com/docs/languages/ مراجعه کنید." + }, + "device": { + "label": "دستگاه رونویسی", + "description": "دستگاه key (CPU/GPU) to run the transcription model on. Only NVIDIA CUDA GPUs are currently supported for transcription." + }, + "model_size": { + "label": "مدل size", + "description": "مدل size to use for offline audio event transcription." } }, "birdseye": { @@ -54,13 +73,50 @@ "order": { "label": "موقعیت", "description": "موقعیت عددی که ترتیب قرارگیری دوربین را در طرح چشم پرنده کنترل می‌کند." + }, + "restream": { + "label": "بازپخش RTSP", + "description": "بازپخش خروجی چشم پرنده به‌عنوان یک جریان RTSP؛ فعال‌سازی این گزینه چشم پرنده را به‌طور پیوسته در حال اجرا نگه می‌دارد." + }, + "width": { + "label": "عرض", + "description": "عرض خروجی (پیکسل) فریم ترکیب‌شده چشم پرنده." + }, + "height": { + "label": "ارتفاع", + "description": "ارتفاع خروجی (پیکسل) فریم ترکیب‌شده چشم پرنده." + }, + "quality": { + "label": "کیفیت کدگذاری", + "description": "کیفیت کدگذاری برای جریان mpeg1 چشم پرنده (1 بالاترین کیفیت، 31 پایین‌ترین)." + }, + "inactivity_threshold": { + "label": "آستانه عدم فعالیت", + "description": "ثانیه‌های عدم فعالیت که پس از آن یک دوربین در چشم پرنده نمایش داده نمی‌شود." + }, + "layout": { + "label": "چیدمان", + "description": "گزینه‌های چیدمان برای ترکیب چشم پرنده.", + "scaling_factor": { + "label": "ضریب مقیاس", + "description": "ضریب مقیاس مورد استفاده توسط محاسبه‌گر چیدمان (محدوده 1.0 تا 5.0)." + }, + "max_cameras": { + "label": "حداکثر دوربین‌ها", + "description": "حداکثر تعداد دوربین‌ها برای نمایش همزمان در چشم پرنده؛ دوربین‌های اخیر را نشان می‌دهد." + } + }, + "idle_heartbeat_fps": { + "label": "FPS ضربان قلب بیکار", + "description": "فریم بر ثانیه برای ارسال مجدد آخرین فریم ترکیب‌شده چشم پرنده در حالت بیکار؛ 0 برای غیرفعال‌سازی." } }, "detect": { "label": "تشخیص شیء", "description": "تنظیمات مربوط به نقش تشخیص/شناسایی که برای اجرای تشخیص شیء و مقداردهی اولیه ردیاب‌ها استفاده می‌شود.", "enabled": { - "label": "‫تشخیص فعال شد" + "label": "‫تشخیص فعال شد", + "description": "فعال یا غیرفعال کردن تشخیص اشیاء برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "height": { "label": "تشخیص ارتفاع", @@ -118,11 +174,45 @@ "face_recognition": { "label": "تشخیص چهره", "enabled": { - "label": "فعال کردن تشخیص چهره" + "label": "فعال کردن تشخیص چهره", + "description": "فعال یا غیرفعال کردن شناسایی چهره برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "min_area": { "label": "حداقل مساحت صورت", "description": "حداقل مساحت (پیکسل) از کادر چهره شناسایی شده که برای تلاش برای شناسایی مورد نیاز است." + }, + "description": "تنظیمات تشخیص و شناسایی چهره برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین.", + "model_size": { + "label": "مدل size", + "description": "مدل size to use for face embeddings (small/large); larger may require GPU." + }, + "unknown_score": { + "label": "آستانه امتیاز ناشناخته", + "description": "آستانه فاصله که زیر آن یک چهره به‌عنوان تطابق بالقوه در نظر گرفته می‌شود (بالاتر = سخت‌گیرانه‌تر)." + }, + "detection_threshold": { + "label": "آستانه تشخیص", + "description": "حداقل اطمینان تشخیص مورد نیاز برای در نظر گرفتن تشخیص چهره معتبر." + }, + "recognition_threshold": { + "label": "آستانه شناسایی", + "description": "آستانه فاصله جاسازی چهره برای در نظر گرفتن دو چهره به‌عنوان تطابق." + }, + "min_faces": { + "label": "حداقل چهره‌ها", + "description": "حداقل تعداد شناسایی‌های چهره مورد نیاز قبل از اعمال یک زیربرچسب شناسایی‌شده روی شخص." + }, + "save_attempts": { + "label": "ذخیره تلاش‌ها", + "description": "تعداد تلاش‌های شناسایی چهره برای نگهداری در رابط کاربری شناسایی اخیر." + }, + "blur_confidence_filter": { + "label": "فیلتر اطمینان تاری", + "description": "تنظیم امتیازهای اطمینان بر اساس تاری تصویر برای کاهش مثبت‌های کاذب برای چهره‌های با کیفیت پایین." + }, + "device": { + "label": "دستگاه", + "description": "این یک لغو است برای هدف‌گیری دستگاه خاص. برای اطلاعات بیشتر به https://onnxruntime.ai/docs/execution-providers/ مراجعه کنید" } }, "ffmpeg": { @@ -206,13 +296,15 @@ "quality": { "label": "کیفیت زنده", "description": "کیفیت کدگذاری برای جریان jsmpeg (۱ بالاترین، ۳۱ پایین‌ترین)." - } + }, + "description": "تنظیمات کنترل وضوح و کیفیت جریان زنده jsmpeg. این روی دوربین‌های بازپخش‌شده که از go2rtc برای نمای زنده استفاده می‌کنند تأثیری ندارد." }, "lpr": { "label": "تشخیص پلاک خودرو", "description": "تنظیمات تشخیص پلاک خودرو شامل آستانه‌های تشخیص، قالب‌بندی و پلاک‌های شناخته‌شده.", "enabled": { - "label": "فعال کردن LPR" + "label": "فعال کردن LPR", + "description": "فعال یا غیرفعال کردن تشخیص پلاک خودرو برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "expire_time": { "label": "ثانیه‌ها منقضی می‌شوند", @@ -225,12 +317,59 @@ "enhancement": { "label": "سطح ارتقاء", "description": "سطح بهبود (0-10) برای اعمال روی محصولات بشقابی قبل از OCR؛ مقادیر بالاتر ممکن است همیشه نتایج را بهبود ندهند، سطوح بالاتر از 5 ممکن است فقط با بشقاب‌های شبانه کار کنند و باید با احتیاط استفاده شوند." + }, + "model_size": { + "label": "مدل size", + "description": "اندازه مدل مورد استفاده برای تشخیص/شناسایی متن. اکثر کاربران باید از 'small' استفاده کنند." + }, + "detection_threshold": { + "label": "آستانه تشخیص", + "description": "آستانه اطمینان تشخیص برای شروع اجرای OCR روی یک پلاک مشکوک." + }, + "recognition_threshold": { + "label": "آستانه شناسایی", + "description": "آستانه اطمینان مورد نیاز برای پیوست متن پلاک شناسایی‌شده به‌عنوان زیربرچسب." + }, + "min_plate_length": { + "label": "حداقل طول پلاک", + "description": "حداقل تعداد نویسه‌هایی که یک پلاک شناسایی‌شده باید داشته باشد تا معتبر در نظر گرفته شود." + }, + "format": { + "label": "رجکس قالب پلاک", + "description": "رجکس اختیاری برای اعتبارسنجی رشته‌های پلاک شناسایی‌شده در برابر قالب مورد انتظار." + }, + "match_distance": { + "label": "فاصله تطابق", + "description": "تعداد عدم تطابق‌های نویسه مجاز هنگام مقایسه پلاک‌های تشخیص‌داده‌شده با پلاک‌های شناخته‌شده." + }, + "known_plates": { + "label": "پلاک‌های شناخته‌شده", + "description": "فهرست پلاک‌ها یا رجکس‌ها برای ردیابی یا هشدار ویژه." + }, + "debug_save_plates": { + "label": "ذخیره پلاک‌های اشکال‌زدایی", + "description": "ذخیره تصاویر برش پلاک برای اشکال‌زدایی عملکرد LPR." + }, + "device": { + "label": "دستگاه", + "description": "این یک لغو است برای هدف‌گیری دستگاه خاص. برای اطلاعات بیشتر به https://onnxruntime.ai/docs/execution-providers/ مراجعه کنید" + }, + "replace_rules": { + "label": "قوانین جایگزینی", + "description": "قوانین جایگزینی رجکس برای نرمال‌سازی رشته‌های پلاک تشخیص‌داده‌شده قبل از تطابق.", + "pattern": { + "label": "الگوی رجکس" + }, + "replacement": { + "label": "رشته جایگزینی" + } } }, "motion": { "label": "تشخیص حرکت", "enabled": { - "label": "فعال کردن تشخیص حرکت" + "label": "فعال کردن تشخیص حرکت", + "description": "فعال یا غیرفعال کردن تشخیص حرکت برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "threshold": { "label": "آستانه حرکت", @@ -278,13 +417,15 @@ }, "raw_mask": { "label": "ماسک خام" - } + }, + "description": "تنظیمات پیش‌فرض تشخیص حرکت اعمال‌شده روی دوربین‌ها مگر اینکه به ازای هر دوربین لغو شود." }, "objects": { "label": "اشیاء", "description": "پیش‌فرض‌های ردیابی اشیا شامل برچسب‌هایی که باید ردیابی شوند و فیلترهای مربوط به هر شیء.", "track": { - "label": "اشیاء برای ردیابی" + "label": "اشیاء برای ردیابی", + "description": "فهرست برچسب‌های اشیاء برای ردیابی در همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "filters": { "label": "فیلترهای شیء", @@ -375,12 +516,48 @@ "label": "حالت اصلی GenAI", "description": "نشان می‌دهد که آیا GenAI در پیکربندی استاتیک اصلی فعال بوده است یا خیر." } + }, + "filters_attribute": { + "label": "فیلترهای ویژگی", + "description": "فیلترهای اعمال‌شده روی ویژگی‌های تشخیص‌داده‌شده برای کاهش مثبت‌های کاذب (مساحت، نسبت، اطمینان).", + "min_area": { + "label": "حداقل مساحت ویژگی", + "description": "حداقل مساحت کادر مرزی (پیکسل یا درصد) مورد نیاز برای این ویژگی. می‌تواند پیکسل (عدد صحیح) یا درصد (اعداد شناور بین 0.000001 و 0.99) باشد." + }, + "max_area": { + "label": "حداکثر مساحت ویژگی", + "description": "حداکثر مساحت کادر مرزی (پیکسل یا درصد) مجاز برای این ویژگی. می‌تواند پیکسل (عدد صحیح) یا درصد (اعداد شناور بین 0.000001 و 0.99) باشد." + }, + "min_ratio": { + "label": "حداقل نسبت ابعاد", + "description": "حداقل نسبت عرض/ارتفاع مورد نیاز برای واجد شرایط بودن کادر مرزی." + }, + "max_ratio": { + "label": "حداکثر نسبت ابعاد", + "description": "حداکثر نسبت عرض/ارتفاع مجاز برای واجد شرایط بودن کادر مرزی." + }, + "threshold": { + "label": "آستانه اطمینان", + "description": "آستانه اطمینان تشخیص میانگین مورد نیاز تا ویژگی به‌عنوان مثبت واقعی در نظر گرفته شود." + }, + "min_score": { + "label": "حداقل اطمینان", + "description": "حداقل اطمینان تشخیص تک‌فریمی مورد نیاز برای مرتبط کردن این ویژگی با شیء والد آن." + }, + "mask": { + "label": "ماسک فیلتر", + "description": "مختصات چندضلعی که مشخص می‌کند این فیلتر در کجای فریم اعمال می‌شود." + }, + "raw_mask": { + "label": "ماسک خام" + } } }, "record": { "label": "ضبط", "enabled": { - "label": "فعال کردن ضبط" + "label": "فعال کردن ضبط", + "description": "فعال یا غیرفعال کردن ضبط برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "expire_interval": { "label": "فاصله پاکسازی رکورد", @@ -442,7 +619,7 @@ "description": "تنظیمات نگهداری برای ضبط رویدادهای تشخیص.", "days": { "label": "روزهای نگهداری", - "description": "تعداد روزهایی که لازم است سوابق رویدادهای شناسایی‌شده نگهداری EMSebi شوند ." + "description": "تعداد روزهایی که ضبط‌های رویدادهای تشخیص باید نگهداری شوند." }, "mode": { "label": "حالت نگهداری", @@ -456,6 +633,13 @@ "hwaccel_args": { "label": "خروجی گرفتن از آرگومان‌های hwaccel", "description": "آرگومان‌های شتاب سخت‌افزاری برای استفاده در عملیات صادرات/تبدیل کد." + }, + "max_concurrent": { + "label": "حداکثر خروجی‌های همزمان", + "description": "حداکثر تعداد کارهای خروجی که همزمان پردازش می‌شوند." + }, + "chapters": { + "label": "فرادادهٔ فصل برای جاسازی در ضبط‌های خروجی‌گرفته‌شده" } }, "preview": { @@ -469,7 +653,8 @@ "enabled_in_config": { "label": "وضعیت ضبط اولیه", "description": "نشان می‌دهد که آیا ضبط در پیکربندی استاتیک اصلی فعال بوده است یا خیر." - } + }, + "description": "تنظیمات ضبط و نگهداری اعمال‌شده روی دوربین‌ها مگر اینکه به ازای هر دوربین لغو شود." }, "review": { "label": "نقد و بررسی", @@ -477,7 +662,8 @@ "label": "پیکربندی هشدارها", "description": "تنظیماتی که برای اشیاء ردیابی شده هشدار ایجاد می‌کنند و نحوه‌ی حفظ هشدارها.", "enabled": { - "label": "فعال کردن هشدارها" + "label": "فعال کردن هشدارها", + "description": "فعال یا غیرفعال کردن تولید هشدار برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "labels": { "label": "برچسب‌های هشدار", @@ -500,7 +686,8 @@ "label": "پیکربندی تشخیص‌ها", "description": "تنظیمات ایجاد رویدادهای تشخیص (غیر هشدار) و مدت زمان نگهداری آنها.", "enabled": { - "label": "فعال کردن تشخیص‌ها" + "label": "فعال کردن تشخیص‌ها", + "description": "فعال یا غیرفعال کردن رویدادهای تشخیص برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "labels": { "label": "برچسب‌های تشخیص", @@ -558,7 +745,8 @@ "label": "اعلان زمینه فعالیت", "description": "دستورالعمل سفارشی که فعالیت‌های مشکوک و غیرمشکوک را توصیف می‌کند تا زمینه‌ای برای خلاصه‌های GenAI فراهم کند." } - } + }, + "description": "تنظیماتی که هشدارها، تشخیص‌ها و خلاصه‌های بازبینی GenAI مورد استفاده رابط کاربری و ذخیره‌سازی را کنترل می‌کنند." }, "semantic_search": { "label": "جستجوی معنایی", @@ -589,12 +777,34 @@ "label": "اقدامات محرک", "description": "فهرست اقداماتی که باید هنگام تطبیق trigger اجرا شوند (اعلان، زیربرچسب، ویژگی)." } + }, + "description": "تنظیمات جستجوی معنایی که جاسازی‌های اشیاء را ساخته و جستجو می‌کند تا موارد مشابه را پیدا کند.", + "enabled": { + "label": "فعال کردن جستجوی معنایی", + "description": "فعال یا غیرفعال کردن ویژگی جستجوی معنایی." + }, + "reindex": { + "label": "بازنمایه‌سازی در شروع", + "description": "راه‌اندازی بازنمایه‌سازی کامل اشیاء ردیابی‌شده تاریخی در پایگاه داده جاسازی‌ها." + }, + "model": { + "label": "مدل جستجوی معنایی یا نام ارائه‌دهنده GenAI", + "description": "مدل جاسازی برای استفاده در جستجوی معنایی (مثلاً 'jinav1') یا نام ارائه‌دهنده GenAI با نقش جاسازی." + }, + "model_size": { + "label": "مدل size", + "description": "انتخاب اندازه مدل؛ 'small' روی CPU اجرا می‌شود و 'large' معمولاً به GPU نیاز دارد." + }, + "device": { + "label": "دستگاه", + "description": "این یک لغو است برای هدف‌گیری دستگاه خاص. برای اطلاعات بیشتر به https://onnxruntime.ai/docs/execution-providers/ مراجعه کنید" } }, "snapshots": { "label": "عکس‌های فوری", "enabled": { - "label": "اسنپ‌شات‌ها فعال شدند" + "label": "اسنپ‌شات‌ها فعال شدند", + "description": "فعال یا غیرفعال کردن ذخیره عکس‌های فوری برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "clean_copy": { "label": "ذخیره نسخه پاک", @@ -637,9 +847,10 @@ } }, "quality": { - "label": "کیفیت JPEG", - "description": "کیفیت کدگذاری JPEG برای عکس‌های ذخیره شده (0-100)." - } + "label": "کیفیت عکس فوری", + "description": "کیفیت کدگذاری برای عکس‌های فوری ذخیره‌شده (0-100)." + }, + "description": "تنظیمات عکس‌های فوری تولیدشده توسط API از اشیاء ردیابی‌شده برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "timestamp_style": { "label": "سبک مهر زمانی", @@ -674,12 +885,14 @@ "effect": { "label": "اثر مهر زمانی", "description": "جلوه بصری برای متن مهر زمانی (هیچ، پر، سایه)." - } + }, + "description": "گزینه‌های استایل‌دهی برای مهرهای زمانی درون فید اعمال‌شده روی نمای اشکال‌زدایی و عکس‌های فوری." }, "notifications": { "label": "اعلان‌ها", "enabled": { - "label": "فعال کردن اعلان‌ها" + "label": "فعال کردن اعلان‌ها", + "description": "فعال یا غیرفعال کردن اعلان‌ها برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "email": { "label": "ایمیل اعلان", @@ -692,7 +905,8 @@ "enabled_in_config": { "label": "وضعیت اعلان‌های اصلی", "description": "نشان می‌دهد که آیا اعلان‌ها در پیکربندی استاتیک اصلی فعال بوده‌اند یا خیر." - } + }, + "description": "تنظیمات فعال‌سازی و کنترل اعلان‌ها برای همه دوربین‌ها؛ قابل لغو به ازای هر دوربین." }, "onvif": { "description": "تنظیمات اتصال ONVIF و ردیابی خودکار PTZ برای این دوربین.", @@ -749,7 +963,7 @@ }, "timeout": { "label": "مهلت بازگشت", - "description": "چند ثانیه صبر کن پس از از دست دادن ردیابی قبل از بازگرداندن دوربین به موقعیت از پیش تعیین شده ." + "description": "پس از قطع ردیابی، این تعداد ثانیه صبر کنید قبل از بازگرداندن دوربین به موقعیت از پیش تعیین‌شده." }, "movement_weights": { "label": "وزنه‌های حرکتی", @@ -764,39 +978,645 @@ "label": "عدم تطابق زمانی را نادیده بگیرید", "description": "برای ارتباط ONVIF، از تفاوت‌های همگام‌سازی زمانی بین دوربین و سرور Frigate صرف نظر کنید." }, - "label": "ONVIF پروتکل استاندارد انتقال تصویر ." + "label": "ONVIF", + "profile": { + "label": "پروفایل ONVIF", + "description": "پروفایل رسانهٔ ONVIF خاص برای کنترل PTZ، مطابقت‌شده با توکن یا نام. اگر تنظیم نشود، اولین پروفایل با پیکربندی PTZ معتبر به‌طور خودکار انتخاب می‌شود." + } }, "mqtt": { - "label": "MQTT یک پروتکل تبادل پیام سبک ." + "label": "MQTT یک پروتکل تبادل پیام سبک .", + "description": "تنظیمات اتصال و انتشار تلمتری، عکس‌های فوری و جزئیات رویداد به یک بروکر MQTT.", + "enabled": { + "label": "فعال کردن MQTT", + "description": "فعال یا غیرفعال کردن یکپارچه‌سازی MQTT برای وضعیت، رویدادها و عکس‌های فوری." + }, + "host": { + "label": "میزبان MQTT", + "description": "نام میزبان یا آدرس IP بروکر MQTT." + }, + "port": { + "label": "پورت MQTT", + "description": "پورت بروکر MQTT (معمولاً 1883 برای MQTT ساده)." + }, + "topic_prefix": { + "label": "پیشوند موضوع", + "description": "پیشوند موضوع MQTT برای همه موضوعات فریگیت؛ در صورت اجرای چندین نمونه باید یکتا باشد." + }, + "client_id": { + "label": "شناسه کلاینت", + "description": "شناسه کلاینت مورد استفاده هنگام اتصال به بروکر MQTT؛ باید به ازای هر نمونه یکتا باشد." + }, + "stats_interval": { + "label": "بازه آمار", + "description": "بازه بر حسب ثانیه برای انتشار آمار سیستم و دوربین به MQTT." + }, + "user": { + "label": "نام کاربری MQTT", + "description": "نام کاربری اختیاری MQTT؛ می‌تواند از طریق متغیرهای محیطی یا اسرار ارائه شود." + }, + "password": { + "label": "رمز عبور MQTT", + "description": "رمز عبور اختیاری MQTT؛ می‌تواند از طریق متغیرهای محیطی یا اسرار ارائه شود." + }, + "tls_ca_certs": { + "label": "گواهی‌های CA برای TLS", + "description": "مسیر گواهی CA برای اتصالات TLS به بروکر (برای گواهی‌های خودامضا)." + }, + "tls_client_cert": { + "label": "گواهی کلاینت", + "description": "مسیر گواهی کلاینت برای احراز هویت متقابل TLS؛ هنگام استفاده از گواهی کلاینت، نام کاربری/رمز عبور تنظیم نکنید." + }, + "tls_client_key": { + "label": "کلید کلاینت", + "description": "مسیر کلید خصوصی برای گواهی کلاینت." + }, + "tls_insecure": { + "label": "TLS ناامن", + "description": "اجازه اتصالات TLS ناامن با نادیده گرفتن تأیید نام میزبان (توصیه نمی‌شود)." + }, + "qos": { + "label": "QoS مربوط به MQTT", + "description": "سطح کیفیت سرویس برای انتشار/اشتراک MQTT (0، 1 یا 2)." + } }, "version": { - "label": "نسخه فعلی config" + "label": "نسخه فعلی پیکربندی", + "description": "نسخه عددی یا رشته‌ای پیکربندی فعال برای کمک به تشخیص مهاجرت‌ها یا تغییرات قالب." }, "safe_mode": { - "label": "حالت امن" + "label": "حالت امن", + "description": "در صورت فعال بودن، فریگیت در حالت امن با ویژگی‌های کاهش‌یافته برای رفع اشکال راه‌اندازی می‌شود." }, "environment_vars": { - "label": "متغیر های محیطی" + "label": "متغیر های محیطی", + "description": "جفت‌های کلید/مقدار متغیرهای محیطی برای تنظیم فرآیند فریگیت در Home Assistant OS. کاربران غیر HAOS باید از پیکربندی متغیرهای محیطی Docker استفاده کنند." }, "logger": { "label": "گزارش گیری", "default": { - "label": "سطح گزارش گیری" + "label": "سطح گزارش گیری", + "description": "سطح گزارش‌گیری سراسری پیش‌فرض (debug، info، warning، error)." + }, + "description": "سطح گزارش‌گیری پیش‌فرض و لغوهای سطح گزارش هر مؤلفه را کنترل می‌کند.", + "logs": { + "label": "سطح گزارش هر فرآیند", + "description": "لغوهای سطح گزارش هر مؤلفه برای افزایش یا کاهش سطح تفصیل ماژول‌های خاص." } }, "auth": { "label": "احراز هویت", "enabled": { - "label": "فعال سازی احراز هویت" + "label": "فعال سازی احراز هویت", + "description": "احراز هویت بومی رابط کاربری فریگیت را فعال کنید." }, "reset_admin_password": { - "label": "بازنشانی رمز ادمین" + "label": "بازنشانی رمز ادمین", + "description": "اگر درست باشد، رمز کاربر مدیر در هنگام راه‌اندازی بازنشانی شده و رمز جدید در گزارش‌ها چاپ می‌شود." }, "trusted_proxies": { - "label": "پراکسی های مورد اعتماد" + "label": "پراکسی های مورد اعتماد", + "description": "فهرست IPهای پراکسی مورد اعتماد که برای تعیین IP کلاینت در محدودیت نرخ استفاده می‌شوند." + }, + "description": "تنظیمات احراز هویت و نشست شامل گزینه‌های کوکی و محدودیت نرخ.", + "cookie_name": { + "label": "نام کوکی JWT", + "description": "نام کوکی مورد استفاده برای ذخیره توکن JWT برای احراز هویت بومی." + }, + "cookie_secure": { + "label": "پرچم امن کوکی", + "description": "پرچم امن را روی کوکی احراز هویت تنظیم کنید؛ هنگام استفاده از TLS باید درست باشد." + }, + "session_length": { + "label": "مدت نشست", + "description": "مدت زمان نشست بر حسب ثانیه برای نشست‌های مبتنی بر JWT." + }, + "refresh_time": { + "label": "پنجره بازنشانی نشست", + "description": "وقتی یک نشست در این تعداد ثانیه از انقضا باشد، آن را به مدت کامل بازنشانی کنید." + }, + "failed_login_rate_limit": { + "label": "محدودیت‌های ورود ناموفق", + "description": "قوانین محدودیت نرخ برای تلاش‌های ورود ناموفق جهت کاهش حملات brute-force." + }, + "hash_iterations": { + "label": "تعداد تکرار هش", + "description": "تعداد تکرارهای PBKDF2-SHA256 برای استفاده هنگام هش کردن رمزهای کاربر." + }, + "roles": { + "label": "نگاشت نقشs", + "description": "نگاشت نقش‌ها به فهرست دوربین‌ها. یک فهرست خالی دسترسی به همه دوربین‌ها را برای نقش فراهم می‌کند." + }, + "admin_first_time_login": { + "label": "پرچم مدیر اولین‌بار", + "description": "در صورت درست بودن، رابط کاربری ممکن است یک پیوند راهنما در صفحه ورود نشان دهد که کاربران را از نحوه ورود پس از بازنشانی رمز مدیر آگاه می‌کند. " } }, "database": { - "label": "پایگاه داده" + "label": "پایگاه داده", + "description": "تنظیمات پایگاه داده SQLite مورد استفاده فریگیت برای ذخیره فراداده اشیاء ردیابی‌شده و ضبط‌ها.", + "path": { + "label": "مسیر پایگاه داده", + "description": "مسیر سیستم فایل که فایل پایگاه داده SQLite فریگیت در آن ذخیره می‌شود." + } + }, + "profiles": { + "label": "پروفایل‌ها", + "description": "تعاریف پروفایل نام‌گذاری‌شده با نام‌های دوستانه. پروفایل‌های دوربین باید به نام‌های تعریف‌شده در اینجا ارجاع دهند.", + "friendly_name": { + "label": "نام دوستانه", + "description": "Display name for this profile shown in the رابط کاربری." + } + }, + "go2rtc": { + "label": "go2rtc", + "description": "تنظیمات سرویس go2rtc یکپارچه برای پخش مجدد زنده و ترجمه جریان." + }, + "networking": { + "label": "شبکه‌بندی", + "description": "تنظیمات مرتبط با شبکه مانند فعال‌سازی IPv6 برای نقاط پایانی فریگیت.", + "ipv6": { + "label": "پیکربندی IPv6", + "description": "تنظیمات خاص IPv6 برای سرویس‌های شبکه فریگیت.", + "enabled": { + "label": "فعال کردن IPv6", + "description": "فعال کردن IPv6 support for Frigate services (API and رابط کاربری) where applicable." + } + }, + "listen": { + "label": "پیکربندی پورت‌های شنود", + "description": "پیکربندی پورت‌های شنود داخلی و خارجی. این برای کاربران پیشرفته است. برای اکثر موارد استفاده، توصیه می‌شود بخش پورت‌های فایل Docker compose خود را تغییر دهید.", + "internal": { + "label": "پورت داخلی", + "description": "پورت شنود داخلی فریگیت (پیش‌فرض 5000)." + }, + "external": { + "label": "پورت خارجی", + "description": "پورت شنود خارجی فریگیت (پیش‌فرض 8971)." + } + } + }, + "proxy": { + "label": "پروکسی", + "description": "تنظیمات یکپارچه‌سازی فریگیت پشت یک پروکسی معکوس که هدرهای کاربر احراز هویت‌شده را ارسال می‌کند.", + "header_map": { + "label": "نگاشت هدر", + "description": "نگاشت هدرهای پروکسی ورودی به فیلدهای کاربر و نقش فریگیت برای احراز هویت مبتنی بر پروکسی.", + "user": { + "label": "هدر کاربر", + "description": "هدر حاوی نام کاربری احراز هویت‌شده ارائه‌شده توسط پروکسی بالادستی." + }, + "role": { + "label": "هدر نقش", + "description": "هدر حاوی نقش یا گروه‌های کاربر احراز هویت‌شده از پروکسی بالادستی." + }, + "role_map": { + "label": "نگاشت نقش", + "description": "نگاشت مقادیر گروه بالادستی به نقش‌های فریگیت (مثلاً نگاشت گروه‌های مدیر به نقش مدیر)." + } + }, + "logout_url": { + "label": "آدرس خروج", + "description": "آدرس برای هدایت کاربران هنگام خروج از طریق پروکسی." + }, + "auth_secret": { + "label": "پروکسی secret", + "description": "رمز اختیاری که در برابر هدر X-پروکسی-Secret بررسی می‌شود تا پروکسی‌های مورد اعتماد تأیید شوند." + }, + "default_role": { + "label": "نقش پیش‌فرض", + "description": "نقش پیش‌فرض assigned to proxy-authenticated users when no role mapping applies." + }, + "separator": { + "label": "نویسه جداکننده", + "description": "نویسه مورد استفاده برای تفکیک مقادیر چندگانه ارائه‌شده در هدرهای پروکسی." + } + }, + "telemetry": { + "label": "تلمتری", + "description": "گزینه‌های تلمتری و آمار سیستم شامل پایش GPU و پهنای باند شبکه.", + "network_interfaces": { + "label": "رابط‌های شبکه", + "description": "فهرست پیشوندهای نام رابط شبکه برای پایش آمار پهنای باند." + }, + "stats": { + "label": "آمار سیستم", + "description": "گزینه‌هایی برای فعال/غیرفعال کردن جمع‌آوری آمارهای مختلف سیستم و GPU.", + "amd_gpu_stats": { + "label": "آمار GPU ای‌ام‌دی", + "description": "فعال‌سازی جمع‌آوری آمار GPU AMD در صورت وجود GPU AMD." + }, + "intel_gpu_stats": { + "label": "آمار GPU اینتل", + "description": "فعال‌سازی جمع‌آوری آمار GPU اینتل در صورت وجود GPU اینتل." + }, + "network_bandwidth": { + "label": "پهنای باند شبکه", + "description": "فعال‌سازی پایش پهنای باند شبکه به ازای هر فرآیند برای فرآیندهای ffmpeg دوربین و آشکارسازها (نیازمند قابلیت‌ها)." + }, + "intel_gpu_device": { + "label": "دستگاه GPU اینتل", + "description": "PCI bus address or DRM device path (e.g. /dev/dri/card1) used to pin آمار GPU اینتل to a specific device when multiple are present." + } + }, + "version_check": { + "label": "بررسی نسخه", + "description": "فعال‌سازی یک بررسی خروجی برای تشخیص در دسترس بودن نسخه جدیدتر فریگیت." + } + }, + "tls": { + "label": "TLS", + "description": "تنظیمات TLS برای نقاط پایانی وب فریگیت (پورت 8971).", + "enabled": { + "label": "فعال کردن TLS", + "description": "فعال کردن TLS for Frigate's web رابط کاربری and API on the configured TLS port." + } + }, + "ui": { + "label": "رابط کاربری", + "description": "ترجیحات رابط کاربری مانند منطقه زمانی، قالب‌بندی زمان/تاریخ و واحدها.", + "timezone": { + "label": "منطقه زمانی", + "description": "منطقه زمانی اختیاری برای نمایش در رابط کاربری (پیش‌فرض زمان محلی مرورگر در صورت تنظیم نشدن)." + }, + "time_format": { + "label": "قالب زمان", + "description": "قالب زمان برای استفاده در رابط کاربری (مرورگر، 12 ساعته یا 24 ساعته)." + }, + "unit_system": { + "label": "سیستم واحدها", + "description": "سیستم واحدها for display (metric or imperial) used in the رابط کاربری and MQTT." + } + }, + "detectors": { + "label": "سخت‌افزار آشکارساز", + "description": "پیکربندی آشکارسازهای اشیاء (CPU، GPU، پس‌زمینه‌های ONNX) و تنظیمات مدل خاص آشکارساز.", + "type": { + "label": "نوع" + }, + "model": { + "label": "پیکربندی مدل خاص آشکارساز", + "description": "گزینه‌های پیکربندی مدل خاص آشکارساز (مسیر، اندازه ورودی و غیره).", + "path": { + "label": "مسیر مدل آشکارساز اشیاء سفارشی", + "description": "مسیر فایل مدل تشخیص سفارشی (یا plus:// برای مدل‌های Frigate+)." + }, + "labelmap_path": { + "label": "نقشه برچسب برای آشکارساز اشیاء سفارشی", + "description": "مسیر فایل نقشه برچسب که کلاس‌های عددی را به برچسب‌های رشته‌ای برای آشکارساز نگاشت می‌کند." + }, + "width": { + "label": "عرض ورودی مدل تشخیص اشیاء", + "description": "عرض تنسور ورودی مدل بر حسب پیکسل." + }, + "height": { + "label": "ارتفاع ورودی مدل تشخیص اشیاء", + "description": "ارتفاع of the model input tensor in pixels." + }, + "labelmap": { + "label": "سفارشی‌سازی نقشه برچسب", + "description": "ورودی‌های لغو یا نگاشت مجدد برای ادغام در نقشه برچسب استاندارد." + }, + "attributes_map": { + "label": "نگاشت برچسب‌های اشیاء به برچسب‌های ویژگی‌هایشان", + "description": "نگاشت از برچسب‌های اشیاء به برچسب‌های ویژگی برای پیوست فراداده (مثلاً 'car' -> ['license_plate'])." + }, + "input_tensor": { + "label": "مدل Input Tensor Shape", + "description": "قالب تنسور مورد انتظار مدل: 'nhwc' یا 'nchw'." + }, + "input_pixel_format": { + "label": "مدل Input Pixel Color Format", + "description": "فضای رنگ پیکسل مورد انتظار مدل: 'rgb'، 'bgr' یا 'yuv'." + }, + "input_dtype": { + "label": "مدل Input D نوع", + "description": "نوع داده تنسور ورودی مدل (مثلاً 'float32')." + }, + "model_type": { + "label": "Object Detection مدل نوع", + "description": "نوع معماری مدل آشکارساز (ssd، yolox، yolonas، yolo-generic، rfdetr، dfine) که توسط برخی آشکارسازها برای بهینه‌سازی استفاده می‌شود." + } + }, + "model_path": { + "label": "مسیر مدل خاص آشکارساز", + "description": "مسیر فایل باینری مدل آشکارساز در صورت نیاز توسط آشکارساز انتخاب‌شده." + }, + "axengine": { + "label": "NPU با موتور AXEngine", + "description": "آشکارساز NPU ایکس‌اِرا AX650N/AX8850N که فایل‌های .axmodel کامپایل‌شده را از طریق زمان اجرای AXEngine اجرا می‌کند." + }, + "cpu": { + "label": "CPU", + "description": "آشکارساز TFLite پردازنده که مدل‌های TensorFlow Lite را روی CPU میزبان بدون شتاب سخت‌افزاری اجرا می‌کند. توصیه نمی‌شود.", + "num_threads": { + "label": "تعداد رشته‌های تشخیص", + "description": "تعداد رشته‌های مورد استفاده برای استنتاج مبتنی بر CPU." + } + }, + "deepstack": { + "label": "DeepStack", + "description": "آشکارساز DeepStack/CodeProject.AI که تصاویر را به یک API از راه دور DeepStack برای استنتاج ارسال می‌کند. توصیه نمی‌شود.", + "api_url": { + "label": "آدرس API دیپ‌استک", + "description": "آدرس API دیپ‌استک." + }, + "api_timeout": { + "label": "زمان انقضای API دیپ‌استک (به ثانیه)", + "description": "حداکثر زمان مجاز برای درخواست API دیپ‌استک." + }, + "api_key": { + "label": "DeepStack کلید API (if required)", + "description": "کلید API اختیاری برای سرویس‌های احراز هویت‌شده DeepStack." + } + }, + "edgetpu": { + "label": "EdgeTPU", + "description": "آشکارساز EdgeTPU که مدل‌های TensorFlow Lite کامپایل‌شده برای Coral EdgeTPU را با استفاده از delegate EdgeTPU اجرا می‌کند.", + "device": { + "label": "دستگاه نوع", + "description": "دستگاه مورد استفاده برای استنتاج EdgeTPU (مثلاً 'usb'، 'pci')." + } + }, + "hailo8l": { + "label": "Hailo-8/Hailo-8L", + "description": "آشکارساز Hailo-8/Hailo-8L که از مدل‌های HEF و SDK هیلو‌آر‌تی برای استنتاج روی سخت‌افزار Hailo استفاده می‌کند.", + "device": { + "label": "دستگاه نوع", + "description": "دستگاه مورد استفاده برای استنتاج Hailo (مثلاً 'PCIe'، 'M.2')." + } + }, + "memryx": { + "label": "MemryX", + "description": "آشکارساز MemryX MX3 که مدل‌های DFP کامپایل‌شده را روی شتاب‌دهنده‌های MemryX اجرا می‌کند.", + "device": { + "label": "دستگاه Path", + "description": "دستگاه مورد استفاده برای استنتاج MemryX (مثلاً 'PCIe')." + } + }, + "onnx": { + "label": "ONNX", + "description": "آشکارساز ONNX برای اجرای مدل‌های ONNX؛ از پس‌زمینه‌های شتاب‌دهی موجود (CUDA/ROCm/OpenVINO) در صورت وجود استفاده می‌کند.", + "device": { + "label": "دستگاه نوع", + "description": "دستگاه مورد استفاده برای استنتاج ONNX (مثلاً 'AUTO'، 'CPU'، 'GPU')." + } + }, + "openvino": { + "label": "OpenVINO", + "description": "آشکارساز OpenVINO برای پردازنده‌های AMD و اینتل، GPUهای اینتل و سخت‌افزار VPU اینتل.", + "device": { + "label": "دستگاه نوع", + "description": "دستگاه مورد استفاده برای استنتاج OpenVINO (مثلاً 'CPU'، 'GPU'، 'NPU')." + } + }, + "rknn": { + "label": "RKNN", + "description": "آشکارساز RKNN برای NPUهای راک‌چیپ؛ مدل‌های RKNN کامپایل‌شده را روی سخت‌افزار راک‌چیپ اجرا می‌کند.", + "num_cores": { + "label": "تعداد هسته‌های NPU برای استفاده.", + "description": "تعداد هسته‌های NPU برای استفاده (0 برای خودکار)." + } + }, + "synaptics": { + "label": "سیناپتیکس", + "description": "سیناپتیکس NPU detector for models in .synap format using the Synap SDK on سیناپتیکس hardware." + }, + "teflon_tfl": { + "label": "تفلون", + "description": "آشکارساز delegate تفلون برای TFLite با استفاده از کتابخانه delegate تفلون Mesa برای شتاب‌دهی استنتاج روی GPUهای پشتیبانی‌شده." + }, + "tensorrt": { + "label": "TensorRT", + "description": "آشکارساز TensorRT برای دستگاه‌های Nvidia Jetson با استفاده از موتورهای TensorRT سری‌سازی‌شده برای استنتاج شتاب‌دهی‌شده.", + "device": { + "label": "GPU دستگاه Index", + "description": "شاخص دستگاه GPU برای استفاده." + } + }, + "zmq": { + "label": "ZMQ IPC", + "description": "آشکارساز ZMQ IPC که استنتاج را به یک فرآیند خارجی از طریق یک نقطه پایانی ZeroMQ IPC تخلیه می‌کند.", + "endpoint": { + "label": "نقطه پایانی ZMQ IPC", + "description": "نقطه پایانی ZMQ برای اتصال." + }, + "request_timeout_ms": { + "label": "زمان انقضای درخواست ZMQ بر حسب میلی‌ثانیه", + "description": "زمان انقضای درخواست‌های ZMQ بر حسب میلی‌ثانیه." + }, + "linger_ms": { + "label": "ماندن سوکت ZMQ بر حسب میلی‌ثانیه", + "description": "دوره ماندن سوکت بر حسب میلی‌ثانیه." + } + } + }, + "model": { + "label": "مدل تشخیص", + "description": "تنظیمات برای پیکربندی یک مدل تشخیص اشیاء سفارشی و شکل ورودی آن.", + "path": { + "label": "مسیر مدل آشکارساز اشیاء سفارشی", + "description": "مسیر فایل مدل تشخیص سفارشی (یا plus:// برای مدل‌های Frigate+)." + }, + "labelmap_path": { + "label": "نقشه برچسب برای آشکارساز اشیاء سفارشی", + "description": "مسیر فایل نقشه برچسب که کلاس‌های عددی را به برچسب‌های رشته‌ای برای آشکارساز نگاشت می‌کند." + }, + "width": { + "label": "عرض ورودی مدل تشخیص اشیاء", + "description": "عرض تنسور ورودی مدل بر حسب پیکسل." + }, + "height": { + "label": "ارتفاع ورودی مدل تشخیص اشیاء", + "description": "ارتفاع of the model input tensor in pixels." + }, + "labelmap": { + "label": "سفارشی‌سازی نقشه برچسب", + "description": "ورودی‌های لغو یا نگاشت مجدد برای ادغام در نقشه برچسب استاندارد." + }, + "attributes_map": { + "label": "نگاشت برچسب‌های اشیاء به برچسب‌های ویژگی‌هایشان", + "description": "نگاشت از برچسب‌های اشیاء به برچسب‌های ویژگی برای پیوست فراداده (مثلاً 'car' -> ['license_plate'])." + }, + "input_tensor": { + "label": "مدل Input Tensor Shape", + "description": "قالب تنسور مورد انتظار مدل: 'nhwc' یا 'nchw'." + }, + "input_pixel_format": { + "label": "مدل Input Pixel Color Format", + "description": "فضای رنگ پیکسل مورد انتظار مدل: 'rgb'، 'bgr' یا 'yuv'." + }, + "input_dtype": { + "label": "مدل Input D نوع", + "description": "نوع داده تنسور ورودی مدل (مثلاً 'float32')." + }, + "model_type": { + "label": "Object Detection مدل نوع", + "description": "نوع معماری مدل آشکارساز (ssd، yolox، yolonas، yolo-generic، rfdetr، dfine) که توسط برخی آشکارسازها برای بهینه‌سازی استفاده می‌شود." + } + }, + "genai": { + "label": "پیکربندی هوش مصنوعی مولد", + "description": "تنظیمات ارائه‌دهندگان هوش مصنوعی مولد یکپارچه برای تولید توضیحات اشیاء و خلاصه‌های بازبینی.", + "api_key": { + "label": "کلید API", + "description": "کلید API required by some providers (can also be set via environment variables)." + }, + "base_url": { + "label": "آدرس پایه", + "description": "آدرس پایه for self-hosted or compatible providers (for example an Ollama instance)." + }, + "model": { + "label": "مدل", + "description": "مدل مورد استفاده از ارائه‌دهنده برای تولید توضیحات یا خلاصه‌ها." + }, + "provider": { + "label": "ارائه‌دهنده", + "description": "ارائه‌دهنده GenAI برای استفاده (مثلاً: ollama، gemini، openai)." + }, + "roles": { + "label": "نقش‌ها", + "description": "نقش‌های GenAI (گفتگو، توضیحات، جاسازی‌ها)؛ یک ارائه‌دهنده به ازای هر نقش." + }, + "provider_options": { + "label": "گزینه‌های ارائه‌دهنده", + "description": "گزینه‌های اضافی خاص ارائه‌دهنده برای ارسال به کلاینت GenAI." + }, + "runtime_options": { + "label": "گزینه‌های زمان اجرا", + "description": "گزینه‌های زمان اجرا passed to the provider for each inference call." + } + }, + "classification": { + "label": "نحوه طبقه‌بندی اشیاء", + "description": "تنظیمات مدل‌های طبقه‌بندی برای اصلاح برچسب‌های اشیاء یا طبقه‌بندی وضعیت.", + "bird": { + "label": "طبقه‌بندی پرندگان config", + "description": "تنظیمات خاص مدل‌های طبقه‌بندی پرندگان.", + "enabled": { + "label": "طبقه‌بندی پرندگان", + "description": "فعال یا غیرفعال کردن طبقه‌بندی پرندگان." + }, + "threshold": { + "label": "حداقل امتیاز", + "description": "حداقل امتیاز طبقه‌بندی مورد نیاز برای پذیرش طبقه‌بندی پرنده." + } + }, + "custom": { + "label": "Custom Classification مدلs", + "description": "پیکربندی مدل‌های طبقه‌بندی سفارشی برای اشیاء یا تشخیص وضعیت.", + "enabled": { + "label": "فعال کردن مدل", + "description": "فعال یا غیرفعال کردن مدل طبقه‌بندی سفارشی." + }, + "name": { + "label": "مدل name", + "description": "شناسه مدل طبقه‌بندی سفارشی برای استفاده." + }, + "threshold": { + "label": "آستانه امتیاز", + "description": "آستانه امتیاز used to change the classification state." + }, + "save_attempts": { + "label": "ذخیره تلاش‌ها", + "description": "تعداد تلاش‌های طبقه‌بندی برای ذخیره در رابط کاربری طبقه‌بندی‌های اخیر." + }, + "object_config": { + "objects": { + "label": "طبقه‌بندی اشیاء", + "description": "فهرست انواع اشیاء برای اجرای طبقه‌بندی اشیاء." + }, + "classification_type": { + "label": "نوع طبقه‌بندی", + "description": "نوع طبقه‌بندی applied: 'sub_label' (adds sub_label) or other supported types." + } + }, + "state_config": { + "cameras": { + "label": "دوربین‌های طبقه‌بندی", + "description": "برش و تنظیمات به ازای هر دوربین برای اجرای طبقه‌بندی وضعیت.", + "crop": { + "label": "برش طبقه‌بندی", + "description": "مختصات برش برای استفاده در اجرای طبقه‌بندی روی این دوربین." + } + }, + "motion": { + "label": "اجرا هنگام حرکت", + "description": "اگر درست باشد، طبقه‌بندی هنگام تشخیص حرکت در برش مشخص‌شده اجرا می‌شود." + }, + "interval": { + "label": "بازه طبقه‌بندی", + "description": "بازه (ثانیه) بین اجراهای دوره‌ای طبقه‌بندی برای طبقه‌بندی وضعیت." + } + } + } + }, + "camera_groups": { + "label": "گروه‌های دوربین", + "description": "پیکربندی گروه‌های دوربین نام‌گذاری‌شده برای سازماندهی دوربین‌ها در رابط کاربری.", + "cameras": { + "label": "فهرست دوربین‌ها", + "description": "آرایه‌ای از نام‌های دوربین موجود در این گروه." + }, + "icon": { + "label": "آیکون گروه", + "description": "Icon used to represent the camera group in the رابط کاربری." + }, + "order": { + "label": "ترتیب مرتب‌سازی", + "description": "Numeric order used to sort camera groups in the رابط کاربری; larger numbers appear later." + } + }, + "active_profile": { + "label": "پروفایل فعال", + "description": "نام پروفایل فعال فعلی. فقط در زمان اجرا، در YAML ذخیره نمی‌شود." + }, + "camera_mqtt": { + "label": "MQTT", + "description": "تنظیمات انتشار تصویر MQTT.", + "enabled": { + "label": "ارسال تصویر", + "description": "فعال‌سازی انتشار عکس‌های فوری اشیاء به موضوعات MQTT برای این دوربین." + }, + "timestamp": { + "label": "افزودن مهر زمانی", + "description": "قرار دادن مهر زمانی روی تصاویر منتشرشده به MQTT." + }, + "bounding_box": { + "label": "افزودن کادر مرزی", + "description": "رسم کادرهای مرزی روی تصاویر منتشرشده از طریق MQTT." + }, + "crop": { + "label": "برش تصویر", + "description": "برش تصاویر منتشرشده به MQTT به کادر مرزی شیء تشخیص‌داده‌شده." + }, + "height": { + "label": "ارتفاع تصویر", + "description": "ارتفاع (pixels) to resize images published over MQTT." + }, + "required_zones": { + "label": "مناطق مورد نیاز", + "description": "مناطقی که یک شیء باید وارد شود تا یک تصویر MQTT منتشر شود." + }, + "quality": { + "label": "کیفیت JPEG", + "description": "کیفیت JPEG برای تصاویر منتشرشده به MQTT (0-100)." + } + }, + "camera_ui": { + "label": "رابط کاربری دوربین", + "description": "ترتیب نمایش و قابلیت مشاهده این دوربین در رابط کاربری. ترتیب روی داشبورد پیش‌فرض تأثیر می‌گذارد. برای کنترل دقیق‌تر از گروه‌های دوربین استفاده کنید.", + "order": { + "label": "ترتیب رابط کاربری", + "description": "Numeric order used to sort the camera in the رابط کاربری (default dashboard and lists); larger numbers appear later." + }, + "dashboard": { + "label": "نمایش در داشبورد پخش زنده", + "description": "مشخص کنید که آیا این دوربین در داشبورد پیش‌فرض همه دوربین‌های زنده قابل مشاهده باشد. دوربین در همه جای رابط کاربری از جمله گروه‌های دوربین و تنظیمات در دسترس باقی می‌ماند." + }, + "review": { + "label": "نمایش در بازبینی", + "description": "مشخص کنید که آیا این دوربین در بازبینی قابل مشاهده باشد (صفحه بازبینی و فیلتر دوربین آن، بازبینی حرکت و نمای تاریخچه)." + } } } diff --git a/web/public/locales/fa/config/groups.json b/web/public/locales/fa/config/groups.json index 0967ef424b..bc21873300 100644 --- a/web/public/locales/fa/config/groups.json +++ b/web/public/locales/fa/config/groups.json @@ -1 +1,73 @@ -{} +{ + "audio": { + "global": { + "detection": "تشخیص سراسری", + "sensitivity": "حساسیت سراسری" + }, + "cameras": { + "detection": "تشخیص", + "sensitivity": "حساسیت" + } + }, + "timestamp_style": { + "global": { + "appearance": "ظاهر سراسری" + }, + "cameras": { + "appearance": "ظاهر" + } + }, + "motion": { + "global": { + "sensitivity": "حساسیت سراسری", + "algorithm": "الگوریتم سراسری" + }, + "cameras": { + "sensitivity": "حساسیت", + "algorithm": "الگوریتم" + } + }, + "snapshots": { + "global": { + "display": "نمایش سراسری" + }, + "cameras": { + "display": "نمایش" + } + }, + "detect": { + "global": { + "resolution": "وضوح سراسری", + "tracking": "ردیابی سراسری" + }, + "cameras": { + "resolution": "وضوح", + "tracking": "ردیابی" + } + }, + "objects": { + "global": { + "tracking": "ردیابی سراسری", + "filtering": "پالایش سراسری" + }, + "cameras": { + "tracking": "ردیابی", + "filtering": "پالایش" + } + }, + "record": { + "global": { + "retention": "نگهداری سراسری", + "events": "رویدادهای سراسری" + }, + "cameras": { + "retention": "نگهداری", + "events": "رویدادها" + } + }, + "ffmpeg": { + "cameras": { + "cameraFfmpeg": "آرگومان‌های FFmpeg اختصاصی دوربین" + } + } +} diff --git a/web/public/locales/fa/config/validation.json b/web/public/locales/fa/config/validation.json index 0967ef424b..93c0919883 100644 --- a/web/public/locales/fa/config/validation.json +++ b/web/public/locales/fa/config/validation.json @@ -1 +1,35 @@ -{} +{ + "minimum": "باید حداقل {{limit}} باشد", + "maximum": "باید حداکثر {{limit}} باشد", + "exclusiveMinimum": "باید بزرگ‌تر از {{limit}} باشد", + "exclusiveMaximum": "باید کم‌تر از {{limit}} باشد", + "minLength": "باید حداقل {{limit}} نویسه باشد", + "maxLength": "باید حداکثر {{limit}} نویسه باشد", + "minItems": "باید حداقل {{limit}} مورد داشته باشد", + "maxItems": "باید حداکثر {{limit}} مورد داشته باشد", + "pattern": "قالب نامعتبر", + "required": "این فیلد الزامی است", + "type": "نوع مقدار نامعتبر", + "enum": "باید یکی از مقادیر مجاز باشد", + "const": "مقدار با ثابت مورد انتظار مطابقت ندارد", + "uniqueItems": "همه موارد باید یکتا باشند", + "format": "قالب نامعتبر", + "additionalProperties": "ویژگی ناشناخته مجاز نیست", + "oneOf": "باید دقیقاً با یکی از طرح‌واره‌های مجاز مطابقت داشته باشد", + "anyOf": "باید با حداقل یکی از طرح‌واره‌های مجاز مطابقت داشته باشد", + "proxy": { + "header_map": { + "roleHeaderRequired": "هنگامی که نگاشت نقش‌ها پیکربندی شده است، هدر نقش الزامی است." + } + }, + "ffmpeg": { + "inputs": { + "rolesUnique": "هر نقش فقط می‌تواند به یک جریان ورودی اختصاص یابد.", + "detectRequired": "حداقل یک جریان ورودی باید نقش «detect» داشته باشد.", + "hwaccelDetectOnly": "فقط جریان ورودی با نقش detect می‌تواند آرگومان‌های شتاب‌دهی سخت‌افزاری تعریف کند." + } + }, + "detect": { + "dimensionMustBeEven": "باید یک عدد زوج باشد." + } +} diff --git a/web/public/locales/fa/objects.json b/web/public/locales/fa/objects.json index c2ce4e4cf1..f783bde9b9 100644 --- a/web/public/locales/fa/objects.json +++ b/web/public/locales/fa/objects.json @@ -116,5 +116,16 @@ "nzpost": "اِن‌زد پُست", "gls": "جی‌اِل‌اِس", "dpd": "دی‌پی‌دی", - "surfboard": "تخته موج سواری" + "surfboard": "تخته موج سواری", + "canada_post": "پست کانادا", + "royal_mail": "پست سلطنتی", + "school_bus": "اتوبوس مدرسه", + "skunk": "اسکانک", + "kangaroo": "کانگورو", + "baby": "نوزاد", + "baby_stroller": "کالسکه نوزاد", + "rickshaw": "ریکشا", + "rodent": "جونده", + "possum": "صاریغ", + "garbage_truck": "کامیون زباله" } diff --git a/web/public/locales/fa/views/chat.json b/web/public/locales/fa/views/chat.json index 0967ef424b..e947e96bf2 100644 --- a/web/public/locales/fa/views/chat.json +++ b/web/public/locales/fa/views/chat.json @@ -1 +1,72 @@ -{} +{ + "documentTitle": "گفتگو - فریگیت", + "title": "گفتگوی فریگیت", + "subtitle": "دستیار هوش مصنوعی شما برای مدیریت دوربین و دریافت بینش", + "placeholder": "هر چیزی بپرسید...", + "error": "خطایی رخ داد. لطفاً دوباره تلاش کنید.", + "processing": "در حال پردازش...", + "toolsUsed": "استفاده‌شده: {{tools}}", + "showTools": "نمایش ابزارها ({{count}})", + "hideTools": "پنهان کردن ابزارها", + "call": "فراخوانی", + "result": "نتیجه", + "arguments": "آرگومان‌ها:", + "response": "پاسخ:", + "attachment_chip_label": "{{label}} در {{camera}}", + "attachment_chip_remove": "حذف پیوست", + "open_in_explore": "باز کردن در کاوش", + "attach_event_aria": "پیوست رویداد {{eventId}}", + "attachment_picker_paste_label": "یا شناسه رویداد را جای‌گذاری کنید", + "attachment_picker_attach": "پیوست", + "attachment_picker_placeholder": "پیوست یک رویداد", + "quick_reply_find_similar": "یافتن مشاهدات مشابه", + "quick_reply_tell_me_more": "بیشتر درباره این به من بگو", + "quick_reply_when_else": "چه زمان‌های دیگری دیده شده؟", + "quick_reply_find_similar_text": "مشاهدات مشابه این را پیدا کن.", + "quick_reply_tell_me_more_text": "بیشتر درباره این یکی به من بگو.", + "quick_reply_when_else_text": "چه زمان‌های دیگری این دیده شده است؟", + "anchor": "ارجاع", + "similarity_score": "شباهت", + "no_similar_objects_found": "شیء مشابهی یافت نشد.", + "semantic_search_required": "برای یافتن اشیای مشابه، جست‌وجوی معنایی باید فعال باشد.", + "send": "ارسال", + "suggested_requests": "این موارد را امتحان کنید:", + "starting_requests": { + "show_recent_events": "نمایش رویدادهای اخیر", + "show_camera_status": "نمایش وضعیت دوربین", + "recap": "وقتی من نبودم چه اتفاقی افتاد؟", + "watch_camera": "تماشای دوربین برای فعالیت" + }, + "starting_requests_prompts": { + "show_recent_events": "رویدادهای اخیر در یک ساعت گذشته را نشان بده", + "show_camera_status": "وضعیت فعلی دوربین‌های من چیست؟", + "recap": "وقتی من نبودم چه اتفاقی افتاد؟", + "watch_camera": "درب جلویی را تماشا کن و اگر کسی ظاهر شد به من اطلاع بده" + }, + "new_chat": "گفتگوی جدید", + "settings": { + "title": "تنظیمات گفتگو", + "show_stats": { + "title": "نمایش آمار", + "desc": "نرخ تولید و اندازه زمینه برای پاسخ‌های گفتگو را نشان بده.", + "while_generating": "هنگام تولید", + "always": "همیشه" + }, + "auto_scroll": { + "title": "پیمایش خودکار", + "desc": "پیام‌های جدید را هنگام رسیدن دنبال کن." + } + }, + "stats": { + "context": "{{tokens}} توکن", + "tokens_per_second": "{{rate}} ت/ث" + }, + "reasoning": { + "active": "در حال استدلال…", + "show": "نمایش استدلال", + "hide": "پنهان کردن استدلال" + }, + "thinking": { + "toggle": "فعال/غیرفعال کردن تفکر" + } +} diff --git a/web/public/locales/fa/views/classificationModel.json b/web/public/locales/fa/views/classificationModel.json index 5bb59eabae..a8d858b6fe 100644 --- a/web/public/locales/fa/views/classificationModel.json +++ b/web/public/locales/fa/views/classificationModel.json @@ -11,17 +11,18 @@ }, "toast": { "success": { - "deletedCategory_one": "کلاس حذف شده", - "deletedCategory_other": "", - "deletedImage_one": "عکس های حذف شده", - "deletedImage_other": "", + "deletedCategory_one": "{{count}} کلاس حذف شد", + "deletedCategory_other": "{{count}} کلاس حذف شدند", + "deletedImage_one": "{{count}} تصویر حذف شد", + "deletedImage_other": "{{count}} تصویر حذف شدند", "categorizedImage": "تصویر طبقه بندی شده", "trainedModel": "مدل آموزش دیده شده.", "trainingModel": "آموزش دادن مدل با موفقیت شروع شد.", "deletedModel_one": "{{count}} مدل با موفقیت حذف شد", "deletedModel_other": "{{count}} مدل با موفقیت حذف شدند", "updatedModel": "پیکربندی مدل با موفقیت به‌روزرسانی شد", - "renamedCategory": "نام کلاس با موفقیت به {{name}} تغییر یافت" + "renamedCategory": "نام کلاس با موفقیت به {{name}} تغییر یافت", + "reclassifiedImage": "طبقه‌بندی مجدد تصویر با موفقیت انجام شد" }, "error": { "deleteImageFailed": "حذف نشد: {{errorMessage}}", @@ -31,7 +32,8 @@ "trainingFailed": "آموزش مدل ناموفق بود. برای جزئیات، گزارش‌های Frigate را بررسی کنید.", "trainingFailedToStart": "شروع آموزش مدل ناموفق بود: {{errorMessage}}", "updateModelFailed": "به‌روزرسانی مدل ناموفق بود: {{errorMessage}}", - "renameCategoryFailed": "تغییر نام کلاس ناموفق بود: {{errorMessage}}" + "renameCategoryFailed": "تغییر نام کلاس ناموفق بود: {{errorMessage}}", + "reclassifyFailed": "طبقه‌بندی مجدد تصویر ناموفق بود: {{errorMessage}}" } }, "documentTitle": "دسته بندی مدل ها - فریگیت", @@ -158,14 +160,32 @@ "noImages": "هیچ تصویر نمونه‌ای تولید نشد", "modelCreated": "مدل با موفقیت ایجاد شد. از نمای «طبقه‌بندی‌های اخیر» برای افزودن تصاویرِ وضعیت‌هایِ جاافتاده استفاده کنید، سپس مدل را آموزش دهید.", "generateSuccess": "تصاویر نمونه با موفقیت تولید شد", - "selectImagesPrompt": "همهٔ تصاویر با {{className}} را انتخاب کنید" + "selectImagesPrompt": "همهٔ تصاویر با {{className}} را انتخاب کنید", + "refreshExamples": "تولید نمونه‌های جدید", + "refreshConfirm": { + "title": "تولید نمونه‌های جدید؟", + "description": "این کار یک مجموعهٔ جدید از تصاویر تولید می‌کند و همهٔ انتخاب‌ها را پاک می‌کند، از جمله کلاس‌های قبلی. باید نمونه‌ها را برای همهٔ کلاس‌ها دوباره انتخاب کنید." + } } }, "edit": { "title": "ویرایش مدل طبقه‌بندی", "descriptionState": "کلاس‌های این مدل طبقه‌بندی حالت را ویرایش کنید. اعمال تغییرات نیاز به بازآموزی مدل دارد.", "descriptionObject": "نوع شیء و نوع طبقه‌بندی را برای این مدل طبقه‌بندی شیء ویرایش کنید.", - "stateClassesInfo": "توجه: تغییر کلاس‌های وضعیت نیازمند بازآموزی مدل با کلاس‌های به‌روزرسانی‌شده است." + "stateClassesInfo": "توجه: تغییر کلاس‌های وضعیت نیازمند بازآموزی مدل با کلاس‌های به‌روزرسانی‌شده است.", + "enabled": "فعال شده", + "enabledDesc": "اجرای این مدل. هنگام غیرفعال بودن، اجرا متوقف می‌شود و دیگر طبقه‌بندی نمی‌کند.", + "saveAttempts": "تلاش‌های ذخیره", + "saveAttemptsDesc": "تعداد تصاویر تلاش طبقه‌بندی که برای رابط کاربری طبقه‌بندی‌های اخیر نگه‌داری می‌شوند.", + "motion": "اجرای هنگام حرکت", + "motionDesc": "اجرای طبقه‌بندی هنگام تشخیص حرکت در ناحیهٔ برش‌خوردهٔ پیکربندی‌شده.", + "interval": "بازه", + "intervalDesc": "ثانیه بین اجراهای دوره‌ای طبقه‌بندی. برای اجرای فقط هنگام حرکت، خالی بگذارید.", + "intervalPlaceholder": "بدون بازه", + "errors": { + "saveAttemptsInvalid": "تلاش‌های ذخیره باید یک عدد صحیح ۰ یا بزرگ‌تر باشد", + "intervalInvalid": "بازه باید یک عدد صحیح بزرگ‌تر از ۰ باشد" + } }, "deleteDatasetImages": { "title": "حذف تصاویر مجموعه‌داده", @@ -185,5 +205,8 @@ "createCategory": { "new": "ایجاد کلاس جدید" }, - "categorizeImageAs": "طبقه‌بندی تصویر به‌عنوان:" + "categorizeImageAs": "طبقه‌بندی تصویر به‌عنوان:", + "disabled": "غیرفعال", + "reclassifyImageAs": "طبقه‌بندی مجدد تصویر به‌عنوان:", + "reclassifyImage": "طبقه‌بندی مجدد تصویر" } diff --git a/web/public/locales/fa/views/events.json b/web/public/locales/fa/views/events.json index cf3ca7871d..49e219bdc9 100644 --- a/web/public/locales/fa/views/events.json +++ b/web/public/locales/fa/views/events.json @@ -15,7 +15,9 @@ "description": "موارد بازبینی برای یک دوربین تنها درصورتی امکان ساخت دارند که ضبط‌ها برای آن دورین فعال باشد." } }, - "timeline": "خط زمانی", + "timeline": { + "label": "خط زمانی" + }, "timeline.aria": "انتخاب خط زمانی", "zoomIn": "بزرگ‌نمایی", "zoomOut": "کوچک‌نمایی", @@ -25,7 +27,9 @@ "label": "رویدادها" }, "recordings": { - "documentTitle": "ضبط‌ها - فریگیت" + "documentTitle": "ضبط‌ها - فریگیت", + "invalidSharedLink": "باز کردن لینک ضبط با مهر زمانی به‌دلیل خطای تجزیه ممکن نیست.", + "invalidSharedCamera": "باز کردن لینک ضبط با مهر زمانی به‌دلیل دوربین ناشناخته یا غیرمجاز ممکن نیست." }, "calendarFilter": { "last24Hours": "۲۴ ساعت گذشته" @@ -55,11 +59,37 @@ }, "documentTitle": "بازبینی - Frigate", "selected_one": "{{count}} انتخاب شد", - "selected_other": "{{count}} انتخاب شدند", + "selected_other": "{{count}} انتخاب شد", "select_all": "همه", "camera": "دوربین", "detected": "گزینه‌هاشناسایی شد", "normalActivity": "عادی", "needsReview": "نیاز به بازبینی", - "securityConcern": "نگرانی امنیتی" + "securityConcern": "نگرانی امنیتی", + "motionSearch": { + "menuItem": "جست‌وجوی حرکت", + "openMenu": "گزینه‌های دوربین" + }, + "motionPreviews": { + "menuItem": "مشاهدهٔ پیش‌نمایش‌های حرکت", + "title": "پیش‌نمایش‌های حرکت: {{camera}}", + "mobileSettingsTitle": "تنظیمات پیش‌نمایش حرکت", + "mobileSettingsDesc": "سرعت پخش، تاری و برش را تنظیم کنید، و تاری را برای بازبینی کلیپ‌های فقط حرکتی انتخاب کنید.", + "dim": "تاری", + "dimAria": "تنظیم شدت تاری", + "dimDesc": "برای افزایش دیدمندی منطقهٔ حرکت، تاری را بیشتر کنید.", + "speed": "سرعت", + "speedAria": "انتخاب سرعت پخش پیش‌نمایش", + "speedDesc": "انتخاب کنید کلیپ‌های پیش‌نمایش با چه سرعتی پخش شوند.", + "back": "بازگشت", + "empty": "هیچ پیش‌نمایشی در دسترس نیست", + "noPreview": "پیش‌نمایش در دسترس نیست", + "seekAria": "پیمایش پخش‌کننده {{camera}} به {{time}}", + "filter": "فیلتر", + "filterDesc": "مناطق را انتخاب کنید تا فقط کلیپ‌هایی با حرکت در آن مناطق نشان داده شوند.", + "filterClear": "پاک کردن", + "crop": "برش به فیلتر", + "cropAria": "فعال/غیرفعال کردن برش پیش‌نمایش‌ها به مناطق فیلترشده", + "cropDesc": "بزرگ‌نمایی پیش‌نمایش‌ها به مناطق فیلتر انتخاب‌شده به‌جای نمایش کامل فریم." + } } diff --git a/web/public/locales/fa/views/explore.json b/web/public/locales/fa/views/explore.json index d532878c4d..699976a2e9 100644 --- a/web/public/locales/fa/views/explore.json +++ b/web/public/locales/fa/views/explore.json @@ -85,7 +85,8 @@ "regenerateFromThumbnails": "بازسازی از تصاویر بندانگشتی", "title": { "label": "عنوان" - } + }, + "scoreInfo": "اطلاعات امتیاز" }, "exploreIsUnavailable": { "title": "کاوش کردن در دسترس نیست", @@ -136,7 +137,10 @@ "zones": "ناحیه‌ها", "ratio": "نسبت", "area": "مساحت", - "score": "امتیاز" + "score": "امتیاز", + "computedScore": "امتیاز محاسبه‌شده", + "topScore": "بالاترین امتیاز", + "toggleAdvancedScores": "فعال/غیرفعال‌سازی امتیازهای پیشرفته" } }, "title": "جزئیات ردیابی", @@ -216,6 +220,13 @@ }, "deleteTrackedObject": { "label": "حذف این شیء ردیابی‌شده" + }, + "debugReplay": { + "label": "بازپخش اشکال‌زدایی", + "aria": "مشاهدهٔ این شیء ردیابی‌شده در نمای بازپخش اشکال‌زدایی" + }, + "more": { + "aria": "بیشتر" } }, "noTrackedObjects": "هیچ شیء ردیابی‌شده‌ای پیدا نشد", @@ -226,6 +237,9 @@ "confirmDelete": { "title": "تأیید حذف", "desc": "حذف این شیء ردیابی‌شده عکس فوری، هرگونه امبدینگ ذخیره‌شده و هر ورودی مرتبط با جزئیات ردیابی را حذف می‌کند. فیلم ضبط‌شدهٔ این شیء ردیابی‌شده در نمای تاریخ حذف نخواهد شد.

آیا مطمئنید می‌خواهید ادامه دهید؟" + }, + "toast": { + "error": "خطا در حذف این شیء ردیابی‌شده: {{errorMessage}}" } }, "searchResult": { @@ -244,5 +258,8 @@ }, "concerns": { "label": "نگرانی‌ها" + }, + "objectLifecycle": { + "noImageFound": "برای این شیء ردیابی‌شده هیچ تصویری یافت نشد." } } diff --git a/web/public/locales/fa/views/exports.json b/web/public/locales/fa/views/exports.json index 922569bcb2..e8d8994627 100644 --- a/web/public/locales/fa/views/exports.json +++ b/web/public/locales/fa/views/exports.json @@ -2,7 +2,9 @@ "search": "جستجو", "documentTitle": "گرفتن خروجی - فریگیت", "noExports": "هیچ خروجی یافت نشد", - "deleteExport": "حذف خروجی", + "deleteExport": { + "label": "حذف خروجی" + }, "deleteExport.desc": "آیا مطمئن هستید که می‌خواهید {{exportName}} را حذف کنید؟", "editExport": { "title": "تغییر نام خروجی", @@ -14,15 +16,113 @@ "downloadVideo": "دانلود ویدئو", "editName": "ویرایش نام", "deleteExport": "حذف خروجی", - "assignToCase": "به مورد اضافه کنید" + "assignToCase": "اضافه کردن به مورد", + "removeFromCase": "حذف از مورد" }, "toast": { "error": { - "renameExportFailed": "تغییر نام خروجی ناموفق بود: {{errorMessage}}" + "renameExportFailed": "تغییر نام خروجی ناموفق بود: {{errorMessage}}", + "assignCaseFailed": "به‌روزرسانی انتساب مورد ناموفق بود: {{errorMessage}}", + "caseSaveFailed": "ذخیرهٔ مورد ناموفق بود: {{errorMessage}}", + "caseDeleteFailed": "حذف مورد ناموفق بود: {{errorMessage}}" } }, "headings": { "cases": "موارد", - "uncategorizedExports": "خروجی دسته‌بندی نشده" + "uncategorizedExports": "خروجی های دسته بندی نشده" + }, + "toolbar": { + "newCase": "مورد جدید", + "addExport": "افزودن خروجی", + "editCase": "ویرایش مورد", + "deleteCase": "حذف مورد" + }, + "deleteCase": { + "label": "حذف مورد", + "desc": "آیا مطمئن هستید که می‌خواهید {{caseName}} را حذف کنید؟", + "descKeepExports": "خروجی‌ها به‌عنوان خروجی‌های دسته‌بندی‌نشده در دسترس باقی خواهند ماند.", + "descDeleteExports": "همهٔ خروجی‌های این مورد به‌طور دائمی حذف خواهند شد.", + "deleteExports": "حذف خروجی‌ها نیز" + }, + "caseDialog": { + "title": "افزودن به مورد", + "description": "یک مورد موجود انتخاب کنید یا مورد جدیدی ایجاد کنید.", + "selectLabel": "مورد", + "newCaseOption": "ایجاد مورد جدید", + "nameLabel": "نام مورد", + "descriptionLabel": "توضیحات" + }, + "caseCard": { + "emptyCase": "هنوز خروجی‌ای وجود ندارد" + }, + "jobCard": { + "defaultName": "خروجی {{camera}}", + "queued": "در صف", + "running": "در حال اجرا", + "preparing": "در حال آماده‌سازی", + "copying": "در حال کپی", + "encoding": "در حال رمزگذاری", + "encodingRetry": "رمزگذاری (تلاش مجدد)", + "finalizing": "در حال نهایی‌سازی" + }, + "caseView": { + "noDescription": "بدون توضیحات", + "createdAt": "ایجاد شده {{value}}", + "exportCount_one": "۱ خروجی", + "exportCount_other": "{{count}} خروجی", + "cameraCount_one": "۱ دوربین", + "cameraCount_other": "{{count}} دوربین", + "showMore": "نمایش بیشتر", + "showLess": "نمایش کمتر", + "emptyTitle": "این مورد خالی است", + "emptyDescription": "برای سازماندهی مورد، خروجی‌های دسته‌بندی‌نشده موجود را اضافه کنید.", + "emptyDescriptionNoExports": "هنوز خروجی دسته‌بندی‌نشده‌ای برای افزودن وجود ندارد." + }, + "caseEditor": { + "createTitle": "ایجاد مورد", + "editTitle": "ویرایش مورد", + "namePlaceholder": "نام مورد", + "descriptionPlaceholder": "یادداشت یا زمینه برای این مورد اضافه کنید" + }, + "addExportDialog": { + "title": "افزودن خروجی به {{caseName}}", + "searchPlaceholder": "جست‌وجوی خروجی‌های دسته‌بندی‌نشده", + "empty": "هیچ خروجی دسته‌بندی‌نشده‌ای با این جست‌وجو مطابقت ندارد.", + "addButton_one": "افزودن ۱ خروجی", + "addButton_other": "افزودن {{count}} خروجی", + "adding": "در حال افزودن..." + }, + "selected_one": "{{count}} انتخاب شد", + "selected_other": "{{count}} انتخاب شد", + "bulkActions": { + "addToCase": "افزودن به مورد", + "moveToCase": "انتقال به مورد", + "removeFromCase": "حذف از مورد", + "delete": "حذف", + "deleteNow": "حذف فوری" + }, + "bulkDelete": { + "title": "حذف خروجی‌ها", + "desc_one": "آیا مطمئن هستید که می‌خواهید {{count}} خروجی را حذف کنید؟", + "desc_other": "آیا مطمئن هستید که می‌خواهید {{count}} خروجی را حذف کنید؟" + }, + "bulkRemoveFromCase": { + "title": "حذف از مورد", + "desc_one": "حذف {{count}} خروجی از این مورد؟", + "desc_other": "حذف {{count}} خروجی از این مورد؟", + "descKeepExports": "خروجی‌ها به دسته‌بندی‌نشده منتقل خواهند شد.", + "descDeleteExports": "خروجی‌ها به‌طور دائمی حذف خواهند شد.", + "deleteExports": "حذف خروجی‌ها به‌جای آن" + }, + "bulkToast": { + "success": { + "delete": "خروجی‌ها با موفقیت حذف شدند", + "reassign": "انتساب مورد با موفقیت به‌روزرسانی شد", + "remove": "خروجی‌ها با موفقیت از مورد حذف شدند" + }, + "error": { + "deleteFailed": "حذف خروجی‌ها ناموفق بود: {{errorMessage}}", + "reassignFailed": "به‌روزرسانی انتساب مورد ناموفق بود: {{errorMessage}}" + } } } diff --git a/web/public/locales/fa/views/live.json b/web/public/locales/fa/views/live.json index 383da433c4..73255d4caa 100644 --- a/web/public/locales/fa/views/live.json +++ b/web/public/locales/fa/views/live.json @@ -1,5 +1,7 @@ { - "documentTitle": "زنده - فریگیت", + "documentTitle": { + "default": "زنده - فریگیت" + }, "documentTitle.withCamera": "{{camera}} - زنده - فریگیت", "lowBandwidthMode": "حالت کاهش مصرف پهنای باند", "twoWayTalk": { @@ -15,7 +17,8 @@ "clickMove": { "label": "برای قرار دادن دوربین در مرکز، در کادر کلیک کنید", "enable": "فعال‌سازی کلیک برای جابه‌جایی", - "disable": "غیرفعال‌سازی کلیک برای جابه‌جایی" + "disable": "غیرفعال‌سازی کلیک برای جابه‌جایی", + "enableWithZoom": "فعال‌سازی کلیک برای جابه‌جایی / کشیدن برای بزرگ‌نمایی" }, "left": { "label": "دوربین PTZ را به چپ حرکت دهید" @@ -55,7 +58,8 @@ }, "recording": { "disable": "غیرفعال کردن ضبط", - "enable": "فعال‌سازی ضبط" + "enable": "فعال‌سازی ضبط", + "disabledInConfig": "ابتدا باید ضبط در تنظیمات برای این دوربین فعال باشد." }, "snapshots": { "enable": "فعال کردن عکس‌های فوری", @@ -69,7 +73,9 @@ }, "camera": { "enable": "فعال کردن دوربین", - "disable": "غیرفعال کردن دوربین" + "disable": "غیرفعال کردن دوربین", + "turnOn": "روشن کردن دوربین", + "turnOff": "خاموش کردن دوربین" }, "muteCameras": { "enable": "بی‌صدا کردن همهٔ دوربین‌ها", @@ -127,7 +133,8 @@ "autotracking": "ردیابی خودکار", "cameraEnabled": "دوربین فعال", "recording": "ضبط", - "transcription": "رونویسی صوتی" + "transcription": "رونویسی صوتی", + "camera": "دوربین" }, "effectiveRetainMode": { "modes": { @@ -150,7 +157,17 @@ "description": "شما اجازهٔ مشاهدهٔ هیچ دوربینی را در این گروه ندارید.", "title": "هیچ دوربینی در دسترس نیست" }, - "description": "برای شروع، یک دوربین را به Frigate متصل کنید." + "description": "برای شروع، یک دوربین را به Frigate متصل کنید.", + "default": { + "title": "هیچ دوربینی پیکربندی نشده است", + "description": "برای شروع، یک دوربین را به Frigate متصل کنید.", + "buttonText": "افزودن دوربین" + }, + "group": { + "title": "هیچ دوربینی در گروه نیست", + "description": "این گروه دوربین هیچ دوربین اختصاص‌یافته یا فعالی ندارد.", + "buttonText": "مدیریت گروه‌ها" + } }, "streamStats": { "enable": "نمایش آمار پخش", diff --git a/web/public/locales/fa/views/motionSearch.json b/web/public/locales/fa/views/motionSearch.json index 0967ef424b..182430da36 100644 --- a/web/public/locales/fa/views/motionSearch.json +++ b/web/public/locales/fa/views/motionSearch.json @@ -1 +1,78 @@ -{} +{ + "documentTitle": "جست‌وجوی حرکت - فریگیت", + "title": "جست‌وجوی حرکت", + "description": "یک چندضلعی رسم کنید تا منطقه مورد نظر را تعریف کنید، و یک بازه زمانی برای جست‌وجوی تغییرات حرکت در آن منطقه مشخص کنید.", + "selectCamera": "جست‌وجوی حرکت در حال بارگذاری است", + "startSearch": "شروع جست‌وجو", + "searchStarted": "جست‌وجو شروع شد", + "searchCancelled": "جست‌وجو لغو شد", + "cancelSearch": "لغو", + "searching": "جست‌وجو در حال انجام است.", + "scanning": "در حال اسکن {{time}}", + "searchComplete": "جست‌وجو کامل شد", + "noResultsYet": "برای یافتن تغییرات حرکت در منطقه انتخاب‌شده، یک جست‌وجو اجرا کنید", + "noChangesFound": "هیچ تغییر پیکسلی در منطقه انتخاب‌شده شناسایی نشد", + "changesFound_one": "{{count}} تغییر حرکت یافت شد", + "changesFound_other": "{{count}} تغییر حرکت یافت شدند", + "framesProcessed": "{{count}} فریم پردازش شد", + "jumpToTime": "پرش به این زمان", + "results": "نتایج", + "showSegmentHeatmap": "نقشه حرارتی", + "newSearch": "جست‌وجوی جدید", + "clearResults": "پاک کردن نتایج", + "clearROI": "پاک کردن چندضلعی", + "polygonControls": { + "points_one": "{{count}} نقطه", + "points_other": "{{count}} نقطه‌ها", + "undo": "برگرداندن آخرین نقطه", + "reset": "بازنشانی چندضلعی", + "drawMode": "رسم", + "moveMode": "جابه‌جایی" + }, + "motionHeatmapLabel": "نقشه حرارتی حرکت", + "dialog": { + "title": "جست‌وجوی حرکت", + "cameraLabel": "دوربین", + "previewAlt": "پیش‌نمایش دوربین برای {{camera}}" + }, + "timeRange": { + "title": "بازه جست‌وجو", + "start": "زمان شروع", + "end": "زمان پایان" + }, + "settings": { + "title": "تنظیمات جست‌وجو", + "parallelMode": "حالت موازی", + "parallelModeDesc": "اسکن همزمان چندین بازه ضبط (سریع‌تر؛ منابع رمزگشایی بیشتری مصرف می‌کند)", + "threshold": "آستانه حساسیت", + "thresholdDesc": "مقادیر پایین‌تر تغییرات کوچک‌تری را شناسایی می‌کنند (۱-۲۵۵)", + "minArea": "حداقل مساحت تغییر", + "minAreaDesc": "حداقل اندازه یک منطقه متحرک، به درصد از منطقه مورد نظر", + "maxResults": "حداکثر نتایج", + "maxResultsDesc": "پس از این تعداد مهر زمانی منطبق، متوقف شود" + }, + "errors": { + "noCamera": "لطفاً یک دوربین انتخاب کنید", + "noROI": "لطفاً یک منطقه مورد نظر رسم کنید", + "noTimeRange": "لطفاً یک بازه زمانی انتخاب کنید", + "invalidTimeRange": "زمان پایان باید بعد از زمان شروع باشد", + "searchFailed": "جست‌وجو ناموفق بود: {{message}}", + "polygonTooSmall": "چندضلعی باید حداقل ۳ نقطه داشته باشد", + "unknown": "خطای ناشناخته" + }, + "changePercentage": "{{percentage}}٪ تغییر", + "metrics": { + "title": "معیارهای جست‌وجو", + "segmentsScanned": "بخش‌های اسکن‌شده", + "segmentsProcessed": "پردازش‌شده", + "segmentsSkippedInactive": "رد شده (بدون فعالیت)", + "segmentsSkippedHeatmap": "رد شده (بدون همپوشانی منطقه)", + "fallbackFullRange": "اسکن کامل بازه (پشتیبان)", + "framesDecoded": "فریم‌های رمزگشایی‌شده", + "wallTime": "زمان جست‌وجو", + "segmentErrors": "خطاهای بخش", + "seconds": "{{seconds}}ث", + "minutesSeconds": "{{minutes}}د {{seconds}}ث", + "scanSummary": "{{segments}} بخش · {{time}}" + } +} diff --git a/web/public/locales/fa/views/replay.json b/web/public/locales/fa/views/replay.json index 0967ef424b..a2d3c6fbfb 100644 --- a/web/public/locales/fa/views/replay.json +++ b/web/public/locales/fa/views/replay.json @@ -1 +1,60 @@ -{} +{ + "title": "بازپخش اشکال‌زدایی", + "description": "ضبط‌های دوربین را برای اشکال‌زدایی بازپخش کنید. فهرست اشیا خلاصه‌ای با تأخیر زمانی از اشیای شناسایی‌شده را نشان می‌دهد و تب پیام‌ها جریانی از پیام‌های داخلی فریگیت از تصویر بازپخش را نمایش می‌دهد.", + "websocket_messages": "پیام‌ها", + "dialog": { + "title": "شروع بازپخش اشکال‌زدایی", + "description": "یک دوربین بازپخش موقت ایجاد کنید که تصاویر تاریخی را برای اشکال‌زدایی تشخیص شیء و ردیابی حلقه می‌کند. دوربین بازپخش همان پیکربندی تشخیص دوربین منبع را خواهد داشت. یک بازه زمانی برای شروع انتخاب کنید.", + "camera": "دوربین منبع", + "timeRange": "بازه زمانی", + "preset": { + "1m": "۱ دقیقه اخیر", + "5m": "۵ دقیقه اخیر", + "timeline": "از خط زمانی", + "custom": "سفارشی" + }, + "startButton": "شروع بازپخش", + "selectFromTimeline": "انتخاب", + "starting": "در حال شروع بازپخش...", + "startLabel": "شروع", + "endLabel": "پایان", + "toast": { + "error": "شروع بازپخش اشکال‌زدایی ناموفق بود: {{error}}", + "alreadyActive": "یک نشست بازپخش از قبل فعال است", + "stopError": "توقف بازپخش اشکال‌زدایی ناموفق بود: {{error}}", + "goToReplay": "رفتن به بازپخش", + "noRecordings": "‫هیچ‌ فیلم ضبط شده ای در بازه زمانی انتخاب‌شده یافت نشد" + } + }, + "page": { + "noSession": "هیچ نشست بازپخش اشکال‌زدایی فعالی وجود ندارد", + "noSessionDesc": "یک بازپخش اشکال‌زدایی را از نمای تاریخچه با کلیک روی دکمه اقدامات در نوار ابزار و انتخاب بازپخش اشکال‌زدایی شروع کنید.", + "goToRecordings": "رفتن به تاریخچه", + "preparingClip": "در حال آماده‌سازی کلیپ…", + "preparingClipDesc": "فریگیت در حال کنار هم گذاشتن ضبط‌ها برای بازه زمانی انتخاب‌شده است. این کار برای بازه‌های طولانی‌تر ممکن است چند دقیقه طول بکشد.", + "startingCamera": "در حال شروع بازپخش اشکال‌زدایی…", + "startError": { + "title": "شروع بازپخش اشکال‌زدایی ناموفق بود", + "back": "بازگشت به تاریخچه" + }, + "sourceCamera": "دوربین منبع", + "replayCamera": "دوربین بازپخش", + "initializingReplay": "در حال راه‌اندازی بازپخش اشکال‌زدایی...", + "stoppingReplay": "در حال توقف بازپخش اشکال‌زدایی...", + "stopReplay": "توقف بازپخش", + "confirmStop": { + "title": "توقف بازپخش اشکال‌زدایی؟", + "description": "این کار نشست را متوقف کرده و همه داده‌های موقت را پاک می‌کند. مطمئن هستید؟", + "confirm": "توقف بازپخش", + "cancel": "لغو" + }, + "activity": "فعالیت", + "objects": "فهرست اشیا", + "audioDetections": "تشخیص‌های صوتی", + "noActivity": "هیچ فعالیتی شناسایی نشد", + "activeTracking": "ردیابی فعال", + "noActiveTracking": "ردیابی فعالی وجود ندارد", + "configuration": "پیکربندی", + "configurationDesc": "تنظیمات تشخیص حرکت و ردیابی شیء را برای دوربین بازپخش اشکال‌زدایی دقیق تنظیم کنید. هیچ تغییری در فایل پیکربندی فریگیت شما ذخیره نمی‌شود." + } +} diff --git a/web/public/locales/fa/views/settings.json b/web/public/locales/fa/views/settings.json index 3465fbf355..592f9c1f09 100644 --- a/web/public/locales/fa/views/settings.json +++ b/web/public/locales/fa/views/settings.json @@ -11,7 +11,12 @@ "object": "اشکال‌زدایی - Frigate", "general": "تنظیمات رابط کاربری - فریگیت", "frigatePlus": "تنظیمات Frigate+ - Frigate", - "notifications": "تنظیمات اعلان‌ها - Frigate" + "notifications": "تنظیمات اعلان‌ها - Frigate", + "globalConfig": "پیکربندی سراسری - فریگیت", + "cameraConfig": "پیکربندی دوربین - فریگیت", + "detectorsAndModel": "آشکارسازها و مدل - فریگیت", + "maintenance": "نگهداری - فریگیت", + "profiles": "پروفایل‌ها - فریگیت" }, "menu": { "ui": "رابط کاربری", @@ -26,7 +31,65 @@ "roles": "نقش‌ها", "notifications": "اعلان‌ها", "frigateplus": "فریگیت+", - "profiles": "پروفایل‌ها" + "profiles": "پروفایل‌ها", + "general": "عمومی", + "globalConfig": "پیکربندی سراسری", + "system": "سیستم", + "integrations": "یکپارچه‌سازی‌ها", + "cameras": "پیکربندی دوربین", + "uiSettings": "تنظیمات رابط کاربری", + "globalDetect": "تشخیص اشیاء", + "globalRecording": "ضبط", + "globalSnapshots": "عکس‌های فوری", + "globalFfmpeg": "FFmpeg", + "globalMotion": "تشخیص حرکت", + "globalObjects": "اشیاء", + "globalReview": "بازبینی", + "globalAudioEvents": "تشخیص صدا", + "globalLivePlayback": "پخش زنده", + "globalTimestampStyle": "سبک مهر زمانی", + "systemDatabase": "پایگاه داده", + "systemTls": "TLS", + "systemAuthentication": "احراز هویت", + "systemNetworking": "شبکه‌بندی", + "systemProxy": "پروکسی", + "systemUi": "رابط کاربری", + "systemLogging": "Logging", + "systemEnvironmentVariables": "متغیرهای محیطی", + "systemTelemetry": "تلمتری", + "systemBirdseye": "چشم پرنده", + "systemFfmpeg": "FFmpeg", + "systemDetectorsAndModel": "آشکارسازها و مدل", + "systemMqtt": "MQTT", + "systemGo2rtcStreams": "جریان‌های go2rtc", + "integrationSemanticSearch": "جستجوی معنایی", + "integrationGenerativeAi": "هوش مصنوعی مولد", + "integrationFaceRecognition": "شناسایی چهره", + "integrationLpr": "تشخیص پلاک خودرو", + "integrationObjectClassification": "نحوه طبقه‌بندی اشیاء", + "integrationAudioTranscription": "رونویسی صدا", + "cameraDetect": "تشخیص اشیاء", + "cameraFfmpeg": "جریان‌ها (FFmpeg)", + "cameraRecording": "ضبط", + "cameraSnapshots": "عکس‌های فوری", + "cameraMotion": "تشخیص حرکت", + "cameraObjects": "اشیاء", + "cameraConfigReview": "بازبینی", + "cameraAudioEvents": "تشخیص صدا", + "cameraAudioTranscription": "رونویسی صدا", + "cameraNotifications": "اعلان‌ها", + "cameraLivePlayback": "پخش زنده", + "cameraBirdseye": "چشم پرنده", + "cameraFaceRecognition": "شناسایی چهره", + "cameraLpr": "تشخیص پلاک خودرو", + "cameraMqttConfig": "MQTT", + "cameraOnvif": "ONVIF", + "cameraUi": "رابط کاربری دوربین", + "cameraTimestampStyle": "سبک مهر زمانی", + "cameraMqtt": "MQTT دوربین", + "maintenance": "حفظ و نگهداری", + "mediaSync": "همگام‌سازی رسانه", + "regionGrid": "شبکه منطقه" }, "general": { "title": "تنظیمات رابط کاربری", @@ -118,11 +181,11 @@ "label": "اندازهٔ مدل", "desc": "اندازهٔ مدلی که برای بردارهای جست‌وجوی معنایی استفاده می‌شود.", "small": { - "desc": "استفاده از small از نسخهٔ کوانتیزهٔ مدل استفاده می‌کند که RAM کم‌تری مصرف می‌کند و روی CPU سریع‌تر اجرا می‌شود، با تفاوت بسیار ناچیز در کیفیت داخلی.", + "desc": "استفاده از small از نسخهٔ کوانتیزهٔ مدل استفاده می‌کند که RAM کم‌تری مصرف می‌کند و روی CPU سریع‌تر اجرا می‌شود، با تفاوت بسیار ناچیز در کیفیت جاسازی.", "title": "کوچک" }, "large": { - "desc": "استفاده از large از مدل کامل Jina استفاده می‌کند و در صورت امکان به‌طور خودکار روی GPU اجرا می‌شود.", + "desc": "استفاده از large از مدل کامل Jina استفاده می‌کند و در صورت امکان به‌طور خودکار روی GPU اجرا می‌شود.", "title": "بزرگ" } }, @@ -138,7 +201,7 @@ }, "large": { "title": "بزرگ", - "desc": "استفاده از large از مدل embedding چهرهٔ ArcFace استفاده می‌کند و در صورت امکان به‌طور خودکار روی GPU اجرا می‌شود." + "desc": "استفاده از large از مدل جاسازی چهرهٔ ArcFace استفاده می‌کند و در صورت امکان به‌طور خودکار روی GPU اجرا می‌شود." }, "desc": "اندازه مدل مورد استفاده برای تشخیص چهره." }, @@ -338,7 +401,8 @@ }, "hikvision": { "substreamWarning": "زیرجریان ۱ روی وضوح پایین قفل شده است. بسیاری از دوربین‌های Hikvision از زیرجریان‌های اضافی پشتیبانی می‌کنند که باید در تنظیمات دوربین فعال شوند. توصیه می‌شود در صورت وجود، آن جریان‌ها را بررسی کرده و استفاده کنید." - } + }, + "resolutionUnknown": "وضوح این جریان قابل بررسی نبود. باید وضوح تشخیص را به‌صورت دستی در تنظیمات یا پیکربندی خود تنظیم کنید." }, "connecting": "در حال اتصال...", "description": "پیش از ذخیره کردن دوربین جدیدتان، اعتبارسنجی و تحلیل نهایی انجام می‌شود. پیش از ذخیره، هر استریم را متصل کنید." @@ -351,7 +415,34 @@ "backToSettings": "بازگشت به تنظیمات دوربین", "streams": { "title": "فعال‌سازی / غیرفعال‌سازی دوربین‌ها", - "desc": "یک دوربین را تا زمانی که Frigate دوباره راه‌اندازی شود، موقتاً غیرفعال کنید. غیرفعال‌کردن یک دوربین باعث می‌شود پردازش جریان‌های این دوربین توسط Frigate کاملاً متوقف شود. تشخیص، ضبط و اشکال‌زدایی در دسترس نخواهد بود.
نکته: این کار بازپخش‌های go2rtc را غیرفعال نمی‌کند." + "desc": "یک دوربین را تا زمانی که Frigate دوباره راه‌اندازی شود، موقتاً غیرفعال کنید. غیرفعال‌کردن یک دوربین باعث می‌شود پردازش جریان‌های این دوربین توسط Frigate کاملاً متوقف شود. تشخیص، ضبط و اشکال‌زدایی در دسترس نخواهد بود.
نکته: این کار بازپخش‌های go2rtc را غیرفعال نمی‌کند.", + "label": "وضعیت دوربین", + "description": "تنظیم وضعیت عملیاتی هر دوربین.

روشن: جریان‌ها به‌طور عادی پردازش می‌شوند.
خاموش: پردازش را موقتاً متوقف می‌کند. پس از بازراه‌اندازی فریگیت باقی نمی‌ماند.
غیرفعال: پردازش را متوقف کرده و تغییر را در پیکربندی ذخیره می‌کند. بازراه‌اندازی برای فعال‌سازی مجدد دوربین غیرفعال لازم است.

توجه: غیرفعال کردن روی بازپخش‌های go2rtc تأثیری ندارد.

دستگیره را بکشید تا دوربین‌های فعال را همان‌طور که در سراسر رابط کاربری ظاهر می‌شوند مرتب کنید، از جمله داشبورد زنده و منوهای انتخاب دوربین.", + "disabledSubheading": "غیرفعال در پیکربندی", + "status": { + "on": "روشن", + "off": "خاموش", + "disabled": "غیرفعال" + }, + "enableSuccess": "{{cameraName}} فعال شد. فریگیت را بازراه‌اندازی کنید تا اعمال شود.", + "disableSuccess": "{{cameraName}} غیرفعال شد و در پیکربندی ذخیره شد.", + "reorderHandle": "برای مرتب‌سازی بکشید", + "saving": "در حال ذخیره…", + "saved": "ذخیره شد", + "details": { + "edit": "ویرایش جزئیات دوربین", + "title": "ویرایش جزئیات دوربین", + "description": "به‌روزرسانی نام نمایشی، آدرس خارجی و قابلیت مشاهده استفاده‌شده برای این دوربین در سراسر رابط کاربری فریگیت.", + "friendlyNameLabel": "نام نمایشی", + "friendlyNameHelp": "نام دوستانه نمایش‌داده‌شده برای این دوربین در سراسر رابط کاربری فریگیت. خالی بگذارید تا از شناسه دوربین استفاده شود.", + "webuiUrlLabel": "آدرس رابط کاربری وب دوربین", + "webuiUrlHelp": "آدرس برای بازدید مستقیم رابط کاربری وب دوربین از نمای اشکال‌زدایی. خالی بگذارید تا پیوند غیرفعال شود.", + "webuiUrlInvalid": "باید یک آدرس اینترنتی معتبر باشد (مثلاً https://example.com).", + "dashboardLabel": "نمایش در داشبورد پخش زنده", + "dashboardHelp": "این دوربین را در داشبورد پیش‌فرض همه دوربین‌های زنده نشان دهید. در همه جای دیگر از جمله گروه‌های دوربین در دسترس باقی می‌ماند.", + "reviewLabel": "نمایش در بازبینی", + "reviewHelp": "این دوربین را در بازبینی نشان دهید، از جمله فیلتر دوربین، بازبینی حرکت و نمای تاریخچه." + } }, "cameraConfig": { "add": "افزودن دوربین", @@ -361,7 +452,7 @@ "nameLength": "نام دوربین باید کمتر از ۶۴ کاراکتر باشد.", "nameRequired": "نام دوربین الزامی است", "namePlaceholder": "مثلاً front_door یا Back Yard Overview", - "enabled": "فعال", + "enabled": "فعال شده", "ffmpeg": { "inputs": "جریان‌های ورودی", "path": "مسیر جریان", @@ -382,7 +473,121 @@ }, "addUrl": "افزودن نشانی" }, - "editCamera": "ویرایش دوربین:" + "editCamera": "ویرایش دوربین:", + "description": "افزودن، ویرایش و حذف دوربین‌ها، کنترل وضعیت هر دوربین، و پیکربندی لغوهای به ازای پروفایل و نوع دوربین. برای پیکربندی جریان‌ها، تشخیص، حرکت و سایر تنظیمات خاص دوربین، بخش خاص را زیر پیکربندی دوربین انتخاب کنید.", + "deleteCamera": "حذف دوربین", + "deleteCameraDialog": { + "title": "حذف دوربین", + "description": "حذف یک دوربین به‌طور دائمی همه ضبط‌ها، اشیاء ردیابی‌شده و پیکربندی آن دوربین را حذف می‌کند. ممکن است جریان‌های go2rtc مرتبط با این دوربین همچنان نیاز به حذف دستی داشته باشند.", + "selectPlaceholder": "انتخاب دوربین…", + "confirmTitle": "آیا مطمئن هستید؟", + "confirmWarning": "حذف {{cameraName}} قابل بازگشت نیست.", + "deleteExports": "خروجی‌های این دوربین نیز حذف شوند", + "confirmButton": "حذف دائمی", + "success": "دوربین {{cameraName}} با موفقیت حذف شد", + "error": "حذف دوربین {{cameraName}} ناموفق بود" + }, + "profiles": { + "title": "لغوهای دوربین پروفایل", + "selectLabel": "انتخاب پروفایل", + "description": "پیکربندی اینکه کدام دوربین‌ها هنگام فعال‌سازی یک پروفایل روشن یا خاموش شوند. دوربین‌های تنظیم‌شده روی «ارث‌بری» حالت پیش‌فرض خود را نگه می‌دارند.", + "inherit": "ارث‌بری", + "on": "روشن", + "off": "خاموش" + }, + "cameraType": { + "title": "نوع دوربین", + "label": "نوع دوربین", + "description": "نوع هر دوربین را تنظیم کنید. دوربین‌های LPR اختصاصی دوربین‌های تک‌منظوره با زوم اپتیکی قدرتمند برای ثبت پلاک خودروهای دور هستند. اکثر دوربین‌ها باید از نوع دوربین عادی استفاده کنند مگر اینکه دوربین مخصوص LPR باشد و دید متمرکز روی پلاک‌ها داشته باشد.", + "normal": "عادی", + "dedicatedLpr": "LPR اختصاصی", + "saveSuccess": "نوع دوربین {{cameraName}} به‌روزرسانی شد. فریگیت را بازراه‌اندازی کنید تا تغییرات اعمال شود." + }, + "clone": { + "sectionTitle": "کپی تنظیمات", + "sectionDescription": "کپی پیکربندی از یک دوربین به دوربین دیگر یا یک دوربین جدید.", + "button": "کپی تنظیمات", + "title": "کپی تنظیمات دوربین", + "description": "کپی پیکربندی یک دوربین به یک یا چند دوربین دیگر یا یک دوربین جدید. هویت (نام، نام دوستانه، آدرس رابط کاربری وب، ترتیب نمایش) هرگز کپی نمی‌شود.", + "source": { + "label": "دوربین منبع", + "placeholder": "یک دوربین منبع انتخاب کنید", + "required": "یک دوربین منبع انتخاب کنید" + }, + "target": { + "legend": "مقصد", + "newRadio": "دوربین جدید", + "newNameLabel": "نام دوربین", + "newNamePlaceholder": "مثلاً back_door یا Back Door", + "newNameRequired": "نام دوربین الزامی است", + "newNameInvalid": "نام دوربین نامعتبر", + "newNameCollision": "دوربینی با این نام از قبل وجود دارد", + "newStreamsForced": "جریان‌ها همیشه برای دوربین جدید کپی می‌شوند.", + "existingCamerasRadio": "دوربین‌های موجود", + "allCameras": "همه دوربین‌ها", + "existingPlaceholder": "حداقل یک دوربین انتخاب کنید", + "existingDisabled": "دوربین دیگری برای کپی وجود ندارد" + }, + "categories": { + "legend": "تنظیمات برای کپی", + "description": "انتخاب کنید کدام تنظیمات از دوربین منبع کپی شوند.", + "selectAll": "انتخاب همه", + "selectNone": "انتخاب هیچ‌کدام", + "resetDefaults": "بازنشانی به پیش‌فرض‌ها", + "general": "عمومی", + "spatial": "تنظیمات فضایی", + "streams": "جریان‌ها", + "spatialWarningTitle": "عدم تطابق وضوح", + "spatialWarning": "وضوح تشخیص دوربین منبع {{srcCamera}} ({{srcWidth}}×{{srcHeight}}) با این موارد متفاوت است: {{cameras}}. چندضلعی‌ها ممکن است روی آن دوربین‌ها تراز نباشند. این پیش‌فرض‌ها خاموش هستند؛ فعال کنید تا همان‌طور که هست کپی شوند.", + "restartHint": "بازراه‌اندازی لازم است", + "items": { + "record": "ضبط", + "snapshots": "عکس‌های فوری", + "review": "بازبینی", + "motion": "تشخیص حرکت", + "objects": "اشیاء", + "audio": "تشخیص صدا", + "audio_transcription": "رونویسی صدا", + "notifications": "اعلان‌ها", + "birdseye": "چشم پرنده", + "mqtt": "MQTT", + "timestamp_style": "سبک مهر زمانی", + "onvif": "ONVIF", + "lpr": "تشخیص پلاک خودرو", + "face_recognition": "شناسایی چهره", + "semantic_search": "جستجوی معنایی", + "genai": "هوش مصنوعی مولد", + "type": "نوع دوربین (عادی / LPR اختصاصی)", + "profiles": "پروفایل‌ها", + "detect": "ابعاد تشخیص", + "zones": "نواحی", + "motion_mask": "ماسک‌های حرکت", + "object_masks": "ماسک‌های اشیاء", + "ffmpeg_live": "آدرس‌ها و نقش‌های جریان" + } + }, + "footer": { + "changeCount_one": "{{count}} تغییر اعمال خواهد شد", + "changeCount_other": "تعداد {{count}} تغییر اعمال خواهد شد", + "restartNeeded": "برای برخی تغییرات بازراه‌اندازی لازم خواهد بود.", + "liveOnly": "همه تغییرات به‌صورت زنده بدون بازراه‌اندازی اعمال می‌شوند.", + "submit": "ساخت کپی", + "submitting": "در حال کپی…" + }, + "toast": { + "success": "تنظیمات به {{cameraName}} کپی شد", + "successWithRestart": "تنظیمات به {{cameraName}} کپی شد. فریگیت را بازراه‌اندازی کنید تا تغییرات اعمال شود.", + "successMulti_one": "تنظیمات به {{count}} دوربین کپی شد", + "successMulti_other": "تنظیمات به تعداد {{count}} دوربین کپی شد", + "successMultiWithRestart_one": "تنظیمات به {{count}} دوربین کپی شد. فریگیت را بازراه‌اندازی کنید تا همه تغییرات اعمال شود.", + "successMultiWithRestart_other": "تنظیمات به تعداد {{count}} دوربین کپی شد. فریگیت را بازراه‌اندازی کنید تا همه تغییرات اعمال شود.", + "partialFailure": "{{successCount}} بخش اعمال شد؛ «{{failedSection}}» ناموفق بود: {{errorMessage}}", + "partialFailureMulti": "به {{successCount}} دوربین کپی شد؛ ناموفق برای {{failed}}: {{errorMessage}}", + "newCameraPartialFailure": "دوربین {{cameraName}} ایجاد شد اما کپی برخی تنظیمات ناموفق بود: {{errorMessage}}", + "sourceMissing": "دوربین منبع دیگر وجود ندارد", + "submitError": "کپی دوربین ناموفق بود: {{errorMessage}}" + } + } }, "cameraReview": { "title": "تنظیمات بازبینی دوربین", @@ -392,7 +597,7 @@ }, "reviewClassification": { "title": "طبقه‌بندی بازبینی", - "desc": "Frigate موارد بازبینی را به‌عنوان اعلان‌ها و تشخیص‌ها دسته‌بندی می‌کند. به‌طور پیش‌فرض، همهٔ اشیای person و car به‌عنوان اعلان در نظر گرفته می‌شوند. می‌توانید با پیکربندی نواحی لازم برای آن‌ها، طبقه‌بندی موارد بازبینی خود را دقیق‌تر کنید.", + "desc": "Frigate موارد بازبینی را به‌عنوان اعلان‌ها و تشخیص‌ها دسته‌بندی می‌کند. به‌طور پیش‌فرض، همهٔ اشیای person و car به‌عنوان اعلان در نظر گرفته می‌شوند. می‌توانید با پیکربندی نواحی لازم برای آن‌ها، طبقه‌بندی موارد بازبینی خود را دقیق‌تر کنید.", "noDefinedZones": "هیچ ناحیه‌ای برای این دوربین تعریف نشده است.", "objectAlertsTips": "همهٔ اشیای {{alertsLabels}} در {{cameraName}} به‌صورت اعلان نمایش داده می‌شوند.", "zoneObjectAlertsTips": "همهٔ اشیای {{alertsLabels}} که در {{zone}} روی {{cameraName}} تشخیص داده می‌شوند، به‌صورت اعلان نمایش داده خواهند شد.", @@ -458,6 +663,15 @@ "removeLastPoint": "حذف آخرین نقطه", "error": { "mustBeFinished": "رسم چندضلعی باید قبل از ذخیره کامل شود." + }, + "type": { + "zone": "منطقه", + "motion_mask": "ماسک حرکت", + "object_mask": "ماسک شیء" + }, + "revertOverride": { + "title": "بازگشت به پیکربندی پایه", + "desc": "این کار لغو پروفایل برای {{type}} {{name}} را حذف کرده و به پیکربندی پایه بازمی‌گردد." } }, "inertia": { @@ -474,6 +688,17 @@ "error": { "mustBeGreaterOrEqualTo": "آستانهٔ سرعت باید بیشتر از یا مساوی ۰.۱ باشد." } + }, + "id": { + "error": { + "mustNotBeEmpty": "شناسه نباید خالی باشد.", + "alreadyExists": "یک ماسک با این شناسه از قبل برای این دوربین وجود دارد." + } + }, + "name": { + "error": { + "mustNotBeEmpty": "نام نباید خالی باشد." + } } }, "zones": { @@ -526,12 +751,16 @@ "inertia": { "title": "لختی", "desc": "تعداد فریم‌هایی را مشخص می‌کند که یک شیء باید در یک ناحیه باشد تا در آن ناحیه محسوب شود. پیش‌فرض: ۳" + }, + "enabled": { + "title": "فعال شده", + "description": "آیا این منطقه در فایل پیکربندی فعال و روشن است. در صورت غیرفعال بودن، نمی‌تواند با MQTT فعال شود. مناطق غیرفعال در زمان اجرا نادیده گرفته می‌شوند." } }, "motionMasks": { "label": "ماسک حرکت", "context": { - "title": "ماسک‌های حرکت برای جلوگیری از این‌که انواع ناخواستهٔ حرکت باعث فعال‌شدن تشخیص شوند استفاده می‌شوند (مثلاً شاخه‌های درخت، مهر زمانیِ دوربین). ماسک‌های حرکت باید با نهایت صرفه‌جویی استفاده شوند؛ ماسک‌گذاریِ بیش‌ازحد باعث می‌شود ردیابی اشیا دشوارتر شود." + "title": "ماسک‌های حرکت برای جلوگیری از این‌که انواع ناخواستهٔ حرکت باعث فعال‌شدن تشخیص شوند استفاده می‌شوند (مثلاً شاخه‌های درخت، مهر زمانیِ دوربین). ماسک‌های حرکت باید با نهایت صرفه‌جویی استفاده شوند؛ ماسک‌گذاریِ بیش‌ازحد باعث می‌شود ردیابی اشیا دشوارتر شود." }, "point_one": "{{count}} نقطه", "point_other": "{{count}} نقطه ها", @@ -552,6 +781,12 @@ "desc": { "title": "ماسک‌های حرکت برای جلوگیری از فعال‌سازی تشخیص توسط انواع ناخواستهٔ حرکت استفاده می‌شوند. ماسک‌گذاری بیش‌ازحد ردیابی اشیا را دشوارتر می‌کند.", "documentation": "مستندات" + }, + "defaultName": "ماسک حرکت {{number}}", + "name": { + "title": "نام", + "description": "یک نام دوستانه اختیاری برای این ماسک حرکت.", + "placeholder": "یک نام وارد کنید..." } }, "objectMasks": { @@ -577,6 +812,11 @@ "title": "اشیا", "desc": "نوع شیئی که به این ماسک شیء مربوط می‌شود.", "allObjectTypes": "همهٔ انواع شیء" + }, + "name": { + "title": "نام", + "description": "یک نام دوستانه اختیاری برای این ماسک شیء.", + "placeholder": "یک نام وارد کنید..." } }, "restart_required": "نیاز به راه‌اندازی مجدد (ماسک‌ها/ناحیه‌ها تغییر کرده‌اند)", @@ -589,7 +829,17 @@ } }, "motionMaskLabel": "ماسک حرکت {{number}}", - "objectMaskLabel": "ماسک شیء {{number}}" + "objectMaskLabel": "ماسک شیء {{number}}", + "disabledInConfig": "آیتم در فایل پیکربندی غیرفعال است", + "addDisabledProfile": "ابتدا به پیکربندی پایه اضافه کنید، سپس در پروفایل لغو کنید", + "profileBase": "(پایه)", + "profileOverride": "(لغو)", + "masks": { + "enabled": { + "title": "فعال شده", + "description": "آیا این ماسک در فایل پیکربندی فعال است. در صورت غیرفعال بودن، نمی‌تواند با MQTT فعال شود. ماسک‌های غیرفعال در زمان اجرا نادیده گرفته می‌شوند." + } + } }, "motionDetectionTuner": { "title": "تنظیم‌گر تشخیص حرکت", @@ -599,7 +849,7 @@ "documentation": "راهنمای تنظیم تشخیص حرکت را بخوانید" }, "improveContrast": { - "desc": "بهبود کنتراست برای صحنه‌های تاریک‌تر. پیش‌فرض: روشن ", + "desc": "بهبود کنتراست برای صحنه‌های تاریک‌تر. پیش‌فرض: روشن", "title": "بهبود کنتراست" }, "toast": { @@ -858,7 +1108,8 @@ }, "notificationUnavailable": { "title": "اعلان‌ها در دسترس نیستند", - "desc": "اعلان‌های پوش وب نیاز به یک بستر امن دارند ( https://… ). این محدودیت مرورگر است. برای استفاده از اعلان‌ها، به‌صورت امن به Frigate دسترسی پیدا کنید." + "desc": "اعلان‌های پوش وب نیاز به یک بستر امن دارند ( https://… ). این محدودیت مرورگر است. برای استفاده از اعلان‌ها، به‌صورت امن به Frigate دسترسی پیدا کنید.", + "descPwa": "در iOS، اعلان‌های وب پوش فقط زمانی در دسترس هستند که فریگیت روی صفحه اصلی شما نصب شده باشد. منوی اشتراک‌گذاری را باز کنید، افزودن به صفحه اصلی را انتخاب کنید، سپس فریگیت را از آیکون جدید باز کنید تا این دستگاه برای اعلان‌ها ثبت شود." }, "globalSettings": { "title": "تنظیمات عمومی", @@ -914,7 +1165,7 @@ "snapshotConfig": { "title": "پیکربندی عکس فوری", "desc": "ارسال به Frigate+ نیازمند فعال بودنِ هم «عکس‌های فوری» و هم عکس‌های فوریِ clean_copy در پیکربندی شماست.", - "cleanCopyWarning": "برای برخی دوربین‌ها عکس فوری فعال است اما clean copy غیرفعال است. برای این‌که بتوانید تصاویر این دوربین‌ها را به Frigate+ ارسال کنید، باید clean_copy را در پیکربندی عکس فوری خود فعال کنید.", + "cleanCopyWarning": "برخی دوربین‌ها عکس فوری غیرفعال دارند", "table": { "camera": "دوربین", "snapshots": "عکس‌های فوری", @@ -936,7 +1187,15 @@ "baseModel": "مدل پایه", "userModel": "بهینه‌شده" }, - "supportedDetectors": "تشخیص‌دهنده‌های پشتیبانی‌شده" + "supportedDetectors": "تشخیص‌دهنده‌های پشتیبانی‌شده", + "noModelLoaded": "در حال حاضر هیچ مدل Frigate+ بارگذاری نشده است.", + "selectModel": "انتخاب یک مدل", + "noModelsAvailable": "مدلی در دسترس نیست", + "filter": { + "ariaLabel": "فیلتر مدل‌ها بر اساس نوع", + "baseModels": "مدل‌های پایه", + "fineTunedModels": "مدل‌های تنظیم‌شده" + } }, "unsavedChanges": "تغییرات تنظیمات Frigate+ ذخیره‌نشده", "restart_required": "نیاز به راه‌اندازی مجدد (مدل Frigate+ تغییر کرد)", @@ -944,7 +1203,15 @@ "success": "تنظیمات Frigate+ ذخیره شد. برای اعمال تغییرات، Frigate را راه‌اندازی مجدد کنید.", "error": "ذخیرهٔ تغییرات پیکربندی ناموفق بود: {{errorMessage}}" }, - "title": "تنظیمات Frigate+" + "title": "تنظیمات Frigate+", + "description": "Frigate+ یک سرویس اشتراکی است که دسترسی به ویژگی‌ها و قابلیت‌های اضافی برای نمونه فریگیت شما فراهم می‌کند، از جمله امکان استفاده از مدل‌های تشخیص اشیاء سفارشی آموزش‌دیده با داده‌های خودتان. می‌توانید تنظیمات مدل Frigate+ خود را اینجا مدیریت کنید.", + "cardTitles": { + "api": "API", + "currentModel": "مدل فعلی", + "otherModels": "سایر مدل‌ها", + "configuration": "پیکربندی" + }, + "changeInDetectorsAndModel": "تغییر مدل" }, "triggers": { "documentTitle": "تریگرها", @@ -1066,5 +1333,648 @@ } }, "addTrigger": "افزودن محرک" + }, + "button": { + "overriddenGlobal": "لغو‌شده (سراسری)", + "overriddenGlobalTooltip": "این دوربین تنظیمات پیکربندی سراسری را در این بخش لغو می‌کند", + "overriddenGlobalHeading_one": "این دوربین {{count}} فیلد از پیکربندی سراسری را لغو می‌کند:", + "overriddenGlobalHeading_other": "این دوربین تعداد {{count}} فیلد از پیکربندی سراسری را لغو می‌کند:", + "overriddenGlobalNoDeltas": "این دوربین پیکربندی سراسری را لغو می‌کند، اما هیچ مقدار فیلدی متفاوت نیست.", + "overriddenBaseConfig": "لغو‌شده (پیکربندی پایه)", + "overriddenBaseConfigTooltip": "پروفایل {{profile}} تنظیمات پیکربندی این بخش را لغو می‌کند", + "overriddenBaseConfigHeading_one": "پروفایل {{profile}} {{count}} فیلد از پیکربندی پایه را لغو می‌کند:", + "overriddenBaseConfigHeading_other": "پروفایل {{profile}} تعداد {{count}} فیلد از پیکربندی پایه را لغو می‌کند:", + "overriddenBaseConfigNoDeltas": "پروفایل {{profile}} این بخش را لغو می‌کند، اما هیچ مقدار فیلدی با پیکربندی پایه متفاوت نیست.", + "overriddenInCameras": { + "label_one": "در {{count}} دوربین لغو شده", + "label_other": "در تعداد {{count}} دوربین لغو شده", + "tooltip_one": "{{count}} دوربین مقادیر این بخش را لغو می‌کند. برای دیدن جزئیات کلیک کنید.", + "tooltip_other": "{{count}} دوربین مقادیر این بخش را لغو کرده‌اند. برای دیدن جزئیات کلیک کنید.", + "heading_one": "این بخش سراسری فیلدهایی دارد که در {{count}} دوربین لغو شده است.", + "heading_other": "این بخش سراسری فیلدهایی دارد که در تعداد {{count}} دوربین لغو شده است.", + "othersField_one": "{{count}} مورد دیگر", + "othersField_other": "{{count}} موارد دیگر", + "profilePrefix": "پروفایل {{profile}}: {{fields}}" + } + }, + "menuDot": { + "overrideGlobal": "این بخش پیکربندی سراسری را لغو می‌کند", + "overrideProfile": "این بخش توسط پروفایل {{profile}} لغو شده است", + "unsaved": "این بخش تغییرات ذخیره‌نشده دارد" + }, + "saveAllPreview": { + "title": "تغییرات برای ذخیره", + "triggerLabel": "بازبینی تغییرات معلق", + "empty": "تغییر معلقی وجود ندارد.", + "scope": { + "label": "محدوده", + "global": "سراسری", + "camera": "دوربین: {{cameraName}}" + }, + "profile": { + "label": "پروفایل" + }, + "field": { + "label": "فیلد" + }, + "value": { + "label": "مقدار جدید", + "reset": "بازنشانی" + } + }, + "timestampPosition": { + "tl": "بالا چپ", + "tr": "بالا راست", + "bl": "پایین چپ", + "br": "پایین راست" + }, + "detectorsAndModel": { + "title": "آشکارسازها و مدل", + "description": "پیکربندی پس‌زمینه آشکارسازی که تشخیص اشیاء را اجرا می‌کند و مدلی که استفاده می‌کند. تغییرات با هم ذخیره می‌شوند تا آشکارساز و مدل همگام بمانند.", + "cardTitles": { + "detector": "سخت‌افزار آشکارساز", + "model": "مدل تشخیص" + }, + "tabs": { + "plus": "Frigate+", + "custom": "مدل سفارشی" + }, + "mismatch": { + "warning": "مدل فعلی Frigate+ «{{model}}» به آشکارساز {{required}} نیاز دارد. یک مدل سازگار در زیر انتخاب کنید یا قبل از ذخیره به مدل سفارشی تغییر دهید." + }, + "plusModel": { + "requiresDetector": "نیازمند: {{detector}}", + "noModelSelected": "انتخاب یک مدل Frigate+" + }, + "toast": { + "saveSuccess": "تنظیمات آشکارساز و مدل ذخیره شد. فریگیت را بازراه‌اندازی کنید تا تغییرات اعمال شود.", + "saveError": "ذخیره تنظیمات آشکارساز و مدل ناموفق بود" + }, + "unsavedChanges": "تغییرات ذخیره‌نشده آشکارساز و مدل", + "restartRequired": "بازراه‌اندازی لازم است (آشکارساز یا مدل تغییر کرد)" + }, + "maintenance": { + "title": "حفظ و نگهداری", + "sync": { + "title": "همگام‌سازی رسانه", + "desc": "فریگیت به‌طور دوره‌ای رسانه‌ها را بر اساس پیکربندی نگهداری شما پاک‌سازی می‌کند. دیدن چند فایل یتیم در حین اجرای فریگیت طبیعی است. از این ویژگی برای حذف فایل‌های رسانه یتیم از دیسک که دیگر در پایگاه داده ارجاع نشده‌اند استفاده کنید.", + "started": "همگام‌سازی رسانه شروع شد.", + "alreadyRunning": "یک کار همگام‌سازی از قبل در حال اجراست", + "error": "شروع همگام‌سازی ناموفق بود", + "currentStatus": "وضعیت", + "jobId": "شناسه کار", + "startTime": "زمان شروع", + "endTime": "زمان پایان", + "statusLabel": "وضعیت", + "results": "نتایج", + "errorLabel": "خطا", + "mediaTypes": "انواع رسانه", + "allMedia": "همه رسانه‌ها", + "dryRun": "اجرای آزمایشی", + "dryRunEnabled": "هیچ فایلی حذف نخواهد شد", + "dryRunDisabled": "فایل‌ها حذف خواهند شد", + "force": "اجبار", + "forceDesc": "عبور از آستانه ایمنی و تکمیل همگام‌سازی حتی اگر بیش از ۵۰٪ فایل‌ها حذف شوند.", + "verbose": "پرگفتار", + "verboseDesc": "نوشتن فهرست کامل فایل‌های یتیم روی دیسک برای بازبینی.", + "running": "همگام‌سازی در حال اجرا...", + "start": "شروع همگام‌سازی", + "inProgress": "همگام‌سازی در حال انجام است. این صفحه غیرفعال است.", + "status": { + "queued": "در صف", + "running": "در حال اجرا", + "completed": "تکمیل‌شده", + "failed": "ناموفق", + "notRunning": "در حال اجرا نیست" + }, + "resultsFields": { + "filesChecked": "فایل‌های بررسی‌شده", + "orphansFound": "یتیم‌های یافت‌شده", + "orphansDeleted": "یتیم‌های حذف‌شده", + "aborted": "لغو شد. حذف از آستانه ایمنی فراتر می‌رفت.", + "error": "خطا", + "totals": "مجموع‌ها" + }, + "event_snapshots": "عکس‌های فوری اشیاء ردیابی‌شده", + "event_thumbnails": "تصاویر بندانگشتی اشیاء ردیابی‌شده", + "review_thumbnails": "عکس‌های بازبینی", + "previews": "پیش‌نمایش‌ها", + "exports": "خروجی‌ها", + "recordings": "ضبط‌ها" + }, + "regionGrid": { + "title": "شبکه منطقه", + "desc": "شبکه منطقه یک بهینه‌سازی است که یاد می‌گیرد اشیاء با اندازه‌های مختلف معمولاً در کجای میدان دید هر دوربین ظاهر می‌شوند. فریگیت از این داده‌ها برای اندازه‌گذاری کارآمد مناطق تشخیص استفاده می‌کند. شبکه به‌مرور زمان از داده‌های اشیاء ردیابی‌شده به‌طور خودکار ساخته می‌شود.", + "clear": "پاک کردن شبکه منطقه", + "clearConfirmTitle": "پاک کردن شبکه منطقه", + "clearConfirmDesc": "پاک کردن شبکه منطقه توصیه نمی‌شود مگر اینکه اخیراً اندازه مدل آشکارساز را تغییر داده باشید یا موقعیت فیزیکی دوربین را تغییر داده باشید و مشکلات ردیابی اشیاء داشته باشید. شبکه به‌مرور زمان با ردیابی اشیاء به‌طور خودکار بازسازی می‌شود. بازراه‌اندازی فریگیت برای اعمال تغییرات لازم است.", + "clearSuccess": "شبکه منطقه با موفقیت پاک شد", + "clearError": "پاک کردن شبکه منطقه ناموفق بود", + "restartRequired": "برای اعمال تغییرات شبکه منطقه بازراه‌اندازی لازم است" + } + }, + "configForm": { + "global": { + "title": "تنظیمات سراسری", + "description": "این تنظیمات برای همه دوربین‌ها اعمال می‌شود مگر اینکه در تنظیمات خاص دوربین لغو شود." + }, + "camera": { + "title": "تنظیمات دوربین", + "description": "این تنظیمات فقط برای این دوربین اعمال می‌شود و تنظیمات سراسری را لغو می‌کند.", + "noCameras": "دوربینی در دسترس نیست" + }, + "advancedSettingsCount": "تنظیمات پیشرفته ({{count}})", + "advancedCount": "پیشرفته ({{count}})", + "showAdvanced": "نمایش تنظیمات پیشرفته", + "tabs": { + "sharedDefaults": "پیش‌فرض‌های مشترک", + "system": "سیستم", + "integrations": "یکپارچه‌سازی‌ها" + }, + "additionalProperties": { + "keyLabel": "کلید", + "valueLabel": "مقدار", + "keyPlaceholder": "کلید جدید", + "remove": "حذف", + "providerNameLabel": "نام ارائه‌دهنده", + "providerNamePlaceholder": "مثلاً openai", + "variableNameLabel": "نام متغیر", + "variableNamePlaceholder": "مثلاً MY_VARIABLE", + "loggerNameLabel": "نام لاگر", + "loggerNamePlaceholder": "مثلاً frigate.record", + "keyPatternError": "فقط از حروف، اعداد، خط تیره و زیرخط استفاده کنید (بدون فاصله)" + }, + "knownPlates": { + "namePlaceholder": "مثلاً ماشین همسر", + "platePlaceholder": "شماره پلاک یا رجکس" + }, + "liveStreams": { + "streamNameLabel": "نام جریان", + "streamNamePlaceholder": "مثلاً جریان HD اصلی", + "go2rtcStreamLabel": "جریان go2rtc", + "go2rtcStreamPlaceholder": "انتخاب یک جریان go2rtc", + "go2rtcStreamSearch": "جستجو یا وارد کردن نام جریان…", + "noGo2rtcStreams": "هیچ جریان go2rtc پیکربندی نشده است", + "availableStreams": "جریان‌های در دسترس", + "useCustom": "استفاده از «{{value}}»", + "addStream": "افزودن جریان" + }, + "timezone": { + "defaultOption": "استفاده از منطقه زمانی مرورگر" + }, + "roleMap": { + "empty": "بدون نگاشت نقش", + "roleLabel": "نقش", + "groupsLabel": "گروه‌ها", + "addMapping": "افزودن نگاشت نقش", + "remove": "حذف" + }, + "ffmpegArgs": { + "preset": "پیش‌تنظیم", + "manual": "آرگومان‌های دستی", + "inherit": "ارث‌بری از تنظیمات دوربین", + "none": "هیچ‌کدام", + "useGlobalSetting": "ارث‌بری از تنظیمات سراسری", + "selectPreset": "انتخاب پیش‌تنظیم", + "manualPlaceholder": "وارد کردن آرگومان‌های FFmpeg", + "presetLabels": { + "preset-rpi-64-h264": "رزبری‌پای (H.264)", + "preset-rpi-64-h265": "رزبری‌پای (H.265)", + "preset-vaapi": "VAAPI (GPU اینتل/AMD)", + "preset-intel-qsv-h264": "Intel QuickSync (H.264)", + "preset-intel-qsv-h265": "Intel QuickSync (H.265)", + "preset-nvidia": "GPU ان‌ویدیا", + "preset-jetson-h264": "NVIDIA Jetson (H.264)", + "preset-jetson-h265": "NVIDIA Jetson (H.265)", + "preset-rkmpp": "Rockchip RKMPP", + "preset-http-jpeg-generic": "HTTP JPEG (عمومی)", + "preset-http-mjpeg-generic": "HTTP MJPEG (عمومی)", + "preset-http-reolink": "HTTP - دوربین‌های Reolink", + "preset-rtmp-generic": "RTMP (عمومی)", + "preset-rtsp-generic": "RTSP (عمومی)", + "preset-rtsp-restream": "RTSP - بازپخش از go2rtc", + "preset-rtsp-restream-low-latency": "RTSP - بازپخش از go2rtc (تأخیر پایین)", + "preset-rtsp-udp": "RTSP - UDP", + "preset-rtsp-blue-iris": "RTSP - Blue Iris", + "preset-record-generic": "ضبط (عمومی، بدون صدا)", + "preset-record-generic-audio-copy": "ضبط (عمومی + کپی صدا)", + "preset-record-generic-audio-aac": "ضبط (عمومی + صدا به AAC)", + "preset-record-mjpeg": "ضبط - دوربین‌های MJPEG", + "preset-record-jpeg": "ضبط - دوربین‌های JPEG", + "preset-record-ubiquiti": "ضبط - دوربین‌های Ubiquiti" + } + }, + "cameraInputs": { + "itemTitle": "جریان {{index}}", + "sourceMode": { + "restream": "بازپخش (go2rtc)", + "manual": "مسیر ورودی دستی", + "go2rtcStreamLabel": "جریان go2rtc", + "go2rtcStreamPlaceholder": "انتخاب یک جریان go2rtc", + "noGo2rtcStreams": "هیچ جریان go2rtc پیکربندی نشده است", + "go2rtcStreamSearch": "جستجوی جریان‌ها...", + "availableStreams": "جریان‌های در دسترس", + "noMatchingStreams": "هیچ جریان منطبقی نیست" + } + }, + "restartRequiredField": "بازراه‌اندازی لازم است", + "restartRequiredFooter": "پیکربندی تغییر یافت - بازراه‌اندازی لازم است", + "sections": { + "detect": "تشخیص", + "record": "ضبط", + "snapshots": "عکس‌های فوری", + "motion": "حرکت", + "objects": "اشیاء", + "review": "بازبینی", + "audio": "صدا", + "notifications": "اعلان‌ها", + "live": "نمای زنده", + "timestamp_style": "مهرهای زمانی", + "mqtt": "MQTT", + "database": "پایگاه داده", + "telemetry": "تلمتری", + "auth": "احراز هویت", + "tls": "TLS", + "proxy": "پروکسی", + "go2rtc": "go2rtc", + "ffmpeg": "FFmpeg", + "detectors": "آشکارسازها", + "model": "مدل", + "semantic_search": "جستجوی معنایی", + "genai": "GenAI", + "face_recognition": "شناسایی چهره", + "lpr": "تشخیص پلاک خودرو", + "birdseye": "چشم پرنده", + "masksAndZones": "ماسک‌ها / مناطق" + }, + "detect": { + "title": "تنظیمات تشخیص" + }, + "detectors": { + "title": "تنظیمات آشکارساز", + "singleType": "فقط یک آشکارساز {{type}} مجاز است.", + "keyRequired": "نام آشکارساز الزامی است.", + "keyDuplicate": "نام آشکارساز از قبل وجود دارد.", + "noSchema": "هیچ طرح‌واره آشکارسازی در دسترس نیست.", + "none": "هیچ نمونه آشکارسازی پیکربندی نشده است.", + "add": "افزودن آشکارساز", + "addCustomKey": "افزودن کلید سفارشی" + }, + "record": { + "title": "تنظیمات ضبط" + }, + "snapshots": { + "title": "تنظیمات عکس فوری" + }, + "motion": { + "title": "تنظیمات حرکت" + }, + "objects": { + "title": "تنظیمات اشیاء" + }, + "audioLabels": { + "summary": "{{count}} برچسب صوتی انتخاب شد", + "empty": "برچسب صدایی در دسترس نیست" + }, + "objectLabels": { + "summary": "{{count}} نوع شیء انتخاب شد", + "empty": "برچسب شیء‌ای در دسترس نیست" + }, + "reviewLabels": { + "summary": "{{count}} برچسب انتخاب شد", + "empty": "برچسبی در دسترس نیست" + }, + "filters": { + "objectFieldLabel": "{{field}} برای {{label}}" + }, + "zoneNames": { + "summary": "{{count}} انتخاب شد", + "empty": "منطقه‌ای در دسترس نیست" + }, + "inputRoles": { + "summary": "{{count}} نقش انتخاب شد", + "empty": "نقشی در دسترس نیست", + "options": { + "detect": "تشخیص", + "record": "ضبط فیلم", + "audio": "صدا" + } + }, + "genaiRoles": { + "options": { + "embeddings": "جاسازی", + "descriptions": "توضیحات", + "chat": "گفتگو" + } + }, + "semanticSearchModel": { + "placeholder": "انتخاب مدل…", + "builtIn": "مدل‌های داخلی", + "genaiProviders": "ارائه‌دهندگان GenAI" + }, + "semanticSearchModelSize": { + "notApplicable": "برای ارائه‌دهندگان GenAI قابل اعمال نیست" + }, + "review": { + "title": "تنظیمات بازبینی" + }, + "audio": { + "title": "تنظیمات صدا" + }, + "notifications": { + "title": "تنظیمات اعلان" + }, + "live": { + "title": "تنظیمات نمای زنده" + }, + "timestamp_style": { + "title": "تنظیمات مهر زمانی" + }, + "searchPlaceholder": "جستجو...", + "addCustomLabel": "افزودن برچسب سفارشی...", + "genaiModel": { + "placeholder": "انتخاب یا وارد کردن مدل…", + "search": "جستجو یا وارد کردن مدل…", + "noModels": "مدلی در دسترس نیست", + "available": "مدل‌های در دسترس", + "useCustom": "استفاده از «{{value}}»", + "refresh": "بازخوانی مدل‌ها", + "probeFailed": "کاوش مدل‌ها ناموفق بود", + "fetchedModels": "فهرست مدل با موفقیت دریافت شد" + }, + "ptzPresets": { + "placeholder": "انتخاب یا وارد کردن یک پیش‌تنظیم...", + "search": "جستجو یا وارد کردن پیش‌تنظیم...", + "noPresets": "پیش‌تنظیمی در دسترس نیست", + "available": "پیش‌تنظیم‌های دوربین", + "useCustom": "استفاده از «{{value}}»" + }, + "defaultRole": { + "admin": "مدیر", + "viewer": "بیننده" + } + }, + "globalConfig": { + "title": "پیکربندی سراسری", + "description": "پیکربندی تنظیمات سراسری که برای همه دوربین‌ها اعمال می‌شود مگر اینکه لغو شود.", + "toast": { + "success": "تنظیمات سراسری با موفقیت ذخیره شد", + "error": "ذخیره تنظیمات سراسری ناموفق بود", + "validationError": "اعتبارسنجی ناموفق بود" + } + }, + "cameraConfig": { + "title": "پیکربندی دوربین", + "description": "پیکربندی تنظیمات برای دوربین‌های فردی. تنظیمات پیش‌فرض‌های سراسری را لغو می‌کند.", + "overriddenBadge": "لغو‌شده", + "resetToGlobal": "بازنشانی به سراسری", + "toast": { + "success": "تنظیمات دوربین با موفقیت ذخیره شد", + "error": "ذخیره تنظیمات دوربین ناموفق بود" + } + }, + "toast": { + "success": "تنظیمات با موفقیت ذخیره شد", + "applied": "تنظیمات با موفقیت اعمال شد", + "successRestartRequired": "تنظیمات با موفقیت ذخیره شد. فریگیت را بازراه‌اندازی کنید تا تغییرات اعمال شود.", + "error": "ذخیره تنظیمات ناموفق بود", + "validationError": "اعتبارسنجی ناموفق بود: {{message}}", + "resetSuccess": "بازنشانی به پیش‌فرض‌های سراسری", + "resetError": "بازنشانی تنظیمات ناموفق بود", + "saveAllSuccess_one": "{{count}} بخش با موفقیت ذخیره شد.", + "saveAllSuccess_other": "همه {{count}} بخش با موفقیت ذخیره شد.", + "saveAllSuccessRestartRequired_one": "{{count}} بخش با موفقیت ذخیره شد. فریگیت را بازراه‌اندازی کنید تا تغییرات اعمال شود.", + "saveAllSuccessRestartRequired_other": "همه {{count}} بخش با موفقیت ذخیره شد. فریگیت را بازراه‌اندازی کنید تا تغییرات اعمال شود.", + "saveAllPartial_one": "{{successCount}} از {{totalCount}} بخش ذخیره شد. {{failCount}} ناموفق بود.", + "saveAllPartial_other": "{{successCount}} از تعداد {{totalCount}} بخش ذخیره شد. {{failCount}} ناموفق بود.", + "saveAllFailure": "ذخیره همه بخش‌ها ناموفق بود." + }, + "profiles": { + "title": "پروفایل‌ها", + "activeProfile": "پروفایل فعال", + "noActiveProfile": "پروفایل فعالی وجود ندارد", + "active": "فعال", + "activated": "پروفایل «{{profile}}» فعال شد", + "activateFailed": "تنظیم پروفایل ناموفق بود", + "deactivated": "پروفایل غیرفعال شد", + "noProfiles": "پروفایلی تعریف نشده است.", + "noOverrides": "بدون لغو", + "cameraCount_one": "{{count}} دوربین", + "cameraCount_other": "تعداد {{count}} دوربین", + "columnCamera": "دوربین", + "columnOverrides": "لغوهای پروفایل", + "baseConfig": "پیکربندی پایه", + "addProfile": "افزودن پروفایل", + "newProfile": "پروفایل جدید", + "profileNamePlaceholder": "مثلاً مسلح، خارج از خانه، حالت شب", + "friendlyNameLabel": "نام پروفایل", + "profileIdLabel": "شناسه پروفایل", + "profileIdDescription": "شناسه داخلی استفاده‌شده در پیکربندی و اتوماسیون‌ها", + "nameInvalid": "فقط حروف کوچک، اعداد و زیرخط مجاز است", + "nameDuplicate": "پروفایلی با این نام از قبل وجود دارد", + "error": { + "mustBeAtLeastTwoCharacters": "حداقل ۲ نویسه باید باشد", + "mustNotContainPeriod": "نباید نقطه داشته باشد", + "alreadyExists": "پروفایلی با این شناسه از قبل وجود دارد" + }, + "renameProfile": "تغییر نام پروفایل", + "renameSuccess": "نام پروفایل به «{{profile}}» تغییر یافت", + "deleteProfile": "حذف پروفایل", + "deleteProfileConfirm": "پروفایل «{{profile}}» از همه دوربین‌ها حذف شود؟ این کار قابل بازگشت نیست.", + "deleteSuccess": "پروفایل «{{profile}}» حذف شد", + "createSuccess": "پروفایل «{{profile}}» ایجاد شد", + "removeOverride": "حذف لغو پروفایل", + "deleteSection": "حذف لغوهای بخش", + "deleteSectionConfirm": "لغوهای {{section}} برای پروفایل {{profile}} روی {{camera}} حذف شود؟", + "deleteSectionSuccess": "لغوهای {{section}} برای پروفایل {{profile}} حذف شد", + "enableSwitch": "فعال‌سازی پروفایل‌ها", + "enabledDescription": "پروفایل‌ها فعال هستند. یک پروفایل جدید در زیر ایجاد کنید، به بخش پیکربندی دوربین بروید تا تغییرات خود را اعمال کنید، و ذخیره کنید تا تغییرات اعمال شوند.", + "disabledDescription": "پروفایل‌ها به شما اجازه می‌دهند مجموعه‌های نام‌گذاری‌شده‌ای از لغوهای پیکربندی دوربین تعریف کنید (مثلاً مسلح، خارج از خانه، شب) که بتوانید در صورت نیاز فعال کنید." + }, + "unsavedChanges": "شما تغییرات ذخیره‌نشده دارید", + "confirmReset": "تأیید بازنشانی", + "resetToDefaultDescription": "این کار همه تنظیمات این بخش را به مقادیر پیش‌فرض بازنشانی می‌کند. این عمل قابل بازگشت نیست.", + "resetToGlobalDescription": "این کار تنظیمات این بخش را به پیش‌فرض‌های سراسری بازنشانی می‌کند. این عمل قابل بازگشت نیست.", + "go2rtcStreams": { + "title": "جریان‌های go2rtc", + "description": "مدیریت پیکربندی جریان‌های go2rtc برای بازپخش دوربین. هر جریان یک نام و یک یا چند آدرس منبع دارد.", + "addStream": "افزودن جریان", + "addStreamDesc": "یک نام برای جریان جدید وارد کنید. این نام برای ارجاع به جریان در پیکربندی دوربین استفاده خواهد شد.", + "addUrl": "افزودن آدرس", + "sourceNumber": "منبع {{index}}", + "streamName": "نام جریان", + "streamNamePlaceholder": "مثلاً front_door", + "streamUrlPlaceholder": "مثلاً rtsp://user:pass@192.168.1.100/stream", + "deleteStream": "حذف جریان", + "deleteStreamConfirm": "آیا مطمئن هستید می‌خواهید جریان «{{streamName}}» را حذف کنید؟ دوربین‌هایی که به این جریان ارجاع می‌کنند ممکن است از کار بیفتند.", + "noStreams": "هیچ جریان go2rtc پیکربندی نشده است. یک جریان اضافه کنید تا شروع کنید.", + "validation": { + "nameRequired": "نام جریان الزامی است", + "nameDuplicate": "جریانی با این نام از قبل وجود دارد", + "nameInvalid": "نام جریان فقط می‌تواند شامل حروف، اعداد، زیرخط و خط تیره باشد", + "urlRequired": "حداقل یک آدرس الزامی است" + }, + "renameStream": "تغییر نام جریان", + "renameStreamDesc": "یک نام جدید برای این جریان وارد کنید. تغییر نام جریان ممکن است دوربین‌ها یا جریان‌های دیگری که با نام به آن ارجاع می‌کنند را خراب کند.", + "newStreamName": "نام جریان جدید", + "ffmpeg": { + "useFfmpegModule": "استفاده از حالت سازگار (ffmpeg)", + "video": "ویدیو", + "audio": "صدا", + "hardware": "شتاب سخت‌افزاری", + "videoCopy": "کپی", + "videoH264": "تبدیل کد به H.264", + "videoH265": "تبدیل کد به H.265", + "videoExclude": "مستثنی", + "audioCopy": "کپی", + "audioAac": "تبدیل کد به AAC", + "audioOpus": "تبدیل کد به Opus", + "audioPcmu": "تبدیل کد به PCM μ-law", + "audioPcma": "تبدیل کد به PCM A-law", + "audioPcm": "تبدیل کد به PCM", + "audioMp3": "تبدیل کد به MP3", + "audioExclude": "مستثنی", + "hardwareNone": "بدون شتاب سخت‌افزاری", + "hardwareAuto": "خودکار (توصیه‌شده)", + "hardwareVaapi": "VAAPI", + "hardwareCuda": "CUDA", + "hardwareV4l2m2m": "V4L2 M2M", + "hardwareDxva2": "DXVA2", + "hardwareVideotoolbox": "VideoToolbox", + "addVideoCodec": "افزودن کدک ویدیو", + "addAudioCodec": "افزودن کدک صدا", + "removeCodec": "حذف کدک" + } + }, + "birdseye": { + "trackingMode": { + "objects": "اشیاء", + "motion": "حرکت", + "continuous": "پیوسته" + }, + "cameraOrder": { + "label": "ترتیب دوربین", + "description": "دوربین‌ها را بکشید تا ترتیب آن‌ها در چیدمان چشم پرنده تنظیم شود.", + "reorderHandle": "برای مرتب‌سازی بکشید", + "saving": "در حال ذخیره…", + "saved": "ذخیره شد" + } + }, + "retainMode": { + "all": "همه", + "motion": "حرکت", + "active_objects": "اشیاء فعال" + }, + "previewQuality": { + "very_high": "بسیار بالا", + "high": "بالا", + "medium": "متوسط", + "low": "پایین", + "very_low": "بسیار پایین" + }, + "ui": { + "timeFormat": { + "browser": "مرورگر", + "12hour": "۱۲ ساعته", + "24hour": "۲۴ ساعته" + }, + "unitSystem": { + "metric": "متریک", + "imperial": "امپریال" + } + }, + "review": { + "imageSource": { + "recordings": "ضبط‌ها", + "previews": "پیش‌نمایش‌ها" + } + }, + "logger": { + "logLevel": { + "debug": "اشکال‌زدایی", + "info": "اطلاعات", + "warning": "هشدار", + "error": "خطا", + "critical": "بحرانی" + } + }, + "onvif": { + "profileAuto": "خودکار", + "profileLoading": "در حال بارگذاری پروفایل‌ها...", + "autotracking": { + "zooming": { + "disabled": "غیرفعال", + "absolute": "مطلق", + "relative": "نسبی" + } + } + }, + "modelSize": { + "small": "کوچک", + "large": "بزرگ" + }, + "configMessages": { + "review": { + "recordDisabled": "ضبط غیرفعال است، موارد بازبینی تولید نخواهند شد.", + "detectDisabled": "تشخیص اشیاء غیرفعال است. موارد بازبینی به اشیاء تشخیص‌داده‌شده برای دسته‌بندی هشدارها و تشخیص‌ها نیاز دارند.", + "allNonAlertDetections": "همه فعالیت‌های غیر هشدار به‌عنوان تشخیص گنجانده خواهند شد.", + "genaiImageSourceRecordingsRecordDisabled": "منبع تصویر روی «ضبط‌ها» تنظیم شده، اما ضبط غیرفعال است. فریگیت به تصاویر پیش‌نمایش بازمی‌گردد." + }, + "audio": { + "noAudioRole": "هیچ جریانی نقش صدا تعریف‌شده ندارد. باید نقش صدا را فعال کنید تا تشخیص صدا کار کند." + }, + "audioTranscription": { + "audioDetectionDisabled": "تشخیص صدا برای این دوربین فعال نیست. رونویسی صدا نیازمند فعال بودن تشخیص صدا است." + }, + "detect": { + "fpsGreaterThanFive": "تنظیم FPS تشخیص بالاتر از ۵ توصیه نمی‌شود. مقادیر بالاتر ممکن است باعث مشکلات عملکرد شود و هیچ فایده‌ای نخواهد داشت.", + "disabled": "تشخیص اشیاء غیرفعال است. عکس‌های فوری، موارد بازبینی و غنی‌سازی‌هایی مانند شناسایی چهره، تشخیص پلاک خودرو و هوش مصنوعی مولد کار نخواهند کرد.", + "resolutionShouldBeMultipleOfFour": "برای بهترین نتایج، عرض و ارتفاع تشخیص باید مضرب ۴ باشند. سایر مقادیر زوج ممکن است باعث مصنوعات بصری یا تحریف جزئی در جریان تشخیص شوند.", + "aspectRatioMismatch": "عرض و ارتفاعی که وارد کرده‌اید با نسبت ابعاد وضوح تشخیص فعلی شما مطابقت ندارد. این ممکن است تصویر کشیده یا تحریف‌شده تولید کند.", + "maxFramesSet": "تنظیم حداکثر فریم‌ها رفتار پیش‌فرض را لغو کرده و ردیابی اشیاء ثابت را غیرفعال می‌کند. شرایط بسیار کمی وجود دارد که به این کار نیاز باشد، با احتیاط استفاده کنید.", + "squareResolution": "وضوح تشخیص مربع غیرمعمول است. عرض و ارتفاع تشخیص باید با نسبت ابعاد دوربین شما مطابقت داشته باشد (مثلاً ۱۶:۹)، نه ابعاد مدل تشخیص اشیاء. عدم تطابق نسبت ابعاد می‌تواند تصویر را کشیده کرده و دقت تشخیص را کاهش دهد.", + "resolutionHigh": "این وضوح تشخیص بالاتر از حد توصیه‌شده است و ممکن است باعث افزایش مصرف منابع شود بدون اینکه دقت تشخیص را بهبود بخشد. وضوح تشخیص ۱۰۸۰p یا کمتر برای اکثر دوربین‌ها توصیه می‌شود.", + "globalResolutionMultipleCameras": "یک وضوح تشخیص سراسری تنظیم شده در حالی که چندین دوربین پیکربندی شده‌اند. مگر اینکه همه دوربین‌ها وضوح و نسبت ابعاد یکسانی داشته باشند، عرض و ارتفاع تشخیص باید به ازای هر دوربین تعریف شود تا با نسبت ابعاد بومی هر دوربین مطابقت داشته باشد." + }, + "model": { + "optimizedFor320": "فریگیت برای مدل 320x320 بهینه شده است که بهترین انتخاب برای اکثر تنظیمات است. مدل 640x640 کندتر است و فقط در سناریوهای خاص کمک می‌کند.", + "inputDimensionsNotDetectResolution": "عرض و ارتفاع ورودی مدل ابعاد ورودی مدل تشخیص اشیاء هستند، نه وضوح تشخیص دوربین شما. باید با ابعاد مدلی که استفاده می‌کنید مطابقت داشته باشند — معمولاً اندازه مربعی مانند 320x320 یا 640x640." + }, + "ffmpeg": { + "hwaccelManualNotRecommended": "آرگومان‌های شتاب سخت‌افزاری دستی توصیه نمی‌شوند. مگر اینکه نیاز خاصی وجود داشته باشد، پیش‌تنظیمی که با سخت‌افزار شما مطابقت دارد را انتخاب کنید.", + "inputsMissingGo2rtcStream": "یک ورودی در زیر به یک بازپخش go2rtc اشاره می‌کند که دیگر وجود ندارد. یک بازپخش موجود انتخاب کنید یا آدرس دوربین را دستی وارد کنید، در غیر این صورت این دوربین در اتصال ناموفق خواهد بود." + }, + "objects": { + "genaiNoDescriptionsProvider": "باید یک ارائه‌دهنده GenAI با نقش 'descriptions' پیکربندی کنید تا توضیحات تولید شوند." + }, + "faceRecognition": { + "globalDisabled": "غنی‌سازی شناسایی چهره باید فعال باشد تا ویژگی‌های شناسایی چهره روی این دوربین کار کنند.", + "personNotTracked": "شناسایی چهره نیازمند ردیابی شیء 'person' است. 'person' را در اشیاء برای این دوربین فعال کنید.", + "modelSizeLarge": "مدل 'large' برای عملکرد معقول به GPU یا NPU نیاز دارد. در سیستم‌های فقط CPU از 'small' استفاده کنید." + }, + "lpr": { + "globalDisabled": "غنی‌سازی تشخیص پلاک خودرو باید فعال باشد تا ویژگی‌های LPR روی این دوربین کار کنند.", + "vehicleNotTracked": "تشخیص پلاک خودرو نیازمند ردیابی 'car' یا 'motorcycle' است. 'car' یا 'motorcycle' را در اشیاء برای این دوربین فعال کنید.", + "modelSizeLarge": "مدل 'large' برای پلاک‌های چندخطی بهینه شده است. مدل 'small' عملکرد بهتری نسبت به 'large' دارد و باید استفاده شود مگر اینکه منطقه شما از قالب‌های پلاک چندخطی استفاده کند." + }, + "record": { + "noRecordRole": "هیچ جریانی نقش ضبط تعریف‌شده ندارد. ضبط کار نخواهد کرد." + }, + "birdseye": { + "objectsModeDetectDisabled": "چشم پرنده روی حالت 'objects' تنظیم شده، اما تشخیص اشیاء برای این دوربین غیرفعال است. این دوربین در چشم پرنده ظاهر نخواهد شد." + }, + "snapshots": { + "detectDisabled": "تشخیص اشیاء غیرفعال است. عکس‌های فوری از اشیاء ردیابی‌شده تولید می‌شوند و ایجاد نخواهند شد." + }, + "detectors": { + "mixedTypes": "همه آشکارسازها باید از یک نوع استفاده کنند. آشکارسازهای موجود را حذف کنید تا از نوع دیگری استفاده کنید.", + "mixedTypesSuggestion": "همه آشکارسازها باید از یک نوع استفاده کنند. آشکارسازهای موجود را حذف کنید یا {{type}} را انتخاب کنید." + }, + "semanticSearch": { + "jinav2SmallModelSize": "اندازه 'small' با مدل Jina V2 هزینه RAM و استنتاج بالایی دارد. مدل 'large' با یک GPU مجزا توصیه می‌شود." + }, + "onvif": { + "autotrackingNoZones": "ردیابی خودکار حداقل به یک منطقه نیاز دارد. یک منطقه برای این دوربین در ماسک‌ها / مناطق تعریف کنید، سپس آن را به‌عنوان منطقه مورد نیاز در زیر تنظیم کنید." + } } } diff --git a/web/public/locales/fa/views/system.json b/web/public/locales/fa/views/system.json index f2ac7eb032..a6aed8bc5f 100644 --- a/web/public/locales/fa/views/system.json +++ b/web/public/locales/fa/views/system.json @@ -7,7 +7,8 @@ "logs": { "frigate": "ثبت رخدادهای فریگیت - فریگیت", "go2rtc": "گزارش‌های Go2RTC - فریگیت", - "nginx": "گزارش‌های Nginx - فریگیت" + "nginx": "گزارش‌های Nginx - فریگیت", + "websocket": "گزارش‌های پیام‌ها - فریگیت" } }, "title": "سیستم", @@ -33,6 +34,33 @@ "fetchingLogsFailed": "خطا در دریافت گزارش‌ها: {{errorMessage}}", "whileStreamingLogs": "خطا هنگام پخش زندهٔ گزارش‌ها: {{errorMessage}}" } + }, + "websocket": { + "label": "پیام‌ها", + "pause": "توقف", + "resume": "ادامه", + "clear": "پاک کردن", + "filter": { + "all": "همهٔ موضوعات", + "topics": "موضوعات", + "events": "رویدادها", + "reviews": "بازبینی‌ها", + "classification": "طبقه‌بندی", + "face_recognition": "شناسایی چهره", + "lpr": "پلاک‌خوان", + "camera_activity": "فعالیت دوربین", + "system": "سامانه", + "camera": "دوربین", + "all_cameras": "همهٔ دوربین‌ها", + "cameras_count_one": "{{count}} دوربین", + "cameras_count_other": "{{count}} دوربین" + }, + "empty": "هنوز پیامی ثبت نشده است", + "count_one": "{{count}} پیام", + "count_other": "{{count}} پیام", + "expanded": { + "payload": "بار" + } } }, "general": { @@ -72,7 +100,10 @@ "title": "هشدار آمار GPU اینتل", "message": "آمار GPU در دسترس نیست", "description": "این یک باگ شناخته‌شده در ابزارهای گزارش‌دهی آمار GPU اینتل (intel_gpu_top) است که باعث می‌شود از کار بیفتد و حتی در مواردی که شتاب‌دهی سخت‌افزاری و تشخیص شیء به‌درستی روی (i)GPU اجرا می‌شوند، به‌طور مکرر میزان استفادهٔ GPU را ۰٪ برگرداند. این مشکل مربوط به Frigate نیست. می‌توانید میزبان را ری‌استارت کنید تا موقتاً مشکل برطرف شود و تأیید کنید که GPU درست کار می‌کند. این موضوع روی عملکرد تأثیری ندارد." - } + }, + "gpuCompute": "محاسبات / رمزگذاری GPU", + "gpuTemperature": "دمای GPU", + "npuTemperature": "دمای NPU" }, "title": "عمومی", "detector": { @@ -86,7 +117,14 @@ "otherProcesses": { "title": "فرایندهای دیگر", "processCpuUsage": "میزان استفادهٔ CPU فرایند", - "processMemoryUsage": "میزان استفادهٔ حافظهٔ فرایند" + "processMemoryUsage": "میزان استفادهٔ حافظهٔ فرایند", + "series": { + "go2rtc": "go2rtc", + "recording": "ضبط", + "review_segment": "بخش بازبینی", + "embeddings": "امبدینگ‌ها", + "audio_detector": "آشکارساز صدا" + } } }, "storage": { @@ -97,7 +135,11 @@ }, "shm": { "warning": "اندازهٔ فعلی SHM برابر {{total}}MB خیلی کوچک است. آن را دست‌کم به {{min_shm}}MB افزایش دهید.", - "title": "اختصاص SHM (حافظهٔ اشتراکی)" + "title": "اختصاص SHM (حافظهٔ اشتراکی)", + "frameLifetime": { + "title": "طول عمر فریم", + "description": "هر دوربین {{frames}} شیار فریم در حافظهٔ اشتراکی دارد. با نرخ فریم سریع‌ترین دوربین، هر فریم تقریباً به‌مدت {{lifetime}} ثانیه قبل از بازنویسی در دسترس است." + } }, "cameraStorage": { "title": "ذخیره‌سازی دوربین", @@ -131,6 +173,21 @@ "error": "خطا: {{error}}", "tips": { "title": "اطلاعات بررسی دوربین" + }, + "keyframes": { + "title": "تحلیل فریم‌کلیدی", + "analyzing": "در حال تحلیل فریم‌های کلیدی... {{seconds}} ثانیه باقی مانده است", + "stillAnalyzing": "هنوز در حال تحلیل فریم‌های کلیدی...", + "recordStream": "جریان ضبط:", + "keyframeCount": "فریم‌های کلیدی مشاهده‌شده:", + "observedDuration": "مدت مشاهده‌شده:", + "gap": "فاصلهٔ فریم کلیدی (حداقل / میانگین / حداکثر):", + "segmentLength": "طول بخش ضبط:", + "ok": "فریم‌های کلیدی هر ~{{seconds}} ثانیه، مناسب برای ضبط و پخش.", + "warning": "فریم‌های کلیدی پراکنده یا متغیر (طولانی‌ترین فاصله ~{{seconds}} ثانیه)، احتمالاً کدک هوشمند (H.264+/H.265+) است، توصیه نمی‌شود.", + "error": "فاصلهٔ فریم کلیدی (~{{seconds}} ثانیه) از طول بخش ضبط ({{segmentTime}} ثانیه) بیشتر است. ممکن است برخی بخش‌ها فریم کلیدی نداشته باشند که پخش را خراب می‌کند. کدک هوشمند/+ را روی دوربین غیرفعال کنید یا فاصلهٔ فریم کلیدی را کوتاه کنید.", + "unknown": "فاصله‌بندی فریم کلیدی قابل تشخیص نیست.", + "recordDisabled": "ضبط برای این دوربین غیرفعال است." } }, "framesAndDetections": "فریم‌ها / تشخیص‌ها", @@ -148,7 +205,8 @@ "cameraDetect": "تشخیص {{camName}}", "cameraFfmpeg": "{{camName}} FFmpeg", "cameraFramesPerSecond": "{{camName}} فریم بر ثانیه", - "cameraSkippedDetectionsPerSecond": "{{camName}} تشخیص‌های ردشده در ثانیه" + "cameraSkippedDetectionsPerSecond": "{{camName}} تشخیص‌های ردشده در ثانیه", + "cameraGpu": "GPU {{camName}}" }, "toast": { "error": { @@ -158,7 +216,21 @@ "copyToClipboard": "داده‌های بررسی در کلیپ‌بورد کپی شد." } }, - "title": "دوربین‌ها" + "title": "دوربین‌ها", + "noCameras": { + "title": "هیچ دوربینی یافت نشد" + }, + "connectionQuality": { + "title": "کیفیت اتصال", + "excellent": "عالی", + "fair": "قابل قبول", + "poor": "ضعیف", + "unusable": "غیرقابل‌استفاده", + "fps": "FPS", + "expectedFps": "FPS مورد انتظار", + "reconnectsLastHour": "اتصال مجدد (ساعت گذشته)", + "stallsLastHour": "توقف‌ها (ساعت گذشته)" + } }, "stats": { "ffmpegHighCpuUsage": "{{camera}} استفادهٔ CPU بالایی برای FFmpeg دارد ({{ffmpegAvg}}%)", @@ -168,7 +240,8 @@ "detectIsVerySlow": "{{detect}} بسیار کند است ({{speed}} ms)", "shmTooLow": "اختصاص /dev/shm ({{total}} MB) باید دست‌کم تا {{min}} MB افزایش یابد.", "healthy": "سامانه سالم است", - "detectIsSlow": "{{detect}} کند است ( {{speed}} میلی‌ثانیه )" + "detectIsSlow": "{{detect}} کند است ( {{speed}} میلی‌ثانیه )", + "debugReplayActive": "نشست بازپخش اشکال‌زدایی فعال است" }, "enrichments": { "infPerSecond": "استنتاج‌ها در ثانیه",