diff --git a/web/public/locales/zh-CN/config/cameras.json b/web/public/locales/zh-CN/config/cameras.json index b057bad7d2..5bd976c693 100644 --- a/web/public/locales/zh-CN/config/cameras.json +++ b/web/public/locales/zh-CN/config/cameras.json @@ -13,7 +13,7 @@ "description": "开启" }, "audio": { - "label": "音频事件", + "label": "音频检测", "description": "此摄像头的音频事件检测设置。", "enabled": { "label": "开启音频检测", @@ -516,6 +516,10 @@ "hwaccel_args": { "label": "导出硬件加速参数", "description": "用于导出/转码操作的硬件加速参数。" + }, + "max_concurrent": { + "label": "最大并发导出数", + "description": "同时可处理的最大导出任务数量。" } }, "preview": { diff --git a/web/public/locales/zh-CN/config/global.json b/web/public/locales/zh-CN/config/global.json index 5dbb98d74b..fed5425d7b 100644 --- a/web/public/locales/zh-CN/config/global.json +++ b/web/public/locales/zh-CN/config/global.json @@ -24,7 +24,7 @@ } }, "audio": { - "label": "音频事件", + "label": "音频检测", "enabled": { "label": "开启音频检测", "description": "为所有摄像头启用或禁用音频事件检测;可按摄像头覆盖。" @@ -522,8 +522,8 @@ "description": "为摄像头 ffmpeg 进程和检测器启用按进程网络带宽监控(需要权限)。" }, "intel_gpu_device": { - "label": "SR-IOV 设备", - "description": "将 Intel GPU 视为 SR-IOV 时使用的设备标识符,用于修复 GPU 统计信息。" + "label": "Intel GPU 设备", + "description": "当系统存在多个 Intel 显卡时,用于将显卡运行数据绑定到指定设备的 PCI 总线地址或 DRM 设备路径(示例:/dev/dri/card1)。" } }, "version_check": { @@ -1735,6 +1735,10 @@ "hwaccel_args": { "label": "导出硬件加速参数", "description": "用于导出/转码操作的硬件加速参数。" + }, + "max_concurrent": { + "label": "最大并发导出数", + "description": "同时可处理的最大导出任务数量。" } }, "preview": { diff --git a/web/public/locales/zh-CN/views/live.json b/web/public/locales/zh-CN/views/live.json index 10b8641d3f..53688c6dfa 100644 --- a/web/public/locales/zh-CN/views/live.json +++ b/web/public/locales/zh-CN/views/live.json @@ -70,7 +70,8 @@ }, "recording": { "enable": "开启录制", - "disable": "关闭录制" + "disable": "关闭录制", + "disabledInConfig": "必须先在该摄像头的设置中开启录制功能。" }, "snapshots": { "enable": "开启快照", diff --git a/web/public/locales/zh-CN/views/settings.json b/web/public/locales/zh-CN/views/settings.json index 7889786823..3831dfc56c 100644 --- a/web/public/locales/zh-CN/views/settings.json +++ b/web/public/locales/zh-CN/views/settings.json @@ -45,7 +45,7 @@ "globalMotion": "画面变动检测", "globalObjects": "目标", "globalReview": "核查", - "globalAudioEvents": "音频事件", + "globalAudioEvents": "音频检测", "globalLivePlayback": "实时监控观看", "globalTimestampStyle": "时间戳样式", "systemDatabase": "数据库", @@ -75,7 +75,7 @@ "cameraMotion": "画面变动检测", "cameraObjects": "目标", "cameraConfigReview": "核查", - "cameraAudioEvents": "音频事件", + "cameraAudioEvents": "音频检测", "cameraAudioTranscription": "音频转录", "cameraNotifications": "通知", "cameraLivePlayback": "实时监控观看", @@ -1412,6 +1412,14 @@ "inherit": "继承", "enabled": "开启", "disabled": "关闭" + }, + "cameraType": { + "title": "摄像头类型", + "label": "摄像头类型", + "description": "为每路摄像头设置类型。专用车牌识别(LPR)摄像头为单用途设备,配备高倍光学变焦,可抓拍远处车辆的车牌。绝大多数摄像头应选用通用类型;只有专为车牌识别部署、且画面聚焦对准车牌的摄像头,才需选择专用 LPR 类型。", + "normal": "通用", + "dedicatedLpr": "车牌识别专用", + "saveSuccess": "已更新 {{cameraName}} 的摄像头类型,请重启 Frigate 以使更改生效。" } }, "cameraReview": { @@ -1773,7 +1781,14 @@ "overriddenGlobal": "已覆盖全局通用配置", "overriddenGlobalTooltip": "当前摄像头配置,将优先覆盖全局通用设置", "overriddenBaseConfigTooltip": "当前 {{profile}} 配置模板会覆盖本节所有设置", - "overriddenBaseConfig": "已覆盖默认配置" + "overriddenBaseConfig": "已覆盖默认配置", + "overriddenInCameras": { + "label_other": "已在 {{count}} 个摄像头中单独配置", + "tooltip_other": "{{count}} 个摄像头在此项中存在单独配置,点击查看详情。", + "heading_other": "此全局设置项下有 {{count}} 个摄像头存在自定义单独配置。", + "othersField_other": "其余 {{count}} 个", + "profilePrefix": "{{profile}} 配置方案:{{fields}}" + } }, "profiles": { "title": "配置模板", @@ -1872,11 +1887,13 @@ "review": { "recordDisabled": "录制已禁用,不会生成核查记录项。", "detectDisabled": "目标检测已禁用。核查记录需要依靠检测到的目标来对警报和检测事件进行分类。", - "allNonAlertDetections": "所有非警报类活动都将被记录为检测事件。" + "allNonAlertDetections": "所有非警报类活动都将被记录为检测事件。", + "genaiImageSourceRecordingsRecordDisabled": "图像源虽然设置为“录制”,但录制功能已关闭。Frigate 将自动降级使用预览图片。" }, "lpr": { - "vehicleNotTracked": "车牌识别需要先开启对 “汽车” 或 “摩托车” 的目标追踪。", - "globalDisabled": "车牌识别未在全局开启。请在全局设置中开启该功能,才能在摄像头下单独配置车牌识别是否开启。" + "vehicleNotTracked": "车牌识别需要先开启对 “汽车” 或 “摩托车” 的目标追踪。请在该摄像头的检测目标中添加“汽车”或“摩托车”。", + "globalDisabled": "要让该摄像头的车牌识别功能正常使用,必须先开启车牌识别增强功能。", + "modelSizeLarge": "大型模型针对多行格式车牌做了优化。小型模型的性能优于大型模型,而且只有小型模型才能支持中文车牌。除非你所在地区使用多行车牌格式,否则建议使用小型模型。" }, "audio": { "noAudioRole": "暂无任何流已开启音频(audio)功能(role)。必须在视频流上启用音频功能,音频检测才能正常工作。" @@ -1885,11 +1902,13 @@ "audioDetectionDisabled": "该摄像头未开启音频检测功能。音频转录需要先开启音频检测。" }, "detect": { - "fpsGreaterThanFive": "不建议设置检测帧率高于 5。" + "fpsGreaterThanFive": "不建议设置检测帧率高于 5,数值设置过高可能引发性能问题,且不会带来任何增益。", + "disabled": "目标检测已禁用。快照、回放条目以及人脸识别、车牌识别、生成式 AI 等增强功能都将无法使用。" }, "faceRecognition": { - "globalDisabled": "人脸识别未在全局开启。请在全局设置中开启该功能,才能在摄像头下单独配置人脸识别是否开启。", - "personNotTracked": "人脸识别需要检测到 “人”(person) 后才能工作。请确保 “person” 已添加到目标追踪列表中。" + "globalDisabled": "必须开启人脸识别增强功能,此摄像头的人脸识别相关功能才能正常使用。", + "personNotTracked": "人脸识别需要检测到 “人”(person) 后才能工作。请在该摄像头的检测目标设置中添加“人”。", + "modelSizeLarge": "大型模型需要 GPU 或 NPU 才能运行正常。仅使用 CPU 的设备请选用小型模型。" }, "record": { "noRecordRole": "暂无任何视频流已配置录制功能,录制功能将无法正常工作。" @@ -1903,6 +1922,12 @@ "detectors": { "mixedTypes": "所有检测器必须为同一类型。若要更换为其他类型,请先移除现有的检测器。", "mixedTypesSuggestion": "所有检测器必须使用相同类型。请移除现有检测器,或选择 {{type}}。" + }, + "objects": { + "genaiNoDescriptionsProvider": "必须配置具备“描述”功能的生成式 AI 服务商,才能自动生成事件描述。" + }, + "semanticSearch": { + "jinav2SmallModelSize": "Jina V2 的大型模型版本内存占用与推理开销较高,建议搭配独立显卡使用大型模型。" } } } diff --git a/web/public/locales/zh-CN/views/system.json b/web/public/locales/zh-CN/views/system.json index 6e406674a7..79882b6afe 100644 --- a/web/public/locales/zh-CN/views/system.json +++ b/web/public/locales/zh-CN/views/system.json @@ -213,6 +213,9 @@ "expectedFps": "预期帧率", "reconnectsLastHour": "最近一小时重连次数", "stallsLastHour": "最近一小时卡顿次数" + }, + "noCameras": { + "title": "没有找到摄像头" } }, "lastRefreshed": "最后刷新时间: ", diff --git a/web/public/locales/zh-Hans/views/motionSearch.json b/web/public/locales/zh-Hans/views/motionSearch.json new file mode 100644 index 0000000000..af8874daf1 --- /dev/null +++ b/web/public/locales/zh-Hans/views/motionSearch.json @@ -0,0 +1,73 @@ +{ + "documentTitle": "变动搜索 - Frigate", + "title": "画面变动搜索", + "description": "绘制一个多边形以划定感兴趣区域,并指定时间范围,检索该区域内的异动变化。", + "selectCamera": "画面变动搜索正在加载中", + "startSearch": "开始搜索", + "searchStarted": "搜索已开始", + "searchCancelled": "搜索已取消", + "cancelSearch": "取消", + "searching": "搜索进行中。", + "searchComplete": "搜索完成", + "noResultsYet": "在所选区域内执行搜索,查找异常变化", + "noChangesFound": "所选区域未检测到像素变化", + "changesFound_other": "检测到 {{count}} 处画面变化", + "framesProcessed": "已处理 {{count}} 帧画面", + "jumpToTime": "跳转到该时间", + "results": "结果", + "showSegmentHeatmap": "热力图", + "newSearch": "新的搜索", + "clearResults": "清除结果", + "clearROI": "清除多边形选区", + "polygonControls": { + "points_other": "{{count}} 个点位", + "undo": "撤销上一个点位", + "reset": "重置多边形" + }, + "motionHeatmapLabel": "画面变动热力图", + "dialog": { + "title": "画面变动搜索", + "cameraLabel": "摄像头", + "previewAlt": "{{camera}} 摄像头实时预览" + }, + "timeRange": { + "title": "搜索范围", + "start": "开始时间", + "end": "结束时间" + }, + "settings": { + "title": "搜索设置", + "parallelMode": "并行模式", + "parallelModeDesc": "同时扫描多个录制片段(速度更快,但 CPU 占用会显著升高)", + "threshold": "灵敏度阈值", + "thresholdDesc": "数值越低,可检测到越小的变化(取值范围 1-255)", + "minArea": "最小变化区域", + "minAreaDesc": "最小感兴趣区域变化占比,达到该比例才会判定为有效变动", + "frameSkip": "帧跳过", + "frameSkipDesc": "每隔 N 帧进行一次处理。将该值设置为摄像头的帧率,即可实现每秒处理一帧画面(例如:5 帧 / 秒的摄像头设为 5,30 帧 / 秒的摄像头设为 30)。数值越高处理速度越快,但有可能遗漏短时移动侦测事件。", + "maxResults": "最大结果数", + "maxResultsDesc": "匹配到设定条数的录像事件后,就自动停止检索" + }, + "errors": { + "noCamera": "请选择摄像头", + "noROI": "请绘制感兴趣的区域", + "noTimeRange": "请选择时间范围", + "invalidTimeRange": "结束时间必须在开始时间之后", + "searchFailed": "搜索失败:{{message}}", + "polygonTooSmall": "多边形至少需要 3 个顶点", + "unknown": "未知错误" + }, + "changePercentage": "{{percentage}}% 已变化", + "metrics": { + "title": "搜索指标", + "segmentsScanned": "已扫描片段数", + "segmentsProcessed": "已处理", + "segmentsSkippedInactive": "已跳过(无活动)", + "segmentsSkippedHeatmap": "已跳过(不在感兴趣区域)", + "fallbackFullRange": "备用全范围扫描", + "framesDecoded": "画面已解码", + "wallTime": "搜索时间", + "segmentErrors": "片段异常", + "seconds": "{{seconds}} 秒" + } +} diff --git a/web/public/locales/zh-Hans/views/replay.json b/web/public/locales/zh-Hans/views/replay.json new file mode 100644 index 0000000000..00634af5d7 --- /dev/null +++ b/web/public/locales/zh-Hans/views/replay.json @@ -0,0 +1,59 @@ +{ + "title": "调试回放", + "description": "回放摄像头录像以供调试。目标列表会延时展示已检测目标的汇总信息,消息标签页则实时展示回放录像对应的 Frigate 内部日志信息流。", + "websocket_messages": "消息", + "dialog": { + "title": "开始调试回放", + "description": "创建临时回放摄像头,循环播放历史录制视频,用于调试目标检测与追踪相关问题。临时回放的摄像头将沿用原摄像头的检测配置。请选择一个时间范围开始。", + "camera": "原摄像头", + "timeRange": "时间范围", + "preset": { + "1m": "最后 1 分钟", + "5m": "最后 5 分钟", + "timeline": "从时间线", + "custom": "自定义" + }, + "startButton": "开始回放", + "selectFromTimeline": "选择", + "starting": "开始回放…", + "startLabel": "开始", + "endLabel": "结束", + "toast": { + "error": "调试回放启动失败:{{error}}", + "alreadyActive": "已有回放会话正在运行", + "stopError": "调试回放停止失败:{{error}}", + "goToReplay": "进入回放" + } + }, + "page": { + "noSession": "没有正在进行的调试回放会话", + "noSessionDesc": "从历史回放页面启动调试回放:点击工具栏中的操作按钮,选择调试回放即可。", + "goToRecordings": "查看历史记录", + "preparingClip": "正在准备片段…", + "preparingClipDesc": "Frigate 正在拼接所选时间范围的录像片段。时间跨度较大时,该过程可能需要一分钟左右。", + "startingCamera": "开始调试回放中…", + "startError": { + "title": "调试回放启动失败", + "back": "返回历史记录" + }, + "sourceCamera": "源摄像头", + "replayCamera": "回放摄像头", + "initializingReplay": "初始化调试回放中…", + "stoppingReplay": "正在停止调试回放…", + "stopReplay": "停止回放", + "confirmStop": { + "title": "要停止调试回放吗?", + "description": "这将终止会话并清除所有临时数据。是否确定?", + "confirm": "停止回放", + "cancel": "取消" + }, + "activity": "活动", + "objects": "目标列表", + "audioDetections": "音频检测", + "noActivity": "未检测到活动", + "activeTracking": "活动追踪中", + "noActiveTracking": "没有活动追踪", + "configuration": "配置", + "configurationDesc": "微调调试回放摄像头的移动侦测与目标追踪参数。本次调整不会保存到你的 Frigate 配置文件中。" + } +} diff --git a/web/public/locales/zh_Hans/views/chat.json b/web/public/locales/zh_Hans/views/chat.json new file mode 100644 index 0000000000..894b3c6d50 --- /dev/null +++ b/web/public/locales/zh_Hans/views/chat.json @@ -0,0 +1,46 @@ +{ + "documentTitle": "聊天 - Frigate", + "title": "Frigate 聊天", + "subtitle": "你的摄像头管理与智能分析 AI 助手", + "placeholder": "尝试问我任何事儿…", + "error": "出现错误,请稍后重试。", + "processing": "进行中…", + "toolsUsed": "使用:{{tools}}", + "showTools": "显示工具({{count}})", + "hideTools": "隐藏工具", + "call": "调用", + "result": "结果", + "arguments": "参数:", + "response": "响应:", + "attachment_chip_label": "在 {{camera}} 的 {{label}}", + "attachment_chip_remove": "移除附件", + "open_in_explore": "从浏览中打开", + "attach_event_aria": "关联事件 {{eventId}}", + "attachment_picker_paste_label": "或粘贴事件 ID", + "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": "了解此条更多详情。", + "starting_requests": { + "show_recent_events": "查看近期事件", + "show_camera_status": "显示摄像头状态", + "recap": "我不在的时候发生了什么?", + "watch_camera": "监控摄像头活动" + }, + "quick_reply_when_else_text": "还在哪些时间出现过?", + "anchor": "来源", + "similarity_score": "相似度", + "no_similar_objects_found": "未找到相似目标。", + "semantic_search_required": "必须启用语义搜索才能查找相似目标。", + "send": "发送", + "suggested_requests": "尝试问问:", + "starting_requests_prompts": { + "show_recent_events": "显示最近一小时的事件", + "show_camera_status": "我的摄像头当前状态如何?", + "recap": "我不在的时候发生了什么事?", + "watch_camera": "监控前门,有人出现就通知我" + } +}