classification i18n fix (#21331)

* fix: fix classification pages none label i18n

* fix: fix README_CN formatting issue
This commit is contained in:
GuoQing Liu
2025-12-18 06:26:11 +08:00
committed by GitHub
parent 3edfd905de
commit 13957fec00
6 changed files with 18 additions and 10 deletions

View File

@@ -4,14 +4,14 @@
# Frigate NVR™ - 一个具有实时目标检测的本地 NVR # Frigate NVR™ - 一个具有实时目标检测的本地 NVR
[English](https://github.com/blakeblackshear/frigate) | \[简体中文\]
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
<a href="https://hosted.weblate.org/engage/frigate-nvr/-/zh_Hans/"> <a href="https://hosted.weblate.org/engage/frigate-nvr/-/zh_Hans/">
<img src="https://hosted.weblate.org/widget/frigate-nvr/-/zh_Hans/svg-badge.svg" alt="翻译状态" /> <img src="https://hosted.weblate.org/widget/frigate-nvr/-/zh_Hans/svg-badge.svg" alt="翻译状态" />
</a> </a>
[English](https://github.com/blakeblackshear/frigate) | \[简体中文\]
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
一个完整的本地网络视频录像机NVR专为[Home Assistant](https://www.home-assistant.io)设计,具备 AI 目标/物体检测功能。使用 OpenCV 和 TensorFlow 在本地为 IP 摄像头执行实时物体检测。 一个完整的本地网络视频录像机NVR专为[Home Assistant](https://www.home-assistant.io)设计,具备 AI 目标/物体检测功能。使用 OpenCV 和 TensorFlow 在本地为 IP 摄像头执行实时物体检测。
强烈推荐使用 GPU 或者 AI 加速器(例如[Google Coral 加速器](https://coral.ai/products/) 或者 [Hailo](https://hailo.ai/)等)。它们的运行效率远远高于现在的顶级 CPU并且功耗也极低。 强烈推荐使用 GPU 或者 AI 加速器(例如[Google Coral 加速器](https://coral.ai/products/) 或者 [Hailo](https://hailo.ai/)等)。它们的运行效率远远高于现在的顶级 CPU并且功耗也极低。
@@ -38,6 +38,7 @@
## 协议 ## 协议
本项目采用 **MIT 许可证**授权。 本项目采用 **MIT 许可证**授权。
**代码部分**:本代码库中的源代码、配置文件和文档均遵循 [MIT 许可证](LICENSE)。您可以自由使用、修改和分发这些代码,但必须保留原始版权声明。 **代码部分**:本代码库中的源代码、配置文件和文档均遵循 [MIT 许可证](LICENSE)。您可以自由使用、修改和分发这些代码,但必须保留原始版权声明。
**商标部分**“Frigate”名称、“Frigate NVR”品牌以及 Frigate 的 Logo 为 **Frigate LLC 的商标****不在** MIT 许可证覆盖范围内。 **商标部分**“Frigate”名称、“Frigate NVR”品牌以及 Frigate 的 Logo 为 **Frigate LLC 的商标****不在** MIT 许可证覆盖范围内。

View File

@@ -1,7 +1,9 @@
{ {
"documentTitle": "Classification Models - Frigate", "documentTitle": "Classification Models - Frigate",
"details": { "details": {
"scoreInfo": "Score represents the average classification confidence across all detections of this object." "scoreInfo": "Score represents the average classification confidence across all detections of this object.",
"none": "None",
"unknown": "Unknown"
}, },
"button": { "button": {
"deleteClassificationAttempts": "Delete Classification Images", "deleteClassificationAttempts": "Delete Classification Images",
@@ -83,7 +85,6 @@
"aria": "Select Recent Classifications" "aria": "Select Recent Classifications"
}, },
"categories": "Classes", "categories": "Classes",
"none": "None",
"createCategory": { "createCategory": {
"new": "Create New Class" "new": "Create New Class"
}, },

View File

@@ -161,7 +161,11 @@ export const ClassificationCard = forwardRef<
)} )}
> >
<div className="smart-capitalize"> <div className="smart-capitalize">
{data.name == "unknown" ? t("details.unknown") : data.name} {data.name == "unknown"
? t("details.unknown")
: data.name == "none"
? t("details.none")
: data.name}
</div> </div>
{data.score != undefined && ( {data.score != undefined && (
<div <div

View File

@@ -132,7 +132,7 @@ export default function ClassificationSelectionDialog({
onClick={() => onCategorizeImage(category)} onClick={() => onCategorizeImage(category)}
> >
{category === "none" {category === "none"
? t("none") ? t("details.none")
: category.replaceAll("_", " ")} : category.replaceAll("_", " ")}
</SelectorItem> </SelectorItem>
))} ))}

View File

@@ -170,7 +170,9 @@ export function ClassFilterContent({
<FilterSwitch <FilterSwitch
key={item} key={item}
label={ label={
item === "none" ? t("none") : item.replaceAll("_", " ") item === "none"
? t("details.none", { ns: "views/classificationModel" })
: item.replaceAll("_", " ")
} }
isChecked={classes?.includes(item) ?? false} isChecked={classes?.includes(item) ?? false}
onCheckedChange={(isChecked) => { onCheckedChange={(isChecked) => {

View File

@@ -707,7 +707,7 @@ function LibrarySelector({
className="flex-grow cursor-pointer capitalize" className="flex-grow cursor-pointer capitalize"
onClick={() => setPageToggle(id)} onClick={() => setPageToggle(id)}
> >
{id === "none" ? t("none") : id.replaceAll("_", " ")} {id === "none" ? t("details.none") : id.replaceAll("_", " ")}
<span className="ml-2 text-muted-foreground"> <span className="ml-2 text-muted-foreground">
({dataset?.[id].length}) ({dataset?.[id].length})
</span> </span>