From e0b5a6c965d9521c9f622f66dac216e20020a06c Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Thu, 12 Nov 2026 15:03:45 +0100 Subject: [PATCH] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (64 of 64 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (66 of 66 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (26 of 26 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (775 of 775 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (522 of 522 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (282 of 282 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1409 of 1409 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (129 of 129 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (87 of 87 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (68 of 68 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (266 of 266 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 93.9% (728 of 775 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 97.5% (509 of 522 strings) Update translation files Updated by "Cleanup translation files" add-on in Weblate. Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 91.7% (711 of 775 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 94.2% (492 of 522 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (37 of 37 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (120 of 120 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 99.2% (264 of 266 strings) Co-authored-by: GuoQing Liu Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/zh_Hans/ Translation: Frigate NVR/Config - Cameras Translation: Frigate NVR/Config - Global Translation: Frigate NVR/Config - Validation Translation: Frigate NVR/common Translation: Frigate NVR/components-dialog Translation: Frigate NVR/components-player Translation: Frigate NVR/views-chat Translation: Frigate NVR/views-events Translation: Frigate NVR/views-exports Translation: Frigate NVR/views-live Translation: Frigate NVR/views-motionSearch Translation: Frigate NVR/views-settings Translation: Frigate NVR/views-system --- web/public/locales/zh-CN/common.json | 36 +- .../locales/zh-CN/components/dialog.json | 25 +- .../locales/zh-CN/components/player.json | 23 +- web/public/locales/zh-CN/config/cameras.json | 146 ++++++- web/public/locales/zh-CN/config/global.json | 264 +++++++++--- .../locales/zh-CN/config/validation.json | 5 + web/public/locales/zh-CN/views/chat.json | 18 +- web/public/locales/zh-CN/views/events.json | 3 +- web/public/locales/zh-CN/views/exports.json | 3 +- web/public/locales/zh-CN/views/live.json | 73 +++- .../locales/zh-CN/views/motionSearch.json | 4 +- web/public/locales/zh-CN/views/settings.json | 402 +++++++++++++----- web/public/locales/zh-CN/views/system.json | 126 +++++- 13 files changed, 913 insertions(+), 215 deletions(-) diff --git a/web/public/locales/zh-CN/common.json b/web/public/locales/zh-CN/common.json index 4df07f18bd..52b91414a8 100644 --- a/web/public/locales/zh-CN/common.json +++ b/web/public/locales/zh-CN/common.json @@ -70,7 +70,8 @@ "inProgress": "进行中", "invalidStartTime": "无效的开始时间", "invalidEndTime": "无效的结束时间", - "never": "从不" + "never": "从不", + "custom": "自定义…" }, "unit": { "speed": { @@ -115,10 +116,10 @@ "apply": "应用", "reset": "重置", "done": "完成", - "enabled": "启用", - "enable": "启用", - "disabled": "禁用", - "disable": "禁用", + "enabled": "开启", + "enable": "开启", + "disabled": "关闭", + "disable": "关闭", "save": "保存", "saving": "保存中…", "cancel": "取消", @@ -146,7 +147,7 @@ "deleteNow": "立即删除", "next": "下一个", "cameraAudio": "摄像头音频", - "twoWayTalk": "双向对话", + "twoWayTalk": "双向对讲", "continue": "继续", "add": "添加", "applying": "应用中…", @@ -293,7 +294,7 @@ "accessDenied": { "documentTitle": "没有权限 - Frigate", "title": "没有权限", - "desc": "您没有权限查看此页面。" + "desc": "你没有权限查看此页面。" }, "notFound": { "documentTitle": "没有找到页面 - Frigate", @@ -329,6 +330,25 @@ "copyFailed": "无法复制详情到剪切板" }, "commandMenu": { - "title": "命令菜单" + "title": "命令菜单", + "description": "搜索页面、摄像头、设置项和操作", + "placeholder": "搜索页面、摄像头、设置项和操作", + "empty": "未匹配", + "section": { + "recent": "最近", + "pages": "页面", + "cameras": "摄像头", + "cameraGroups": "摄像头组", + "settings": "设置", + "actions": "行为" + }, + "camera": { + "live": "实时监控", + "review": "核查" + }, + "action": { + "toggleTheme": "切换浅色或深色模式" + }, + "hint": "按 {{key}} 或 / 打开,按回车运行" } } diff --git a/web/public/locales/zh-CN/components/dialog.json b/web/public/locales/zh-CN/components/dialog.json index 9ddbb79ffe..fe42c47a21 100644 --- a/web/public/locales/zh-CN/components/dialog.json +++ b/web/public/locales/zh-CN/components/dialog.json @@ -81,7 +81,8 @@ "placeholder": "选择合集", "newCaseOption": "创建新合集", "newCaseNamePlaceholder": "新合集名称", - "newCaseDescriptionPlaceholder": "合集描述" + "newCaseDescriptionPlaceholder": "合集描述", + "nameRequired": "合集名称为必填项" }, "queueing": "正在加入导出队列…", "tabs": { @@ -106,7 +107,9 @@ "selectWithActivity": "包含追踪目标的摄像头", "selectGroup": "选择组", "noMatchingCameras": "没有匹配搜索的摄像头", - "selectedCount": "{{selected}} / {{total}} 个" + "selectedCount": "{{selected}} / {{total}} 个", + "noCamerasSelected": "选择至少一个摄像头", + "caseNameDefault": "多个摄像头导出 - {{date}}" }, "multi": { "title_other": "导出 {{count}} 个核查", @@ -120,6 +123,15 @@ "partial": "已启动 {{total}} 个导出,其中 {{successful}} 个成功。失败项:{{failedItems}}", "failed": "启动导出失败(共 {{total}} 个)。失败项:{{failedItems}}" } + }, + "stream": { + "label": "质量", + "auto": "自动", + "main": "原画", + "sub": "低", + "autoDesc": "使用主流,在主流不可用时回退到较低质量的子流。", + "mainDesc": "仅导出原画画质的主流。主流不可用时的时间范围将缺失。", + "subDesc": "仅导出低画质子流。子流不可用时的时间范围将缺失。" } }, "streaming": { @@ -165,7 +177,8 @@ "export": "导出", "markAsReviewed": "标记为已核查", "deleteNow": "立即删除", - "markAsUnreviewed": "标记为未核查" + "markAsUnreviewed": "标记为未核查", + "generateDescription": "生成描述" }, "shareTimestamp": { "label": "分享该时间片段", @@ -174,6 +187,12 @@ "custom": "自定义时间", "button": "分享时间片段地址", "shareTitle": "Frigate 核查时间:{{camera}}" + }, + "genaiDescription": { + "toast": { + "success": "已为该核查项请求生成式 AI 描述。", + "error": "请求描述失败:{{error}}" + } } }, "imagePicker": { diff --git a/web/public/locales/zh-CN/components/player.json b/web/public/locales/zh-CN/components/player.json index f03a7dc37d..920116dc0a 100644 --- a/web/public/locales/zh-CN/components/player.json +++ b/web/public/locales/zh-CN/components/player.json @@ -30,15 +30,32 @@ } }, "decodedFrames": "解码帧数:", - "droppedFrameRate": "丢帧率:" + "droppedFrameRate": "丢帧率:", + "stream": "视频流:", + "streamAuto": "{{stream}} (自动)" }, "toast": { "success": { "submittedFrigatePlus": "已成功提交帧到 Frigate+" }, "error": { - "submitFrigatePlusFailed": "提交帧到 Frigate+ 失败" + "submitFrigatePlusFailed": "提交帧到 Frigate+ 失败", + "playRecordingsFailed": "播放录制失败(错误代码 {{code}}):{{message}}" } }, - "cameraOff": "摄像头已关闭" + "cameraOff": "摄像头已关闭", + "quality": { + "auto": "自动", + "autoLow": "播放低质量画面(带宽受限)", + "autoLowCodec": "播放低质量画面(该浏览器不支持原画)", + "autoLowSaveData": "播放低质量画面(节省带宽)", + "main": "原画", + "sub": "低画质", + "notSupportedBrowser": "不支持该浏览器", + "label": "画质", + "noAudio": "无音频", + "audioRate": "{{rate}} kHz 音频", + "audioCodecRate": "{{codec}}{{rate}} kHz", + "noRecordings": "该时间段内无录制" + } } diff --git a/web/public/locales/zh-CN/config/cameras.json b/web/public/locales/zh-CN/config/cameras.json index fb54e84be3..c903603edb 100644 --- a/web/public/locales/zh-CN/config/cameras.json +++ b/web/public/locales/zh-CN/config/cameras.json @@ -46,6 +46,10 @@ "enabled_in_config": { "label": "原始音频状态", "description": "指示原始静态配置文件中是否开启了音频检测。" + }, + "labelmap": { + "label": "自定义音频 labelmap", + "description": "覆盖或重新映射条目以合并到标准音频标签映射中。" } }, "audio_transcription": { @@ -59,8 +63,8 @@ "label": "原始转写状态" }, "live_enabled": { - "label": "实时监控转写", - "description": "在接收到音频时开启实时监控持续转写。" + "label": "实时转录", + "description": "在接收到音频时进行实时流式转录。" } }, "birdseye": { @@ -73,6 +77,10 @@ "order": { "label": "排序位置", "description": "用于控制摄像头在鸟瞰视图布局中排序位置的数值。" + }, + "modes": { + "label": "活动类型", + "description": "鸟瞰图中摄像头的活动类型。" } }, "detect": { @@ -92,7 +100,7 @@ }, "fps": { "label": "检测帧率", - "description": "检测时希望使用的帧率;数值越低,CPU 占用越小(推荐值为 5,仅在追踪极高速运动的目标时才设置更高数值,最高不建议超过 10)。" + "description": "检测时希望使用的帧率;数值越低,CPU 占用越小(推荐值为 5,仅在追踪移动速度极快的目标时才设置更高数值,最高不建议超过 10)。" }, "min_initialized": { "label": "最小初始化帧数", @@ -133,6 +141,10 @@ "annotation_offset": { "label": "标记偏移量", "description": "检测标记的时间偏移量(毫秒),用于让时间轴上的检测框与录像画面更精准对齐;可设置为正数或负数。" + }, + "scene": { + "label": "检测场景", + "description": "该摄像头所查看的环境,用于选择在其中运行的模型配置。设置为“默认”的摄像头将运行配置为“默认”场景的模型。" } }, "face_recognition": { @@ -176,6 +188,10 @@ "record": { "label": "录制输出参数", "description": "录制功能视频流的默认输出参数。" + }, + "record_sub": { + "label": "子流录制输出参数", + "description": "子流录制功能视频流输出参数。如果未设置,将使用录制流输出参数。" } }, "retry_interval": { @@ -184,11 +200,11 @@ }, "apple_compatibility": { "label": "Apple 兼容性", - "description": "录制 H.265 视频时启用 HEVC 标记,以提升对 Apple 设备播放的兼容性。" + "description": "录制 H.265 视频时开启 HEVC 标记,以提升对 Apple 设备播放的兼容性。" }, "gpu": { "label": "GPU 索引", - "description": "在启用硬件加速时,默认使用的 GPU 索引。" + "description": "在开启硬件加速时,默认使用的 GPU 索引。" }, "inputs": { "label": "摄像头输入视频流", @@ -263,9 +279,13 @@ }, "enabled_in_config": { "label": "原始通知状态", - "description": "指示原始静态配置中是否启用了通知。" + "description": "指示原始静态配置中是否开启了通知。" }, - "description": "为此摄像头启用和控制通知的设置。" + "description": "为此摄像头启用和控制通知的设置。", + "ttl": { + "label": "通知有效期", + "description": "设备无法连接时,推送服务会如何处理警报期间发送的通知。“立即”会马上投递,投递失败就放弃;“可靠”会在最长 30 秒内持续重试。警报结束时发送的通知始终会保留最多一小时。" + } }, "live": { "label": "实时监控观看", @@ -281,7 +301,31 @@ "label": "实时监控质量", "description": "jsmpeg 流的编码质量(1 最高,31 最低)。" }, - "description": "用于控制实时流选择、分辨率和质量的网页页面设置。" + "description": "用于控制实时流选择、分辨率和质量的网页页面设置。", + "transcode": { + "label": "转码流", + "description": "由 go2rtc 按需转码的低画质实时监控流。", + "enabled": { + "label": "开启转码流", + "description": "添加低画质实时监控流,在有人观看实时监控时由 go2rtc 实时转码生成。" + }, + "source": { + "label": "源视频流", + "description": "go2rtc 流转码。默认为第一个实时监控流。" + }, + "qualities": { + "label": "画质", + "description": "每个画质都增加一个转码流。", + "height": { + "label": "高度", + "description": "画面输出高度像素,宽度将遵循源宽高比自动计算。" + }, + "bitrate": { + "label": "码率", + "description": "目标及最大视频码率(kbps)。" + } + } + } }, "motion": { "label": "画面变动检测", @@ -311,11 +355,11 @@ }, "delta_alpha": { "label": "变化量权重", - "description": "该值用于调节帧间差异计算时的混合比例,影响运动检测的灵敏度。" + "description": "该值用于调节帧间差异计算时的混合比例,影响画面变动检测的灵敏度。" }, "frame_alpha": { "label": "背景更新速度", - "description": "该值在运动检测前对画面进行预处理,控制帧混合程度,影响后续检测的输入质量。" + "description": "该值在画面变动检测前对画面进行预处理,控制帧混合程度,影响后续检测的输入质量。" }, "frame_height": { "label": "画面高度", @@ -331,7 +375,7 @@ }, "enabled_in_config": { "label": "原始画面变动状态", - "description": "指示原始静态配置中是否启用了画面变动检测。" + "description": "指示原始静态配置中是否开启了画面变动检测。" }, "raw_mask": { "label": "原始遮罩" @@ -432,7 +476,7 @@ }, "enabled_in_config": { "label": "原配置生成式 AI 状态", - "description": "表示在原始静态配置中是否已启用生成式 AI。" + "description": "表示在原始静态配置中是否已开启生成式 AI。" } } }, @@ -535,9 +579,57 @@ }, "enabled_in_config": { "label": "原始录像状态", - "description": "指示原始静态配置中是否启用了录像。" + "description": "指示原始静态配置中是否开启了录像。" }, - "description": "此摄像头的录像和保留设置。" + "description": "此摄像头的录像和保留设置。", + "sub": { + "label": "子流录制中", + "description": "录制第二条低画质流的设置。", + "enabled": { + "label": "开启子流录制", + "description": "开启第二路低画质视频流的录制,以支持自适应画质回放并延长录像保留时间。" + }, + "continuous": { + "label": "子视频流连续保留", + "description": "保留子视频流录制的天数,无论是否有追踪目标或画面变动。", + "days": { + "label": "保留天数", + "description": "保留录制的天数。" + } + }, + "motion": { + "label": "子视频流画面变动保留", + "description": "触发画面变动时保留子视频流录制的天数。", + "days": { + "label": "保留天数", + "description": "保留录制的天数。" + } + }, + "alerts": { + "label": "子视频流警报保留", + "description": "警报类子视频流录制的保留设置。", + "days": { + "label": "保留天数", + "description": "保留检测事件录制的天数。" + }, + "mode": { + "label": "保留模式", + "description": "保留模式:全部(保留所有片段)、画面变动(保留画面变动片段)或 活动目标(保留画面中出现活动目标的片段)。" + } + }, + "detections": { + "label": "子视频流检测保留", + "description": "子视频流中检测事件的录像保留设置。", + "days": { + "label": "保留天数", + "description": "检测事件的录像保留天数。" + }, + "mode": { + "label": "保留模式", + "description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或活动目标(保存有活动目标的片段)。" + } + } + } }, "review": { "label": "核查", @@ -558,7 +650,7 @@ }, "enabled_in_config": { "label": "原始警报状态", - "description": "追踪原始静态配置中是否启用了警报。" + "description": "追踪原始静态配置中是否开启了警报。" }, "cutoff_time": { "label": "警报截止时间", @@ -586,7 +678,7 @@ }, "enabled_in_config": { "label": "原始检测状态", - "description": "追踪原始静态配置中是否启用了检测。" + "description": "追踪原始静态配置中是否开启了检测。" } }, "genai": { @@ -606,7 +698,7 @@ }, "image_source": { "label": "核查图像来源", - "description": "发送给生成式 AI 的画面来源(“预览” 或 “录制”);“录制”将使用更高质量的画面帧,但会消耗更多的 token。" + "description": "发送给生成式 AI 的画面来源(“预览”或“录制”);“录制”会使用更高画质的画面帧,但会消耗更多 token。" }, "additional_concerns": { "label": "额外关注事项", @@ -618,7 +710,7 @@ }, "enabled_in_config": { "label": "原配置生成式 AI 状态", - "description": "记录在静态配置中最初是否已启用生成式 AI 核查功能。" + "description": "记录在静态配置中最初是否已开启生成式 AI 核查功能。" }, "preferred_language": { "label": "首选语言", @@ -627,6 +719,14 @@ "activity_context_prompt": { "label": "活动上下文提示", "description": "自定义提示词,用于说明可疑行为与非可疑行为的界定,为生成式 AI 生成摘要提供上下文依据。" + }, + "frame_mode": { + "label": "画面帧模式", + "description": "向模型呈现画面帧的方式。“画面帧”会先发送提示词,再发送画面帧,适合能自行把握画面顺序的模型。“带标注的画面帧”会为每一帧添加标注,并穿插来自目标追踪的说明,适合容易跟丢重复或反向动作的模型。" + }, + "response_style": { + "label": "回复风格", + "description": "生成核查描述时使用的写作风格预设。预设会调整面向用户的标题、摘要和场景描述的语气与详细程度;“默认”会保持内置提示词不变。" } }, "description": "控制此摄像头的警报、检测和生成式 AI 核查总结的设置,这些设置会被界面与存储功能使用。" @@ -722,7 +822,7 @@ }, "enabled": { "label": "开启此触发器", - "description": "启用或禁用此语义搜索触发器。" + "description": "开启或关闭此语义搜索触发器。" }, "type": { "label": "触发器类型", @@ -783,15 +883,15 @@ "description": "ONVIF 身份验证的密码。" }, "tls_insecure": { - "label": "禁用 TLS 验证", - "description": "跳过 TLS 验证并禁用 ONVIF 的摘要认证(不安全;仅用于安全网络)。" + "label": "关闭 TLS 验证", + "description": "跳过 TLS 验证并关闭 ONVIF 的摘要认证(不安全;仅用于安全网络)。" }, "autotracking": { "label": "自动追踪", "description": "使用 PTZ 摄像头移动自动追踪移动目标并使其保持在画面中心。", "enabled": { "label": "开启自动追踪", - "description": "启用或禁用检测目标的自动 PTZ 摄像头追踪。" + "description": "开启或关闭检测目标的自动 PTZ 摄像头追踪。" }, "calibrate_on_startup": { "label": "启动时校准", @@ -827,7 +927,7 @@ }, "enabled_in_config": { "label": "原始自动追踪状态", - "description": "用于追踪配置中是否启用自动追踪的内部字段。" + "description": "用于追踪配置中是否开启自动追踪的内部字段。" } }, "ignore_time_mismatch": { diff --git a/web/public/locales/zh-CN/config/global.json b/web/public/locales/zh-CN/config/global.json index 209b8fbdd5..0e2a16cc8f 100644 --- a/web/public/locales/zh-CN/config/global.json +++ b/web/public/locales/zh-CN/config/global.json @@ -27,7 +27,7 @@ "label": "音频检测", "enabled": { "label": "开启音频检测", - "description": "为所有摄像头启用或禁用音频事件检测;可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭音频事件检测;可按摄像头覆盖。" }, "max_not_heard": { "label": "结束超时", @@ -57,12 +57,16 @@ "enabled_in_config": { "label": "原始音频状态", "description": "指示原始静态配置文件中是否开启了音频检测。" + }, + "labelmap": { + "label": "自定义音频 labelmap", + "description": "覆盖或重新映射条目以合并到标准音频标签映射中。" } }, "auth": { "cookie_secure": { "label": "安全 Cookie 标志", - "description": "在身份验证 Cookie 上设置安全标志;使用 TLS 时应启用此选项。" + "description": "在身份验证 Cookie 上设置安全标志;使用 TLS 时应开启此选项。" }, "label": "身份验证", "description": "身份验证和会话相关设置,包括 Cookie 和速率限制选项。", @@ -104,19 +108,19 @@ }, "admin_first_time_login": { "label": "管理员首次登录标志", - "description": "启用后,UI 可能会在登录页面显示帮助链接,告知用户如何在管理员密码重置后登录。 " + "description": "开启后,UI 可能会在登录页面显示帮助链接,告知用户如何在管理员密码重置后登录。 " } }, "audio_transcription": { "label": "音频转录", "description": "用于事件和实时字幕的实时和语音音频转录设置。", "live_enabled": { - "label": "实时监控转写", - "description": "在接收到音频时开启实时监控持续转写。" + "label": "实时转录", + "description": "在接收到音频时进行实时流式转录。" }, "enabled": { "label": "开启音频转录", - "description": "为所有摄像头启用或禁用自动音频转录;可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭自动音频转录;可按摄像头覆盖。" }, "language": { "label": "转录语言", @@ -129,6 +133,10 @@ "model_size": { "label": "模型大小", "description": "用于离线音频事件转录的模型大小。" + }, + "model": { + "label": "音频转录模型或生成式 AI 服务商名称", + "description": "转录后端:'whisper' 表示 Frigate 内置的本地模型,也可以填写具备 transcribe 角色的生成式 AI 服务商名称。" } }, "birdseye": { @@ -144,7 +152,7 @@ }, "restream": { "label": "转发 RTSP", - "description": "将鸟瞰图输出作为 RTSP 流重新转发;启用此功能将使鸟瞰图持续运行。" + "description": "将鸟瞰图输出作为 RTSP 流重新转发;开启此功能将使鸟瞰图持续运行。" }, "width": { "label": "宽度", @@ -176,7 +184,11 @@ }, "idle_heartbeat_fps": { "label": "空闲心跳 FPS", - "description": "空闲时重新发送最后一个合成鸟瞰帧的每秒帧数;设为 0 则禁用。" + "description": "空闲时重新发送最后一个合成鸟瞰帧的每秒帧数;设为 0 则关闭。" + }, + "modes": { + "label": "活动类型", + "description": "鸟瞰图中摄像头的活动类型。" } }, "detect": { @@ -184,7 +196,7 @@ "description": "用于运行目标检测、初始化追踪器的检测模块设置。", "enabled": { "label": "开启目标检测", - "description": "为所有摄像头启用或禁用目标检测,可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭目标检测,可按摄像头覆盖。" }, "height": { "label": "检测画面高度", @@ -196,7 +208,7 @@ }, "fps": { "label": "检测帧率", - "description": "检测时希望使用的帧率;数值越低,CPU 占用越小(推荐值为 5,仅在追踪极高速运动的目标时才设置更高数值,最高不建议超过 10)。" + "description": "检测时希望使用的帧率;数值越低,CPU 占用越小(推荐值为 5,仅在追踪移动速度极快的目标时才设置更高数值,最高不建议超过 10)。" }, "min_initialized": { "label": "最小初始化帧数", @@ -237,13 +249,17 @@ "annotation_offset": { "label": "标记偏移量", "description": "检测标记的时间偏移量(毫秒),用于让时间轴上的检测框与录像画面更精准对齐;可设置为正数或负数。" + }, + "scene": { + "label": "检测场景", + "description": "该摄像头所查看的环境,用于选择在其中运行的模型配置。设置为“默认”的摄像头将运行配置为“默认”场景的模型。" } }, "face_recognition": { "label": "人脸识别", "enabled": { "label": "开启人脸识别", - "description": "为所有摄像头启用或禁用人脸识别;可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭人脸识别;可按摄像头覆盖。" }, "min_area": { "label": "最小人脸区域", @@ -312,6 +328,10 @@ "record": { "label": "录制输出参数", "description": "录制功能视频流的默认输出参数。" + }, + "record_sub": { + "label": "子流录制输出参数", + "description": "子流录制功能视频流输出参数。如果未设置,将使用录制流输出参数。" } }, "retry_interval": { @@ -320,11 +340,11 @@ }, "apple_compatibility": { "label": "Apple 兼容性", - "description": "录制 H.265 视频时启用 HEVC 标记,以提升对 Apple 设备播放的兼容性。" + "description": "录制 H.265 视频时开启 HEVC 标记,以提升对 Apple 设备播放的兼容性。" }, "gpu": { "label": "GPU 索引", - "description": "在启用硬件加速时,默认使用的 GPU 索引。" + "description": "在开启硬件加速时,默认使用的 GPU 索引。" }, "inputs": { "label": "摄像头输入视频流", @@ -368,7 +388,7 @@ "description": "连接到 MQTT 代理并发布遥测数据、快照和事件详情的设置。", "enabled": { "label": "开启 MQTT", - "description": "启用或禁用 MQTT 集成,用于状态、事件和快照。" + "description": "开启或关闭 MQTT 集成,用于状态、事件和快照。" }, "host": { "label": "MQTT 主机", @@ -421,10 +441,10 @@ }, "notifications": { "label": "通知", - "description": "为所有摄像头启用和控制通知的设置;可按摄像头覆盖。", + "description": "用于为所有摄像头开启通知并进行控制的设置;可按摄像头覆盖。", "enabled": { "label": "开启通知", - "description": "为所有摄像头启用或禁用通知;可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭通知;可按摄像头覆盖。" }, "email": { "label": "通知邮箱", @@ -436,18 +456,22 @@ }, "enabled_in_config": { "label": "原始通知状态", - "description": "指示原始静态配置中是否启用了通知。" + "description": "指示原始静态配置中是否开启了通知。" + }, + "ttl": { + "label": "通知有效期", + "description": "设备无法连接时,推送服务会如何处理警报期间发送的通知。“立即”会马上投递,投递失败就放弃;“可靠”会在最长 30 秒内持续重试。警报结束时发送的通知始终会保留最多一小时。" } }, "networking": { "label": "网络", - "description": "网络相关设置,如 Frigate 端点的 IPv6 启用。", + "description": "网络相关设置,例如 Frigate 端点的 IPv6 支持。", "ipv6": { "label": "IPv6 配置", "description": "Frigate 网络服务的 IPv6 特定设置。", "enabled": { "label": "开启 IPv6", - "description": "在适用的情况下为 Frigate 服务(API 和 UI)启用 IPv6 支持。" + "description": "在适用的情况下为 Frigate 服务(API 和 UI)开启 IPv6 支持。" } }, "listen": { @@ -508,18 +532,18 @@ }, "stats": { "label": "系统统计", - "description": "用于启用/禁用各种系统和 GPU 统计信息收集的选项。", + "description": "用于开启/关闭各种系统和 GPU 统计信息收集的选项。", "amd_gpu_stats": { "label": "AMD GPU 统计", - "description": "如果存在 AMD GPU,则启用 AMD GPU 统计信息收集。" + "description": "如果存在 AMD GPU,则开启 AMD GPU 统计信息收集。" }, "intel_gpu_stats": { "label": "Intel GPU 统计", - "description": "如果存在 Intel GPU,则启用 Intel GPU 统计信息收集。" + "description": "如果存在 Intel GPU,则开启 Intel GPU 统计信息收集。" }, "network_bandwidth": { "label": "网络带宽", - "description": "为摄像头 ffmpeg 进程和检测器启用按进程网络带宽监控(需要权限)。" + "description": "为摄像头 ffmpeg 进程和检测器开启按进程网络带宽监控(需要权限)。" }, "intel_gpu_device": { "label": "Intel GPU 设备", @@ -528,7 +552,11 @@ }, "version_check": { "label": "版本检查", - "description": "启用出站检查以检测是否有更新版本的 Frigate 可用。" + "description": "开启出站检查以检测是否有更新版本的 Frigate 可用。" + }, + "analytics": { + "label": "分享匿名使用统计", + "description": "每天发送一份匿名使用报告,帮助 Frigate 维护者决定要支持哪些功能。开启前不会发送任何内容。" } }, "tls": { @@ -601,6 +629,30 @@ "quality": { "label": "实时监控质量", "description": "jsmpeg 流的编码质量(1 最高,31 最低)。" + }, + "transcode": { + "label": "转码流", + "description": "由 go2rtc 按需转码的低画质实时监控流。", + "enabled": { + "label": "开启转码流", + "description": "添加低画质实时监控流,在有人观看实时监控时由 go2rtc 实时转码生成。" + }, + "source": { + "label": "源视频流", + "description": "go2rtc 流转码。默认为第一个实时监控流。" + }, + "qualities": { + "label": "画质", + "description": "每个画质都增加一个转码流。", + "height": { + "label": "高度", + "description": "画面输出高度像素,宽度将遵循源宽高比自动计算。" + }, + "bitrate": { + "label": "码率", + "description": "目标及最大视频码率(kbps)。" + } + } } }, "motion": { @@ -608,7 +660,7 @@ "description": "默认情况下,画面变动检测配置统一应用于各摄像头,除非对特定摄像头单独进行自定义。", "enabled": { "label": "开启画面变动检测", - "description": "为所有摄像头启用或禁用画面变动检测。可以给指定摄像头单独覆盖此设置。" + "description": "为所有摄像头开启或关闭画面变动检测。可以给指定摄像头单独覆盖此设置。" }, "threshold": { "label": "画面变动阈值", @@ -632,11 +684,11 @@ }, "delta_alpha": { "label": "变化量权重", - "description": "该值用于调节帧间差异计算时的混合比例,影响运动检测的灵敏度。" + "description": "该值用于调节帧间差异计算时的混合比例,影响画面变动检测的灵敏度。" }, "frame_alpha": { "label": "背景更新速度", - "description": "该值在运动检测前对画面进行预处理,控制帧混合程度,影响后续检测的输入质量。" + "description": "该值在画面变动检测前对画面进行预处理,控制帧混合程度,影响后续检测的输入质量。" }, "frame_height": { "label": "画面高度", @@ -652,7 +704,7 @@ }, "enabled_in_config": { "label": "原始画面变动状态", - "description": "指示原始静态配置中是否启用了画面变动检测。" + "description": "指示原始静态配置中是否开启了画面变动检测。" }, "raw_mask": { "label": "原始遮罩" @@ -752,7 +804,7 @@ }, "enabled_in_config": { "label": "原配置生成式 AI 状态", - "description": "表示在原始静态配置中是否已启用生成式 AI。" + "description": "表示在原始静态配置中是否已开启生成式 AI。" } }, "filters_attribute": { @@ -796,7 +848,7 @@ "description": "应用于摄像头的录像和保留设置,除非按摄像头覆盖。", "enabled": { "label": "开启录像", - "description": "为所有摄像头启用或禁用录像;可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭录像;可按摄像头覆盖。" }, "expire_interval": { "label": "录像清理间隔", @@ -891,7 +943,55 @@ }, "enabled_in_config": { "label": "原始录像状态", - "description": "指示原始静态配置中是否启用了录像。" + "description": "指示原始静态配置中是否开启了录像。" + }, + "sub": { + "label": "子流录制中", + "description": "录制第二条低画质流的设置。", + "enabled": { + "label": "开启子流录制", + "description": "开启第二路低画质视频流的录制,以支持自适应画质回放并延长录像保留时间。" + }, + "continuous": { + "label": "子视频流连续保留", + "description": "保留子视频流录制的天数,无论是否有追踪目标或画面变动。", + "days": { + "label": "保留天数", + "description": "保留录制的天数。" + } + }, + "motion": { + "label": "子视频流画面变动保留", + "description": "触发画面变动时保留子视频流录制的天数。", + "days": { + "label": "保留天数", + "description": "保留录制的天数。" + } + }, + "alerts": { + "label": "子视频流警报保留", + "description": "警报类子视频流录制的保留设置。", + "days": { + "label": "保留天数", + "description": "保留检测事件录制的天数。" + }, + "mode": { + "label": "保留模式", + "description": "保留模式:全部(保留所有片段)、画面变动(保留画面变动片段)或 活动目标(保留画面中出现活动目标的片段)。" + } + }, + "detections": { + "label": "子视频流检测保留", + "description": "子视频流中检测事件的录像保留设置。", + "days": { + "label": "保留天数", + "description": "检测事件的录像保留天数。" + }, + "mode": { + "label": "保留模式", + "description": "保留模式:全部(保存所有片段)、画面变动(保存有画面变动的片段)或活动目标(保存有活动目标的片段)。" + } + } } }, "review": { @@ -902,7 +1002,7 @@ "description": "哪些追踪目标生成警报以及如何保留警报的设置。", "enabled": { "label": "开启警报", - "description": "为所有摄像头启用或禁用警报生成;可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭警报生成;可按摄像头覆盖。" }, "labels": { "label": "警报标签", @@ -914,7 +1014,7 @@ }, "enabled_in_config": { "label": "原始警报状态", - "description": "追踪原始静态配置中是否启用了警报。" + "description": "追踪原始静态配置中是否开启了警报。" }, "cutoff_time": { "label": "警报截止时间", @@ -926,7 +1026,7 @@ "description": "用于设置哪些追踪目标会生成检测记录(非警报类),以及检测记录的保留方式。", "enabled": { "label": "开启检测", - "description": "为所有摄像头启用或禁用检测事件;可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭检测事件;可按摄像头覆盖。" }, "labels": { "label": "检测标签", @@ -942,7 +1042,7 @@ }, "enabled_in_config": { "label": "原始检测状态", - "description": "追踪原始静态配置中是否启用了检测。" + "description": "追踪原始静态配置中是否开启了检测。" } }, "genai": { @@ -962,7 +1062,7 @@ }, "image_source": { "label": "核查图像来源", - "description": "发送给生成式 AI 的画面来源(“预览” 或 “录制”);“录制”将使用更高质量的画面帧,但会消耗更多的 token。" + "description": "发送给生成式 AI 的画面来源(“预览”或“录制”);“录制”会使用更高画质的画面帧,但会消耗更多 token。" }, "additional_concerns": { "label": "额外关注事项", @@ -974,7 +1074,7 @@ }, "enabled_in_config": { "label": "原配置生成式 AI 状态", - "description": "记录在静态配置中最初是否已启用生成式 AI 核查功能。" + "description": "记录在静态配置中最初是否已开启生成式 AI 核查功能。" }, "preferred_language": { "label": "首选语言", @@ -983,6 +1083,14 @@ "activity_context_prompt": { "label": "活动上下文提示", "description": "自定义提示词,用于说明可疑行为与非可疑行为的界定,为生成式 AI 生成摘要提供上下文依据。" + }, + "frame_mode": { + "label": "画面帧模式", + "description": "向模型呈现画面帧的方式。“画面帧”会先发送提示词,再发送画面帧,适合能自行把握画面顺序的模型。“带标注的画面帧”会为每一帧添加标注,并穿插来自目标追踪的说明,适合容易跟丢重复或反向动作的模型。" + }, + "response_style": { + "label": "回复风格", + "description": "生成核查描述时使用的写作风格预设。预设会调整面向用户的标题、摘要和场景描述的语气与详细程度;“默认”会保持内置提示词不变。" } } }, @@ -991,7 +1099,7 @@ "description": "所有摄像头的追踪目标 API 快照设置;可摄像头单独配置覆盖全局配置。", "enabled": { "label": "开启快照", - "description": "为所有摄像头启用或禁用保存快照;可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭保存快照;可按摄像头覆盖。" }, "timestamp": { "label": "时间戳叠加", @@ -1074,7 +1182,7 @@ "description": "鸟类分类模型特定的设置。", "enabled": { "label": "鸟类分类", - "description": "启用或禁用鸟类分类。" + "description": "开启或关闭鸟类分类。" }, "threshold": { "label": "最小分数", @@ -1086,7 +1194,7 @@ "description": "用于目标或状态检测的自定义分类模型配置。", "enabled": { "label": "开启模型", - "description": "启用或禁用自定义分类模型。" + "description": "开启或关闭自定义分类模型。" }, "name": { "label": "模型名称", @@ -1121,7 +1229,7 @@ }, "motion": { "label": "画面变动时运行", - "description": "启用后,当在指定裁剪区域内检测到画面变动时进行分类。" + "description": "开启后,当在指定裁剪区域内检测到画面变动时进行分类。" }, "interval": { "label": "分类间隔", @@ -1135,7 +1243,7 @@ "description": "用于构建和查询目标嵌入以查找相似项的语义搜索设置。", "enabled": { "label": "开启语义搜索", - "description": "启用或禁用语义搜索功能。" + "description": "开启或关闭语义搜索功能。" }, "reindex": { "label": "启动时重建索引", @@ -1162,7 +1270,7 @@ }, "enabled": { "label": "开启此触发器", - "description": "启用或禁用此语义搜索触发器。" + "description": "开启或关闭此语义搜索触发器。" }, "type": { "label": "触发器类型", @@ -1187,7 +1295,7 @@ "description": "车牌识别设置,包括检测阈值、格式化和已知车牌。", "enabled": { "label": "开启车牌识别", - "description": "为所有摄像头启用或禁用车牌识别;可按摄像头覆盖。" + "description": "为所有摄像头开启或关闭车牌识别;可按摄像头覆盖。" }, "model_size": { "label": "模型大小", @@ -1219,7 +1327,7 @@ }, "known_plates": { "label": "已知车牌", - "description": "要特别追踪或报警的车牌或正则表达式列表。" + "description": "要特别追踪或发出警报的车牌或正则表达式列表。" }, "enhancement": { "label": "增强级别", @@ -1269,7 +1377,7 @@ "description": "MQTT 图像发布设置。", "enabled": { "label": "发送图像", - "description": "为此摄像头启用将目标快照图像发布到 MQTT 主题。" + "description": "为此摄像头开启将目标快照发布到 MQTT 主题。" }, "timestamp": { "label": "添加时间戳", @@ -1332,15 +1440,15 @@ "description": "ONVIF 身份验证的密码。" }, "tls_insecure": { - "label": "禁用 TLS 验证", - "description": "跳过 TLS 验证并禁用 ONVIF 的摘要认证(不安全;仅用于安全网络)。" + "label": "关闭 TLS 验证", + "description": "跳过 TLS 验证并关闭 ONVIF 的摘要认证(不安全;仅用于安全网络)。" }, "autotracking": { "label": "自动追踪", "description": "使用 PTZ 摄像头移动自动追踪移动目标并使其保持在画面中心。", "enabled": { "label": "开启自动追踪", - "description": "启用或禁用检测目标的自动 PTZ 摄像头追踪。" + "description": "开启或关闭检测目标的自动 PTZ 摄像头追踪。" }, "calibrate_on_startup": { "label": "启动时校准", @@ -1376,7 +1484,7 @@ }, "enabled_in_config": { "label": "原始自动追踪状态", - "description": "用于追踪配置中是否启用自动追踪的内部字段。" + "description": "用于追踪配置中是否开启自动追踪的内部字段。" } }, "ignore_time_mismatch": { @@ -1397,7 +1505,59 @@ } }, "active_profile": { - "label": "激活配置模板", - "description": "当前激活的配置模板名称。仅在运行时使用,不会写入 YAML 配置文件中。" + "label": "当前配置模板", + "description": "当前使用的配置模板名称。仅在运行时使用,不会写入 YAML 配置文件中。" + }, + "models": { + "label": "检测模型", + "description": "目标检测模型以及每个模型运行的硬件。摄像头会将自己的 detect.scene 与模型的场景匹配来选择模型,匹配不到时使用“默认”模型。", + "scene": { + "label": "模型场景", + "description": "此模型适用的摄像头环境名称,例如“热成像”。摄像头通过将 detect.scene 设为匹配的值来选择模型;未设置场景的摄像头会使用“默认”模型。" + }, + "devices": { + "label": "检测硬件", + "description": "此模型运行的硬件,格式为 '' 或 ':'(例如 'edgetpu:pci:0' 或 'openvino:GPU')。同一设备列出多次会在其上运行更多推理进程。" + }, + "path": { + "label": "自定义目标检测模型路径", + "description": "自定义检测模型文件的路径(Frigate+ 模型则使用 plus://)。" + }, + "labelmap_path": { + "label": "自定义目标检测器的标签映射", + "description": "标签映射文件的路径,用于将检测器的数字类别映射为字符串标签。" + }, + "width": { + "label": "目标检测模型输入宽度", + "description": "模型输入张量的宽度(像素)。" + }, + "height": { + "label": "目标检测模型输入高度", + "description": "模型输入张量的高度(像素)。" + }, + "labelmap": { + "label": "标签映射自定义", + "description": "要合并到标准标签映射中的覆盖或重映射条目。" + }, + "attributes_map": { + "label": "目标标签与属性标签的映射", + "description": "目标标签到属性标签的映射,用于附加元数据(例如 'car' -> ['license_plate'])。" + }, + "input_tensor": { + "label": "模型输入张量格式", + "description": "模型期望的张量格式:'nhwc' 或 'nchw'。" + }, + "input_pixel_format": { + "label": "模型输入像素格式", + "description": "模型期望的像素色彩空间:'rgb'、'bgr' 或 'yuv'。" + }, + "input_dtype": { + "label": "模型输入数据类型", + "description": "模型输入张量的数据类型(例如 'float32')。" + }, + "model_type": { + "label": "目标检测模型类型", + "description": "检测器模型架构类型(ssd、yolox、yolonas、yolo-generic、rfdetr、dfine),部分检测器会用它进行优化。" + } } } diff --git a/web/public/locales/zh-CN/config/validation.json b/web/public/locales/zh-CN/config/validation.json index ba275a8cd9..319eda3dff 100644 --- a/web/public/locales/zh-CN/config/validation.json +++ b/web/public/locales/zh-CN/config/validation.json @@ -31,5 +31,10 @@ }, "detect": { "dimensionMustBeEven": "必须是偶数。" + }, + "models": { + "defaultRequired": "必须有一个模型使用默认场景。否则,未选择场景的摄像头将没有可回退的模型。", + "sceneDuplicate": "每个模型都必须使用不同的场景。", + "sameModel": "{{scene}} 和 {{other}} 模型使用同一个模型文件。让一个模型在多个场景下运行,只会把检测任务拆到多个检测器上,比一个模型列出全部硬件更慢。" } } diff --git a/web/public/locales/zh-CN/views/chat.json b/web/public/locales/zh-CN/views/chat.json index dee13463e5..9e0f7b3a65 100644 --- a/web/public/locales/zh-CN/views/chat.json +++ b/web/public/locales/zh-CN/views/chat.json @@ -34,7 +34,7 @@ "anchor": "来源", "similarity_score": "相似度", "no_similar_objects_found": "未找到相似目标。", - "semantic_search_required": "必须启用语义搜索才能查找相似目标。", + "semantic_search_required": "必须开启语义搜索才能查找相似目标。", "send": "发送", "suggested_requests": "尝试问问:", "starting_requests_prompts": { @@ -55,6 +55,12 @@ "auto_scroll": { "title": "自动滚动", "desc": "自动滚动到最新消息。" + }, + "always_allow": { + "title": "始终允许的操作", + "desc": "助手无需询问即可执行的操作。", + "none": "无", + "reset": "重置" } }, "stats": { @@ -68,5 +74,15 @@ }, "thinking": { "toggle": "切换思考" + }, + "approval": { + "title": "允许 {{tool}} 吗?", + "desc": "此操作会更改 Frigate 中的内容。请先查看详情,再决定是否允许。", + "approve": "允许", + "always_allow": "始终允许", + "reject": "拒绝", + "approved": "已允许", + "rejected": "已拒绝", + "placeholder": "允许或拒绝待处理的操作后才能继续" } } diff --git a/web/public/locales/zh-CN/views/events.json b/web/public/locales/zh-CN/views/events.json index 0ac20198a7..1d9b5e74f7 100644 --- a/web/public/locales/zh-CN/views/events.json +++ b/web/public/locales/zh-CN/views/events.json @@ -91,5 +91,6 @@ "crop": "裁剪至筛选区域", "cropAria": "切换预览画面裁剪到筛选区域", "cropDesc": "只预览筛选区域,而不是显示整个画面。" - } + }, + "subOnlyQuality": "在此时间范围内,只有低画质录制可用" } diff --git a/web/public/locales/zh-CN/views/exports.json b/web/public/locales/zh-CN/views/exports.json index 6eaed055cf..bf3167f39a 100644 --- a/web/public/locales/zh-CN/views/exports.json +++ b/web/public/locales/zh-CN/views/exports.json @@ -63,7 +63,8 @@ "copying": "复制中", "encoding": "编码中", "encodingRetry": "重试编码中", - "finalizing": "正在完成" + "finalizing": "正在完成", + "merging": "合并" }, "caseView": { "noDescription": "没有描述", diff --git a/web/public/locales/zh-CN/views/live.json b/web/public/locales/zh-CN/views/live.json index 6b5ea74103..a41562573e 100644 --- a/web/public/locales/zh-CN/views/live.json +++ b/web/public/locales/zh-CN/views/live.json @@ -5,8 +5,13 @@ "documentTitle.withCamera": "{{camera}} - 实时监控 - Frigate", "lowBandwidthMode": "低带宽模式", "twoWayTalk": { - "enable": "开启实时对话", - "disable": "关闭实时通话" + "enable": "开启双向对讲", + "disable": "关闭双向对讲", + "requiresWebRTC": "双向对讲需要 WebRTC,但当前不可用", + "error": { + "microphone": "双向对讲无法访问你的麦克风", + "refused": "双向对讲启动失败。详情请查看浏览器控制台。" + } }, "cameraAudio": { "enable": "开启音频输出", @@ -17,7 +22,7 @@ "clickMove": { "label": "点击画面以使摄像头居中", "enable": "开启点击移动", - "disable": "禁用点击移动", + "disable": "关闭点击移动", "enableWithZoom": "开启点击移动 / 拖动缩放功能" }, "left": { @@ -82,7 +87,7 @@ "disable": "关闭音频检测" }, "autotracking": { - "enable": "启用自动追踪", + "enable": "开启自动追踪", "disable": "关闭自动追踪" }, "streamStats": { @@ -94,17 +99,17 @@ "tips": "根据此摄像头的录像存储设置,可以下载即时快照或手动触发事件记录。", "playInBackground": { "label": "后台播放", - "desc": "启用此选项可在播放器隐藏时继续视频流播放。" + "desc": "开启此选项可在播放器隐藏时继续视频流播放。" }, "showStats": { "label": "显示统计信息", - "desc": "启用此选项可在摄像头画面上叠加显示视频流统计信息。" + "desc": "开启此选项可在摄像头画面上叠加显示视频流统计信息。" }, "debugView": "调试视图", "start": "开始手动按需录制", - "started": "已启用手动按需录制。", + "started": "已开启手动按需录制。", "failedToStart": "启动手动录制失败。", - "recordDisabledTips": "由于此摄像头的配置中禁用了录制或对其进行了限制,将只会保存快照。", + "recordDisabledTips": "由于此摄像头的配置中关闭了录制或对其进行了限制,将只会保存快照。", "end": "停止手动按需录制", "ended": "已完成手动按需录制。", "failedToEnd": "停止手动录制失败。" @@ -125,20 +130,60 @@ "unavailable": "此视频流不支持音频传输" }, "twoWayTalk": { - "tips": "您的设备必须支持此功能,并且必须配置 WebRTC 以支持双向对讲。", + "tips": "你的设备必须支持此功能,并且必须配置 WebRTC 以支持双向对讲。", "available": "此视频流支持双向对讲", "unavailable": "此视频流不支持双向对讲" }, "lowBandwidth": { - "tips": "由于缓冲或视频流错误,实时视图处于低带宽模式。", - "resetStream": "重置视频流" + "tips": "由于缓冲或视频流错误,实时监控处于低带宽模式。", + "resetStream": "重置视频流", + "force": { + "label": "强制使用低带宽模式", + "desc": "始终播放 Frigate 内置的低带宽视频流,而不是选定的视频流。任何网络下都能用,但画质较低且没有声音。" + } }, "playInBackground": { "label": "后台播放", - "tips": "启用此选项可在播放器隐藏时继续视频流播放。" + "tips": "开启此选项可在播放器隐藏时继续视频流播放。" }, "debug": { - "picker": "调试模式下无法切换视频流。调试将始终使用检测(detect)功能的视频流。" + "picker": "调试模式下无法切换视频流。调试将始终使用检测(detect)功能的视频流。", + "technology": "调试模式下无法选择视频流传输技术。" + }, + "auto": { + "label": "自动", + "tips": "根据网络状况自动切换视频流", + "selected": "自动 · {{stream}}", + "floorLabel": "低带宽", + "retry": "尝试最高画质", + "reason": { + "bandwidth": "当前网络跟不上更高画质的视频流,正在播放 {{stream}}", + "codec": "当前浏览器无法播放更高画质的视频流,正在播放 {{stream}}", + "saveData": "因为开启了省流量模式,正在播放 {{stream}}", + "floor": "所有视频流都跟不上,正在播放低带宽画面" + } + }, + "mode": "视频流传输技术", + "technology": { + "description": "选择你偏好的视频流传输技术。播放或网络出错时,Frigate 仍可能回退到低带宽模式。", + "name": { + "mse": "MSE", + "webrtc": "WebRTC", + "jsmpeg": "JSMpeg" + }, + "tips": { + "mse": "推荐的默认选项,兼容性好,播放流畅", + "webrtc": "需要额外配置,而且并非所有设备都支持" + }, + "unavailable": { + "browser": "你的浏览器不支持 WebRTC。", + "not-configured": "要开启此功能,请在 go2rtc → webrtc → candidates 中添加本服务器的 IP:8555。", + "notConfiguredOptional": "可选:不配置也能正常查看实时监控。WebRTC 主要用于双向对讲。", + "unreachable": "WebRTC 无法连接。请检查 8555 端口是否可访问,以及 STUN/TURN 服务器配置是否正确。", + "video-codec": "此视频流的视频编码格式在当前浏览器中不受 WebRTC 支持。", + "audio-codec": "此视频流的音频编码格式不受 WebRTC 支持。请使用 go2rtc 转码为 opus 或 G.711。", + "checking": "正在检查 WebRTC 是否可用…" + } } }, "cameraSettings": { @@ -169,7 +214,7 @@ "exitEdit": "退出编辑" }, "transcription": { - "enable": "启用实时音频转录", + "enable": "开启实时音频转录", "disable": "关闭实时音频转录" }, "noCameras": { diff --git a/web/public/locales/zh-CN/views/motionSearch.json b/web/public/locales/zh-CN/views/motionSearch.json index fdc21afd5d..c7c9fc616a 100644 --- a/web/public/locales/zh-CN/views/motionSearch.json +++ b/web/public/locales/zh-CN/views/motionSearch.json @@ -55,7 +55,9 @@ "invalidTimeRange": "结束时间必须在开始时间之后", "searchFailed": "搜索失败:{{message}}", "polygonTooSmall": "多边形至少需要 3 个顶点", - "unknown": "未知错误" + "unknown": "未知错误", + "alreadyRunning": "你已有一个画面变动搜索正在进行中,请等待其完成或取消它。", + "tooManySearches": "正在进行的画面变动搜索较多,请等待其中一个完成后再试。" }, "changePercentage": "{{percentage}}% 已变化", "metrics": { diff --git a/web/public/locales/zh-CN/views/settings.json b/web/public/locales/zh-CN/views/settings.json index c0026df064..019e8a58ee 100644 --- a/web/public/locales/zh-CN/views/settings.json +++ b/web/public/locales/zh-CN/views/settings.json @@ -106,11 +106,11 @@ "title": "实时监控面板", "automaticLiveView": { "label": "自动实时预览", - "desc": "检测到画面活动时将自动切换至该摄像头实时画面。禁用此选项会导致实时监控页面的摄像头图像每分钟只更新一次。" + "desc": "检测到画面活动时将自动切换至该摄像头实时画面。关闭此选项会导致实时监控页面的摄像头图像每分钟只更新一次。" }, "playAlertVideos": { "label": "播放警报视频", - "desc": "默认情况下,实时监控页面上的最新警报会以一小段循环视频的形式进行播放。禁用此选项将仅显示浏览器本地缓存的静态图片。" + "desc": "默认情况下,实时监控页面上的最新警报会以一小段循环视频的形式进行播放。关闭此选项将仅显示浏览器本地缓存的静态图片。" }, "displayCameraNames": { "label": "始终显示摄像头名称", @@ -119,17 +119,24 @@ "liveFallbackTimeout": { "label": "实时监控播放器回退超时", "desc": "当摄像头的高清实时监控流不可用时,将在此时间后回退到低带宽模式。默认值:3秒。" + }, + "naturalAspectLayout": { + "label": "使用原始画面比例", + "desc": "在摄像头组实时监控面板中,按每个摄像头自身的原始画面比例调整卡片大小。关闭后,摄像头会统一使用标准的宽屏、横屏或竖屏卡片形状。", + "descNote": "开启或关闭此设置会清除所有摄像头组实时监控面板中保存的布局,之后需要重新手动调整。" } }, "storedLayouts": { "title": "存储监控面板布局", "desc": "可以在监控面板调整或拖动摄像头的布局。这些设置将保存在浏览器的本地存储中。", - "clearAll": "清除所有布局" + "clearAll": "清除所有布局", + "clearConfirm": "这会清除当前浏览器中所有摄像头组保存的布局。此操作无法撤销。" }, "cameraGroupStreaming": { "title": "摄像头组视频流设置", "desc": "每个摄像头组的视频流设置将保存在浏览器的本地存储中。", - "clearAll": "清除所有视频流设置" + "clearAll": "清除所有视频流设置", + "clearConfirm": "这会清除当前浏览器中所有摄像头组的视频流设置。此操作无法撤销。" }, "recordingsViewer": { "title": "回放查看", @@ -150,11 +157,43 @@ "toast": { "success": { "clearStoredLayout": "已清除 {{cameraName}} 的存储布局", - "clearStreamingSettings": "已清除所有摄像头组的视频流设置。" + "clearStreamingSettings": "已清除所有摄像头组的视频流设置。", + "exportUiSettings": "设置已导出", + "importUiSettings": "设置已导入" }, "error": { "clearStoredLayoutFailed": "清除存储布局失败:{{errorMessage}}", - "clearStreamingSettingsFailed": "清除视频流设置失败:{{errorMessage}}" + "clearStreamingSettingsFailed": "清除视频流设置失败:{{errorMessage}}", + "exportUiSettingsFailed": "导出设置失败", + "importNothingToApply": "导入设置失败:文件中没有可应用的设置", + "importInvalidJson": "导入设置失败:文件不是有效的 JSON", + "importWrongType": "导入设置失败:文件不是 Frigate 导出的设置", + "importUnsupportedVersion": "导入设置失败:此文件需要更新版本的 Frigate", + "importInvalidSchema": "导入设置失败:文件格式不正确", + "importUiSettingsFailed": "导入设置失败" + } + }, + "backupRestore": { + "title": "备份与恢复", + "transfer": { + "label": "设备设置文件", + "desc": "摄像头组布局、视频流设置和界面偏好设置保存在浏览器中。将它们导出为文件,即可备份或迁移到其他设备。", + "export": "导出设置", + "import": "导入设置" + }, + "importDialog": { + "title": "导入设置", + "desc": "选择要从此文件应用的内容。导入完成后,Frigate 会重新加载。", + "exportedFrom": "由 Frigate 配置版本 {{version}} 于 {{date}} 导出", + "layouts_other": "摄像头组布局({{count}} 个组)", + "layoutsPhone": "手机上不会导入摄像头组布局,手机始终使用标准网格。", + "layoutsModeOn": "这些布局按摄像头画面比例设置卡片尺寸,因此导入后也会开启“使用原始画面比例”。", + "layoutsModeOff": "这些布局使用标准卡片尺寸,因此导入后也会关闭“使用原始画面比例”。", + "streaming_other": "视频流设置({{count}} 个摄像头)", + "preferences_other": "界面偏好设置({{count}} 项)", + "unknownGroups_other": "摄像头组 {{groups}} 不在当前服务器上,其设置会保存但不会使用。", + "unknownCameras_other": "摄像头 {{cameras}} 不在当前服务器上,其视频流设置将被忽略。", + "confirm": "导入" } } }, @@ -203,8 +242,8 @@ "label": "清除所有点" }, "snapPoints": { - "true": "启用点对齐", - "false": "禁用点对齐" + "true": "开启点对齐", + "false": "关闭点对齐" }, "delete": { "title": "确认删除", @@ -272,7 +311,7 @@ "allObjects": "所有目标/物体", "speedEstimation": { "title": "速度估算", - "desc": "启用此区域内物体的速度估算。该区域必须恰好包含 4 个点。", + "desc": "开启此区域内物体的速度估算。该区域必须恰好包含 4 个点。", "lineBDistance": "B线距离({{unit}})", "lineCDistance": "C线距离({{unit}})", "lineDDistance": "D线距离({{unit}})", @@ -283,7 +322,7 @@ "desc": "指定物体在此区域内被视为有效的最低速度。", "toast": { "error": { - "pointLengthError": "此区域的速度估算已禁用。启用速度估算的区域必须恰好包含 4 个点。", + "pointLengthError": "此区域的速度估算已关闭。开启速度估算的区域必须恰好包含 4 个点。", "loiteringTimeError": "徘徊时间大于 0 的区域不应与速度估算一起使用。" } } @@ -293,7 +332,7 @@ }, "enabled": { "title": "开启", - "description": "指示该区域在配置文件中是否处于激活并启用的状态。若被停用,则无法通过 MQTT 启用。禁用的区域在运行时会被忽略。" + "description": "指示该区域在配置文件中是否处于激活并开启的状态。若被关闭,则无法通过 MQTT 开启。已关闭的区域在运行时会被忽略。" } }, "motionMasks": { @@ -359,11 +398,11 @@ "restart_required": "需要重启(遮罩与区域已修改)", "motionMaskLabel": "画面变动遮罩 {{number}}", "objectMaskLabel": "目标/物体遮罩 {{number}}", - "disabledInConfig": "该项目已在配置文件中被禁用", + "disabledInConfig": "该项目已在配置文件中关闭", "masks": { "enabled": { "title": "开启", - "description": "指示该遮罩在配置文件中是否处于激活并启用的状态。若被禁用,则无法通过 MQTT 启用。禁用的遮罩在运行时会被忽略。" + "description": "指示该遮罩在配置文件中是否处于激活并开启的状态。若被关闭,则无法通过 MQTT 开启。已关闭的遮罩在运行时会被忽略。" } }, "profileBase": "(基础)", @@ -386,7 +425,7 @@ }, "improveContrast": { "title": "提高对比度", - "desc": "提高较暗场景的对比度。默认值:启用" + "desc": "提高较暗场景的对比度。默认值:开启" }, "toast": { "success": "画面变动设置已保存。" @@ -405,7 +444,7 @@ "desc": "将在被追踪的目标周围显示边界框", "colors": { "label": "目标边界框颜色定义", - "info": "
  • 启用后,将会为每个目标的标签分配不同的颜色
  • 深蓝色细线代表该目标或物体在当前时间点未被检测到
  • 灰色细线代表检测到的目标或物体静止不动
  • 粗线表示在启动自动追踪时,该目标为自动追踪的主体
  • " + "info": "
  • 开启后,将会为每个目标的标签分配不同的颜色
  • 深蓝色细线代表该目标或物体在当前时间点未被检测到
  • 灰色细线代表检测到的目标或物体静止不动
  • 粗线表示在启动自动追踪时,该目标为自动追踪的主体
  • " } }, "timestamp": { @@ -433,7 +472,7 @@ "objectShapeFilterDrawing": { "title": "允许绘制“目标形状过滤器”", "desc": "在图像上绘制矩形,以查看区域和比例详细信息", - "tips": "启用此选项,能够在摄像头画面上绘制矩形,将显示其区域和比例。你可以通过使用这些值在配置中设置目标形状过滤器的参数。", + "tips": "开启此选项,能够在摄像头画面上绘制矩形,将显示其区域和比例。你可以通过使用这些值在配置中设置目标形状过滤器的参数。", "score": "分数", "ratio": "比例", "area": "区域" @@ -456,7 +495,8 @@ "title": "用户", "management": { "title": "用户管理", - "desc": "管理此 Frigate 实例的用户账户。" + "desc": "管理此 Frigate 实例的用户账户。", + "authDisabled": "内置身份验证已关闭。这些账户只在开启身份验证后用于登录。" }, "addUser": "添加用户", "updatePassword": "修改密码", @@ -524,7 +564,8 @@ "title": "创建新用户", "desc": "创建一个新用户账户,并指定一个权限组以控制访问 Frigate 页面的权限。", "usernameOnlyInclude": "用户名只能包含字母、数字和 _", - "confirmPassword": "请确认你的密码" + "confirmPassword": "请确认你的密码", + "usernameOnlyDots": "用户名不能只由句点组成" }, "deleteUser": { "title": "删除该用户", @@ -562,7 +603,7 @@ "title": "通知", "notificationSettings": { "title": "通知设置", - "desc": "Frigate 在浏览器中运行或作为 PWA 安装时,可以原生向您的设备发送推送通知。" + "desc": "Frigate 在浏览器中运行或作为 PWA 安装时,可以原生向你的设备发送推送通知。" }, "globalSettings": { "title": "全局设置", @@ -580,13 +621,13 @@ "cameras": { "title": "摄像头", "noCameras": "没有可用的摄像头", - "desc": "选择要启用通知的摄像头。" + "desc": "选择要开启通知的摄像头。" }, "deviceSpecific": "设备专用设置", "registerDevice": "注册该设备", "unregisterDevice": "取消注册该设备", "sendTestNotification": "发送测试通知", - "active": "通知已启用", + "active": "通知已开启", "suspended": "通知已暂停 {{time}}", "suspendTime": { "5minutes": "暂停 5 分钟", @@ -596,7 +637,8 @@ "12hours": "暂停 12 小时", "24hours": "暂停 24 小时", "untilRestart": "暂停直到重启", - "suspend": "暂停" + "suspend": "暂停", + "custom": "暂停至…" }, "cancelSuspension": "取消暂停", "toast": { @@ -609,16 +651,27 @@ } }, "unsavedRegistrations": "未保存通知注册", - "unsavedChanges": "未保存通知设置更改" + "unsavedChanges": "未保存通知设置更改", + "customSuspension": { + "title": "自定义暂停时间", + "description": "暂停此摄像头的通知,直到所选时间。", + "untilLabel": "暂停至", + "invalidTime": "请选择未来的时间。" + } }, "frigatePlus": { "title": "Frigate+ 设置", "apiKey": { "title": "Frigate+ API 密钥", - "validated": "Frigate+ API 密钥已检测并验证通过", - "notValidated": "未检测到 Frigate+ API 密钥或验证未通过", - "desc": "Frigate+ API 密钥用于启用与 Frigate+ 服务的集成。", - "plusLink": "了解更多关于 Frigate+" + "desc": "Frigate+ API 密钥用于连接 Frigate+ 服务。", + "plusLink": "了解更多关于 Frigate+", + "formatValid": "已检测到 Frigate+ API 密钥,且格式符合要求", + "formatInvalid": "未检测到 Frigate+ API 密钥,或格式不符合要求", + "validate": "向 Frigate+ 验证", + "validating": "验证中…", + "serverValid": "Frigate+ 已接受此 API 密钥", + "serverInvalid": "Frigate+ 拒绝了这个 API 密钥", + "serverUnreachable": "无法连接 Frigate+ 来验证此 API 密钥" }, "snapshotConfig": { "title": "快照配置", @@ -640,7 +693,7 @@ "error": "加载模型信息失败", "availableModels": "可用 Frigate+ 模型", "loadingAvailableModels": "正在加载可用模型…", - "modelSelect": "您可以在Frigate+上选择可用的模型。请注意,只能选择与当前检测器配置兼容的模型。", + "modelSelect": "你可以在Frigate+上选择可用的模型。请注意,只能选择与当前检测器配置兼容的模型。", "plusModelType": { "baseModel": "基础模型", "userModel": "定向调优" @@ -652,7 +705,8 @@ "ariaLabel": "按类型筛选模型", "baseModels": "基础模型", "fineTunedModels": "微调过的模型" - } + }, + "showIncompatible": "显示不兼容的模型" }, "toast": { "success": "Frigate+ 设置已保存。请重启 Frigate 以应用更改。", @@ -680,7 +734,7 @@ "desc": "重建索引将为所有追踪的目标重新生成特征向量信息。该过程将在后台进行,期间可能会使 CPU 满载,所需时间取决于追踪目标的数量。", "label": "立即重建索引", "confirmTitle": "确认重建索引", - "confirmDesc": "确定要为所有追踪目标重建特征向量索引信息吗?此过程将在后台进行,但可能会导致CPU满载并耗费较长时间。您可以在 浏览 页面查看进度。", + "confirmDesc": "确定要为所有追踪目标重建特征向量索引信息吗?此过程将在后台进行,但可能会导致CPU满载并耗费较长时间。你可以在 浏览 页面查看进度。", "confirmButton": "重建索引", "success": "重建索引已成功启动。", "alreadyInProgress": "重建索引已在执行中。", @@ -699,7 +753,7 @@ } }, "title": "语义搜索", - "desc": "Frigate 中的语义搜索功能将能够让你通过图片、用户自定义的文本描述,或自动生成的文本描述等方式在核查项目中查找目标/物体。" + "desc": "Frigate 中的语义搜索功能将能够让你通过图片、用户自定义的文本描述,或自动生成的文本描述等方式在核查项中查找目标/物体。" }, "licensePlateRecognition": { "desc": "Frigate 可以识别车辆的车牌,并自动将检测到的字符添加到 识别的车牌(recognized_license_plate)字段中,或将已知车牌对应的名称作为子标签添加到该车辆目标中。该功能常用于识别驶入车道的车辆车牌或经过街道的车辆车牌。", @@ -828,7 +882,7 @@ } }, "semanticSearch": { - "desc": "必须启用语义搜索功能才能使用触发器。" + "desc": "必须开启语义搜索功能才能使用触发器。" }, "wizard": { "title": "创建触发器", @@ -860,7 +914,8 @@ "actions": "操作", "noRoles": "没有找到自定义权限组。", "editCameras": "编辑摄像头", - "deleteRole": "删除权限组" + "deleteRole": "删除权限组", + "cameraCount_other": "{{count}} 个摄像头" }, "toast": { "success": { @@ -954,7 +1009,8 @@ "nameLength": "摄像头名称要少于64个字符", "invalidCharacters": "摄像头名称内有不允许使用的字符", "nameExists": "该摄像头名称已存在", - "customUrlRtspRequired": "自定义 URL 必须以“rtsp://”或“rtsps://”开头;对于非 RTSP 协议的摄像头流,需手动添加至配置文件。" + "customUrlRtspRequired": "自定义 URL 必须以“rtsp://”或“rtsps://”开头;对于非 RTSP 协议的摄像头流,需手动添加至配置文件。", + "onvifPortInvalid": "ONVIF 端口必须是 1 到 65535 之间的整数" }, "connectionSettings": "连接设置", "detectionMethod": "视频流检测方法", @@ -964,12 +1020,12 @@ "detectionMethodDescription": "如果摄像头支持 ONVIF 协议,将使用该协议探测摄像头,以自动获取摄像头视频流地址;若不支持,也可手动选择摄像头品牌来使用预设地址。如需输入自定义RTSP地址,请选择“手动选择”并选择“其他”选项。", "onvifPortDescription": "对于支持ONVIF协议的摄像头,该端口通常为80或8080。", "useDigestAuth": "使用摘要认证", - "useDigestAuthDescription": "为 ONVIF 协议启用 HTTP 摘要认证。部分摄像头可能需要专用的 ONVIF 用户名/密码,而非默认的 admin 账户。" + "useDigestAuthDescription": "为 ONVIF 协议开启 HTTP 摘要认证。部分摄像头可能需要专用的 ONVIF 用户名/密码,而非默认的 admin 账户。" }, "step2": { "description": "将根据你选择的检测方式,将会自动查找摄像头可用流配置,或进行手动配置。", "testSuccess": "视频流测试成功!", - "testFailed": "连接测试失败,请检查您的输入后重试。", + "testFailed": "连接测试失败,请检查你的输入后重试。", "testFailedTitle": "测试失败", "connected": "已连接", "notConnected": "未连接", @@ -989,7 +1045,7 @@ "manufacturer": "制造商", "model": "型号", "firmware": "固件", - "profiles": "配置文件", + "profiles": "配置模板", "ptzSupport": "支持 PTZ", "autotrackingSupport": "支持自动追踪", "presets": "预设配置", @@ -1041,11 +1097,26 @@ "title": "视频流功能", "detect": "用于目标检测的主码流。", "record": "根据配置设置保存视频流片段。", - "audio": "用于音频检测的音视频流。" + "audio": "用于音频检测的音视频流。", + "record_sub": "用于自适应播放和延长保留时间的低画质录像(通常是摄像头的子视频流)。" }, "featuresPopover": { "title": "视频流功能特性", "description": "使用 go2rtc 中继转流功能,减少与摄像头的网络连接数,提升效率。" + }, + "appleCompatibility": { + "title": "改善 Apple 设备上的播放效果", + "description": "如果你会在 Safari 或 iPhone、iPad、Mac 上查看录像,请开启此选项。" + }, + "ptz": { + "title": "开启 PTZ 控制", + "detectedNote": "已通过 ONVIF 检测到 PTZ 支持。如果这是一台 PTZ 摄像头,开启此选项后即可在页面上控制摄像头的平移、俯仰和变焦。", + "connectionDetails": "ONVIF 连接信息", + "host": "ONVIF 主机", + "port": "ONVIF 端口", + "username": "ONVIF 用户名", + "password": "ONVIF 密码", + "hostRequiredWarning": "开启 PTZ 控制后,必须填写 ONVIF 主机和端口。" } }, "step4": { @@ -1067,13 +1138,13 @@ "estimatedBandwidth": "预估带宽", "roles": "功能", "ffmpegModule": "使用视频流兼容模式", - "ffmpegModuleDescription": "若多次尝试后仍无法加载视频流,可尝试启用此功能。启用后,Frigate 将通过 go2rtc 调用 ffmpeg 模块。这可能会提升与部分摄像头视频流的兼容性。", + "ffmpegModuleDescription": "若多次尝试后仍无法加载视频流,可尝试开启此功能。开启后,Frigate 将通过 go2rtc 调用 ffmpeg 模块。这可能会提升与部分摄像头视频流的兼容性。", "none": "无", "error": "错误", "streamValidated": "视频流 {{number}} 验证成功", "streamValidationFailed": "视频流 {{number}} 验证失败", "saveAndApply": "保存新摄像头", - "saveError": "配置无效,请检查您的设置。", + "saveError": "配置无效,请检查你的设置。", "issues": { "title": "视频流验证", "videoCodecGood": "视频编解码器为 {{codec}}。", @@ -1085,14 +1156,14 @@ "audioCodecRequired": "要实现音频检测功能,必须要有音频流。", "restreamingWarning": "为录制流开启“减少与摄像头的连接数”可能会略微增加 CPU 使用率。", "brands": { - "reolink-rtsp": "不建议使用 Reolink 的 RTSP 协议。请在摄像头后台设置中启用 HTTP协议,并重新启动向导。", - "reolink-http": "Reolink HTTP 视频流应该使用 FFmpeg 以获得更好的兼容性,为此视频流启用“使用流兼容模式”。" + "reolink-rtsp": "不建议使用 Reolink 的 RTSP 协议。请在摄像头后台设置中开启 HTTP协议,并重新启动向导。", + "reolink-http": "Reolink HTTP 视频流应该使用 FFmpeg 以获得更好的兼容性,为此视频流开启“使用流兼容模式”。" }, "dahua": { - "substreamWarning": "子码流1当前被锁定为低分辨率。多数大华、安讯士、EmpireTech品牌的摄像头都支持额外的子码流,这些子码流需要在摄像头设置中手动启用。如果你的设备支持,建议你检查并使用这些高分辨率子码流。" + "substreamWarning": "子码流1当前被锁定为低分辨率。多数大华、安讯士、EmpireTech品牌的摄像头都支持额外的子码流,这些子码流需要在摄像头设置中手动开启。如果你的设备支持,建议你检查并使用这些高分辨率子码流。" }, "hikvision": { - "substreamWarning": "子码流1当前被锁定为低分辨率。多数海康威视的摄像头都支持额外的子码流,这些子码流需要在摄像头设置中手动启用。如果你的设备支持,建议你检查并使用这些高分辨率子码流。" + "substreamWarning": "子码流1当前被锁定为低分辨率。多数海康威视的摄像头都支持额外的子码流,这些子码流需要在摄像头设置中手动开启。如果你的设备支持,建议你检查并使用这些高分辨率子码流。" }, "resolutionUnknown": "无法检测此视频流的分辨率。你需要在设置或配置文件中手动指定检测分辨率。" } @@ -1106,7 +1177,7 @@ "backToSettings": "返回摄像头设置", "streams": { "title": "摄像头状态和详细信息", - "enableSuccess": "已启用 {{cameraName}}。请重启 Frigate 以应用。", + "enableSuccess": "已开启 {{cameraName}}。请重启 Frigate 以应用。", "reorderHandle": "拖动以重新排序", "saving": "保存中…", "saved": "已保存", @@ -1117,7 +1188,7 @@ "friendlyNameLabel": "显示名称", "friendlyNameHelp": "在 Frigate 页面中显示此摄像头的友好名称。留空以使用摄像头 ID。", "webuiUrlLabel": "摄像头管理后台 URL", - "webuiUrlHelp": "从调试页面中直接访问摄像头管理网页界面。留空以禁用链接。", + "webuiUrlHelp": "从调试页面中直接访问摄像头管理网页界面。留空则不显示链接。", "webuiUrlInvalid": "必须是有效的 URL(例如:https://example.com)。", "dashboardLabel": "在实时监控面板上显示", "dashboardHelp": "在实时监控面板显示该摄像头,在分组等其他位置仍可见。", @@ -1125,8 +1196,8 @@ "reviewHelp": "在核查页面展示该摄像头,包括在筛选列表、画面变动核查以及历史视图。" }, "label": "摄像头状态", - "description": "设置各摄像头运行状态

    开启:正常处理视频流
    关闭:临时暂停处理,重启后状态不保留
    停用:停止处理并保存配置,重新启用需重启程序

    备注:停用操作不会影响 go2rtc 转流功能

    拖动控件调整摄像头界面显示顺序,排序效果同步应用于实时面板及摄像头选择下拉栏。", - "disabledSubheading": "配置中禁用", + "description": "设置各摄像头运行状态

    开启:正常处理视频流
    关闭:临时暂停处理,重启后状态不保留
    停用:停止处理并保存配置,重新开启需重启程序

    备注:停用操作不会影响 go2rtc 转流功能

    拖动控件调整摄像头界面显示顺序,排序效果同步应用于实时面板及摄像头选择下拉栏。", + "disabledSubheading": "配置中已关闭", "status": { "on": "开", "off": "关", @@ -1166,7 +1237,7 @@ "deleteCamera": "删除摄像头", "deleteCameraDialog": { "title": "删除摄像头", - "description": "删除摄像头将永久移除该摄像头的所有录像、跟踪目标以及配置。任何与该摄像头关联的 go2rtc 流可能仍需手动删除。", + "description": "删除摄像头将永久移除该摄像头的所有录像、追踪目标以及配置。任何与该摄像头关联的 go2rtc 流可能仍需手动删除。", "selectPlaceholder": "选择摄像头…", "confirmTitle": "你确定吗?", "confirmWarning": "删除 {{cameraName}} 后将无法撤销。", @@ -1178,7 +1249,7 @@ "profiles": { "title": "配置模板的摄像头覆盖项", "selectLabel": "选择配置模板", - "description": "配置启用配置文件时开启或关闭的摄像头。设置为“继承”的摄像头会沿用它原本的默认状态。", + "description": "设置切换配置模板时开启或关闭的摄像头。设置为“继承”的摄像头会保持原本的默认状态。", "inherit": "继承", "on": "开", "off": "关" @@ -1191,7 +1262,7 @@ "dedicatedLpr": "车牌识别专用", "saveSuccess": "已更新 {{cameraName}} 的摄像头类型,请重启 Frigate 以使更改生效。" }, - "description": "添加、编辑和删除摄像头,控制每个摄像头的状态,并配置每个配置文件和摄像头类型的覆盖设置。要配置视频流、检测、画面变动和其他特定于摄像头的设置,请在“摄像头配置”下选择相关功能。", + "description": "添加、编辑和删除摄像头,控制每个摄像头的状态,并配置每个配置模板和摄像头类型的覆盖设置。要配置视频流、检测、画面变动和其他特定于摄像头的设置,请在“摄像头配置”下选择相关功能。", "clone": { "sectionTitle": "复制设置", "sectionDescription": "将摄像头的配置复制到另一台摄像头或新摄像头上。", @@ -1227,7 +1298,7 @@ "spatial": "空间设置", "streams": "视频流", "spatialWarningTitle": "分辨率不一致", - "spatialWarning": "源摄像头 {{srcCamera}} 的检测分辨率 ({{srcWidth}}×{{srcHeight}}) 与以下摄像头存在差异:{{cameras}}。在这些摄像头上,多边形(检测区域)可能无法准确对齐。这些默认选项当前处于关闭状态;如果启用,将按原样进行复制。", + "spatialWarning": "源摄像头 {{srcCamera}} 的检测分辨率 ({{srcWidth}}×{{srcHeight}}) 与以下摄像头存在差异:{{cameras}}。在这些摄像头上,多边形(检测区域)可能无法准确对齐。这些默认选项当前处于关闭状态;如果开启,将按原样进行复制。", "restartHint": "需要重启", "items": { "record": "录制", @@ -1278,23 +1349,23 @@ "cameraReview": { "title": "摄像头核查设置", "object_descriptions": { - "title": "生成式AI目标描述", - "desc": "临时启用或禁用此摄像头的 生成式AI目标描述 功能,直到 Frigate 重启。禁用后,系统将不再请求该摄像头追踪目标和物体的AI生成描述。" + "title": "生成式 AI 目标描述", + "desc": "临时开启或关闭此摄像头的“生成式 AI 目标描述”功能,直到 Frigate 重启。关闭后,系统将不再为该摄像头的追踪目标请求 AI 生成的描述。" }, "review_descriptions": { - "title": "生成式 AI 核查总结", - "desc": "临时开关该摄像头的 生成式 AI 核查总结 功能,直到 Frigate 重启。禁用后,系统将不再请求 AI 生成该摄像头核查项目的总结。" + "title": "生成式 AI 核查描述", + "desc": "临时开启或关闭此摄像头的“生成式 AI 核查描述”功能,直到 Frigate 重启。关闭后,系统将不再为该摄像头的核查项请求 AI 生成的描述。" }, "review": { "title": "核查", - "desc": "临时开关该摄像头的警报与检测项生成功能,直到 Frigate 重启后恢复。禁用期间,系统将不再生成新的核查项目。 ", + "desc": "临时开启或关闭此摄像头的警报和检测,直到 Frigate 重启。关闭期间,系统将不再生成新的核查项。 ", "alerts": "警报 ", "detections": "检测 " }, "reviewClassification": { "title": "核查分类", - "desc": "Frigate 将核查项的严重程度分为“警报”和“检测”两个等级。默认情况下,所有的人、汽车 目标都将视为警报。你可以通过修改配置文件配置区域来细分。", - "noDefinedZones": "此摄像头未设置任何监控区。", + "desc": "Frigate 将核查项的严重程度分为“警报”和“检测”两个等级。默认情况下,所有的 人、汽车 目标都将视为警报。你可以通过修改配置文件中的区域设置来细分。", + "noDefinedZones": "此摄像头未定义任何区域。", "objectAlertsTips": "所有 {{alertsLabels}} 类目标或物体在 {{cameraName}} 下都将视为警报。", "zoneObjectAlertsTips": "所有 {{alertsLabels}} 类目标或物体在 {{cameraName}} 下的 {{zone}} 区域内都将视为警报。", "objectDetectionsTips": "所有在摄像头 {{cameraName}} 上,检测到的 {{detectionsLabels}} 目标或物体,无论它位于哪个区,都将显示为检测。", @@ -1329,7 +1400,7 @@ "reset": "重置" }, "profile": { - "label": "配置" + "label": "配置模板" } }, "configForm": { @@ -1424,8 +1495,11 @@ "preset-record-generic-audio-aac": "录制(通用并将音频转码为 AAC)", "preset-record-mjpeg": "录制 - MJPEG 流摄像头", "preset-record-jpeg": "录制 - JPEG 流摄像头", - "preset-record-ubiquiti": "录制 - 优必飞摄像头" - } + "preset-record-ubiquiti": "录制 - 优必飞摄像头", + "preset-apple-silicon-h264": "Apple Silicon(H.264)", + "preset-apple-silicon-h265": "Apple Silicon(H.265)" + }, + "sameAsRecord": "与录制输出参数相同" }, "cameraInputs": { "itemTitle": "视频流 {{index}}", @@ -1474,8 +1548,11 @@ "options": { "detect": "检测", "record": "录制", - "audio": "音频" - } + "audio": "音频", + "record_sub": "录制(子视频流)" + }, + "roleInUse": "已分配给其他视频流", + "recordSubConflict": "同一路视频流不能同时拥有 record 和 record_sub 功能" }, "review": { "title": "核查设置" @@ -1510,7 +1587,8 @@ "options": { "embeddings": "嵌入(Embedding)", "descriptions": "描述生成", - "chat": "聊天对话" + "chat": "聊天对话", + "transcribe": "音频转录" } }, "semanticSearchModel": { @@ -1535,7 +1613,12 @@ }, "knownPlates": { "namePlaceholder": "例如:老婆的车", - "platePlaceholder": "车牌号或正则表达式" + "platePlaceholder": "车牌号或正则表达式", + "assignedTo": "已分配给 {{name}}", + "detected": "已检测到的车牌", + "noneDetected": "尚未检测到车牌", + "search": "搜索或输入车牌", + "useCustom": "使用“{{value}}”" }, "semanticSearchModelSize": { "notApplicable": "不适用于生成式 AI 提供者" @@ -1549,7 +1632,15 @@ "noGo2rtcStreams": "没有 go2rtc 视频流配置", "availableStreams": "可用的视频流", "useCustom": "使用“{{value}}”", - "addStream": "添加视频流" + "addStream": "添加视频流", + "reorderHandle": "拖动调整顺序", + "transcodedBadge": "已转码", + "autoOrder": "自动排序", + "autoOrderTips": "测量每路视频流的码率,并按从高到低排序", + "measuring": "测量中…", + "rate": "{{kbps}} kbps", + "rateSet": "{{kbps}} kbps(已设置)", + "rateFailed": "无法测量" }, "ptzPresets": { "placeholder": "选择或输入预设…", @@ -1560,7 +1651,38 @@ }, "defaultRole": { "admin": "管理员", - "viewer": "成员" + "viewer": "成员", + "none": "无(拒绝访问)" + }, + "liveTranscode": { + "title": "转码视频流", + "description": "添加画质较低的视频流,有人观看时由 go2rtc 实时转码。", + "unavailable": "转码视频流需要有一路 go2rtc 视频流作为来源。请先在 go2rtc 视频流中添加一路。", + "enable": "开启转码视频流", + "source": "源视频流", + "height": "高度", + "heightOption": "{{height}}p", + "bitrate": "码率(kbps)", + "addQuality": "添加画质", + "removeQuality": "删除画质" + }, + "birdseyeModes": { + "summary": "已选择 {{count}} 项", + "options": { + "continuous": "持续", + "motion": "画面变动", + "all_objects": "所有目标", + "alerts": "警报", + "detections": "检测" + } + }, + "audioTranscriptionModel": { + "placeholder": "选择模型…", + "builtIn": "内置模型", + "genaiProviders": "生成式 AI 服务商" + }, + "audioTranscriptionModelSize": { + "notApplicable": "生成式 AI 服务商不适用" } }, "cameraConfig": { @@ -1577,7 +1699,7 @@ "title": "维护", "sync": { "title": "媒体同步", - "desc": "Frigate 会根据您的保留配置定期清理媒体文件。出现少量孤立文件是正常现象。使用此功能可以删除磁盘上不再被数据库引用的孤立媒体文件。", + "desc": "Frigate 会根据你的保留配置定期清理媒体文件。出现少量孤立文件是正常现象。使用此功能可以删除磁盘上不再被数据库引用的孤立媒体文件。", "started": "媒体同步已启动。", "alreadyRunning": "同步任务已在运行中", "error": "启动同步失败", @@ -1597,7 +1719,7 @@ "forceDesc": "绕过安全阈值,即使删除超过 50% 的文件也完成同步。", "running": "同步运行中…", "start": "开始同步", - "inProgress": "同步正在进行中。此页面已禁用。", + "inProgress": "同步正在进行中。此页面暂不可用。", "status": { "queued": "已排队", "running": "运行中", @@ -1611,7 +1733,9 @@ "orphansDeleted": "已删除孤立文件", "aborted": "已中止。删除操作将超过安全阈值。", "error": "错误", - "totals": "总计" + "totals": "总计", + "spaceToReclaim": "可释放空间", + "spaceReclaimed": "已释放空间" }, "event_snapshots": "追踪目标快照", "event_thumbnails": "追踪目标缩略图", @@ -1653,9 +1777,10 @@ "saveAllSuccess_other": "所有 {{count}} 个部分保存成功。", "saveAllPartial_other": "已保存 {{successCount}} / {{totalCount}} 个部分。{{failCount}} 个失败。", "saveAllFailure": "保存所有部分失败。", - "saveAllSuccessRestartRequired_other": "成功保存 {{count}} 个部分。重启 Frigate 以生效。" + "saveAllSuccessRestartRequired_other": "成功保存 {{count}} 个部分。重启 Frigate 以生效。", + "go2rtcSyncFailed": "已保存,但无法更新 go2rtc。请重启 Frigate 以应用更改。" }, - "unsavedChanges": "您有未保存的更改", + "unsavedChanges": "你有未保存的更改", "confirmReset": "确认重置", "resetToDefaultDescription": "这将把此部分的所有设置重置为默认值。此操作无法撤销。", "resetToGlobalDescription": "这将把此部分的设置重置为全局默认值。此操作无法撤销。", @@ -1669,21 +1794,24 @@ "tooltip_other": "{{count}} 个摄像头在此项中存在单独配置,点击查看详情。", "heading_other": "此全局设置项下有 {{count}} 个摄像头存在自定义单独配置。", "othersField_other": "其余 {{count}} 个", - "profilePrefix": "{{profile}} 配置方案:{{fields}}" + "profilePrefix": "{{profile}} 配置模板:{{fields}}" }, "overriddenGlobalHeading_other": "该摄像头已覆盖全局配置中的 {{count}} 项设置:", "overriddenGlobalNoDeltas": "该摄像头已覆盖全局配置,但所有配置项数值均无差异。", "overriddenBaseConfigHeading_other": "{{profile}} 配置模板已覆盖基础配置中的 {{count}} 项设置:", - "overriddenBaseConfigNoDeltas": "{{profile}} 配置模板已覆盖该板块,但各项参数与基础配置完全一致无差异。" + "overriddenBaseConfigNoDeltas": "{{profile}} 配置模板已覆盖该板块,但各项参数与基础配置完全一致无差异。", + "overriddenLive": "已覆盖(实时)", + "overriddenLiveTooltip": "此摄像头实际运行的值与配置中保存的值不同,这里显示的是配置中保存的值。实时监控、MQTT 或正在使用的配置模板都可能在 Frigate 运行期间改变它。", + "overriddenLiveValue": "当前运行值:{{value}}" }, "profiles": { "title": "配置模板", - "activeProfile": "激活配置模板", - "noActiveProfile": "无激活的配置模板", + "activeProfile": "当前配置模板", + "noActiveProfile": "没有开启的配置模板", "active": "激活", - "activated": "配置模板 {{profile}} 已激活", - "activateFailed": "配置模板设置失败", - "deactivated": "配置模板已停用", + "activated": "配置模板 {{profile}} 已开启", + "activateFailed": "配置模板切换失败", + "deactivated": "配置模板已关闭", "noProfiles": "未定义任何配置模板。", "noOverrides": "无覆盖项", "cameraCount_other": "{{count}} 个摄像头", @@ -1697,25 +1825,25 @@ "nameInvalid": "仅允许使用小写字母、数字和下划线", "nameDuplicate": "已存在同名配置模板", "columnCamera": "摄像头", - "columnOverrides": "配置文件覆盖", + "columnOverrides": "配置模板覆盖", "error": { "mustBeAtLeastTwoCharacters": "至少需要 2 个字符", "mustNotContainPeriod": "不得包含英文句号(\".\")", - "alreadyExists": "已存在使用此 ID 的配置文件" + "alreadyExists": "已存在使用此 ID 的配置模板" }, - "renameProfile": "重命名配置文件", - "renameSuccess": "已将配置文件重命名为 “{{profile}}”", - "deleteProfile": "删除配置文件", - "deleteProfileConfirm": "确定要为所有摄像头删除配置文件“{{profile}}”吗?该步骤无法撤销。", - "deleteSuccess": "配置文件“{{profile}}”已删除", - "createSuccess": "配置文件“{{profile}}”已创建", - "removeOverride": "移除配置文件覆盖", + "renameProfile": "重命名配置模板", + "renameSuccess": "已将配置模板重命名为“{{profile}}”", + "deleteProfile": "删除配置模板", + "deleteProfileConfirm": "确定要为所有摄像头删除配置模板“{{profile}}”吗?该步骤无法撤销。", + "deleteSuccess": "配置模板“{{profile}}”已删除", + "createSuccess": "配置模板“{{profile}}”已创建", + "removeOverride": "移除配置模板覆盖", "deleteSection": "删除节点覆盖", - "deleteSectionConfirm": "是否要移除摄像机 {{camera}} 上针对配置文件 {{profile}} 的 {{section}} 覆盖设置?", + "deleteSectionConfirm": "是否要移除摄像头 {{camera}} 上针对配置模板 {{profile}} 的 {{section}} 覆盖设置?", "deleteSectionSuccess": "已移除 {{profile}} 的 {{section}} 覆盖设置", "enableSwitch": "开启配置模板", - "enabledDescription": "配置文件功能已启用。请在下方创建新的配置文件,进入摄像头配置页面进行修改并保存,修改即可生效。", - "disabledDescription": "配置文件功能可以让你创建一组带名称的摄像头自定义参数(比如布防、离家、夜间模式),并随时切换启用。" + "enabledDescription": "配置模板功能已开启。请在下方创建新的配置模板,进入摄像头配置页面进行修改并保存,修改即可生效。", + "disabledDescription": "配置模板功能可以让你创建一组带名称的摄像头自定义参数(比如布防、离家、夜间模式),并随时开启或关闭。" }, "timestampPosition": { "tl": "左上角", @@ -1787,10 +1915,13 @@ }, "configMessages": { "review": { - "recordDisabled": "录制已禁用,不会生成核查记录项。", - "detectDisabled": "目标检测已禁用。核查记录需要依靠检测到的目标来对警报和检测事件进行分类。", + "recordDisabled": "录制已关闭,不会生成核查项。", + "detectDisabled": "目标检测已关闭。核查项需要检测到的目标来区分警报和检测事件。", "allNonAlertDetections": "所有非警报类活动都将被记录为检测事件。", - "genaiImageSourceRecordingsRecordDisabled": "图像源虽然设置为“录制”,但录制功能已关闭。Frigate 将自动降级使用预览图片。" + "genaiImageSourceRecordingsRecordDisabled": "图像源设置为“录制”,但录制功能已关闭。Frigate 将回退使用预览图片。", + "recordRuntimeDisabled": "配置中已开启录制,但此摄像头当前关闭了录制,因此不会生成核查项。请到摄像头的实时监控页面重新开启,或检查是否有正在使用的配置模板把它关闭了。", + "detectRuntimeDisabled": "配置中已开启目标检测,但此摄像头当前关闭了目标检测。核查项需要检测到的目标来区分警报和检测事件。请到摄像头的实时监控页面重新开启,或检查是否有正在使用的配置模板把它关闭了。", + "genaiImageSourceRecordingsRecordRuntimeDisabled": "图像源设置为“录制”,但此摄像头当前关闭了录制,尽管配置中已开启录制。Frigate 将回退使用预览图片。" }, "lpr": { "vehicleNotTracked": "车牌识别需要先追踪到车辆才能工作。请在该摄像头的检测目标中添加“汽车”或其他类型的车辆目标。", @@ -1798,20 +1929,24 @@ "modelSizeLarge": "大型模型针对多行格式车牌做了优化。小型模型的性能优于大型模型,而且只有小型模型才能支持中文车牌。除非你所在地区使用多行车牌格式,否则建议使用小型模型。" }, "audio": { - "noAudioRole": "暂无任何流已开启音频(audio)功能(role)。必须在视频流上启用音频功能,音频检测才能正常工作。" + "noAudioRole": "没有任何视频流开启音频(audio)功能(role)。必须在视频流上开启音频功能,音频检测才能正常工作。" }, "audioTranscription": { - "audioDetectionDisabled": "该摄像头未开启音频检测功能。音频转录需要先开启音频检测。" + "audioDetectionDisabled": "该摄像头未开启音频检测功能。音频转录需要先开启音频检测。", + "audioDetectionRuntimeDisabled": "配置中已开启音频检测,但此摄像头当前关闭了音频检测,因此音频转录不会运行。请到摄像头的实时监控页面重新开启,或检查是否有正在使用的配置模板把它关闭了。", + "genaiProviderSelected": "已选择生成式 AI 服务商,因此设备和模型大小设置会被忽略。" }, "detect": { "fpsGreaterThanFive": "不建议设置检测帧率高于 5,数值设置过高可能引发性能问题,且不会带来任何增益。", - "disabled": "目标检测已禁用。快照、回放条目以及人脸识别、车牌识别、生成式 AI 等增强功能都将无法使用。", + "disabled": "目标检测已关闭。快照、核查项以及人脸识别、车牌识别、生成式 AI 等增强功能都将无法使用。", "resolutionShouldBeMultipleOfFour": "为了获得最佳效果,检测的宽度和高度应该是4的倍数。其他偶数值可能会在检测流中产生视觉伪影或轻微失真。", "aspectRatioMismatch": "你输入的宽度和高度与当前检测分辨率的不匹配,这可能会导致图像被拉伸或变形。", - "maxFramesSet": "设置最大帧数将会覆盖默认行为,并且禁用静态物体追踪。只有很少的情况下需要这个功能,请谨慎使用。", + "maxFramesSet": "设置最大帧数将会覆盖默认行为,并且关闭静态物体追踪。只有很少的情况下需要这个功能,请谨慎使用。", "squareResolution": "方形的检测分辨率比较少见。检测宽度和高度应该与你摄像头的画面比例一致(例如 16:9),而不是跟目标检测模型的输入尺寸一致。画面比例不匹配可能会拉伸图像,从而降低检测准确率。", "resolutionHigh": "这个检测分辨率高于推荐值,可能会增加资源占用,但不一定提升检测准确率。对于大多数摄像头,建议使用 1080p 或更低的检测分辨率。", - "globalResolutionMultipleCameras": "在配置了多个摄像头同时还设置了全局检测分辨率。除非所有摄像头都使用相同的分辨率和画面比例,否则应该为每个摄像头单独设置检测宽度和高度,使其匹配各自摄像头的原生画面比例。" + "globalResolutionMultipleCameras": "在配置了多个摄像头同时还设置了全局检测分辨率。除非所有摄像头都使用相同的分辨率和画面比例,否则应该为每个摄像头单独设置检测宽度和高度,使其匹配各自摄像头的原生画面比例。", + "runtimeDisabled": "配置中已开启目标检测,但此摄像头当前关闭了目标检测。在从摄像头的实时监控页面重新开启之前,或在正在使用的配置模板不再关闭它之前,快照、核查项以及人脸识别、车牌识别和生成式 AI 等增强功能都不会工作。", + "sceneWithoutModel": "此场景没有配置检测模型,因此此摄像头会回退到默认模型。为此场景添加一个模型,就能让摄像头使用自己的模型。" }, "faceRecognition": { "globalDisabled": "必须开启人脸识别增强功能,此摄像头的人脸识别相关功能才能正常使用。", @@ -1819,10 +1954,13 @@ "modelSizeLarge": "大型模型需要 GPU 或 NPU 才能运行正常。仅使用 CPU 的设备请选用小型模型。" }, "record": { - "noRecordRole": "暂无任何视频流已配置录制功能,录制功能将无法正常工作。" + "noRecordRole": "暂无任何视频流已配置录制功能,录制功能将无法正常工作。", + "noRecordSubRole": "没有任何视频流配置 record_sub 功能,子视频流录制将无法工作。", + "profileBaseDisabled": "此摄像头的基础配置已关闭录制,因此在配置模板中开启录制不会生效。请在基础配置中开启录制,改用配置模板来关闭录制。" }, "snapshots": { - "detectDisabled": "目标检测已禁用。快照是根据追踪到的目标生成的,因此将不会创建快照。" + "detectDisabled": "目标检测已关闭。快照是根据追踪到的目标生成的,因此将不会创建快照。", + "detectRuntimeDisabled": "配置中已开启目标检测,但此摄像头当前关闭了目标检测,因此不会创建快照。请到摄像头的实时监控页面重新开启,或检查是否有正在使用的配置模板把它关闭了。" }, "objects": { "genaiNoDescriptionsProvider": "必须配置具备“描述”功能的生成式 AI 服务商,才能自动生成事件描述。" @@ -1840,6 +1978,17 @@ "model": { "optimizedFor320": "Frigate 针对了 320x320 的模型进行优化,这是大多数设置的最佳选择。640x640 模型速度较慢,仅在特定场景下有帮助。", "inputDimensionsNotDetectResolution": "模型输入的宽度和高度是目标检测模型的输入尺寸,而不是你摄像头的检测分辨率。它们应该与你正在使用的模型的尺寸相匹配,通常是一个方形尺寸,如320x320或640x640。" + }, + "live": { + "noGo2rtcStream": "此摄像头的实时监控正在使用基础播放器,帧率较低且没有声音。为此摄像头设置一路 go2rtc 视频流,可以获得更流畅的画面和声音。" + }, + "notifications": { + "profileBaseDisabled": "没有任何摄像头在基础配置中开启通知,因此在配置模板中开启通知不会生效。请至少为一个摄像头的基础配置开启通知。", + "ttlDelay": "通知最多可能延迟 30 秒到达,并且即使核查项已经结束,仍会链接到实时监控。" + }, + "birdseye": { + "objectTrackingDetectDisabled": "鸟瞰图包含追踪目标,但此摄像头已关闭目标检测。此摄像头不会出现在鸟瞰图中。", + "objectTrackingDetectRuntimeDisabled": "鸟瞰图包含追踪目标,但此摄像头当前关闭了目标检测,尽管配置中已开启目标检测。在从摄像头的实时监控页面重新开启之前,或在正在使用的配置模板不再关闭它之前,此摄像头不会出现在鸟瞰图中。" } }, "birdseye": { @@ -1866,6 +2015,10 @@ "imageSource": { "recordings": "录制", "previews": "预览" + }, + "frameMode": { + "frames": "画面帧", + "annotated_frames": "带标注的画面帧" } }, "logger": { @@ -1895,7 +2048,50 @@ }, "menuDot": { "overrideGlobal": "这一部分覆盖了全局配置", - "overrideProfile": "本节被 {{profile}} 配置文件覆盖", + "overrideProfile": "本节被配置模板 {{profile}} 覆盖", "unsaved": "这一部分有未保存的更改" + }, + "analyticsPreview": { + "show": "预览报告", + "desc": "Frigate 在开启分享期间每天发送一次此报告。报告中绝不会包含摄像头名称、区域、标签或地址。", + "error": "无法生成预览" + }, + "notificationTtl": { + "immediate": "立即", + "reliable": "可靠" + }, + "detectionModels": { + "title": "检测模型", + "description": "配置目标检测模型以及每个模型运行的硬件。只有当部分摄像头需要单独训练的模型(例如热成像摄像头)时,才需要为某个场景添加模型。摄像头会在自己的检测设置中按场景选择模型。", + "addModel": "添加模型", + "cameras_other": "{{count}} 个摄像头", + "scene": { + "label": "场景", + "placeholder": "例如:热成像", + "description": "此模型适用的摄像头环境名称。摄像头会在检测设置中把场景设为相同的值来选择模型;未设置场景的摄像头会使用默认模型。场景用于运行不同的模型,而不是把一个模型拆到多块硬件上,因为使用同一个模型文件的模型会合并。" + }, + "scenes": { + "default": "默认" + }, + "hardware": { + "label": "硬件", + "placeholder": "选择硬件", + "loading": "正在查找检测硬件…", + "none": "未选择硬件", + "claimedBy": "被 {{scene}} 使用", + "detectorCount": "检测器数量", + "countRecommended_other": "推荐用于 {{count}} 个摄像头", + "unrecognized": "此模型配置的硬件在当前系统中未找到:{{devices}}", + "description": "此模型运行检测所使用的硬件。", + "detectorCountDescription": "在此硬件上运行多少个检测进程。检测器越多,能同时处理的摄像头越多,但会占用更多设备内存。", + "unitsDescription": "每个单元都会运行自己的检测进程。无法共享的单元(例如 Coral)只能供一个模型使用。" + }, + "tabs": { + "plus": "Frigate+", + "custom": "自定义模型" + }, + "plusModel": { + "noModelSelected": "选择 Frigate+ 模型" + } } } diff --git a/web/public/locales/zh-CN/views/system.json b/web/public/locales/zh-CN/views/system.json index da601d7937..40255ef041 100644 --- a/web/public/locales/zh-CN/views/system.json +++ b/web/public/locales/zh-CN/views/system.json @@ -9,7 +9,8 @@ "go2rtc": "Go2RTC 日志 - Frigate", "nginx": "Nginx 日志 - Frigate", "websocket": "消息日志 - Frigate" - } + }, + "health": "运行状况 - Frigate" }, "title": "系统", "metrics": "系统指标", @@ -57,7 +58,7 @@ "clear": "清除", "empty": "未捕获到消息", "expanded": { - "payload": "Payload" + "payload": "消息内容" }, "count_one": "{{count}} 条消息", "count_other": "{{count}} 条消息" @@ -139,7 +140,11 @@ "bandwidth": "带宽", "unused": { "title": "未使用", - "tips": "如果您的驱动器上存储了除 Frigate 录制内容之外的其他文件,该值可能无法准确反映 Frigate 可用的剩余空间。Frigate 不会追踪录制内容以外的存储使用情况。" + "tips": "如果你的驱动器上存储了除 Frigate 录制内容之外的其他文件,该值可能无法准确反映 Frigate 可用的剩余空间。Frigate 不会追踪录制内容以外的存储使用情况。" + }, + "subStream": { + "information": "子视频流存储信息", + "tips": "录制子视频流的摄像头会分别显示“原画”和“低画质”的占用空间,名称与录像回放中的画质选项一致。低画质录像会一直保留在磁盘上,直到超过保留期限,因此即使关闭了子视频流录制,这里仍可能显示这类占用。" } }, "shm": { @@ -181,7 +186,11 @@ "segmentLength": "录制片段长度:", "ok": "每 {{seconds}} 秒取一帧,适用于录制和回放。", "unknown": "无法确定关键帧间隔。", - "recordDisabled": "此摄像头的录制功能已禁用。" + "recordDisabled": "此摄像头的录制功能已关闭。", + "warningFixed": "关键帧间隔均匀但过于稀疏(约每 {{seconds}} 秒一次)。录制仍可正常工作,但实时回放和拖动进度会启动得更慢。请将摄像头的 I 帧(关键帧)间隔设置为与帧率匹配。", + "warningVariable": "关键帧间隔不一致({{minSeconds}} 秒到 {{maxSeconds}} 秒),通常说明开启了智能编码(H.264+/H.265+)。不建议这样设置。", + "errorFixed": "关键帧间隔约为每 {{seconds}} 秒一次,比录像片段长度({{segmentTime}} 秒)还长,因此部分片段没有关键帧,无法回放。请缩短摄像头的 I 帧(关键帧)间隔,使其与帧率匹配。", + "errorVariable": "关键帧间隔最大可达约 {{seconds}} 秒,比录像片段长度({{segmentTime}} 秒)还长。部分片段会没有关键帧,导致无法回放。请关闭摄像头上的智能编码(H.264+/H.265+),或缩短关键帧间隔。" } }, "framesAndDetections": "帧数/检测次数", @@ -232,7 +241,14 @@ "detectIsSlow": "{{detect}} 运行缓慢({{speed}}毫秒)", "detectIsVerySlow": "{{detect}} 运行非常缓慢({{speed}}毫秒)", "cameraIsOffline": "{{camera}} 已离线", - "debugReplayActive": "调试回放会话正在进行" + "debugReplayActive": "调试回放会话正在进行", + "cameraSkippedDetections": "{{camera}} 有 {{pct}}% 的画面帧没有进行检测", + "systemNotices_other": "{{count}} 条系统提示", + "moreMessages_other": "+{{count}}", + "reindexEmbeddingsFailed": "重新索引嵌入失败,请查看日志", + "retentionUnmet": "为了释放空间,录像会在保留期限结束前被删除", + "systemNotices_one": "{{count}} 条系统消息", + "moreMessages_one": "+ {{count}}" }, "enrichments": { "title": "增强功能", @@ -260,5 +276,105 @@ "classification_events_per_second": "{{name}} 的每秒分类速度" }, "averageInf": "平均推理时间" + }, + "showAllTabs": "显示全部标签页", + "showLessTabs": "收起", + "health": { + "title": "运行状况", + "notices": { + "title": "系统提示", + "empty": "你的 Frigate 运行正常", + "acknowledge": "确认", + "acknowledgeHint": "再次出现前不再显示", + "mute": "忽略", + "muteHint": "不再显示此提示", + "unmute": "取消忽略", + "showAgain": "重新显示", + "openSettings": "打开设置", + "openLink": "打开链接", + "noMatches": "没有符合筛选条件的系统提示", + "hiddenTitle": "已隐藏", + "noneHidden": "没有已隐藏的系统提示", + "showAll": "全部重新显示", + "showAllTitle": "重新显示所有已隐藏的系统提示?", + "showAllDesc": "所有已确认和已忽略的系统提示都会重新出现在提示列表中,包括配置和视频流检查。", + "occurred_other": "上次出现于 {{lastTime}} · 自 {{time}} 起共 {{count}} 次", + "acknowledgedAt": "已于 {{time}} 确认", + "mutedAt": "已于 {{time}} 忽略", + "filter": { + "showHidden": "显示已隐藏", + "severity": "级别", + "error": "错误", + "warning": "警告", + "info": "信息" + }, + "kinds": { + "detector_stuck": "检测器 {{detector}} 停止响应后已重启", + "model_download_failed": "为 {{model}} 下载 {{file}} 失败:{{error}}", + "skipped_detections": "检测速度跟不上,超过一分钟跳过了 {{pct}}% 的画面帧", + "ffmpeg_high_cpu": "FFmpeg CPU 使用率过高(平均 {{cpu}}%)", + "detect_high_cpu": "检测 CPU 使用率过高(平均 {{cpu}}%)", + "shm_too_low": "请将 /dev/shm 分配({{total}} MB)至少增加到 {{min}} MB", + "object_processing_behind": "追踪目标处理速度跟不上,导致摄像头画面帧被丢弃。请检查 CPU 使用情况,以及容器或虚拟机的 CPU 限制或绑核是否让 Frigate 可用 CPU 太少", + "failed_login_other": "{{user}} 的多次登录尝试失败", + "update_available": "Frigate {{version}} 已发布", + "analytics_prompt": "考虑分享匿名使用统计,帮助开发者改进 Frigate", + "failed_login_one": "尝试登录 {{user}} 失败" + }, + "streamPrefix": "视频流 {{index}}:{{message}}", + "streamPrefixRestream": "视频流 {{index}}(通过 go2rtc):{{message}}", + "streamProbeFailed": "无法探测视频流 {{index}}:{{error}}", + "cameraProbeFailed": "无法探测视频流:{{error}}", + "occurred_one": "发生于 {{time}}" + }, + "hardware": { + "title": "硬件", + "objectDetection": "目标检测", + "hardwareAcceleration": "硬件加速", + "enrichments": { + "title": "增强功能", + "semantic_search": "语义搜索", + "face_recognition": "人脸识别", + "lpr": "车牌识别", + "audio_transcription": "音频转录" + }, + "cameraConnections": "摄像头连接", + "allCamerasExcellent": "所有摄像头的连接都很好。", + "fps": "{{camera}} / {{expected}} 帧/秒", + "nothingConfigured": "未配置", + "allCameras": "所有摄像头", + "probeUnavailable": "无法检测硬件", + "justStarted": "Frigate 刚刚启动", + "deviceNotFound": "当前系统中未找到 {{devices}}", + "detectorNotRunning": "检测器进程未运行", + "inferenceVerySlow": "推理速度非常慢({{speed}} 毫秒)", + "inferenceSlow": "推理速度较慢({{speed}} 毫秒)", + "inferenceMs": "{{speed}} 毫秒", + "customArgs": "自定义 FFmpeg 参数", + "customArgsNotVerified": "自定义 FFmpeg 参数(未验证)", + "hwaccelNotConfigured": "当前没有使用硬件解码,但可以使用 {{family}}。请在 FFmpeg 设置中选择它", + "hwaccelHardwareMissing": "已配置 {{family}},但硬件检测没有报告它", + "unrecognizedDevice": "无法识别的设备覆盖项,未验证", + "decoderUsage": "解码器 {{usage}}", + "remoteProvider": "远程服务商", + "acceleratorMissing": "已配置 {{device}},但未找到兼容的加速器", + "modelNotRunYet": "模型尚未运行,首次使用后会验证设备", + "fellBackToCpu": "已配置 {{device}},但正在使用 CPU 运行", + "cpuDespiteAccelerator": "有可用的加速器,但正在使用 CPU 运行", + "probed": "已检测", + "probing": "检测中…", + "recheck": "重新检查硬件", + "cameraStreams": "摄像头视频流", + "streamsNotChecked": "尚未检查", + "streamsChecking": "正在检查 {{done}} / {{total}}", + "streamsClean": "没有视频流问题", + "checked": "已检查", + "runAgain": "重新运行", + "runStreamChecks": "运行视频流检查", + "streamsChecked_other": "已检查 {{count}} 个摄像头", + "streamsFlagged_other": "{{count}} 个有问题,已列在“系统提示”中", + "streamsChecked_one": "已检查 {{count}} 个摄像头", + "streamsFlagged_one": "{{count}} 项存在问题,已列在\"通知\"下方" + } } }