From da3cdbbdef144c09b9f09d5cdbee4a9757b920c8 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Wed, 29 Oct 2025 15:44:47 +0100 Subject: [PATCH] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (593 of 593 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (124 of 124 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (54 of 54 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (206 of 206 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (13 of 13 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 76.6% (95 of 124 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 98.1% (53 of 54 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% (124 of 124 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 97.0% (33 of 34 strings) Added translation using Weblate (Chinese (Simplified Han script)) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (584 of 584 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (582 of 582 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (60 of 60 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (10 of 10 strings) Co-authored-by: GuoQing Liu <842607283@qq.com> Co-authored-by: Hosted Weblate Co-authored-by: Languages add-on Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/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-explore/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-facelibrary/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/zh_Hans/ Translation: Frigate NVR/common Translation: Frigate NVR/components-auth Translation: Frigate NVR/components-dialog Translation: Frigate NVR/views-classificationmodel Translation: Frigate NVR/views-events Translation: Frigate NVR/views-explore Translation: Frigate NVR/views-exports Translation: Frigate NVR/views-facelibrary Translation: Frigate NVR/views-settings --- web/public/locales/zh-CN/common.json | 13 +- web/public/locales/zh-CN/components/auth.json | 3 +- .../locales/zh-CN/components/dialog.json | 5 +- web/public/locales/zh-CN/views/events.json | 7 +- web/public/locales/zh-CN/views/explore.json | 60 +++++++- web/public/locales/zh-CN/views/exports.json | 6 + .../locales/zh-CN/views/faceLibrary.json | 6 +- web/public/locales/zh-CN/views/settings.json | 50 +++++-- .../zh-Hans/views/classificationModel.json | 135 ++++++++++++++++++ 9 files changed, 263 insertions(+), 22 deletions(-) create mode 100644 web/public/locales/zh-Hans/views/classificationModel.json diff --git a/web/public/locales/zh-CN/common.json b/web/public/locales/zh-CN/common.json index 8fbe31c59..55632e768 100644 --- a/web/public/locales/zh-CN/common.json +++ b/web/public/locales/zh-CN/common.json @@ -96,7 +96,10 @@ } }, "label": { - "back": "返回" + "back": "返回", + "hide": "隐藏 {{item}}", + "show": "显示 {{item}}", + "ID": "ID" }, "pagination": { "label": "分页", @@ -277,5 +280,13 @@ "readTheDocumentation": "阅读文档", "information": { "pixels": "{{area}} 像素" + }, + "list": { + "two": "{{0}} 和 {{1}}", + "many": "{{items}} 以及 {{last}}" + }, + "field": { + "optional": "可选", + "internalID": "Frigate 在配置与数据库中使用的内部 ID" } } diff --git a/web/public/locales/zh-CN/components/auth.json b/web/public/locales/zh-CN/components/auth.json index 015fa0ba8..dbfc34994 100644 --- a/web/public/locales/zh-CN/components/auth.json +++ b/web/public/locales/zh-CN/components/auth.json @@ -10,6 +10,7 @@ "loginFailed": "登录失败", "unknownError": "未知错误,请检查日志。", "webUnknownError": "未知错误,请检查控制台日志。" - } + }, + "firstTimeLogin": "首次尝试登录?请从 Frigate 日志中查找生成的登录密码等信息。" } } diff --git a/web/public/locales/zh-CN/components/dialog.json b/web/public/locales/zh-CN/components/dialog.json index bd690a7ab..db2af6069 100644 --- a/web/public/locales/zh-CN/components/dialog.json +++ b/web/public/locales/zh-CN/components/dialog.json @@ -59,7 +59,7 @@ "export": "导出", "selectOrExport": "选择或导出", "toast": { - "success": "导出成功。进入 /exports 目录查看文件。", + "success": "导出成功。进入 导出 页面查看文件。", "error": { "failed": "导出失败:{{error}}", "endTimeMustAfterStartTime": "结束时间必须在开始时间之后", @@ -123,6 +123,7 @@ "search": { "placeholder": "通过标签或子标签搜索……" }, - "noImages": "未在此摄像头找到缩略图" + "noImages": "未在此摄像头找到缩略图", + "unknownLabel": "已保存触发的图片" } } diff --git a/web/public/locales/zh-CN/views/events.json b/web/public/locales/zh-CN/views/events.json index 89f1fade9..a598e68ba 100644 --- a/web/public/locales/zh-CN/views/events.json +++ b/web/public/locales/zh-CN/views/events.json @@ -41,9 +41,10 @@ "detail": { "noDataFound": "没有可供核查的详细数据", "aria": "切换详细视图", - "trackedObject_one": "追踪目标", - "trackedObject_other": "追踪目标", - "noObjectDetailData": "没有目标详细信息。" + "trackedObject_one": "目标或物体", + "trackedObject_other": "目标或物体", + "noObjectDetailData": "没有目标详细信息。", + "label": "详细信息" }, "objectTrack": { "trackedPoint": "追踪点", diff --git a/web/public/locales/zh-CN/views/explore.json b/web/public/locales/zh-CN/views/explore.json index 7e2c46e4d..fac329f39 100644 --- a/web/public/locales/zh-CN/views/explore.json +++ b/web/public/locales/zh-CN/views/explore.json @@ -194,12 +194,22 @@ "audioTranscription": { "label": "转录", "aria": "请求音频转录" + }, + "showObjectDetails": { + "label": "显示目标轨迹" + }, + "hideObjectDetails": { + "label": "隐藏目标轨迹" + }, + "viewTrackingDetails": { + "label": "查看追踪详情", + "aria": "显示追踪详情" } }, "dialog": { "confirmDelete": { "title": "确认删除", - "desc": "删除此追踪目标后将移除快照、所有已保存的嵌入向量数据以及任何相关的目标全周期条目,但在 历史 页面中跟踪对象的录制视频片段不会被删除。

你确定要继续删除该追踪目标吗?" + "desc": "删除此追踪目标后将移除快照、所有已保存的嵌入向量数据以及任何相关的目标追踪详情条目,但在 历史 页面中跟踪对象的录制视频片段不会被删除。

你确定要继续删除该追踪目标吗?" } }, "noTrackedObjects": "未找到追踪目标", @@ -220,5 +230,53 @@ }, "concerns": { "label": "风险等级" + }, + "trackingDetails": { + "title": "追踪细节", + "noImageFound": "在该时间内没找到图片。", + "createObjectMask": "创建目标遮罩", + "adjustAnnotationSettings": "调整注释设置", + "scrollViewTips": "滚动以查看该目标全周期中的关键时刻。", + "autoTrackingTips": "自动追踪摄像头的边框定位可能不准确。", + "count": "{{first}} / {{second}}", + "trackedPoint": "追踪点", + "lifecycleItemDesc": { + "visible": "已检测到 {{label}}", + "entered_zone": "{{label}} 进入 {{zones}}", + "active": "{{label}} 正在活动", + "stationary": "{{label}} 变为静止", + "attribute": { + "faceOrLicense_plate": "检测到 {{label}} 的 {{attribute}} 属性", + "other": "{{label}} 被识别为 {{attribute}}" + }, + "gone": "{{label}} 离开", + "heard": "{{label}} 被听到", + "external": "已检测到 {{label}}", + "header": { + "zones": "区", + "ratio": "占比", + "area": "坐标区域" + } + }, + "annotationSettings": { + "title": "标记设置", + "showAllZones": { + "title": "显示所有区", + "desc": "在目标进入区域的帧中始终显示区域框。" + }, + "offset": { + "label": "标记偏移量", + "desc": "此数据来自摄像头的检测视频流,但叠加在录制视频流的图像上。由于两个视频流通常不会完全同步,因此边框与画面可能无法完全对齐。不过,可以使用 annotation_offset 字段进行调整。", + "millisecondsToOffset": "用于偏移检测标记的毫秒数。 默认值:0", + "tips": "提示:假设有一段人从左向右走的事件录制,如果事件时间轴中的边框始终在人的左侧(即后方),则应该减小偏移值;反之,如果边框始终领先于人物,则应增大偏移值。", + "toast": { + "success": "{{camera}} 的标记偏移量已保存。请重启 Frigate 以应用更改。" + } + } + }, + "carousel": { + "previous": "上一张图", + "next": "下一张图" + } } } diff --git a/web/public/locales/zh-CN/views/exports.json b/web/public/locales/zh-CN/views/exports.json index b22d035f1..3270dc4e5 100644 --- a/web/public/locales/zh-CN/views/exports.json +++ b/web/public/locales/zh-CN/views/exports.json @@ -13,5 +13,11 @@ "error": { "renameExportFailed": "重命名导出失败:{{errorMessage}}" } + }, + "tooltip": { + "shareExport": "分享导出", + "downloadVideo": "下载视频", + "editName": "编辑名称", + "deleteExport": "删除导出" } } diff --git a/web/public/locales/zh-CN/views/faceLibrary.json b/web/public/locales/zh-CN/views/faceLibrary.json index d2420ae25..d43b1c366 100644 --- a/web/public/locales/zh-CN/views/faceLibrary.json +++ b/web/public/locales/zh-CN/views/faceLibrary.json @@ -23,11 +23,11 @@ "title": "创建特征库", "desc": "创建一个新的特征库", "new": "新建人脸", - "nextSteps": "建议按以下步骤建立可靠的特征库:
  • 使用训练选项卡为每个检测到的人员选择并训练图像
  • 优先使用正脸图像以获得最佳效果,尽可能避免使用侧脸图像进行训练
  • " + "nextSteps": "建议按以下步骤建立可靠的特征库:
  • 使用近期识别记录选项卡为每个检测到的人员选择并训练图像
  • 优先使用正脸图像以获得最佳效果,尽可能避免使用侧脸图像进行训练
  • " }, "train": { - "title": "训练", - "aria": "选择训练", + "title": "近期识别记录", + "aria": "选择近期识别记录", "empty": "近期未检测到人脸识别操作" }, "selectItem": "选择 {{item}}", diff --git a/web/public/locales/zh-CN/views/settings.json b/web/public/locales/zh-CN/views/settings.json index e8b496405..255587bfe 100644 --- a/web/public/locales/zh-CN/views/settings.json +++ b/web/public/locales/zh-CN/views/settings.json @@ -740,7 +740,7 @@ "triggers": { "documentTitle": "触发器", "management": { - "title": "触发器管理", + "title": "触发器", "desc": "管理 {{camera}} 的触发器。您可以使用“缩略图”类型,基于与所选追踪对象相似的缩略图来触发;也可以使用“描述”类型,基于与您指定的文本相似的描述来触发。" }, "addTrigger": "添加触发器", @@ -779,25 +779,28 @@ "form": { "name": { "title": "名称", - "placeholder": "输入触发器名称", + "placeholder": "触发器名称", "error": { - "minLength": "名称至少要两个字符。", - "invalidCharacters": "名称只能包含字母、数字、下划线和连字符。", + "minLength": "该字段至少需要两个字符。", + "invalidCharacters": "该字段只能包含字母、数字、下划线和连字符。", "alreadyExists": "此摄像头已存在同名触发器。" - } + }, + "description": "请输入用于识别此触发器的唯一名称或描述" }, "enabled": { "description": "开启/关闭此触发器" }, "type": { "title": "类型", - "placeholder": "选择触发类型" + "placeholder": "选择触发类型", + "description": "当检测到相似的追踪目标描述时触发", + "thumbnail": "当检测到相似的追踪目标缩略图时触发" }, "content": { "title": "内容", "imagePlaceholder": "选择图片", "textPlaceholder": "输入文字内容", - "imageDesc": "选择一张图片,当检测到相似图片时触发此操作。", + "imageDesc": "仅显示最近的 100 张缩略图。如果找不到需要的图片,请前往“浏览”页面查看更早的目标,并从菜单中设置触发器。", "textDesc": "输入文本,当检测到相似的追踪对象描述时触发此操作。", "error": { "required": "内容为必填项。" @@ -808,7 +811,8 @@ "error": { "min": "阈值必须大于 0", "max": "阈值必须小于 1" - } + }, + "desc": "设置此触发器的相似度阈值。阈值越高,触发所需的匹配就越精确。" }, "actions": { "title": "动作", @@ -839,6 +843,23 @@ "semanticSearch": { "title": "语义搜索已关闭", "desc": "必须启用语义搜索功能才能使用触发器。" + }, + "wizard": { + "title": "创建触发器", + "step1": { + "description": "配置触发器的基础设置。" + }, + "step2": { + "description": "设置触发此操作的内容。" + }, + "step3": { + "description": "配置此触发器的相似度阈值与执行动作。" + }, + "steps": { + "nameAndType": "名称与类型", + "configureData": "配置数据", + "thresholdAndActions": "阈值与动作" + } } }, "roles": { @@ -954,11 +975,16 @@ "invalidCharacters": "摄像头名称内有不允许使用的字符", "nameExists": "该摄像头名称已存在", "brands": { - "reolink-rtsp": "不建议使用萤石RTSP协议。建议在摄像头设置中启用HTTP协议,并重新执行摄像头向导。" - } + "reolink-rtsp": "不建议使用萤石 RTSP 协议。建议在摄像头设置中启用 HTTP 协议,并重新运行摄像头添加向导。" + }, + "customUrlRtspRequired": "自定义URL必须以“rtsp://”开头;对于非 RTSP 协议的摄像头流,需手动添加至配置文件。" }, "docs": { "reolink": "https://docs.frigate-cn.video/configuration/camera_specific.html#reolink-cameras" + }, + "testing": { + "probingMetadata": "正在获取摄像头基本数据……", + "fetchingSnapshot": "正在获取摄像头快照……" } }, "step2": { @@ -1037,7 +1063,9 @@ }, "hikvision": { "substreamWarning": "子码流1被锁定为低分辨率。多数海康威视的摄像头支持额外的子码流,但需要在摄像头设置中手动开启。如果可以,建议检查并使用这些子码流。" - } + }, + "resolutionHigh": "使用 {{resolution}} 分辨率可能会导致占用更多的系统资源。", + "resolutionLow": "使用 {{resolution}} 分辨率可能过低,难以检测较小的物体。" } } }, diff --git a/web/public/locales/zh-Hans/views/classificationModel.json b/web/public/locales/zh-Hans/views/classificationModel.json new file mode 100644 index 000000000..1714168fc --- /dev/null +++ b/web/public/locales/zh-Hans/views/classificationModel.json @@ -0,0 +1,135 @@ +{ + "documentTitle": "分类模型", + "button": { + "deleteClassificationAttempts": "删除分类图片", + "renameCategory": "重命名类别", + "deleteCategory": "删除类别", + "deleteImages": "删除图片", + "trainModel": "训练模型" + }, + "toast": { + "success": { + "deletedCategory": "删除类别", + "deletedImage": "删除图片", + "categorizedImage": "成功分类图片", + "trainedModel": "训练模型成功。", + "trainingModel": "已开始训练模型。" + }, + "error": { + "deleteImageFailed": "删除失败:{{errorMessage}}", + "deleteCategoryFailed": "删除类别失败:{{errorMessage}}", + "categorizeFailed": "图片分类失败:{{errorMessage}}", + "trainingFailed": "开始训练模型失败:{{errorMessage}}" + } + }, + "deleteCategory": { + "title": "删除类别", + "desc": "确定要删除类别 {{name}} 吗?此操作将永久删除所有关联的图片,并需要重新训练模型。" + }, + "deleteDatasetImages": { + "title": "删除图片数据集", + "desc": "确定要从 {{dataset}} 中删除 {{count}} 张图片吗?此操作无法撤销,并将需要重新训练模型。" + }, + "deleteTrainImages": { + "title": "删除训练的图片", + "desc": "确定要删除 {{count}} 张图片吗?此操作无法撤销。" + }, + "renameCategory": { + "title": "重命名类别", + "desc": "请输入 {{name}} 的新名称。名称变更后需要重新训练模型。" + }, + "description": { + "invalidName": "名称无效。名称只能包含字母、数字、空格、撇号、下划线和连字符。" + }, + "train": { + "title": "最近分类记录", + "aria": "选择最近分类记录" + }, + "categories": "类别", + "createCategory": { + "new": "创建新类别" + }, + "categorizeImageAs": "图片分类为:", + "categorizeImage": "图片分类", + "noModels": { + "object": { + "title": "未创建目标/物体分类模型", + "description": "创建自定义模型以分类检测到的目标。", + "buttonText": "创建目标/物体模型" + }, + "state": { + "title": "尚未创建状态分类模型", + "description": "创建自定义模型以监控并分类摄像头特定区域的状态变化。", + "buttonText": "创建状态模型" + } + }, + "wizard": { + "title": "创建新分类", + "steps": { + "nameAndDefine": "名称与定义", + "stateArea": "状态区域", + "chooseExamples": "选择范例" + }, + "step1": { + "description": "状态模型用于监控摄像头固定区域的状态变化(例如门是否开启或关闭)。目标/物体模型用于为检测到的目标添加分类标签(例如区分宠物、快递员等)。", + "name": "名称", + "namePlaceholder": "请输入模型名称……", + "type": "类型", + "typeState": "状态", + "typeObject": "目标/物体", + "objectLabel": "目标/物体标签", + "objectLabelPlaceholder": "请选择目标类型……", + "classificationType": "分类方式", + "classificationTypeTip": "了解分类方式", + "classificationTypeDesc": "子标签会为目标标签添加附加文本(例如:“人员:美团”)。属性是可搜索的元数据,独立存储在对象的元信息中。", + "classificationSubLabel": "子标签", + "classificationAttribute": "属性", + "classes": "类别", + "classesTip": "了解类别", + "classesStateDesc": "定义摄像头区域内可能出现的不同状态。例如:车库门的“开启”和“关闭”。", + "classesObjectDesc": "定义用于分类检测目标的不同类别。例如:人员分类中的“快递员”、“居民”、“陌生人”。", + "classPlaceholder": "请输入分类名称……", + "errors": { + "nameRequired": "模型名称为必填项", + "nameLength": "模型名称长度不能超过 64 个字符", + "nameOnlyNumbers": "模型名称不能仅包含数字", + "classRequired": "至少需要一个类别", + "classesUnique": "类别名称必须唯一", + "stateRequiresTwoClasses": "状态模型至少需要两个类别", + "objectLabelRequired": "请选择一个目标标签", + "objectTypeRequired": "请选择一个目标标签" + } + }, + "step2": { + "description": "选择摄像头,并为摄像头定义要监控的区域。模型将对这些区域的状态进行分类。", + "cameras": "摄像头", + "selectCamera": "选择摄像头", + "noCameras": "点击 + 符号添加摄像头", + "selectCameraPrompt": "从列表中选择一个摄像头以定义其检测区域" + }, + "step3": { + "selectImagesPrompt": "选择所有属于 {{className}} 的图片", + "selectImagesDescription": "点击图像进行选择,完成该类别后点击“继续”。", + "generating": { + "title": "正在生成样本图片", + "description": "Frigate 正在从录像中提取代表性图片。这可能需要一些时间……" + }, + "training": { + "title": "正在训练模型", + "description": "系统正在后台训练模型。你可以关闭此对话框,训练完成后模型将自动开始运行。" + }, + "retryGenerate": "重新生成", + "noImages": "未生成样本图像", + "classifying": "正在分类与训练……", + "trainingStarted": "已开始模型训练", + "errors": { + "noCameras": "未配置摄像头", + "noObjectLabel": "未选择目标标签", + "generateFailed": "示例生成失败:{{error}}", + "generationFailed": "生成失败,请重试。", + "classifyFailed": "图片分类失败:{{error}}" + }, + "generateSuccess": "样本图片生成成功" + } + } +}