diff --git a/web/public/locales/yue-Hant/audio.json b/web/public/locales/yue-Hant/audio.json index 8d29100d5..c25ece5bb 100644 --- a/web/public/locales/yue-Hant/audio.json +++ b/web/public/locales/yue-Hant/audio.json @@ -425,5 +425,79 @@ "chink": "碰撞聲", "environmental_noise": "環境噪音", "static": "靜電聲", - "scream": "尖叫聲" + "scream": "尖叫聲", + "sodeling": "約德爾唱法", + "chird": "鳥鳴聲", + "change_ringing": "變化鐘聲", + "shofar": "羊角號聲", + "liquid": "液體聲", + "splash": "潑水聲", + "slosh": "晃水聲", + "squish": "擠壓濕聲", + "drip": "滴水聲", + "pour": "倒水聲", + "trickle": "細流聲", + "gush": "湧出聲", + "fill": "注滿聲", + "spray": "噴灑聲", + "pump": "抽水聲", + "stir": "攪拌聲", + "boiling": "沸騰聲", + "sonar": "聲納聲", + "arrow": "箭飛聲", + "whoosh": "呼嘯聲", + "thump": "悶撞聲", + "thunk": "咚一聲", + "electronic_tuner": "電子調音器聲", + "effects_unit": "效果器聲", + "chorus_effect": "合唱效果", + "basketball_bounce": "籃球彈地聲", + "bang": "砰聲", + "slap": "拍打聲", + "whack": "重擊聲", + "smash": "粉碎聲", + "breaking": "破裂聲", + "bouncing": "彈跳聲", + "whip": "鞭甩聲", + "flap": "拍翼聲", + "scratch": "抓刮聲", + "scrape": "刮擦聲", + "rub": "摩擦聲", + "roll": "滾動聲", + "crushing": "壓碎聲", + "crumpling": "揉皺聲", + "tearing": "撕裂聲", + "beep": "嗶聲", + "ping": "乒聲", + "ding": "叮聲", + "clang": "鏗鏘聲", + "squeal": "尖叫聲", + "creak": "吱吱聲", + "rustle": "沙沙聲", + "whir": "嗡轉聲", + "clatter": "叮噹雜響", + "sizzle": "滋滋聲", + "clicking": "喀嗒聲", + "clickety_clack": "喀嚓喀嚓聲", + "rumble": "隆隆聲", + "plop": "撲通聲", + "hum": "嗡聲", + "zing": "嗖聲", + "boing": "彈簧彈聲", + "crunch": "咔嚓碎裂聲", + "sine_wave": "正弦波", + "harmonic": "諧波", + "chirp_tone": "啁啾音", + "pulse": "脈衝聲", + "inside": "室內聲", + "outside": "室外聲", + "reverberation": "混響", + "echo": "回聲", + "noise": "噪音", + "mains_hum": "電源嗡聲", + "distortion": "失真", + "sidetone": "側音", + "cacophony": "嘈雜聲", + "throbbing": "搏動聲", + "vibration": "振動聲" } diff --git a/web/public/locales/yue-Hant/common.json b/web/public/locales/yue-Hant/common.json index a65550366..c1fec067c 100644 --- a/web/public/locales/yue-Hant/common.json +++ b/web/public/locales/yue-Hant/common.json @@ -66,7 +66,11 @@ "formattedTimestampMonthDayYear": { "24hour": "yy年MM月dd日", "12hour": "yy年MM月dd日" - } + }, + "never": "從不", + "inProgress": "進行中", + "invalidStartTime": "開始時間無效", + "invalidEndTime": "結束時間無效" }, "unit": { "speed": { @@ -87,7 +91,13 @@ } }, "label": { - "back": "返回" + "back": "返回", + "hide": "隱藏 {{item}}", + "show": "顯示 {{item}}", + "ID": "編號", + "none": "無", + "all": "全部", + "other": "其他" }, "button": { "apply": "套用", @@ -124,7 +134,8 @@ "info": "資訊", "download": "下載", "unsuspended": "取消暫停", - "unselect": "取消選取" + "unselect": "取消選取", + "continue": "繼續" }, "menu": { "system": "系統", @@ -176,7 +187,8 @@ "bg": "Български (保加利亞文)", "gl": "Galego (加利西亞文)", "id": "Bahasa Indonesia (印尼文)", - "ur": "اردو (烏爾都文)" + "ur": "اردو (烏爾都文)", + "hr": "Hrvatski (克羅地亞語)" }, "appearance": "外觀", "darkMode": { @@ -224,7 +236,8 @@ "anonymous": "匿名", "setPassword": "設定密碼" }, - "help": "幫助" + "help": "幫助", + "classification": "分類" }, "role": { "admin": "管理員", @@ -268,5 +281,14 @@ "readTheDocumentation": "閱讀文件", "information": { "pixels": "{{area}}像素" + }, + "list": { + "two": "{{0}} 和 {{1}}", + "many": "{{items}}, 和 {{last}}", + "separatorWithSpace": ", " + }, + "field": { + "optional": "選填", + "internalID": "Frigate 在設定及資料庫中使用的內部編號" } } diff --git a/web/public/locales/yue-Hant/components/auth.json b/web/public/locales/yue-Hant/components/auth.json index ebc3b8df7..630bc06df 100644 --- a/web/public/locales/yue-Hant/components/auth.json +++ b/web/public/locales/yue-Hant/components/auth.json @@ -10,6 +10,7 @@ }, "user": "用戶名", "password": "密碼", - "login": "登入" + "login": "登入", + "firstTimeLogin": "首次登入?登入憑證已列印於 Frigate 日誌中。" } } diff --git a/web/public/locales/yue-Hant/components/dialog.json b/web/public/locales/yue-Hant/components/dialog.json index 1a3911048..83b010d60 100644 --- a/web/public/locales/yue-Hant/components/dialog.json +++ b/web/public/locales/yue-Hant/components/dialog.json @@ -6,7 +6,8 @@ "title": "Frigate 正在重新啟動", "content": "此頁面將在 {{countdown}} 秒後重新載入。", "button": "立即強制重新載入" - } + }, + "description": "重新啟動期間將會短暫停止 Frigate。" }, "explore": { "plus": { @@ -56,7 +57,8 @@ "noVaildTimeSelected": "沒有選取有效的時間範圍", "endTimeMustAfterStartTime": "結束時間必須在開始時間之後" }, - "success": "成功開始匯出。請到 /exports 資料夾查看檔案。" + "success": "成功開始匯出。請到匯出頁面看檔案。", + "view": "檢視" }, "fromTimeline": { "saveExport": "儲存匯出", @@ -115,6 +117,7 @@ "search": { "placeholder": "以標籤或子標籤搜尋..." }, - "noImages": "未找到此鏡頭的縮圖" + "noImages": "未找到此鏡頭的縮圖", + "unknownLabel": "已儲存的觸發影像" } } diff --git a/web/public/locales/yue-Hant/components/filter.json b/web/public/locales/yue-Hant/components/filter.json index bfdc93576..014b794bd 100644 --- a/web/public/locales/yue-Hant/components/filter.json +++ b/web/public/locales/yue-Hant/components/filter.json @@ -132,5 +132,9 @@ }, "count_one": "{{count}} 個分類", "count_other": "{{count}} 個分類" + }, + "attributes": { + "label": "分類屬性", + "all": "全部屬性" } } diff --git a/web/public/locales/yue-Hant/views/classificationModel.json b/web/public/locales/yue-Hant/views/classificationModel.json index 0b72837bd..c46b060d7 100644 --- a/web/public/locales/yue-Hant/views/classificationModel.json +++ b/web/public/locales/yue-Hant/views/classificationModel.json @@ -1,6 +1,182 @@ { "documentTitle": "分類模型 - Frigate", "details": { - "unknown": "未知" + "unknown": "未知", + "scoreInfo": "分數代表此物件所有偵測結果的平均分類信心度。", + "none": "無" + }, + "train": { + "titleShort": "最近", + "title": "最近分類", + "aria": "選擇最近分類" + }, + "button": { + "deleteClassificationAttempts": "刪除分類影像", + "renameCategory": "重新命名類別", + "deleteCategory": "刪除類別", + "deleteImages": "刪除影像", + "trainModel": "訓練模型", + "addClassification": "新增分類", + "deleteModels": "刪除模型", + "editModel": "編輯模型" + }, + "tooltip": { + "trainingInProgress": "模型正在訓練中", + "noNewImages": "沒有新影像可訓練,請先分類更多資料集影像。", + "noChanges": "自上次訓練後資料集沒有變更。", + "modelNotReady": "模型尚未準備好訓練" + }, + "toast": { + "success": { + "deletedCategory": "已刪除類別", + "deletedImage": "已刪除影像", + "deletedModel_other": "已成功刪除 {{count}} 個模型", + "categorizedImage": "影像分類成功", + "trainedModel": "模型訓練成功。", + "trainingModel": "已成功開始模型訓練。", + "updatedModel": "已成功更新模型設定", + "renamedCategory": "已成功將類別重新命名為 {{name}}" + }, + "error": { + "deleteImageFailed": "刪除失敗:{{errorMessage}}", + "deleteCategoryFailed": "刪除類別失敗:{{errorMessage}}", + "deleteModelFailed": "刪除模型失敗:{{errorMessage}}", + "categorizeFailed": "影像分類失敗:{{errorMessage}}", + "trainingFailed": "模型訓練失敗,請查看 Frigate 日誌。", + "trainingFailedToStart": "啟動模型訓練失敗:{{errorMessage}}", + "updateModelFailed": "更新模型失敗:{{errorMessage}}", + "renameCategoryFailed": "重新命名類別失敗:{{errorMessage}}" + } + }, + "deleteCategory": { + "title": "刪除類別", + "desc": "確定要刪除類別 {{name}}?這將永久刪除所有相關影像,並需要重新訓練模型。", + "minClassesTitle": "無法刪除類別", + "minClassesDesc": "分類模型至少需要 2 個類別,請先新增類別。" + }, + "deleteModel": { + "title": "刪除分類模型", + "single": "確定要刪除 {{name}}?所有資料將永久刪除且無法復原。", + "desc_other": "確定要刪除 {{count}} 個模型?所有資料將永久刪除且無法復原。" + }, + "edit": { + "title": "編輯分類模型", + "descriptionState": "編輯此狀態分類模型的類別,變更後需重新訓練。", + "descriptionObject": "編輯此物件分類模型的物件類型與分類方式。", + "stateClassesInfo": "更改狀態類別需重新訓練模型。" + }, + "deleteDatasetImages": { + "title": "刪除資料集影像", + "desc_other": "確定要刪除 {{dataset}} 中的 {{count}} 張影像?此操作不可復原並需重新訓練。" + }, + "deleteTrainImages": { + "title": "刪除訓練影像", + "desc_other": "確定要刪除 {{count}} 張影像?此操作不可復原。" + }, + "renameCategory": { + "title": "重新命名類別", + "desc": "為 {{name}} 輸入新名稱,需重新訓練模型才會生效。" + }, + "description": { + "invalidName": "名稱無效,只可包含字母、數字、空格、撇號、底線及連字號。" + }, + "categories": "類別", + "createCategory": { + "new": "建立新類別" + }, + "categorizeImageAs": "將影像分類為:", + "categorizeImage": "分類影像", + "menu": { + "objects": "物件", + "states": "狀態" + }, + "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": "子標籤為物件增加附加文字(例如,「人員:UPS」)。屬性是可搜尋的元數據,單獨儲存在物件元資料中。", + "classificationSubLabel": "子標籤", + "classificationAttribute": "屬性", + "classes": "類別", + "states": "狀態", + "classesTip": "了解類別", + "classesStateDesc": "定義區域可能狀態。例如:車房門的「開」和「關」狀態。", + "classesObjectDesc": "定義不同類別將偵測到物件去分類。例如:人分類嘅「送貨員」、「居民」、「陌生人」。", + "classPlaceholder": "輸入類別名稱…", + "errors": { + "nameRequired": "必須輸入模型名稱", + "nameLength": "名稱不可超過 64 字元", + "nameOnlyNumbers": "名稱不可只有數字", + "classRequired": "至少需要 1 個類別", + "classesUnique": "類別名稱必須唯一", + "noneNotAllowed": "不可使用「none」", + "stateRequiresTwoClasses": "狀態模型至少需 2 類", + "objectLabelRequired": "請選擇物件標籤", + "objectTypeRequired": "請選擇分類類型" + } + }, + "step2": { + "description": "選擇鏡頭並設定監測區域。模型將對這些區域的狀態進行分類。", + "cameras": "鏡頭", + "selectCamera": "選擇鏡頭", + "noCameras": "按 + 新增鏡頭", + "selectCameraPrompt": "從清單選擇鏡頭以設定區域" + }, + "step3": { + "selectImagesPrompt": "選取所有 {{className}} 影像", + "selectImagesDescription": "點擊影像選取,完成後按繼續。", + "allImagesRequired_other": "請完成所有分類,尚餘 {{count}} 張影像。", + "generating": { + "title": "正在產生範例影像", + "description": "Frigate 正在擷取代表性影像,請稍候…" + }, + "training": { + "title": "正在訓練模型", + "description": "模型正在背景訓練,完成後會自動運行。" + }, + "retryGenerate": "重新產生", + "noImages": "未產生範例影像", + "classifying": "分類及訓練中…", + "trainingStarted": "已成功開始訓練", + "modelCreated": "模型建立成功,請新增影像後再訓練。", + "errors": { + "noCameras": "未設定鏡頭", + "noObjectLabel": "未選擇物件標籤", + "generateFailed": "產生範例失敗:{{error}}", + "generationFailed": "產生失敗,請重試。", + "classifyFailed": "影像分類失敗:{{error}}" + }, + "generateSuccess": "已成功產生範例影像", + "missingStatesWarning": { + "title": "缺少狀態範例", + "description": "建議為所有狀態選取範例以獲得最佳效果。未齊全前模型不會訓練。繼續操作後,使用「最近分類」對缺失狀態的影像進行分類,然後訓練模型。" + } + } } } diff --git a/web/public/locales/yue-Hant/views/events.json b/web/public/locales/yue-Hant/views/events.json index b5e9dc84d..ba50bc984 100644 --- a/web/public/locales/yue-Hant/views/events.json +++ b/web/public/locales/yue-Hant/views/events.json @@ -4,7 +4,11 @@ "empty": { "alert": "沒有警報需要審查", "detection": "沒有偵測到的項目需要審查", - "motion": "找不到移動數據" + "motion": "找不到移動數據", + "recordingsDisabled": { + "title": "必須啟用錄影", + "description": "只有在該鏡頭啟用錄影時,才可為該鏡頭建立審查項目。" + } }, "timeline": "時間線", "events": { @@ -36,5 +40,28 @@ "timeline.aria": "選擇時間線", "detected": "已偵測", "suspiciousActivity": "可疑行為", - "threateningActivity": "威脅行為" + "threateningActivity": "威脅行為", + "zoomIn": "放大", + "zoomOut": "縮小", + "detail": { + "label": "詳情", + "noDataFound": "沒有可審查的詳情資料", + "aria": "切換詳情檢視", + "trackedObject_one": "{{count}} 個物件", + "trackedObject_other": "{{count}} 個物件", + "noObjectDetailData": "沒有可用的物件詳情資料。", + "settings": "詳情檢視設定", + "alwaysExpandActive": { + "title": "總是展開目前項目", + "desc": "如有資料,總是展開目前審查項目的物件詳情。" + } + }, + "objectTrack": { + "trackedPoint": "追蹤點", + "clickToSeek": "點擊以跳轉至此時間" + }, + "select_all": "全部", + "normalActivity": "正常", + "needsReview": "需要審查", + "securityConcern": "安全疑慮" } diff --git a/web/public/locales/yue-Hant/views/explore.json b/web/public/locales/yue-Hant/views/explore.json index e3a8c9409..b6c780cb4 100644 --- a/web/public/locales/yue-Hant/views/explore.json +++ b/web/public/locales/yue-Hant/views/explore.json @@ -34,7 +34,9 @@ "details": "詳情", "snapshot": "快照", "video": "影片", - "object_lifecycle": "物件生命周期" + "object_lifecycle": "物件生命周期", + "thumbnail": "縮圖", + "tracking_details": "追蹤詳情" }, "objectLifecycle": { "title": "物件生命周期", @@ -102,13 +104,15 @@ "updatedSublabel": "成功更新子標籤。", "updatedLPR": "成功更新車牌號碼。", "regenerate": "已從 {{provider}} 請求新的描述。根據提供者的速度,生成新的描述可能需要一些時間。", - "audioTranscription": "成功請求音訊轉錄。" + "audioTranscription": "成功請求音訊轉錄。視乎你的 Frigate 伺服器速度,轉錄可能需要一些時間完成。", + "updatedAttributes": "已成功更新屬性。" }, "error": { "regenerate": "呼叫 {{provider}} 以獲取新描述失敗:{{errorMessage}}", "updatedSublabelFailed": "更新子標籤失敗:{{errorMessage}}", "updatedLPRFailed": "更新車牌號碼失敗:{{errorMessage}}", - "audioTranscription": "請求音訊轉錄失敗:{{errorMessage}}" + "audioTranscription": "請求音訊轉錄失敗:{{errorMessage}}", + "updatedAttributesFailed": "更新屬性失敗:{{errorMessage}}" } } }, @@ -157,6 +161,14 @@ "regenerateFromThumbnails": "從縮圖重新生成", "score": { "label": "分數" + }, + "editAttributes": { + "title": "編輯屬性", + "desc": "為此 {{label}} 選擇分類屬性" + }, + "attributes": "分類屬性", + "title": { + "label": "標題" } }, "itemMenu": { @@ -194,12 +206,26 @@ "audioTranscription": { "label": "轉錄音訊", "aria": "請求音訊轉錄" + }, + "downloadCleanSnapshot": { + "label": "下載乾淨快照", + "aria": "下載乾淨快照" + }, + "viewTrackingDetails": { + "label": "檢視追蹤詳情", + "aria": "顯示追蹤詳情" + }, + "showObjectDetails": { + "label": "顯示物件路徑" + }, + "hideObjectDetails": { + "label": "隱藏物件路徑" } }, "dialog": { "confirmDelete": { "title": "確認刪除", - "desc": "刪除此追蹤物件會移除快照、所有已保存的嵌入,以及相關的物件生命周期記錄。歷史記錄中的錄影不會被刪除。

你確定要繼續嗎?" + "desc": "刪除此追蹤物件會移除快照、所有已保存的嵌入,以及相關的追蹤詳情記錄。歷史記錄中的錄影不會被刪除。

你確定要繼續嗎?" } }, "noTrackedObjects": "找不到追蹤物件", @@ -211,7 +237,9 @@ "error": "刪除追蹤物件失敗:{{errorMessage}}" } }, - "tooltip": "已配對{{type}}({{confidence}}% 信心" + "tooltip": "已配對{{type}}({{confidence}}% 信心", + "previousTrackedObject": "上一個追蹤物件", + "nextTrackedObject": "下一個追蹤物件" }, "trackedObjectsCount_other": "{{count}} 個追蹤物件 ", "exploreMore": "瀏覽更多{{label}}物件", @@ -220,5 +248,54 @@ }, "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": "面積", + "score": "分數" + } + }, + "annotationSettings": { + "title": "標註設定", + "showAllZones": { + "title": "顯示所有區域", + "desc": "當物件進入區域時,始終在畫面上顯示該區域。" + }, + "offset": { + "label": "標註偏移", + "desc": "此資料來自鏡頭的偵測串流,但會疊加在錄影串流的影像上。兩個串流不太可能完全同步,因此邊界框與影片畫面未必完全對齊。你可使用此設定將標註在時間上向前或向後偏移,以更好地對齊錄影畫面。", + "millisecondsToOffset": "偵測標註的偏移毫秒數。預設:0", + "tips": "如果影片播放比邊界框與路徑點快,請降低數值;如果影片播放較慢,請提高數值。此數值可以為負。", + "toast": { + "success": "{{camera}} 的標註偏移已儲存到設定檔。" + } + } + }, + "carousel": { + "previous": "上一張", + "next": "下一張" + } } } diff --git a/web/public/locales/yue-Hant/views/exports.json b/web/public/locales/yue-Hant/views/exports.json index 48d839717..a8c14b517 100644 --- a/web/public/locales/yue-Hant/views/exports.json +++ b/web/public/locales/yue-Hant/views/exports.json @@ -13,5 +13,11 @@ "renameExportFailed": "重新命名匯出失敗:{{errorMessage}}" } }, - "deleteExport.desc": "你確定要刪除 {{exportName}} 嗎?" + "deleteExport.desc": "你確定要刪除 {{exportName}} 嗎?", + "tooltip": { + "shareExport": "分享匯出", + "downloadVideo": "下載影片", + "editName": "編輯名稱", + "deleteExport": "刪除匯出" + } } diff --git a/web/public/locales/yue-Hant/views/faceLibrary.json b/web/public/locales/yue-Hant/views/faceLibrary.json index b215f66f2..01441bd31 100644 --- a/web/public/locales/yue-Hant/views/faceLibrary.json +++ b/web/public/locales/yue-Hant/views/faceLibrary.json @@ -13,7 +13,8 @@ "description": { "addFace": "上傳您的第一張圖片,即可在人臉庫中新增新的集合。", "placeholder": "請輸入此集合的名稱", - "invalidName": "名稱無效。名稱只可以包含英文字母、數字、空格、撇號(')、底線(_)同連字號(-)。" + "invalidName": "名稱無效,只可包含字母、數字、空格、撇號、底線及連字號。", + "nameCannotContainHash": "名稱不可包含 #。" }, "documentTitle": "人臉庫 - Frigate", "uploadFaceImage": { @@ -24,7 +25,7 @@ "title": "建立集合", "desc": "建立新集合", "new": "建立新的人臉", - "nextSteps": "建立穩固基礎:
  • 使用訓練分頁,為每位偵測到的人物選擇並訓練圖片。
  • 以正面照片為主,避免用側面或傾斜角度的人臉作訓練。
  • " + "nextSteps": "建立穩固基礎:
  • 使用最近識別分頁,為每位偵測到的人物選擇並訓練圖片。
  • 以正面照片為主,避免用側面或傾斜角度的人臉作訓練。
  • " }, "steps": { "faceName": "請輸入人臉名稱", @@ -35,9 +36,10 @@ } }, "train": { - "title": "訓練", - "aria": "選擇訓練", - "empty": "最近沒有人臉識別嘗試" + "title": "最近識別", + "aria": "選擇最近識別", + "empty": "最近沒有人臉識別嘗試", + "titleShort": "最近" }, "selectFace": "選擇人臉", "deleteFaceLibrary": { @@ -72,7 +74,7 @@ "uploadedImage": "成功上傳圖片。", "renamedFace": "成功將人臉重新命名為 {{name}}", "trainedFace": "成功訓練人臉。", - "updatedFaceScore": "成功更新人臉分數。", + "updatedFaceScore": "已成功更新 {{name}} 的人臉分數({{score}})。", "deletedFace_other": "成功刪除 {{count}} 個人臉。", "addFaceLibrary": "{{name}} 已成功加入人臉庫!", "deletedName_other": "成功刪除 {{count}} 個人臉。" diff --git a/web/public/locales/yue-Hant/views/live.json b/web/public/locales/yue-Hant/views/live.json index bb3b440ee..6ebd69f44 100644 --- a/web/public/locales/yue-Hant/views/live.json +++ b/web/public/locales/yue-Hant/views/live.json @@ -172,9 +172,23 @@ "disable": "停用即時音訊轉錄" }, "noCameras": { - "title": "未設置任何鏡頭", - "description": "連接鏡頭開始使用。", - "buttonText": "新增鏡頭" + "title": "未設定任何鏡頭", + "description": "請先將鏡頭連接到 Frigate 以開始使用。", + "buttonText": "新增鏡頭", + "restricted": { + "title": "沒有可用鏡頭", + "description": "你沒有權限檢視此群組中的任何鏡頭。" + }, + "default": { + "title": "未設定任何鏡頭", + "description": "請先將鏡頭連接到 Frigate 以開始使用。", + "buttonText": "新增鏡頭" + }, + "group": { + "title": "群組中沒有鏡頭", + "description": "此鏡頭群組沒有已指派或已啟用的鏡頭。", + "buttonText": "管理群組" + } }, "snapshot": { "takeSnapshot": "下載即時快照", diff --git a/web/public/locales/yue-Hant/views/search.json b/web/public/locales/yue-Hant/views/search.json index fea893191..ffc353eb1 100644 --- a/web/public/locales/yue-Hant/views/search.json +++ b/web/public/locales/yue-Hant/views/search.json @@ -26,7 +26,8 @@ "max_speed": "最高速度", "min_speed": "最低速度", "cameras": "鏡頭", - "sub_labels": "子標籤" + "sub_labels": "子標籤", + "attributes": "屬性" }, "searchType": { "thumbnail": "縮圖", diff --git a/web/public/locales/yue-Hant/views/settings.json b/web/public/locales/yue-Hant/views/settings.json index 34982abb4..36907ee42 100644 --- a/web/public/locales/yue-Hant/views/settings.json +++ b/web/public/locales/yue-Hant/views/settings.json @@ -7,7 +7,7 @@ "masksAndZones": "遮罩與區域編輯器 - Frigate", "motionTuner": "移動調校器 - Frigate", "object": "除錯 - Frigate", - "general": "一般設定 - Frigate", + "general": "介面設定 - Frigate", "frigatePlus": "Frigate+ 設定 - Frigate", "notifications": "通知設定 - Frigate", "enrichments": "進階功能設定 - Frigate", @@ -41,7 +41,7 @@ "noCamera": "沒有鏡頭" }, "general": { - "title": "一般設定", + "title": "介面設定", "liveDashboard": { "playAlertVideos": { "label": "播放警報影片", @@ -51,7 +51,15 @@ "label": "自動即時檢視", "desc": "當偵測到活動時,自動切換到該鏡頭的即時畫面。若停用此選項,即時儀表板上的鏡頭靜態畫面將每分鐘只更新一次。" }, - "title": "即時儀表板" + "title": "即時儀表板", + "displayCameraNames": { + "label": "一直顯示鏡頭名稱", + "desc": "在多鏡頭即時畫面儀表板中以標籤顯示鏡頭名稱。" + }, + "liveFallbackTimeout": { + "label": "即時播放器備援逾時", + "desc": "當高畫質即時串流不可用時,於指定秒數後切換至低頻寬模式。預設:3。" + } }, "storedLayouts": { "title": "儲存的版面配置", @@ -239,7 +247,8 @@ "mustNotBeSameWithCamera": "區域名稱不得與鏡頭名稱相同。", "alreadyExists": "此鏡頭已存在相同名稱的區域。", "mustNotContainPeriod": "區域名稱不可包含句號。", - "hasIllegalCharacter": "區域名稱包含非法字元。" + "hasIllegalCharacter": "區域名稱包含非法字元。", + "mustHaveAtLeastOneLetter": "區域名稱至少需包含一個字母。" } }, "distance": { @@ -274,6 +283,11 @@ }, "reset": { "label": "清除所有點" + }, + "type": { + "zone": "區域", + "motion_mask": "移動遮罩", + "object_mask": "物件遮罩" } }, "speed": { @@ -291,7 +305,7 @@ "name": { "title": "名稱", "inputPlaceHolder": "請輸入名稱…", - "tips": "名稱必須至少有2個字元,且不可與鏡頭或其他區域同名。" + "tips": "這鏡頭名稱必須至少有2個字元,至少需包含一個字母,且不可與鏡頭或其他區域同名。" }, "inertia": { "title": "慣性", @@ -326,7 +340,7 @@ } }, "toast": { - "success": "區域({{zoneName}})已儲存。請重新啟動Frigate以套用更改。" + "success": "區域({{zoneName}})已儲存。" }, "desc": { "title": "區域可讓你定義畫面中的特定範圍,以判斷物件是否進入該範圍。", @@ -356,8 +370,8 @@ "add": "新增移動遮罩", "toast": { "success": { - "title": "{{polygonName}}已儲存。請重新啟動Frigate以套用更改。", - "noName": "移動遮罩已儲存。請重新啟動Frigate以套用更改。" + "title": "{{polygonName}}已儲存。", + "noName": "移動遮罩已儲存。" } } }, @@ -378,8 +392,8 @@ }, "toast": { "success": { - "title": "{{polygonName}}已儲存。請重新啟動Frigate以套用更改。", - "noName": "物件遮罩已儲存。請重新啟動Frigate以套用更改。" + "title": "{{polygonName}}已儲存。", + "noName": "物件遮罩已儲存。" } }, "documentTitle": "編輯物件遮罩 - Frigate", @@ -481,7 +495,7 @@ "title": "用戶管理" }, "addUser": "新增用戶", - "updatePassword": "更新密碼", + "updatePassword": "重設密碼", "toast": { "success": { "createUser": "成功建立用戶{{user}}", @@ -501,7 +515,7 @@ "role": "角色", "noUsers": "找不到用戶。", "changeRole": "更改用戶角色", - "password": "密碼", + "password": "重設密碼", "deleteUser": "刪除用戶", "actions": "操作" }, @@ -527,7 +541,13 @@ "veryStrong": "非常強" }, "match": "密碼相符", - "notMatch": "密碼不相符" + "notMatch": "密碼不相符", + "show": "顯示密碼", + "hide": "隱藏密碼", + "requirements": { + "title": "密碼要求:", + "length": "最少 12 個字元" + } }, "newPassword": { "confirm": { @@ -537,7 +557,11 @@ "placeholder": "輸入新密碼" }, "usernameIsRequired": "必須輸入用戶名稱", - "passwordIsRequired": "必須填寫密碼" + "passwordIsRequired": "必須填寫密碼", + "currentPassword": { + "title": "目前密碼", + "placeholder": "輸入目前密碼" + } }, "createUser": { "title": "建立新用戶", @@ -568,7 +592,12 @@ "updatePassword": "更新{{username}}的密碼", "desc": "建立強密碼以保障此帳戶安全。", "cannotBeEmpty": "密碼不能留空", - "doNotMatch": "密碼不相符" + "doNotMatch": "密碼不相符", + "currentPasswordRequired": "必須輸入目前密碼", + "incorrectCurrentPassword": "目前密碼不正確", + "passwordVerificationFailed": "驗證密碼失敗", + "multiDeviceWarning": "其他已登入裝置需於 {{refresh_time}} 內重新登入。", + "multiDeviceAdmin": "亦可更換 JWT 密鑰以強制所有使用者重新驗證。" } }, "title": "用戶" @@ -801,7 +830,7 @@ "desc": "必須啟用語意搜尋才能使用觸發器。" }, "management": { - "title": "觸發器管理", + "title": "觸發器", "desc": "管理 {{camera}} 的觸發器。使用縮圖類型可對與所選追蹤物件相似的縮圖觸發,使用描述類型可對與你指定文字描述相似的事件觸發。" }, "addTrigger": "新增觸發器", @@ -822,7 +851,9 @@ }, "actions": { "alert": "標記為警報", - "notification": "發送通知" + "notification": "發送通知", + "sub_label": "新增子標籤", + "attribute": "新增屬性" }, "dialog": { "createTrigger": { @@ -840,19 +871,22 @@ "form": { "name": { "title": "名稱", - "placeholder": "輸入觸發器名稱", + "placeholder": "為觸發器命名", "error": { - "minLength": "名稱至少需 2 個字元。", - "invalidCharacters": "名稱只可包含字母、數字、底線及連字符。", + "minLength": "欄位至少需 2 個字元。", + "invalidCharacters": "欄位只可包含字母、數字、底線及連字符。", "alreadyExists": "此鏡頭已有相同名稱的觸發器。" - } + }, + "description": "輸入唯一名稱或描述以識別此觸發器" }, "enabled": { "description": "啟用或停用此觸發器" }, "type": { "title": "類型", - "placeholder": "選擇觸發器類型" + "placeholder": "選擇觸發器類型", + "description": "偵測到相似物件描述時觸發", + "thumbnail": "偵測到相似縮圖時觸發" }, "friendly_name": { "title": "顯示名稱", @@ -861,9 +895,9 @@ }, "content": { "title": "內容", - "imagePlaceholder": "選擇圖片", + "imagePlaceholder": "選擇縮圖", "textPlaceholder": "輸入文字內容", - "imageDesc": "選擇圖片,當偵測到相似圖片時觸發此動作。", + "imageDesc": "只顯示最近100張縮圖。如果你找不到所需的縮圖,請在「瀏覽」中查看先前的物件,並從選單中設定觸發器。", "textDesc": "輸入文字,當偵測到相似追蹤物件描述時觸發此動作。", "error": { "required": "必須提供內容。" @@ -874,11 +908,12 @@ "error": { "min": "閾值至少為 0", "max": "閾值最多為 1" - } + }, + "desc": "為觸發器設定相似度門檻,越高越嚴格。" }, "actions": { "title": "操作", - "desc": "預設情況下,Frigate 會對所有觸發器發送 MQTT 訊息。可選擇額外操作,在觸發器觸發時執行。", + "desc": "預設情況下,Frigate 會對所有觸發器發送 MQTT 訊息。子標籤會將觸發器名稱加入到物件標籤中。屬性是可搜尋的元數據,單獨儲存在被追蹤對象的元數據中。", "error": { "min": "至少需要選擇一個操作。" } @@ -896,6 +931,23 @@ "updateTriggerFailed": "更新觸發器失敗:{{errorMessage}}", "deleteTriggerFailed": "刪除觸發器失敗:{{errorMessage}}" } + }, + "wizard": { + "title": "建立觸發器", + "step1": { + "description": "設定觸發器基本參數。" + }, + "step2": { + "description": "設定觸發內容。" + }, + "step3": { + "description": "設定觸發器門檻與動作。" + }, + "steps": { + "nameAndType": "名稱與類型", + "configureData": "設定資料", + "thresholdAndActions": "門檻與動作" + } } }, "cameraWizard": { @@ -904,7 +956,8 @@ "steps": { "nameAndConnection": "名稱與連線", "streamConfiguration": "串流設定", - "validationAndTesting": "驗證與測試" + "validationAndTesting": "驗證與測試", + "probeOrSnapshot": "探測或快照" }, "save": { "success": "已成功儲存新鏡頭 {{cameraName}}。", @@ -921,7 +974,7 @@ "testFailed": "串流測試失敗:{{error}}" }, "step1": { - "description": "輸入鏡頭詳細資料並測試連線。", + "description": "輸入鏡頭詳細資料並選擇探測鏡頭或手動選擇品牌。", "cameraName": "鏡頭名稱", "cameraNamePlaceholder": "例如:front_door 或 back_yard_overview", "host": "主機名稱/IP 位址", @@ -952,14 +1005,24 @@ "nameExists": "鏡頭名稱已存在", "brands": { "reolink-rtsp": "不建議使用 Reolink RTSP。建議在鏡頭設定中啟用 HTTP,並重新啟動鏡頭設定精靈。" - } + }, + "customUrlRtspRequired": "自訂 URL 必須以「rtsp://」開頭。非 RTSP 串流需手動設定。" }, "docs": { "reolink": "https://docs.frigate.video/configuration/camera_specific.html#reolink-cameras" - } + }, + "connectionSettings": "連線設定", + "detectionMethod": "串流偵測方式", + "onvifPort": "ONVIF 連接埠", + "probeMode": "探測鏡頭", + "manualMode": "手動選擇", + "detectionMethodDescription": "使用 ONVIF(如支援)探測鏡頭以取得串流 URL,或手動選擇鏡頭品牌以使用預設 URL。若要輸入自訂 RTSP URL,請選擇手動方式並選「其他」。", + "onvifPortDescription": "支援 ONVIF 的鏡頭通常為 80 或 8080。", + "useDigestAuth": "使用摘要驗證", + "useDigestAuthDescription": "對 ONVIF 使用 HTTP 摘要驗證。部分鏡頭可能需要專用的 ONVIF 帳號密碼。" }, "step2": { - "description": "設定鏡頭的串流角色,並可新增額外串流。", + "description": "根據你所選擇的偵測方法,探測鏡頭是否有用串流,或者設定手動設定。", "streamsTitle": "鏡頭串流", "addStream": "新增串流", "addAnotherStream": "新增另一個串流", @@ -978,8 +1041,8 @@ "audio": "音訊" }, "testStream": "測試連線", - "testSuccess": "串流測試成功!", - "testFailed": "串流測試失敗", + "testSuccess": "連線測試成功!", + "testFailed": "連線測試失敗。請檢查你的輸入並重試。", "testFailedTitle": "測試失敗", "connected": "已連線", "notConnected": "未連線", @@ -995,10 +1058,42 @@ "featuresPopover": { "title": "串流功能", "description": "使用 go2rtc 轉串流以減少與鏡頭的直接連線。" + }, + "streamDetails": "串流詳情", + "probing": "正在探測鏡頭…", + "retry": "重試", + "testing": { + "probingMetadata": "正在探測鏡頭中繼資料…", + "fetchingSnapshot": "正在取得鏡頭快照…" + }, + "probeFailed": "探測鏡頭失敗:{{error}}", + "probingDevice": "正在探測裝置…", + "probeSuccessful": "探測成功", + "probeError": "探測錯誤", + "probeNoSuccess": "探測失敗", + "deviceInfo": "裝置資訊", + "manufacturer": "製造商", + "model": "型號", + "firmware": "韌體", + "profiles": "設定檔", + "ptzSupport": "支援 PTZ", + "autotrackingSupport": "支援自動追蹤", + "presets": "預設位置", + "rtspCandidates": "RTSP 候選", + "rtspCandidatesDescription": "已從鏡頭探測到以下 RTSP URL。測試連線以查看串流中繼資料。", + "noRtspCandidates": "未從鏡頭找到 RTSP URL,可能憑證錯誤或不支援 ONVIF,請手動輸入。", + "candidateStreamTitle": "候選 {{number}}", + "useCandidate": "使用", + "uriCopy": "複製", + "uriCopied": "URI 已複製到剪貼簿", + "testConnection": "測試連線", + "toggleUriView": "點擊切換完整 URI 顯示", + "errors": { + "hostRequired": "必須輸入主機或 IP 位址" } }, "step3": { - "description": "在儲存新鏡頭前進行最後驗證與分析。請先連線所有串流後再儲存。", + "description": "設定串流角色,並為鏡頭新增其他串流。", "validationTitle": "串流驗證", "connectAllStreams": "連線所有串流", "reconnectionSuccess": "重新連線成功。", @@ -1035,6 +1130,91 @@ "hikvision": { "substreamWarning": "子串流 1 被鎖定為低解析度。許多 Hikvision 鏡頭支援額外子串流,需要在鏡頭設定中啟用。建議如有可用,檢查並使用這些子串流。" } + }, + "streamsTitle": "鏡頭串流", + "addStream": "新增串流", + "addAnotherStream": "新增另一個串流", + "streamUrl": "串流 URL", + "streamUrlPlaceholder": "rtsp://username:password@host:port/path", + "selectStream": "選擇串流", + "searchCandidates": "搜尋候選…", + "noStreamFound": "找不到串流", + "url": "URL", + "resolution": "解析度", + "selectResolution": "選擇解析度", + "quality": "畫質", + "selectQuality": "選擇畫質", + "roleLabels": { + "detect": "物件偵測", + "record": "錄影", + "audio": "音訊" + }, + "testStream": "測試連線", + "testSuccess": "串流測試成功!", + "testFailed": "串流測試失敗", + "testFailedTitle": "測試失敗", + "connected": "已連線", + "notConnected": "未連線", + "featuresTitle": "功能", + "go2rtc": "減少連線至鏡頭", + "detectRoleWarning": "至少一個串流需設定為「detect」角色。", + "rolesPopover": { + "title": "串流角色", + "detect": "物件偵測主要來源。", + "record": "依設定儲存影片片段。", + "audio": "音訊偵測來源。" + }, + "featuresPopover": { + "title": "串流功能", + "description": "使用 go2rtc 轉串流以減少鏡頭連線。" + } + }, + "step4": { + "description": "儲存鏡頭前進行最終驗證與分析,請先連接所有串流。", + "validationTitle": "串流驗證", + "connectAllStreams": "連接所有串流", + "reconnectionSuccess": "重新連線成功。", + "reconnectionPartial": "部分串流重新連線失敗。", + "streamUnavailable": "無法預覽串流", + "reload": "重新載入", + "connecting": "連線中…", + "streamTitle": "串流 {{number}}", + "valid": "有效", + "failed": "失敗", + "notTested": "未測試", + "connectStream": "連線", + "connectingStream": "連線中", + "disconnectStream": "中斷連線", + "estimatedBandwidth": "預計頻寬", + "roles": "角色", + "ffmpegModule": "使用串流相容模式", + "ffmpegModuleDescription": "若多次嘗試仍無法載入,建議啟用。啟用後,Frigate 將使用 ffmpeg 模組和 go2rtc。這可能會提高與某些鏡頭串流相容性。", + "none": "無", + "error": "錯誤", + "streamValidated": "串流 {{number}} 驗證成功", + "streamValidationFailed": "串流 {{number}} 驗證失敗", + "saveAndApply": "儲存新鏡頭", + "saveError": "設定無效,請檢查。", + "issues": { + "title": "串流驗證", + "videoCodecGood": "影片編碼為 {{codec}}。", + "audioCodecGood": "音訊編碼為 {{codec}}。", + "resolutionHigh": "此解析度{{resolution}} 可能增加資源使用。", + "resolutionLow": "此解析度{{resolution}}可能過低,不利小物件偵測。", + "noAudioWarning": "未偵測到音訊,錄影將沒有聲音。", + "audioCodecRecordError": "錄影需 AAC 音訊編碼。", + "audioCodecRequired": "音訊偵測需音訊串流。", + "restreamingWarning": "減少錄影串流連線可能略增 CPU 使用。", + "brands": { + "reolink-rtsp": "不建議使用 Reolink RTSP,請啟用 HTTP 並重新啟動精靈。", + "reolink-http": "Reolink HTTP 串流建議使用 FFmpeg,請啟用相容模式。" + }, + "dahua": { + "substreamWarning": "子串流 1 解析度過低。許多Dahua / Amcrest / EmpireTech鏡頭支援額外的子串流,需要在鏡頭的設定中啟用。建議於鏡頭設定啟用更多子串流。" + }, + "hikvision": { + "substreamWarning": "子串流 1 解析度過低。許多Hikvision鏡頭支援額外的子串流,需要在鏡頭的設定中啟用。建議於鏡頭設定啟用更多子串流。" + } } } }, @@ -1082,11 +1262,11 @@ "title": "鏡頭檢視設定", "object_descriptions": { "title": "生成式 AI 物件描述", - "desc": "暫時啟用/停用此鏡頭的生成式 AI 物件描述。停用時,系統不會為此鏡頭的追蹤物件生成 AI 描述。" + "desc": "暫時啟用/停用此鏡頭的生成式 AI 物件描述直到Frigate重新啟動。停用時,系統不會為此鏡頭的追蹤物件生成 AI 描述。" }, "review_descriptions": { "title": "生成式 AI 審查描述", - "desc": "暫時啟用/停用此鏡頭的生成式 AI 審查描述。停用時,系統不會為此鏡頭的審查項目生成 AI 描述。" + "desc": "暫時啟用/停用此鏡頭的生成式 AI 審查描述直到Frigate重新啟動。停用時,系統不會為此鏡頭的審查項目生成 AI 描述。" }, "review": { "title": "審查", diff --git a/web/public/locales/yue-Hant/views/system.json b/web/public/locales/yue-Hant/views/system.json index 6b52401c8..bbbca1d0c 100644 --- a/web/public/locales/yue-Hant/views/system.json +++ b/web/public/locales/yue-Hant/views/system.json @@ -75,12 +75,24 @@ "gpuMemory": "GPU 記憶體", "gpuEncoder": "GPU 編碼器", "gpuDecoder": "GPU 解碼器", - "npuMemory": "NPU 記憶體" + "npuMemory": "NPU 記憶體", + "intelGpuWarning": { + "title": "Intel GPU 狀態警告", + "message": "GPU 狀態不可用", + "description": "這是 Intel GPU 統計工具已知問題,可能顯示 0% 使用率,但不影響效能。可重新啟動主機暫時修復。" + } }, "otherProcesses": { "title": "其他程序", "processCpuUsage": "程序 CPU 使用率", - "processMemoryUsage": "程序記憶體使用量" + "processMemoryUsage": "程序記憶體使用量", + "series": { + "go2rtc": "go2rtc", + "recording": "錄影", + "review_segment": "檢視片段", + "embeddings": "嵌入向量", + "audio_detector": "音訊偵測器" + } }, "title": "一般" }, @@ -180,7 +192,17 @@ "text_embedding_speed": "文字嵌入速度", "yolov9_plate_detection_speed": "YOLOv9 車牌偵測速度", "plate_recognition": "車牌辨識", - "image_embedding_speed": "圖片嵌入速度" - } + "image_embedding_speed": "圖片嵌入速度", + "review_description": "審查描述", + "review_description_speed": "審查描述速度", + "review_description_events_per_second": "審查描述", + "object_description": "物件描述", + "object_description_speed": "物件描述速度", + "object_description_events_per_second": "物件描述", + "classification": "{{name}} 分類", + "classification_speed": "{{name}} 分類速度", + "classification_events_per_second": "{{name}} 每秒分類事件數" + }, + "averageInf": "平均推論時間" } }