From 2ecaaffd5e278951ff2bfcf0afa1990eaf844cef Mon Sep 17 00:00:00 2001 From: fascinate722 Date: Mon, 18 May 2026 13:07:33 +0800 Subject: [PATCH] Add zh-Hant (Traditional Chinese) translations for 7 remaining files (Wave 2c) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Coverage improvements (all reach 100%): - views/events.json: 66% → 100% (+22 keys) - views/live.json: 84% → 100% (+16 keys) - objects.json: 91% → 100% (+11 keys, incl. 6 manual labels) - views/explore.json: 93% → 100% (+11 keys, incl. 2 manual plural-one) - views/faceLibrary.json: 83% → 100% (+11 keys, incl. 6 manual) - components/camera.json: 98% → 100% (+1 key) - components/player.json: 96% → 100% (+1 key) Overall zh-Hant coverage: ~47% → ~50%. Also removed 52 obsolete keys across these files where en had restructured or removed entries that zh-Hant had not synced with: - views/events.json: 3 - views/live.json: 4 - views/explore.json: 34 (largest cleanup — objectLifecycle reorganization) - views/faceLibrary.json: 10 - components/camera.json: 1 Translation pipeline same as #23224 / #23225 / #23226 (OpenCC s2twp + Taiwan MS-style dictionary + manual review + plural-one manual fill). --- .../locales/zh-Hant/components/camera.json | 6 +- .../locales/zh-Hant/components/player.json | 3 +- web/public/locales/zh-Hant/objects.json | 17 +++- web/public/locales/zh-Hant/views/events.json | 37 ++++++-- web/public/locales/zh-Hant/views/explore.json | 85 ++++++------------- .../locales/zh-Hant/views/faceLibrary.json | 39 +++++---- web/public/locales/zh-Hant/views/live.json | 44 +++++++--- 7 files changed, 130 insertions(+), 101 deletions(-) diff --git a/web/public/locales/zh-Hant/components/camera.json b/web/public/locales/zh-Hant/components/camera.json index 3bace4d9de..844adedf4f 100644 --- a/web/public/locales/zh-Hant/components/camera.json +++ b/web/public/locales/zh-Hant/components/camera.json @@ -35,8 +35,7 @@ "audioIsUnavailable": "此串流不提供音訊", "audio": { "tips": { - "title": "此串流必須從你的鏡頭輸出音訊並在 go2rtc 中設定。", - "document": "請參照文件 " + "title": "此串流必須從你的鏡頭輸出音訊並在 go2rtc 中設定。" } }, "stream": "串流", @@ -82,6 +81,7 @@ "zones": "區域", "mask": "遮罩", "motion": "移動", - "regions": "區塊" + "regions": "區塊", + "paths": "行動軌跡" } } diff --git a/web/public/locales/zh-Hant/components/player.json b/web/public/locales/zh-Hant/components/player.json index dbecdb2beb..17015bd483 100644 --- a/web/public/locales/zh-Hant/components/player.json +++ b/web/public/locales/zh-Hant/components/player.json @@ -4,7 +4,8 @@ "noPreviewFoundFor": "找不到 {{cameraName}} 的預覽", "submitFrigatePlus": { "title": "提交此畫面至 Frigate+?", - "submit": "提交" + "submit": "提交", + "previewError": "無法載入快照預覽。該錄製當前可能不可用。" }, "streamOffline": { "desc": "{{cameraName}} 的 detect 串流未接收到任何畫面,請檢查錯誤日誌", diff --git a/web/public/locales/zh-Hant/objects.json b/web/public/locales/zh-Hant/objects.json index 092506cdd4..51fcd0fd5e 100644 --- a/web/public/locales/zh-Hant/objects.json +++ b/web/public/locales/zh-Hant/objects.json @@ -107,14 +107,23 @@ "bbq_grill": "烤肉架", "amazon": "亞馬遜(Amazon)", "usps": "美國郵政(USPS)", - "ups": "UPS", + "ups": "UPS 貨車", "fedex": "聯邦快遞(FedEx)", - "dhl": "DHL", + "dhl": "DHL 貨車", "an_post": "愛爾蘭郵政(An Post)", "purolator": "加拿大普洛特快遞", "postnl": "荷蘭郵政(PostNL)", "nzpost": "紐西蘭郵政(NZ Post)", "postnord": "北歐郵政(PostNord)", "gls": "GLS 快遞", - "dpd": "DPD 快遞" -} + "dpd": "DPD 快遞", + "canada_post": "加拿大郵政", + "royal_mail": "英國皇家郵政", + "school_bus": "校車", + "skunk": "臭鼬", + "kangaroo": "袋鼠", + "baby": "嬰兒", + "baby_stroller": "嬰兒推車", + "rickshaw": "人力車", + "rodent": "齧齒動物" +} \ No newline at end of file diff --git a/web/public/locales/zh-Hant/views/events.json b/web/public/locales/zh-Hant/views/events.json index 7d5b4d28c8..87089aa67b 100644 --- a/web/public/locales/zh-Hant/views/events.json +++ b/web/public/locales/zh-Hant/views/events.json @@ -14,8 +14,10 @@ "description": "僅當該攝影機啟用錄製功能時,才能為該攝影機建立審查項目。" } }, - "timeline": "時間線", - "timeline.aria": "選擇時間線", + "timeline": { + "aria": "選擇時間線", + "label": "時間線" + }, "events": { "label": "事件", "aria": "選擇事件", @@ -24,7 +26,9 @@ "documentTitle": "審核 - Frigate", "allCameras": "所有鏡頭", "recordings": { - "documentTitle": "錄影 - Frigate" + "documentTitle": "錄影 - Frigate", + "invalidSharedLink": "由於解析錯誤,無法開啟帶時間戳的錄製連結。", + "invalidSharedCamera": "由於攝影機未知或未獲授權,無法開啟帶時間戳的錄製連結。" }, "calendarFilter": { "last24Hours": "過去 24 小時" @@ -39,8 +43,6 @@ "selected_other": "已選擇 {{count}} 個", "camera": "鏡頭", "detected": "已偵測", - "suspiciousActivity": "可疑的活動", - "threateningActivity": "有威脅性的活動", "zoomIn": "放大", "zoomOut": "縮小", "detail": { @@ -63,5 +65,28 @@ "normalActivity": "正常", "needsReview": "待審核", "securityConcern": "安全隱憂", - "select_all": "全選" + "select_all": "全選", + "motionSearch": { + "menuItem": "畫面變動搜尋", + "openMenu": "攝影機選項" + }, + "motionPreviews": { + "menuItem": "檢視畫面變動預覽", + "title": "畫面變動預覽:{{camera}}", + "mobileSettingsTitle": "畫面變動預覽設定", + "mobileSettingsDesc": "調整播放速度和變暗程度,並選擇日期以僅檢視畫面變動的片段。", + "dim": "變暗", + "dimAria": "調整變暗強度", + "dimDesc": "增加變暗程度可以提高畫面變動區域的可見性。", + "speed": "速度", + "speedAria": "選擇預覽播放速度", + "speedDesc": "選擇預覽片段的播放速度。", + "back": "返回", + "empty": "沒有可用的預覽", + "noPreview": "預覽不可用", + "seekAria": "將 {{camera}} 播放器定位到 {{time}}", + "filter": "篩選", + "filterDesc": "選擇區域以僅顯示在這些區域中有畫面變動的片段。", + "filterClear": "清除" + } } diff --git a/web/public/locales/zh-Hant/views/explore.json b/web/public/locales/zh-Hant/views/explore.json index 5987009635..ea0993392d 100644 --- a/web/public/locales/zh-Hant/views/explore.json +++ b/web/public/locales/zh-Hant/views/explore.json @@ -24,8 +24,7 @@ "textTokenizer": "文字分詞器" }, "tips": { - "context": "在模型下載完成後,你可能會需要重新建立追蹤物件的特徵索引。", - "documentation": "閱讀文件" + "context": "在模型下載完成後,你可能會需要重新建立追蹤物件的特徵索引。" }, "error": "發生錯誤。請檢查 Frigate 日誌。" } @@ -41,7 +40,8 @@ }, "tips": { "mismatch_other": "在此審核項目中偵測到 {{count}} 個不可用物件。這些物件可能不符合警示或偵測標準,或者已被清除/刪除。", - "hasMissingObjects": "如果你想要 Frigate 儲存以下標籤的追蹤物件:{{objects}},請調整設定" + "hasMissingObjects": "如果你想要 Frigate 儲存以下標籤的追蹤物件:{{objects}},請調整設定", + "mismatch_one": "在此審閱項中偵測並包含了 {{count}} 個無法使用的目標。這些目標未達到警示或偵測條件,或已被清除/刪除。" }, "toast": { "success": { @@ -112,65 +112,19 @@ "attributes": "分類屬性", "title": { "label": "標題" - } + }, + "scoreInfo": "分數資訊" }, "trackedObjectDetails": "追蹤物件詳情", "type": { "details": "詳情", "snapshot": "截圖", "video": "影片", - "object_lifecycle": "物件生命週期", "thumbnail": "預覽圖", "tracking_details": "追蹤詳情" }, "objectLifecycle": { - "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 進行調整。", - "documentation": "閱讀文件 ", - "millisecondsToOffset": "偵測註解偏移的毫秒數。預設:0", - "tips": "提示:試想在一個片段中有個人從畫面左邊走到右邊。如果事件時間線上的定界框一直出現在人物的左邊,則應該減少數值。在同樣的畫面中,如果定界框持續出現在人的前方,則應該增加數值。", - "toast": { - "success": "{{camera}} 的標注偏移量已保存到設定檔。重新啟動 Frigate 以套用更改。" - } - } - }, - "carousel": { - "previous": "上一張", - "next": "下一張" - } + "noImageFound": "此時間點找不到圖片。" }, "itemMenu": { "downloadVideo": { @@ -181,10 +135,6 @@ "label": "下載截圖", "aria": "下載截圖" }, - "viewObjectLifecycle": { - "label": "查看物件生命週期", - "aria": "顯示物件生命週期" - }, "findSimilar": { "label": "尋找相似項目", "aria": "尋找相似的追蹤物件" @@ -221,12 +171,22 @@ "viewTrackingDetails": { "label": "檢視追蹤詳細資訊", "aria": "顯示追蹤詳細資訊" + }, + "debugReplay": { + "label": "除錯回放", + "aria": "在除錯回放檢視中檢視此被追蹤物件" + }, + "more": { + "aria": "更多" } }, "dialog": { "confirmDelete": { "title": "確認刪除", "desc": "刪除此追蹤物件將移除截圖、所有已保存的嵌入,以及所有相關的追蹤詳情。歷史記錄中的錄影不會被刪除。

你確定要刪除嗎?" + }, + "toast": { + "error": "刪除該追蹤目標時出錯:{{errorMessage}}" } }, "noTrackedObjects": "找不到追蹤物件", @@ -268,7 +228,10 @@ "zones": "區域", "ratio": "比例", "score": "分數", - "area": "面積" + "area": "面積", + "computedScore": "計算得分", + "topScore": "最高得分", + "toggleAdvancedScores": "切換高階分數" } }, "annotationSettings": { @@ -294,5 +257,9 @@ }, "aiAnalysis": { "title": "AI 分析" - } -} + }, + "concerns": { + "label": "風險等級" + }, + "trackedObjectsCount_one": "{{count}} 個追蹤目標" +} \ No newline at end of file diff --git a/web/public/locales/zh-Hant/views/faceLibrary.json b/web/public/locales/zh-Hant/views/faceLibrary.json index 938bf15818..ec07e83b6e 100644 --- a/web/public/locales/zh-Hant/views/faceLibrary.json +++ b/web/public/locales/zh-Hant/views/faceLibrary.json @@ -2,16 +2,13 @@ "description": { "addFace": "上傳您的第一張照片至臉部資料庫以新增一個新的集合。", "placeholder": "輸入此集合的名稱", - "invalidName": "無效的名稱。名稱只能包涵英數字、空格、撇(')、底線(_)及連字號(-)。" + "invalidName": "無效的名稱。名稱只能包涵英數字、空格、撇(')、底線(_)及連字號(-)。", + "nameCannotContainHash": "名稱中不允許包含“#”符號。" }, "details": { - "person": "人", "timestamp": "時間戳", "unknown": "未知", - "subLabelScore": "子標籤分數", - "scoreInfo": "子標籤分數是所有已辨識的人臉信心值的加權平均,因此可能與截圖上顯示的分數不同。", - "face": "人臉詳細資料", - "faceDesc": "組成此人臉的追蹤物件的詳細資料" + "scoreInfo": "子標籤分數是所有已辨識的人臉信心值的加權平均,因此可能與截圖上顯示的分數不同。" }, "documentTitle": "人臉資料庫 - Frigate", "uploadFaceImage": { @@ -19,10 +16,7 @@ "desc": "上傳圖片以掃描人臉並將其加入 {{pageToggle}}" }, "collections": "集合", - "selectItem": "選擇 {{item}}", "createFaceLibrary": { - "title": "建立集合", - "desc": "建立新集合", "new": "建立新人臉", "nextSteps": "為了建立可靠的模型基底:
  • 在最近的識別紀錄分頁中選擇並針對每個偵測到人的圖片進行訓練。
  • 請優先使用正臉照以獲得最佳效果,請盡量避免使用從側面或有傾斜角度的人臉
  • " }, @@ -38,16 +32,20 @@ "title": "最近的識別紀錄", "aria": "選擇最近的識別紀錄", "empty": "最近沒有辨識人臉的操作", - "titleShort": "最近" + "titleShort": "最近", + "emptyNoLibrary": { + "title": "上傳一張人臉", + "description": "您必須先在資料庫中加入至少一張人臉,才能使用人臉辨識功能。" + } }, - "selectFace": "選擇人臉", "deleteFaceLibrary": { "title": "刪除名稱", "desc": "你確定要刪除 {{name}} 集合嗎?這會刪除所有有關的人臉資料。" }, "deleteFaceAttempts": { "title": "刪除人臉", - "desc_other": "你確定要刪除 {{count}} 個人臉嗎?這個步驟無法復原。" + "desc_other": "你確定要刪除 {{count}} 個人臉嗎?這個步驟無法復原。", + "desc_one": "您確定要刪除 {{count}} 張人臉嗎?此操作無法復原。" }, "renameFace": { "title": "重新命名人臉", @@ -70,8 +68,6 @@ "maxSize": "最大檔案大小:{{size}}MB" }, "nofaces": "沒有可用的人臉", - "pixels": "{{area}}px", - "readTheDocs": "閱讀文件", "trainFaceAs": "將人臉訓練為:", "trainFace": "訓練人臉", "toast": { @@ -82,7 +78,11 @@ "deletedName_other": "{{count}} 個人臉已成功刪除。", "renamedFace": "成功將人臉重新命名為 {{name}}", "trainedFace": "成功訓練人臉。", - "updatedFaceScore": "成功更新人臉分數{{name}}({{score}})。" + "updatedFaceScore": "成功更新人臉分數{{name}}({{score}})。", + "reclassifiedFace": "重新分類人臉成功。", + "deletedFace_one": "已成功刪除 {{count}} 張人臉。", + "deletedName_zero": "已成功刪除空白集合。", + "deletedName_one": "已成功刪除 {{count}} 張人臉。" }, "error": { "uploadingImageFailed": "上傳圖片失敗:{{errorMessage}}", @@ -91,7 +91,10 @@ "deleteNameFailed": "刪除名稱失敗:{{errorMessage}}", "renameFaceFailed": "重新命名人臉失敗:{{errorMessage}}", "trainFailed": "訓練失敗:{{errorMessage}}", - "updateFaceScoreFailed": "更新人臉分數失敗:{{errorMessage}}" + "updateFaceScoreFailed": "更新人臉分數失敗:{{errorMessage}}", + "reclassifyFailed": "重新分類人臉失敗:{{errorMessage}}" } - } -} + }, + "reclassifyFaceAs": "將人臉重新分類為:", + "reclassifyFace": "重新分類人臉" +} \ No newline at end of file diff --git a/web/public/locales/zh-Hant/views/live.json b/web/public/locales/zh-Hant/views/live.json index a839b4b881..64d968bed6 100644 --- a/web/public/locales/zh-Hant/views/live.json +++ b/web/public/locales/zh-Hant/views/live.json @@ -1,6 +1,8 @@ { - "documentTitle": "即時畫面 - Frigate", - "documentTitle.withCamera": "{{camera}} - 即時畫面 - Frigate", + "documentTitle": { + "withCamera": "{{camera}} - 即時畫面 - Frigate", + "default": "即時監控 - Frigate" + }, "lowBandwidthMode": "低流量模式", "twoWayTalk": { "enable": "啟用雙向通話", @@ -11,7 +13,8 @@ "clickMove": { "label": "點擊畫面以置中鏡頭", "enable": "啟用點擊移動", - "disable": "停用點擊移動" + "disable": "停用點擊移動", + "enableWithZoom": "開啟點選移動 / 拖動縮放功能" }, "left": { "label": "向左移動 PTZ 鏡頭" @@ -67,7 +70,8 @@ }, "recording": { "enable": "啟用錄影", - "disable": "停用錄影" + "disable": "停用錄影", + "disabledInConfig": "必須先在該攝影機的設定中開啟錄製功能。" }, "snapshots": { "enable": "啟用截圖", @@ -115,15 +119,13 @@ "title": "串流", "audio": { "tips": { - "title": "此串流的音訊必須要從鏡頭輸出並且在 go2rtc 中被設定。", - "documentation": "閱讀文件 " + "title": "此串流的音訊必須要從鏡頭輸出並且在 go2rtc 中被設定。" }, "available": "此串流支援音訊", "unavailable": "此串流不支援音訊" }, "twoWayTalk": { "tips": "你的裝置被需支援此功能,並且需設定 WebRTC 以使用雙向通話。", - "tips.documentation": "閱讀文件 ", "available": "此串流支援雙向通話", "unavailable": "此串流不支援雙向通話" }, @@ -134,6 +136,9 @@ "playInBackground": { "label": "背景播放", "tips": "啟用此選項以在播放器被隱藏時繼續播放串流。" + }, + "debug": { + "picker": "除錯模式下無法切換影片流。除錯將始終使用偵測(detect)功能的影片流。" } }, "cameraSettings": { @@ -143,7 +148,8 @@ "recording": "錄影", "snapshots": "截圖", "audioDetection": "音訊偵測", - "autotracking": "自動追蹤" + "autotracking": "自動追蹤", + "transcription": "音訊轉錄" }, "history": { "label": "顯示歷史影像" @@ -153,8 +159,7 @@ "all": "全部", "motion": "移動", "active_objects": "活躍物件" - }, - "notAllTips": "你的 {{source}} 錄影保留設定為 {{effectiveRetainMode}} 模式,因此此應需錄影僅會保留 {{effectiveRetainModeName}} 片段。" + } }, "editLayout": { "label": "編輯版面配置", @@ -172,5 +177,24 @@ "noVideoSource": "沒有可用的影片資源以擷取快照。", "captureFailed": "快照擷取失敗。", "downloadStarted": "已開始下載快照。" + }, + "noCameras": { + "title": "未設定攝影機", + "description": "準備開始連線攝影機至 Frigate 。", + "buttonText": "新增攝影機", + "restricted": { + "title": "無可用攝影機", + "description": "你沒有權限檢視此分組中的任何攝影機。" + }, + "default": { + "title": "沒有配置攝影機", + "description": "現在就將攝影機接入到 Frigate 吧。", + "buttonText": "新增攝影機" + }, + "group": { + "title": "攝影機組目前為空", + "description": "該攝影機組未分配或啟動了攝影機。", + "buttonText": "管理攝影機組" + } } }