diff --git a/web/public/locales/yue-Hant/common.json b/web/public/locales/yue-Hant/common.json
new file mode 100644
index 000000000..46ecdac30
--- /dev/null
+++ b/web/public/locales/yue-Hant/common.json
@@ -0,0 +1,240 @@
+{
+ "time": {
+ "untilForTime": "直到 {{time}}",
+ "untilRestart": "直到重新啟動",
+ "yesterday": "昨日",
+ "last7": "過去7日",
+ "last14": "過去14日",
+ "last30": "過去30日",
+ "thisWeek": "今個星期",
+ "lastMonth": "上個月",
+ "10minutes": "10分鐘",
+ "12hours": "12 小時",
+ "24hours": "24 小時",
+ "am": "上午",
+ "year_other": "{{time}}年",
+ "mo": "{{time}}月",
+ "m": "{{time}}分鐘",
+ "minute_other": "{{time}}分鐘",
+ "formattedTimestamp": {
+ "12hour": "M月d日 ah:mm:ss",
+ "24hour": "M月d日 HH:mm:ss"
+ },
+ "formattedTimestampHourMinute": {
+ "12hour": "a h:mm",
+ "24hour": "HH:mm"
+ },
+ "formattedTimestampHourMinuteSecond": {
+ "12hour": "ah:mm:ss",
+ "24hour": "HH:mm:ss"
+ },
+ "formattedTimestampFilename": {
+ "24hour": "yy年MM月dd日 HH時mm分ss秒",
+ "12hour": "yy年MM月dd日 ah時mm分ss秒"
+ },
+ "s": "{{time}}秒",
+ "formattedTimestamp2": {
+ "12hour": "MM月dd日 ah:mm:ss",
+ "24hour": "MM月dd日 HH:mm:ss"
+ },
+ "thisMonth": "今個月",
+ "pm": "下午",
+ "formattedTimestampMonthDayHourMinute": {
+ "24hour": "M月d日 HH:mm",
+ "12hour": "M月d日 ah:mm"
+ },
+ "justNow": "剛剛",
+ "day_other": "{{time}}日",
+ "hour_other": "{{time}}小時",
+ "30minutes": "30分鐘",
+ "5minutes": "5分鐘",
+ "yr": "{{time}}年",
+ "today": "今日",
+ "month_other": "{{time}}月",
+ "second_other": "{{time}}秒",
+ "untilForRestart": "直到 Frigate 重新啟動。",
+ "ago": "{{timeAgo}} 前",
+ "d": "{{time}}日",
+ "lastWeek": "上個星期",
+ "formattedTimestampMonthDayYearHourMinute": {
+ "12hour": "yyyy年M月d日 ah:mm",
+ "24hour": "yyyy年M月d日 HH:mm"
+ },
+ "1hour": "1 小時",
+ "h": "{{time}}小時",
+ "formattedTimestampMonthDay": "M月d日"
+ },
+ "unit": {
+ "speed": {
+ "mph": "英里/小時",
+ "kph": "公里/小時"
+ }
+ },
+ "label": {
+ "back": "返回"
+ },
+ "button": {
+ "apply": "套用",
+ "reset": "重置",
+ "done": "完成",
+ "enabled": "已啟用",
+ "enable": "啟用",
+ "disabled": "已停用",
+ "disable": "停用",
+ "save": "儲存",
+ "saving": "儲存中…",
+ "cancel": "取消",
+ "close": "關閉",
+ "copy": "複製",
+ "back": "返回",
+ "history": "歷史記錄",
+ "fullscreen": "全螢幕",
+ "exitFullscreen": "離開全螢幕",
+ "pictureInPicture": "畫中畫",
+ "twoWayTalk": "雙向通話",
+ "cameraAudio": "鏡頭音訊",
+ "suspended": "已暫停",
+ "export": "匯出",
+ "deleteNow": "立即刪除",
+ "next": "下一步",
+ "play": "播放",
+ "no": "否",
+ "copyCoordinates": "複製座標",
+ "delete": "刪除",
+ "off": "關閉",
+ "edit": "編輯",
+ "on": "開啟",
+ "yes": "是",
+ "info": "資訊",
+ "download": "下載",
+ "unsuspended": "取消暫停",
+ "unselect": "取消選取"
+ },
+ "menu": {
+ "system": "系統",
+ "systemMetrics": "系統指標",
+ "configuration": "設定",
+ "systemLogs": "系統日誌",
+ "settings": "設定",
+ "configurationEditor": "設定編輯器",
+ "languages": "語言",
+ "language": {
+ "en": "English (英文)",
+ "es": "Español (西班牙文)",
+ "zhCN": "简体中文 (簡體中文)",
+ "hi": "हिन्दी (印地文)",
+ "fr": "Français (法文)",
+ "de": "Deutsch (德文)",
+ "ja": "日本語 (日文)",
+ "it": "Italiano (意大利文)",
+ "tr": "Türkçe (土耳其文)",
+ "nl": "Nederlands (荷蘭文)",
+ "cs": "Čeština (捷克文)",
+ "nb": "Norsk Bokmål (挪威文)",
+ "ko": "한국어 (韓文)",
+ "vi": "Tiếng Việt (越南文)",
+ "fa": "فارسی (波斯文)",
+ "pl": "Polski (波蘭文)",
+ "el": "Ελληνικά (希臘文)",
+ "ro": "Română (羅馬尼亞文)",
+ "hu": "Magyar (匈牙利文)",
+ "fi": "Suomi (芬蘭文)",
+ "da": "Dansk (丹麥文)",
+ "sk": "Slovenčina (斯洛伐克文)",
+ "withSystem": {
+ "label": "使用系統語言設定"
+ },
+ "ru": "Русский (俄文)",
+ "sv": "Svenska (瑞典文)",
+ "ar": "العربية (阿拉伯文)",
+ "pt": "Português (葡萄牙文)",
+ "uk": "Українська (烏克蘭文)",
+ "he": "עברית (希伯來文)"
+ },
+ "appearance": "外觀",
+ "darkMode": {
+ "label": "深色模式",
+ "light": "淺色",
+ "dark": "深色",
+ "withSystem": {
+ "label": "使用系統模式設定"
+ }
+ },
+ "withSystem": "系統",
+ "theme": {
+ "label": "主題",
+ "blue": "藍色",
+ "green": "綠色",
+ "nord": "北歐風",
+ "red": "紅色",
+ "default": "預設",
+ "contrast": "高對比"
+ },
+ "documentation": {
+ "title": "文件",
+ "label": "Frigate 文件"
+ },
+ "restart": "重新啟動 Frigate",
+ "live": {
+ "title": "即時",
+ "allCameras": "所有鏡頭",
+ "cameras": {
+ "title": "鏡頭",
+ "count_other": "{{count}} 個鏡頭"
+ }
+ },
+ "review": "審查",
+ "explore": "瀏覽",
+ "export": "匯出",
+ "uiPlayground": "UI 測試場",
+ "faceLibrary": "臉部資料庫",
+ "user": {
+ "title": "使用者",
+ "logout": "登出",
+ "account": "帳戶",
+ "current": "當前使用者:{{user}}",
+ "anonymous": "匿名",
+ "setPassword": "設定密碼"
+ },
+ "help": "幫助"
+ },
+ "role": {
+ "admin": "管理員",
+ "viewer": "檢視者",
+ "desc": "管理員擁有 Frigate UI 全功能存取權限。檢視者只能查看鏡頭、審查項目和歷史影像。",
+ "title": "角色"
+ },
+ "pagination": {
+ "label": "分頁",
+ "previous": {
+ "title": "上一頁",
+ "label": "前往上一頁"
+ },
+ "next": {
+ "title": "下一頁",
+ "label": "前往下一頁"
+ },
+ "more": "更多頁數"
+ },
+ "accessDenied": {
+ "title": "拒絕存取",
+ "documentTitle": "拒絕存取 - Frigate",
+ "desc": "你無權查看此頁面。"
+ },
+ "selectItem": "選擇 {{item}}",
+ "toast": {
+ "save": {
+ "error": {
+ "noMessage": "儲存設定變更失敗",
+ "title": "儲存設定變更失敗:{{errorMessage}}"
+ },
+ "title": "儲存"
+ },
+ "copyUrlToClipboard": "已複製 URL 到剪貼簿。"
+ },
+ "notFound": {
+ "documentTitle": "找不到頁面 - Frigate",
+ "desc": "找不到頁面",
+ "title": "404"
+ }
+}
diff --git a/web/public/locales/yue-Hant/components/camera.json b/web/public/locales/yue-Hant/components/camera.json
new file mode 100644
index 000000000..80646f1ac
--- /dev/null
+++ b/web/public/locales/yue-Hant/components/camera.json
@@ -0,0 +1,83 @@
+{
+ "group": {
+ "camera": {
+ "setting": {
+ "audio": {
+ "tips": {
+ "title": "此串流必須從你的鏡頭輸出音訊並在 go2rtc 中設定。",
+ "document": "閱讀文件 "
+ }
+ },
+ "streamMethod": {
+ "method": {
+ "continuousStreaming": {
+ "desc": {
+ "warning": "持續串流可能導致高頻寬使用及效能問題,請小心使用。",
+ "title": "即使沒有偵測到活動,只要在控制台上可見,鏡頭影像也會一直保持即時串流。"
+ },
+ "label": "持續串流"
+ },
+ "smartStreaming": {
+ "label": "智能串流(建議)",
+ "desc": "當沒有偵測到活動時,智能串流會每分鐘更新一次鏡頭影像以節省頻寬和資源。當偵測到活動時,影像會無縫切換到即時串流。"
+ },
+ "noStreaming": {
+ "label": "不串流",
+ "desc": "鏡頭影像每分鐘只會更新一次,不會進行即時串流。"
+ }
+ },
+ "label": "串流方式"
+ },
+ "compatibilityMode": {
+ "label": "相容模式",
+ "desc": "只有當你的鏡頭串流出現色彩異常及右側有斜線時,才啟用此選項。"
+ },
+ "label": "鏡頭串流設定",
+ "title": "{{cameraName}} 串流設定",
+ "desc": "更改此鏡頭群組控制台的即時串流選項。這些設定是裝置/瀏覽器專屬的。",
+ "audioIsAvailable": "此串流有提供音訊",
+ "audioIsUnavailable": "此串流沒有音訊"
+ }
+ },
+ "delete": {
+ "confirm": {
+ "title": "確認刪除",
+ "desc": "你確定要刪除鏡頭群組 {{name}} 嗎?"
+ },
+ "label": "刪除鏡頭群組"
+ },
+ "name": {
+ "errorMessage": {
+ "exists": "鏡頭群組名稱已存在。",
+ "invalid": "鏡頭群組名稱無效。",
+ "mustLeastCharacters": "鏡頭群組名稱必須至少包含兩個字元。",
+ "nameMustNotPeriod": "鏡頭群組名稱不能包含句號。"
+ },
+ "placeholder": "請輸入名稱…",
+ "label": "名稱"
+ },
+ "icon": "圖標",
+ "cameras": {
+ "desc": "為此群組選擇鏡頭。",
+ "label": "鏡頭"
+ },
+ "label": "鏡頭群組",
+ "add": "新增鏡頭群組",
+ "edit": "編輯鏡頭群組",
+ "success": "鏡頭群組({{name}})已儲存。"
+ },
+ "debug": {
+ "options": {
+ "label": "設定",
+ "title": "選項",
+ "showOptions": "顯示選項",
+ "hideOptions": "隱藏選項"
+ },
+ "mask": "遮罩",
+ "boundingBox": "框選區",
+ "motion": "移動",
+ "regions": "大區域",
+ "timestamp": "時間戳記",
+ "zones": "區域"
+ }
+}
diff --git a/web/public/locales/yue-Hant/components/dialog.json b/web/public/locales/yue-Hant/components/dialog.json
new file mode 100644
index 000000000..f676ce245
--- /dev/null
+++ b/web/public/locales/yue-Hant/components/dialog.json
@@ -0,0 +1,108 @@
+{
+ "restart": {
+ "title": "你確定要重新啟動 Frigate 嗎?",
+ "button": "重新啟動",
+ "restarting": {
+ "title": "Frigate 正在重新啟動",
+ "content": "此頁面將在 {{countdown}} 秒後重新載入。",
+ "button": "立即強制重新載入"
+ }
+ },
+ "explore": {
+ "plus": {
+ "submitToPlus": {
+ "label": "提交到 Frigate+",
+ "desc": "位於你想避免的區域的物件並不是誤判。提交這些作為誤判會令模型混淆。"
+ },
+ "review": {
+ "question": {
+ "label": "確認此標籤給 Frigate Plus",
+ "ask_a": "此物件是 {{label}}
嗎?",
+ "ask_an": "此物件是 {{label}}
嗎?",
+ "ask_full": "此物件是 {{untranslatedLabel}}
({{translatedLabel}})嗎?"
+ },
+ "state": {
+ "submitted": "已提交"
+ }
+ }
+ },
+ "video": {
+ "viewInHistory": "在歷史記錄中查看"
+ }
+ },
+ "export": {
+ "time": {
+ "fromTimeline": "從時間線選取",
+ "lastHour_other": "最后{{count}}小時",
+ "end": {
+ "label": "選擇結束時間",
+ "title": "結束時間"
+ },
+ "custom": "自訂",
+ "start": {
+ "title": "開始時間",
+ "label": "選擇開始時間"
+ }
+ },
+ "name": {
+ "placeholder": "為匯出命名"
+ },
+ "select": "選取",
+ "export": "匯出",
+ "selectOrExport": "選取或匯出",
+ "toast": {
+ "error": {
+ "failed": "無法開始匯出:{{error}}",
+ "noVaildTimeSelected": "沒有選取有效的時間範圍",
+ "endTimeMustAfterStartTime": "結束時間必須在開始時間之後"
+ },
+ "success": "成功開始匯出。請到 /exports 資料夾查看檔案。"
+ },
+ "fromTimeline": {
+ "saveExport": "儲存匯出",
+ "previewExport": "預覽匯出"
+ }
+ },
+ "streaming": {
+ "label": "串流",
+ "restreaming": {
+ "disabled": "此鏡頭未啟用重串流。",
+ "desc": {
+ "title": "設定 go2rtc 以啟用此鏡頭的更多即時預覽選項及音訊。",
+ "readTheDocumentation": "閱讀文件"
+ }
+ },
+ "showStats": {
+ "desc": "啟用此選項可在鏡頭畫面上顯示串流統計資料。",
+ "label": "顯示串流統計資料"
+ },
+ "debugView": "除錯檢視"
+ },
+ "search": {
+ "saveSearch": {
+ "label": "儲存搜尋",
+ "desc": "請為這個已儲存的搜尋輸入名稱。",
+ "placeholder": "請輸入搜尋名稱",
+ "overwrite": "{{searchName}} 已存在。儲存將會覆蓋現有資料。",
+ "button": {
+ "save": {
+ "label": "儲存此搜尋"
+ }
+ },
+ "success": "搜尋({{searchName}})已儲存。"
+ }
+ },
+ "recording": {
+ "confirmDelete": {
+ "title": "確認刪除",
+ "desc": {
+ "selected": "你確定要刪除與此審查項目相關的所有錄影嗎?
按住 Shift 鍵可略過未來此對話框。"
+ }
+ },
+ "button": {
+ "export": "匯出",
+ "markAsReviewed": "標記為已審查",
+ "deleteNow": "立即刪除"
+ }
+ }
+}
diff --git a/web/public/locales/yue-Hant/components/filter.json b/web/public/locales/yue-Hant/components/filter.json
new file mode 100644
index 000000000..dc87bdb2c
--- /dev/null
+++ b/web/public/locales/yue-Hant/components/filter.json
@@ -0,0 +1,125 @@
+{
+ "reset": {
+ "label": "重設篩選條件為預設值"
+ },
+ "subLabels": {
+ "all": "所有子標籤",
+ "label": "子標籤"
+ },
+ "score": "分數",
+ "features": {
+ "label": "特徵",
+ "hasSnapshot": "有快照",
+ "hasVideoClip": "有影片片段",
+ "submittedToFrigatePlus": {
+ "label": "已提交到 Frigate+",
+ "tips": "你必須先篩選出有快照的追蹤物件。
沒有快照的追蹤物件無法提交到 Frigate+。"
+ }
+ },
+ "sort": {
+ "label": "排序",
+ "dateAsc": "日期(由舊到新)",
+ "dateDesc": "日期(由新到舊)",
+ "scoreAsc": "物件分數(由細到大)",
+ "scoreDesc": "物件分數(由大到細)",
+ "speedAsc": "預計速度(由慢到快)",
+ "speedDesc": "預計速度(由快到慢)",
+ "relevance": "相關性"
+ },
+ "cameras": {
+ "label": "鏡頭篩選",
+ "all": {
+ "title": "所有鏡頭",
+ "short": "鏡頭"
+ }
+ },
+ "review": {
+ "showReviewed": "顯示已審查"
+ },
+ "motion": {
+ "showMotionOnly": "只顯示有移動"
+ },
+ "explore": {
+ "settings": {
+ "title": "設定",
+ "defaultView": {
+ "summary": "摘要",
+ "unfilteredGrid": "未篩選網格",
+ "desc": "當未選取篩選條件時,顯示每個標籤最近追蹤物件的摘要,或顯示未篩選的網格。",
+ "title": "預設檢視"
+ },
+ "gridColumns": {
+ "title": "網格欄數",
+ "desc": "選擇網格檢視中的欄數。"
+ },
+ "searchSource": {
+ "label": "搜尋來源",
+ "desc": "選擇搜尋追蹤物件的縮圖還是描述。",
+ "options": {
+ "thumbnailImage": "縮圖",
+ "description": "描述"
+ }
+ }
+ },
+ "date": {
+ "selectDateBy": {
+ "label": "選擇日期進行篩選"
+ }
+ }
+ },
+ "logSettings": {
+ "filterBySeverity": "依嚴重程度篩選日誌",
+ "loading": {
+ "desc": "當日誌窗格捲動到底部時,新日誌將自動串流顯示。",
+ "title": "載入中"
+ },
+ "label": "篩選日誌等級",
+ "allLogs": "所有日誌",
+ "disableLogStreaming": "停用日誌串流"
+ },
+ "trackedObjectDelete": {
+ "title": "確認刪除",
+ "toast": {
+ "success": "成功刪除追蹤物件。",
+ "error": "刪除追蹤物件失敗:{{errorMessage}}"
+ },
+ "desc": "刪除這 {{objectLength}} 個追蹤物件將會移除快照、儲存的嵌入資料,以及相關的物件生命週期記錄。歷史檢視中的錄影檔案不會被刪除。
你確定要繼續嗎?
按住 Shift 鍵可略過未來此對話框。"
+ },
+ "recognizedLicensePlates": {
+ "loading": "載入已識別車牌中…",
+ "noLicensePlatesFound": "找不到車牌。",
+ "selectPlatesFromList": "從列表中選取一個或多個車牌。",
+ "placeholder": "輸入以搜尋車牌...",
+ "title": "已識別車牌",
+ "loadFailed": "載入已識別車牌失敗。"
+ },
+ "estimatedSpeed": "預計速度({{unit}})",
+ "labels": {
+ "label": "標籤",
+ "count_one": "{{count}} 個標籤",
+ "all": {
+ "title": "所有標籤",
+ "short": "標籤"
+ },
+ "count_other": "{{count}} 個標籤"
+ },
+ "zoneMask": {
+ "filterBy": "按區域遮罩篩選"
+ },
+ "zones": {
+ "label": "區域",
+ "all": {
+ "short": "區域",
+ "title": "所有區域"
+ }
+ },
+ "filter": "篩選",
+ "dates": {
+ "all": {
+ "title": "所有日期",
+ "short": "日期"
+ }
+ },
+ "more": "更多篩選條件",
+ "timeRange": "時間範圍"
+}
diff --git a/web/public/locales/yue-Hant/components/player.json b/web/public/locales/yue-Hant/components/player.json
new file mode 100644
index 000000000..4fe43d29f
--- /dev/null
+++ b/web/public/locales/yue-Hant/components/player.json
@@ -0,0 +1,51 @@
+{
+ "noRecordingsFoundForThisTime": "此時間段內沒有錄影",
+ "noPreviewFound": "找不到預覽",
+ "submitFrigatePlus": {
+ "submit": "提交",
+ "title": "提交此畫面至 Frigate+?"
+ },
+ "streamOffline": {
+ "desc": "{{cameraName}} 的 detect
串流未接收到任何畫面,請檢查錯誤日誌",
+ "title": "串流已離線"
+ },
+ "cameraDisabled": "鏡頭已停用",
+ "stats": {
+ "bandwidth": {
+ "short": "頻寬",
+ "title": "頻寬:"
+ },
+ "latency": {
+ "value": "{{seconds}} 秒",
+ "short": {
+ "value": "{{seconds}} 秒",
+ "title": "延遲"
+ },
+ "title": "延遲:"
+ },
+ "totalFrames": "總畫面數:",
+ "droppedFrames": {
+ "short": {
+ "title": "已丟棄",
+ "value": "{{droppedFrames}} 個畫面"
+ },
+ "title": "丟棄畫面數:"
+ },
+ "decodedFrames": "解碼畫面數:",
+ "droppedFrameRate": "畫面丟棄率:",
+ "streamType": {
+ "title": "串流類型:",
+ "short": "類型"
+ }
+ },
+ "toast": {
+ "success": {
+ "submittedFrigatePlus": "成功提交畫面至 Frigate+"
+ },
+ "error": {
+ "submitFrigatePlusFailed": "提交畫面至 Frigate+ 失敗"
+ }
+ },
+ "noPreviewFoundFor": "找不到 {{cameraName}} 的預覽",
+ "livePlayerRequiredIOSVersion": "此串流類型需要 iOS 17.1 或以上版本。"
+}
diff --git a/web/public/locales/yue-Hant/views/explore.json b/web/public/locales/yue-Hant/views/explore.json
new file mode 100644
index 000000000..bf35cacde
--- /dev/null
+++ b/web/public/locales/yue-Hant/views/explore.json
@@ -0,0 +1,198 @@
+{
+ "documentTitle": "瀏覽 - Frigate",
+ "generativeAI": "生成式人工智能",
+ "exploreIsUnavailable": {
+ "title": "無法使用瀏覽功能",
+ "embeddingsReindexing": {
+ "startingUp": "啟動中…",
+ "estimatedTime": "預計剩餘時間:",
+ "finishingShortly": "即將完成",
+ "step": {
+ "thumbnailsEmbedded": "已嵌入縮圖: ",
+ "descriptionsEmbedded": "已嵌入描述: ",
+ "trackedObjectsProcessed": "已處理的追蹤物件: "
+ },
+ "context": "完成重新索引追蹤物件的嵌入後即可使用瀏覽功能。"
+ },
+ "downloadingModels": {
+ "tips": {
+ "context": "下載完成後,你可能需要重新索引追蹤物件的嵌入。",
+ "documentation": "閱讀文件"
+ },
+ "error": "發生錯誤。請檢查 Frigate 日誌。",
+ "context": "Frigate 正在下載必要的嵌入模型以支援語意搜尋功能。這可能需要幾分鐘,視乎你的網絡速度。",
+ "setup": {
+ "textTokenizer": "文字分詞器",
+ "textModel": "文字模型",
+ "visionModelFeatureExtractor": "視覺模型特徵提取器",
+ "visionModel": "視覺模型"
+ }
+ }
+ },
+ "trackedObjectDetails": "追蹤物件詳情",
+ "type": {
+ "details": "詳情",
+ "snapshot": "快照",
+ "video": "影片",
+ "object_lifecycle": "物件生命周期"
+ },
+ "objectLifecycle": {
+ "title": "物件生命周期",
+ "noImageFound": "此時間點找不到圖像。",
+ "createObjectMask": "建立物件遮罩",
+ "lifecycleItemDesc": {
+ "active": "{{label}} 變為活躍",
+ "stationary": "{{label}} 變為靜止",
+ "attribute": {
+ "faceOrLicense_plate": "偵測到 {{label}} 的 {{attribute}}",
+ "other": "{{label}} 被識別為 {{attribute}}"
+ },
+ "header": {
+ "zones": "區域",
+ "ratio": "比例",
+ "area": "區域範圍"
+ },
+ "heard": "聽到 {{label}}",
+ "entered_zone": "{{label}} 進入了 {{zones}}",
+ "gone": "{{label}} 離開了",
+ "visible": "偵測到 {{label}}",
+ "external": "偵測到 {{label}}"
+ },
+ "annotationSettings": {
+ "title": "註解設定",
+ "showAllZones": {
+ "title": "顯示所有區域",
+ "desc": "在物件進入區域的畫面上總是顯示區域。"
+ },
+ "offset": {
+ "tips": "提示:試想像有一段事件片段,當中有人由左行到右。如果事件時間線上的方框一直偏向人物的左邊,則應該減少數值。相反,如果有人由左行到右,而方框一直走在人物前面,則應該增加數值。",
+ "desc": "此資料來自鏡頭的偵測串流,但覆蓋在錄影串流的畫面上。兩個串流通常無法完全同步。因此邊界框和影片可能無法完全對齊。不過可以使用 annotation_offset
欄位來調整。",
+ "label": "註解偏移量",
+ "documentation": "閱讀文件 ",
+ "millisecondsToOffset": "偵測註解的偏移毫秒數。預設:0"
+ }
+ },
+ "carousel": {
+ "previous": "上一張",
+ "next": "下一張"
+ },
+ "adjustAnnotationSettings": "調整註解設定",
+ "scrollViewTips": "滾動以查看此物件生命周期中的重要時刻。",
+ "autoTrackingTips": "自動追蹤鏡頭的邊界框位置可能不準確。"
+ },
+ "details": {
+ "item": {
+ "title": "審查項目詳情",
+ "desc": "審查項目詳情",
+ "button": {
+ "share": "分享此審查項目",
+ "viewInExplore": "在瀏覽中查看"
+ },
+ "tips": {
+ "mismatch_other": "偵測到 {{count}} 個不可用的物件並包含在此審查項目中。這些物件可能未符合警報或偵測標準,或已被清除/刪除。",
+ "hasMissingObjects": "如果你想讓 Frigate 保存下列標籤的追蹤物件,請調整設定:{{objects}}"
+ },
+ "toast": {
+ "success": {
+ "updatedSublabel": "成功更新子標籤。",
+ "updatedLPR": "成功更新車牌號碼。",
+ "regenerate": "已從 {{provider}} 請求新的描述。根據提供者的速度,生成新的描述可能需要一些時間。"
+ },
+ "error": {
+ "regenerate": "呼叫 {{provider}} 以獲取新描述失敗:{{errorMessage}}",
+ "updatedSublabelFailed": "更新子標籤失敗:{{errorMessage}}",
+ "updatedLPRFailed": "更新車牌號碼失敗:{{errorMessage}}"
+ }
+ }
+ },
+ "label": "標籤",
+ "recognizedLicensePlate": "已識別車牌",
+ "estimatedSpeed": "預計速度",
+ "objects": "物件",
+ "camera": "鏡頭",
+ "zones": "區域",
+ "timestamp": "時間戳記",
+ "tips": {
+ "descriptionSaved": "成功保存描述",
+ "saveDescriptionFailed": "更新描述失敗:{{errorMessage}}"
+ },
+ "regenerateFromSnapshot": "從快照重新生成",
+ "button": {
+ "regenerate": {
+ "label": "重新生成追蹤物件描述",
+ "title": "重新生成"
+ },
+ "findSimilar": "尋找相似項目"
+ },
+ "description": {
+ "label": "描述",
+ "placeholder": "追蹤物件的描述",
+ "aiTips": "Frigate 會等到追蹤物件生命周期結束後,才向你的生成式 AI 提供者請求描述。"
+ },
+ "editLPR": {
+ "descNoLabel": "為此追蹤物件輸入新的車牌號碼",
+ "title": "編輯車牌號碼",
+ "desc": "為此 {{label}} 輸入新的車牌號碼"
+ },
+ "topScore": {
+ "label": "最高分數",
+ "info": "最高分數是追蹤物件的最高中位分數,因此可能與搜尋結果縮圖上顯示的分數不同。"
+ },
+ "editSubLabel": {
+ "desc": "為此 {{label}} 輸入新的子標籤",
+ "title": "編輯子標籤",
+ "descNoLabel": "為此追蹤物件輸入新的子標籤"
+ },
+ "snapshotScore": {
+ "label": "快照分數"
+ },
+ "expandRegenerationMenu": "展開重新生成選單",
+ "regenerateFromThumbnails": "從縮圖重新生成"
+ },
+ "itemMenu": {
+ "downloadVideo": {
+ "label": "下載影片",
+ "aria": "下載影片"
+ },
+ "downloadSnapshot": {
+ "label": "下載快照",
+ "aria": "下載快照"
+ },
+ "viewObjectLifecycle": {
+ "label": "查看物件生命周期",
+ "aria": "顯示物件生命周期"
+ },
+ "findSimilar": {
+ "label": "尋找相似項目",
+ "aria": "尋找相似追蹤物件"
+ },
+ "submitToPlus": {
+ "label": "提交到 Frigate+",
+ "aria": "提交到 Frigate Plus"
+ },
+ "viewInHistory": {
+ "label": "在歷史記錄中查看",
+ "aria": "在歷史記錄中查看"
+ },
+ "deleteTrackedObject": {
+ "label": "刪除此追蹤物件"
+ }
+ },
+ "dialog": {
+ "confirmDelete": {
+ "title": "確認刪除",
+ "desc": "刪除此追蹤物件會移除快照、所有已保存的嵌入,以及相關的物件生命周期記錄。歷史記錄中的錄影不會被刪除。
你確定要繼續嗎?"
+ }
+ },
+ "noTrackedObjects": "找不到追蹤物件",
+ "fetchingTrackedObjectsFailed": "取得追蹤物件時出錯:{{errorMessage}}",
+ "searchResult": {
+ "deleteTrackedObject": {
+ "toast": {
+ "success": "追蹤物件已成功刪除。",
+ "error": "刪除追蹤物件失敗:{{errorMessage}}"
+ }
+ }
+ },
+ "trackedObjectsCount_other": "{{count}} 個追蹤物件 "
+}
diff --git a/web/public/locales/yue-Hant/views/exports.json b/web/public/locales/yue-Hant/views/exports.json
new file mode 100644
index 000000000..48d839717
--- /dev/null
+++ b/web/public/locales/yue-Hant/views/exports.json
@@ -0,0 +1,17 @@
+{
+ "documentTitle": "匯出 - Frigate",
+ "search": "搜尋",
+ "noExports": "未找到匯出項目",
+ "deleteExport": "刪除匯出",
+ "editExport": {
+ "title": "重新命名匯出",
+ "desc": "請輸入新的匯出名稱。",
+ "saveExport": "儲存匯出"
+ },
+ "toast": {
+ "error": {
+ "renameExportFailed": "重新命名匯出失敗:{{errorMessage}}"
+ }
+ },
+ "deleteExport.desc": "你確定要刪除 {{exportName}} 嗎?"
+}
diff --git a/web/public/locales/yue-Hant/views/faceLibrary.json b/web/public/locales/yue-Hant/views/faceLibrary.json
new file mode 100644
index 000000000..a55a0de0a
--- /dev/null
+++ b/web/public/locales/yue-Hant/views/faceLibrary.json
@@ -0,0 +1,82 @@
+{
+ "selectItem": "選擇 {{item}}",
+ "details": {
+ "timestamp": "時間戳記",
+ "person": "人",
+ "confidence": "信心指數",
+ "face": "人臉詳細資料",
+ "faceDesc": "人臉及相關物件的詳細資料"
+ },
+ "description": {
+ "addFace": "逐步了解如何新增一個人臉庫的集合。",
+ "placeholder": "請輸入此集合的名稱"
+ },
+ "documentTitle": "人臉庫 - Frigate",
+ "uploadFaceImage": {
+ "title": "上傳人臉圖片",
+ "desc": "上傳圖片以掃描人臉並納入 {{pageToggle}}"
+ },
+ "createFaceLibrary": {
+ "title": "建立集合",
+ "desc": "建立新集合",
+ "new": "建立新的人臉",
+ "nextSteps": "建立穩固基礎:
mode: {{effectiveRetainMode}}
,因此此按需錄影只會保留{{effectiveRetainModeName}}的片段。"
+ },
+ "editLayout": {
+ "label": "編輯版面配置",
+ "group": {
+ "label": "編輯鏡頭群組"
+ },
+ "exitEdit": "結束編輯"
+ }
+}
diff --git a/web/public/locales/yue-Hant/views/search.json b/web/public/locales/yue-Hant/views/search.json
new file mode 100644
index 000000000..fea893191
--- /dev/null
+++ b/web/public/locales/yue-Hant/views/search.json
@@ -0,0 +1,72 @@
+{
+ "search": "搜尋",
+ "savedSearches": "已儲存的搜尋",
+ "searchFor": "搜尋 {{inputValue}}",
+ "button": {
+ "clear": "清除搜尋",
+ "save": "儲存搜尋",
+ "delete": "刪除已儲存的搜尋",
+ "filterInformation": "篩選資料",
+ "filterActive": "篩選中"
+ },
+ "trackedObjectId": "追蹤物件編號",
+ "filter": {
+ "label": {
+ "labels": "標籤",
+ "zones": "區域",
+ "search_type": "搜尋類型",
+ "time_range": "時間範圍",
+ "after": "之後",
+ "recognized_license_plate": "已辨識車牌",
+ "has_clip": "有片段",
+ "has_snapshot": "有快照",
+ "min_score": "最低分數",
+ "before": "之前",
+ "max_score": "最高分數",
+ "max_speed": "最高速度",
+ "min_speed": "最低速度",
+ "cameras": "鏡頭",
+ "sub_labels": "子標籤"
+ },
+ "searchType": {
+ "thumbnail": "縮圖",
+ "description": "描述"
+ },
+ "toast": {
+ "error": {
+ "beforeDateBeLaterAfter": "「結束」日期必須遲於「開始」日期。",
+ "afterDatebeEarlierBefore": "「開始」日期必須早於「結束」日期。",
+ "minScoreMustBeLessOrEqualMaxScore": "「最低分數」必須少於或等於「最高分數」。",
+ "maxScoreMustBeGreaterOrEqualMinScore": "「最高分數」必須多於或等於「最低分數」。",
+ "maxSpeedMustBeGreaterOrEqualMinSpeed": "「最高速度」必須多於或等於「最低速度」。",
+ "minSpeedMustBeLessOrEqualMaxSpeed": "「最低速度」必須少於或等於「最高速度」。"
+ }
+ },
+ "tips": {
+ "title": "如何使用文字篩選",
+ "desc": {
+ "step1": "輸入篩選鍵名後加上冒號(例如:\"cameras:\")。",
+ "step2": "從建議中選擇一個值,或者自行輸入。",
+ "step3": "可以用空格隔開,連續使用多個篩選條件。",
+ "step4": "日期篩選(before: 同 after:)要用 {{DateFormat}} 格式。",
+ "step5": "時間範圍篩選要用 {{exampleTime}} 格式。",
+ "step6": "點擊旁邊的「x」就可以移除篩選條件。",
+ "text": "篩選可以幫你縮窄搜尋結果。以下係使用方法:",
+ "exampleLabel": "例子:"
+ }
+ },
+ "header": {
+ "activeFilters": "啟用中的篩選條件",
+ "noFilters": "篩選條件",
+ "currentFilterType": "篩選數值"
+ }
+ },
+ "similaritySearch": {
+ "title": "相似搜尋",
+ "active": "正在進行相似搜尋",
+ "clear": "清除相似搜尋"
+ },
+ "placeholder": {
+ "search": "搜尋…"
+ }
+}
diff --git a/web/public/locales/yue-Hant/views/settings.json b/web/public/locales/yue-Hant/views/settings.json
new file mode 100644
index 000000000..6855b7ffd
--- /dev/null
+++ b/web/public/locales/yue-Hant/views/settings.json
@@ -0,0 +1,591 @@
+{
+ "documentTitle": {
+ "default": "設定 - Frigate",
+ "authentication": "認證設定 - Frigate",
+ "camera": "鏡頭設定 - Frigate",
+ "classification": "分類設定 - Frigate",
+ "masksAndZones": "遮罩與區域編輯器 - Frigate",
+ "motionTuner": "移動調校器 - Frigate",
+ "object": "物件設定 - Frigate",
+ "general": "一般設定 - Frigate",
+ "frigatePlus": "Frigate+ 設定 - Frigate"
+ },
+ "menu": {
+ "ui": "介面",
+ "classification": "分類",
+ "cameras": "鏡頭設定",
+ "masksAndZones": "遮罩/區域",
+ "motionTuner": "移動調校器",
+ "debug": "除錯",
+ "users": "用戶",
+ "notifications": "通知",
+ "frigateplus": "Frigate+"
+ },
+ "dialog": {
+ "unsavedChanges": {
+ "title": "你有未儲存的更改。",
+ "desc": "你想在繼續前儲存更改嗎?"
+ }
+ },
+ "cameraSetting": {
+ "camera": "鏡頭",
+ "noCamera": "沒有鏡頭"
+ },
+ "general": {
+ "title": "一般設定",
+ "liveDashboard": {
+ "playAlertVideos": {
+ "label": "播放警報影片",
+ "desc": "預設情況下,即時儀表板上的最近警報會以小型循環影片形式播放。停用此選項後,只會在此裝置/瀏覽器上顯示警報的靜態圖片。"
+ },
+ "automaticLiveView": {
+ "label": "自動即時檢視",
+ "desc": "當偵測到活動時,自動切換到該鏡頭的即時畫面。若停用此選項,即時儀表板上的鏡頭靜態畫面將每分鐘只更新一次。"
+ },
+ "title": "即時儀表板"
+ },
+ "storedLayouts": {
+ "title": "儲存的版面配置",
+ "clearAll": "清除所有版面配置",
+ "desc": "鏡頭群組內的鏡頭佈局可以拖動或調整大小。位置會儲存在你瀏覽器的本機儲存空間內。"
+ },
+ "cameraGroupStreaming": {
+ "title": "鏡頭群組串流設定",
+ "clearAll": "清除所有串流設定",
+ "desc": "每個鏡頭群組的串流設定會儲存在你瀏覽器的本機儲存空間內。"
+ },
+ "recordingsViewer": {
+ "defaultPlaybackRate": {
+ "desc": "錄影播放的預設播放速度。",
+ "label": "預設播放速度"
+ },
+ "title": "錄影瀏覽器"
+ },
+ "calendar": {
+ "title": "日曆",
+ "firstWeekday": {
+ "label": "每星期的第一天",
+ "sunday": "星期日",
+ "monday": "星期一",
+ "desc": "審查日曆中每星期開始的日子。"
+ }
+ },
+ "toast": {
+ "success": {
+ "clearStoredLayout": "已清除 {{cameraName}} 的儲存版面配置",
+ "clearStreamingSettings": "已清除所有鏡頭群組的串流設定。"
+ },
+ "error": {
+ "clearStoredLayoutFailed": "清除儲存版面配置失敗:{{errorMessage}}",
+ "clearStreamingSettingsFailed": "清除串流設定失敗:{{errorMessage}}"
+ }
+ }
+ },
+ "classification": {
+ "birdClassification": {
+ "desc": "鳥類分類會使用量化 Tensorflow 模型識別已知鳥類。當辨識到已知鳥類時,牠的常見名稱會加到子標籤上。此資訊會顯示在介面、篩選器及通知中。",
+ "title": "鳥類分類"
+ },
+ "semanticSearch": {
+ "title": "語意搜尋",
+ "desc": "Frigate 的語意搜尋功能讓你可以利用影像本身、自訂文字描述,或自動產生的描述,在審查項目中尋找已追蹤的物件。",
+ "readTheDocumentation": "閱讀文件",
+ "reindexNow": {
+ "label": "立即重建索引",
+ "confirmTitle": "確認重建索引",
+ "confirmButton": "重建索引",
+ "success": "重建索引已成功開始。",
+ "alreadyInProgress": "重建索引已在進行中。",
+ "error": "啟動重建索引失敗:{{errorMessage}}",
+ "confirmDesc": "你確定要重建索引所有已追蹤物件的嵌入向量嗎?這個過程會在背景運行,但可能會用盡你的 CPU,而且需要一定時間。你可以在「瀏覽」頁面查看進度。",
+ "desc": "重建索引會為所有已追蹤物件重新生成嵌入向量。這個過程會在背景運行,可能會用盡你的 CPU,所需時間取決於已追蹤物件的數量。"
+ },
+ "modelSize": {
+ "label": "模型大小",
+ "desc": "用於語意搜尋的模型大小。",
+ "small": {
+ "title": "小型",
+ "desc": "使用小型模型會採用量化版本,較少佔用 RAM,在 CPU 上運行更快,而嵌入品質的差異非常細微。"
+ },
+ "large": {
+ "title": "大型",
+ "desc": "使用大型模型會採用完整的 Jina 模型,並在適用情況下自動於 GPU 上運行。"
+ }
+ }
+ },
+ "faceRecognition": {
+ "modelSize": {
+ "small": {
+ "title": "小型",
+ "desc": "使用小型模型會採用 FaceNet 臉部嵌入模型,在大多數 CPU 上能有效運行。"
+ },
+ "large": {
+ "title": "大型",
+ "desc": "使用大型模型會採用 ArcFace 臉部嵌入模型,並在適用情況下自動於 GPU 上運行。"
+ },
+ "label": "模型大小",
+ "desc": "用於人臉識別的模型大小。"
+ },
+ "readTheDocumentation": "閱讀文件",
+ "title": "人臉識別",
+ "desc": "人臉識別功能允許為人物分配名字,當辨識到他們的臉孔時,Frigate 會將名字加到子標籤上。此資訊會顯示於介面、篩選器及通知中。"
+ },
+ "licensePlateRecognition": {
+ "title": "車牌識別",
+ "readTheDocumentation": "閱讀文件",
+ "desc": "Frigate 可以識別車輛上的車牌,自動將偵測到的字元加到已辨識車牌欄位,或將已知名稱加到屬於車輛類型的物件的子標籤上。常見用途包括讀取駛入車道或在街道上駛過的車輛的車牌。"
+ },
+ "restart_required": "需要重新啟動(分類設定已變更)",
+ "toast": {
+ "error": "儲存設定變更失敗:{{errorMessage}}",
+ "success": "分類設定已儲存。請重新啟動 Frigate 以套用你的更改。"
+ },
+ "title": "分類設定"
+ },
+ "camera": {
+ "title": "鏡頭設定",
+ "streams": {
+ "title": "串流",
+ "desc": "停用鏡頭會完全停止 Frigate 處理此鏡頭的串流。將會無法使用偵測、錄影和除錯功能。移動方框
畫面中偵測到移動的地方將會顯示亮紅色方框
" + }, + "regions": { + "desc": "顯示屬於物件偵測器感興趣範圍的方框", + "title": "偵測區", + "tips": "偵測區方框
畫面中屬於物件偵測器感興趣的地方將會顯示亮綠色方框,並且進行分析
" + }, + "desc": "除錯畫面會即時顯示追蹤到的物件及統計資料。物件列表則顯示偵測到物件的延遲總結。", + "timestamp": { + "title": "時間戳記", + "desc": "在圖片上疊加時間戳記" + }, + "detectorDesc": "Frigate 使用你的偵測器({{detectors}})來偵測鏡頭影片串流中的物件。", + "debugging": "除錯中", + "mask": { + "title": "移動遮罩", + "desc": "顯示移動遮罩多邊形" + }, + "objectShapeFilterDrawing": { + "title": "物件形狀篩選繪圖", + "document": "閱讀文件 ", + "score": "分數", + "area": "面積", + "ratio": "比例", + "desc": "在圖片上畫矩形以查看面積與比例詳情", + "tips": "啟用此選項後,會於鏡頭畫面上繪製矩形,以顯示其面積及比例。這些數值可用於設定物件形狀過濾參數。" + } + }, + "users": { + "management": { + "desc": "管理此Frigate個體的用戶帳戶。", + "title": "用戶管理" + }, + "addUser": "新增用戶", + "updatePassword": "更新密碼", + "toast": { + "success": { + "createUser": "成功建立用戶{{user}}", + "deleteUser": "成功刪除用戶{{user}}", + "roleUpdated": "成功更新{{user}}的角色", + "updatePassword": "成功更新密碼。" + }, + "error": { + "createUserFailed": "建立用戶失敗:{{errorMessage}}", + "roleUpdateFailed": "更新角色失敗:{{errorMessage}}", + "setPasswordFailed": "儲存密碼失敗:{{errorMessage}}", + "deleteUserFailed": "刪除用戶失敗:{{errorMessage}}" + } + }, + "table": { + "username": "用戶名稱", + "role": "角色", + "noUsers": "找不到用戶。", + "changeRole": "更改用戶角色", + "password": "密碼", + "deleteUser": "刪除用戶", + "actions": "操作" + }, + "dialog": { + "form": { + "user": { + "title": "用戶名稱", + "desc": "只允許使用字母、數字、句號及底線。", + "placeholder": "輸入用戶名稱" + }, + "password": { + "title": "密碼", + "placeholder": "輸入密碼", + "confirm": { + "placeholder": "確認密碼", + "title": "確認密碼" + }, + "strength": { + "title": "密碼強度: ", + "weak": "弱", + "medium": "中等", + "strong": "強", + "veryStrong": "非常強" + }, + "match": "密碼相符", + "notMatch": "密碼不相符" + }, + "newPassword": { + "confirm": { + "placeholder": "重新輸入新密碼" + }, + "title": "新密碼", + "placeholder": "輸入新密碼" + }, + "usernameIsRequired": "必須輸入用戶名稱" + }, + "createUser": { + "title": "建立新用戶", + "desc": "新增用戶帳戶,並指定可存取Frigate介面各區域的角色。", + "usernameOnlyInclude": "用戶名稱只可包含字母、數字、句號或底線" + }, + "deleteUser": { + "title": "刪除用戶", + "desc": "此操作無法還原,將會永久刪除用戶帳戶及所有相關資料。", + "warn": "確定要刪除{{username}}嗎?" + }, + "changeRole": { + "title": "更改用戶角色", + "desc": "更新{{username}}的權限", + "roleInfo": { + "intro": "為此用戶選擇合適的角色:", + "adminDesc": "可使用所有功能。", + "viewer": "觀看者", + "viewerDesc": "只限使用即時儀表板、審查、瀏覽及匯出功能。", + "admin": "管理員" + } + }, + "passwordSetting": { + "setPassword": "設定密碼", + "updatePassword": "更新{{username}}的密碼", + "desc": "建立強密碼以保障此帳戶安全。" + } + }, + "title": "用戶" + }, + "notification": { + "title": "通知", + "notificationSettings": { + "title": "通知設定", + "desc": "Frigate可原生向你的裝置推送通知,無論在瀏覽器中運行或安裝為PWA。", + "documentation": "閱讀文件" + }, + "notificationUnavailable": { + "title": "無法使用通知功能", + "desc": "網頁推送通知需在安全環境下運作(https://...
),這是瀏覽器的限制。請透過安全連線存取Frigate以使用通知功能。",
+ "documentation": "閱讀文件"
+ },
+ "globalSettings": {
+ "title": "全域設定",
+ "desc": "暫停所有已註冊裝置上特定鏡頭的通知。"
+ },
+ "email": {
+ "placeholder": "例如:example@email.com",
+ "desc": "需要提供有效的電郵地址,若推送服務出現問題,將會透過此地址通知你。",
+ "title": "電郵地址"
+ },
+ "cameras": {
+ "title": "鏡頭",
+ "noCameras": "沒有可用鏡頭",
+ "desc": "選擇啟用通知功能的鏡頭。"
+ },
+ "deviceSpecific": "裝置專屬設定",
+ "registerDevice": "登記此裝置",
+ "unregisterDevice": "取消登記此裝置",
+ "sendTestNotification": "發送測試通知",
+ "active": "通知功能已啟用",
+ "suspended": "通知功能已暫停{{time}}",
+ "suspendTime": {
+ "10minutes": "暫停10分鐘",
+ "12hours": "暫停12小時",
+ "30minutes": "暫停30分鐘",
+ "24hours": "暫停24小時",
+ "5minutes": "暫停5分鐘",
+ "1hour": "暫停1小時",
+ "untilRestart": "暫停至重新啟動"
+ },
+ "toast": {
+ "error": {
+ "registerFailed": "儲存通知登記失敗。"
+ },
+ "success": {
+ "registered": "成功登記通知功能。必須重新啟動Frigate後,才能發送任何通知(包括測試通知)。",
+ "settingSaved": "通知設定已儲存。"
+ }
+ },
+ "cancelSuspension": "取消暫停"
+ },
+ "frigatePlus": {
+ "title": "Frigate+設定",
+ "apiKey": {
+ "title": "Frigate+ API金鑰",
+ "validated": "已偵測並驗證Frigate+ API金鑰",
+ "notValidated": "未偵測到Frigate+ API金鑰或驗證失敗",
+ "desc": "Frigate+ API金鑰可啟用與Frigate+服務的整合功能。",
+ "plusLink": "了解更多Frigate+資料"
+ },
+ "snapshotConfig": {
+ "title": "快照設定",
+ "documentation": "閱讀文件",
+ "table": {
+ "camera": "鏡頭",
+ "snapshots": "快照",
+ "cleanCopySnapshots": "clean_copy
快照"
+ },
+ "cleanCopyWarning": "部分鏡頭已啟用快照,但未啟用乾淨副本。你必須於快照設定中啟用clean_copy
,才能從這些鏡頭提交影像至Frigate+。",
+ "desc": "提交至Frigate+需要在設定中同時啟用快照及clean_copy
快照功能。"
+ },
+ "modelInfo": {
+ "title": "模型資料",
+ "modelType": "模型類型",
+ "trainDate": "訓練日期",
+ "baseModel": "基礎模型",
+ "plusModelType": {
+ "baseModel": "基礎模型",
+ "userModel": "微調"
+ },
+ "supportedDetectors": "支援的偵測器",
+ "cameras": "鏡頭",
+ "availableModels": "可用模型",
+ "loadingAvailableModels": "正在載入可用模型...",
+ "modelSelect": "可於此選擇你在Frigate+上的可用模型。請注意,只能選擇與當前偵測器設定相容的模型。",
+ "loading": "正在載入模型資料...",
+ "error": "載入模型資料失敗"
+ },
+ "toast": {
+ "error": "儲存設定變更失敗:{{errorMessage}}",
+ "success": "Frigate+設定已儲存。請重新啟動Frigate以套用更改。"
+ },
+ "restart_required": "需要重新啟動(已更改Frigate+模型)"
+ }
+}
diff --git a/web/public/locales/yue-Hant/views/system.json b/web/public/locales/yue-Hant/views/system.json
new file mode 100644
index 000000000..70a7369e1
--- /dev/null
+++ b/web/public/locales/yue-Hant/views/system.json
@@ -0,0 +1,169 @@
+{
+ "documentTitle": {
+ "cameras": "鏡頭統計 - Frigate",
+ "storage": "儲存統計 - Frigate",
+ "general": "一般統計 - Frigate",
+ "enrichments": "強化統計 - Frigate",
+ "logs": {
+ "frigate": "Frigate 日誌 - Frigate",
+ "nginx": "Nginx 日誌 - Frigate",
+ "go2rtc": "Go2RTC 日誌 - Frigate"
+ }
+ },
+ "title": "系統",
+ "metrics": "系統指標",
+ "logs": {
+ "download": {
+ "label": "下載日誌"
+ },
+ "type": {
+ "timestamp": "時間戳記",
+ "tag": "標籤",
+ "message": "訊息",
+ "label": "類型"
+ },
+ "tips": "正在從伺服器串流日誌",
+ "toast": {
+ "error": {
+ "fetchingLogsFailed": "擷取日誌時出錯:{{errorMessage}}",
+ "whileStreamingLogs": "串流日誌時出錯:{{errorMessage}}"
+ }
+ },
+ "copy": {
+ "error": "無法將日誌複製到剪貼簿",
+ "label": "複製到剪貼簿",
+ "success": "已將日誌複製到剪貼簿"
+ }
+ },
+ "general": {
+ "detector": {
+ "inferenceSpeed": "偵測器推理速度",
+ "memoryUsage": "偵測器記憶體使用量",
+ "title": "偵測器",
+ "cpuUsage": "偵測器 CPU 使用率"
+ },
+ "hardwareInfo": {
+ "gpuUsage": "GPU 使用率",
+ "gpuInfo": {
+ "vainfoOutput": {
+ "processOutput": "程序輸出:",
+ "processError": "程序錯誤:",
+ "title": "Vainfo 輸出",
+ "returnCode": "返回代碼:{{code}}"
+ },
+ "nvidiaSMIOutput": {
+ "title": "Nvidia SMI 輸出",
+ "vbios": "VBios 資訊:{{vbios}}",
+ "cudaComputerCapability": "CUDA 計算能力:{{cuda_compute}}",
+ "name": "名稱:{{name}}",
+ "driver": "驅動程式:{{driver}}"
+ },
+ "closeInfo": {
+ "label": "關閉 GPU 資訊"
+ },
+ "toast": {
+ "success": "已將 GPU 資訊複製到剪貼簿"
+ },
+ "copyInfo": {
+ "label": "複製 GPU 資訊"
+ }
+ },
+ "title": "硬件資訊",
+ "npuUsage": "NPU 使用率",
+ "gpuMemory": "GPU 記憶體",
+ "gpuEncoder": "GPU 編碼器",
+ "gpuDecoder": "GPU 解碼器",
+ "npuMemory": "NPU 記憶體"
+ },
+ "otherProcesses": {
+ "title": "其他程序",
+ "processCpuUsage": "程序 CPU 使用率",
+ "processMemoryUsage": "程序記憶體使用量"
+ },
+ "title": "一般"
+ },
+ "storage": {
+ "title": "儲存裝置",
+ "overview": "概覽",
+ "recordings": {
+ "title": "錄影檔案",
+ "earliestRecording": "最早可用錄影檔案:",
+ "tips": "此數值代表 Frigate 資料庫中錄影檔案的總儲存使用量。Frigate 不會追蹤磁碟上所有檔案的儲存使用量。"
+ },
+ "cameraStorage": {
+ "camera": "鏡頭",
+ "unusedStorageInformation": "未使用儲存資訊",
+ "storageUsed": "已使用儲存",
+ "bandwidth": "每小時使用量",
+ "unused": {
+ "tips": "若您的磁碟中存有其他檔案,該數值可能無法準確反映 Frigate 可用的空間。Frigate 只追蹤其錄影檔案的儲存使用量。",
+ "title": "未使用"
+ },
+ "title": "鏡頭儲存",
+ "percentageOfTotalUsed": "佔總量百分比"
+ }
+ },
+ "cameras": {
+ "info": {
+ "streamDataFromFFPROBE": "串流資料是透過 ffprobe
取得。",
+ "fetching": "正在取得鏡頭資料",
+ "video": "影片:",
+ "codec": "編碼器:",
+ "resolution": "解像度:",
+ "tips": {
+ "title": "鏡頭詳細資訊"
+ },
+ "stream": "串流 {{idx}}",
+ "audio": "音訊:",
+ "fps": "每秒影格數 (FPS):",
+ "unknown": "未知",
+ "error": "錯誤:{{error}}",
+ "cameraProbeInfo": "{{camera}} 鏡頭詳細資訊"
+ },
+ "framesAndDetections": "畫面 / 偵測",
+ "label": {
+ "camera": "鏡頭",
+ "detect": "偵測",
+ "skipped": "略過",
+ "ffmpeg": "ffmpeg",
+ "capture": "讀取影像"
+ },
+ "title": "鏡頭",
+ "overview": "概覽",
+ "toast": {
+ "success": {
+ "copyToClipboard": "已將鏡頭資料複製到剪貼簿。"
+ },
+ "error": {
+ "unableToProbeCamera": "無法取得鏡頭資料:{{errorMessage}}"
+ }
+ }
+ },
+ "lastRefreshed": "最後更新: ",
+ "stats": {
+ "detectIsSlow": "{{detect}} 偵測速度慢 ({{speed}} 毫秒)",
+ "detectIsVerySlow": "{{detect}} 偵測速度非常慢 ({{speed}} 毫秒)",
+ "cameraIsOffline": "{{camera}} 已離線",
+ "detectHighCpuUsage": "{{camera}} 的偵測 CPU 使用率過高 ({{detectAvg}}%)",
+ "healthy": "系統運作正常",
+ "ffmpegHighCpuUsage": "{{camera}} 的 FFMPEG CPU 使用率過高 ({{ffmpegAvg}}%)",
+ "reindexingEmbeddings": "重新索引嵌入資料 (已完成 {{processed}}%)"
+ },
+ "enrichments": {
+ "title": "強化功能",
+ "infPerSecond": "每秒推理次數",
+ "embeddings": {
+ "image_embedding": "圖片嵌入",
+ "face_embedding_speed": "人臉嵌入速度",
+ "face_recognition_speed": "人臉辨識速度",
+ "plate_recognition_speed": "車牌辨識速度",
+ "face_recognition": "人臉辨識",
+ "text_embedding": "文字嵌入",
+ "yolov9_plate_detection": "YOLOv9 車牌偵測",
+ "text_embedding_speed": "文字嵌入速度",
+ "yolov9_plate_detection_speed": "YOLOv9 車牌偵測速度",
+ "plate_recognition": "車牌辨識",
+ "image_embedding_speed": "圖片嵌入速度"
+ }
+ }
+}
diff --git a/web/public/locales/yue_Hant/audio.json b/web/public/locales/yue_Hant/audio.json
new file mode 100644
index 000000000..8d29100d5
--- /dev/null
+++ b/web/public/locales/yue_Hant/audio.json
@@ -0,0 +1,429 @@
+{
+ "speech": "講話",
+ "babbling": "牙牙學語",
+ "yell": "大嗌",
+ "bellow": "咆哮",
+ "whoop": "歡呼聲",
+ "whispering": "細細聲",
+ "laughter": "笑聲",
+ "sigh": "歎氣聲",
+ "crying": "喊聲",
+ "yodeling": "山歌",
+ "choir": "合唱",
+ "snicker": "偷笑聲",
+ "mantra": "咒語",
+ "singing": "歌聲",
+ "chant": "唸經",
+ "breathing": "呼吸聲",
+ "child_singing": "兒童歌聲",
+ "rapping": "饒舌",
+ "humming": "哼歌",
+ "whistling": "口哨聲",
+ "synthetic_singing": "人造歌聲",
+ "groan": "呻吟聲",
+ "grunt": "哼聲",
+ "snort": "哼哼聲",
+ "throat_clearing": "清喉嚨",
+ "wheeze": "氣喘聲",
+ "snoring": "鼻鼾聲",
+ "gasp": "喘氣",
+ "pant": "急促喘氣",
+ "cough": "咳嗽",
+ "sneeze": "打乞嚏",
+ "shuffle": "拖步行",
+ "sniff": "嗅嗅聲",
+ "footsteps": "腳步聲",
+ "chewing": "咀嚼聲",
+ "biting": "咬嘢聲",
+ "gargling": "漱口聲",
+ "run": "跑步",
+ "stomach_rumble": "肚餓聲",
+ "burping": "打嗝聲",
+ "clapping": "掌聲",
+ "children_playing": "兒童玩耍聲",
+ "applause": "掌聲",
+ "heartbeat": "心跳",
+ "growling": "狗咆哮聲",
+ "bow_wow": "狗汪汪聲",
+ "caterwaul": "貓嚎叫",
+ "howl": "狗慘叫聲",
+ "livestock": "牲畜",
+ "clip_clop": "馬蹄聲",
+ "cattle": "牛",
+ "horse": "馬",
+ "heart_murmur": "心臟雜音",
+ "fart": "放屁",
+ "hands": "手",
+ "cheering": "歡呼聲",
+ "dog": "狗",
+ "bark": "樹皮",
+ "yip": "狗尖叫聲",
+ "chatter": "嘈雜聲",
+ "purr": "貓呼嚕聲",
+ "whimper_dog": "狗嗚咽聲",
+ "hiccup": "打嗝聲",
+ "finger_snapping": "彈手指聲",
+ "crowd": "人群聲",
+ "animal": "動物",
+ "pets": "寵物",
+ "cat": "貓",
+ "meow": "貓喵喵聲",
+ "hiss": "貓嘶嘶聲",
+ "neigh": "馬嘶聲",
+ "cowbell": "牛鈴",
+ "moo": "牛哞哞聲",
+ "gobble": "火雞叫聲",
+ "turkey": "火雞",
+ "chicken": "雞",
+ "cluck": "雞咯咯聲",
+ "fowl": "家禽",
+ "sheep": "羊",
+ "duck": "鴨子",
+ "goat": "山羊",
+ "pig": "豬",
+ "oink": "豬哼聲",
+ "bleat": "咩咩聲",
+ "cock_a_doodle_doo": "公雞叫聲",
+ "honk": "鵝叫聲",
+ "quack": "鴨叫聲",
+ "goose": "鵝",
+ "wild_animals": "野生動物",
+ "crow": "烏鴉",
+ "coo": "白鴿咕咕聲",
+ "pigeon": "白鴿",
+ "roaring_cats": "貓咆哮聲",
+ "roar": "咆哮聲",
+ "bird": "鳥",
+ "chirp": "鳥啾啾聲",
+ "squawk": "鳥嘎嘎聲",
+ "caw": "烏鴉呱呱聲",
+ "mouse": "滑鼠",
+ "owl": "貓頭鷹",
+ "rats": "大老鼠",
+ "hoot": "貓頭鷹咕咕聲",
+ "patter": "老鼠腳步聲",
+ "flapping_wings": "拍打翅膀聲",
+ "dogs": "狗",
+ "snake": "蛇",
+ "insect": "昆蟲",
+ "whale_vocalization": "鯨魚叫聲",
+ "rattle": "蛇叫聲",
+ "fly": "蒼蠅",
+ "croak": "青蛙呱呱聲",
+ "mosquito": "蚊",
+ "music": "音樂",
+ "frog": "青蛙",
+ "cricket": "蟋蟀",
+ "buzz": "嗡嗡聲",
+ "musical_instrument": "樂器",
+ "steel_guitar": "鋼弦結他",
+ "tapping": "拍擊",
+ "guitar": "結他",
+ "strum": "撥弦聲",
+ "electric_guitar": "電結他",
+ "plucked_string_instrument": "撥弦樂器",
+ "bass_guitar": "低音結他",
+ "banjo": "班祖琴",
+ "acoustic_guitar": "原聲結他",
+ "piano": "鋼琴",
+ "synthesizer": "合成器",
+ "keyboard": "鍵盤",
+ "organ": "風琴",
+ "sitar": "錫塔琴",
+ "mandolin": "曼陀鈴",
+ "zither": "齊特琴",
+ "ukulele": "烏克麗麗",
+ "sampler": "採樣器",
+ "hammond_organ": "哈蒙德風琴",
+ "electric_piano": "電子鋼琴",
+ "electronic_organ": "電子風琴",
+ "rimshot": "鼓邊敲擊",
+ "bass_drum": "低音鼓",
+ "drum_kit": "鼓套",
+ "drum_machine": "鼓機",
+ "drum": "鼓",
+ "snare_drum": "小鼓",
+ "timpani": "定音鼓",
+ "drum_roll": "鼓聲",
+ "harpsichord": "大鍵琴",
+ "percussion": "打擊樂器",
+ "trumpet": "小號",
+ "cymbal": "銅鈸",
+ "french_horn": "法國號",
+ "string_section": "弦樂組",
+ "saxophone": "色士風",
+ "marimba": "馬林巴琴",
+ "mallet_percussion": "鎚擊樂器",
+ "maraca": "沙槌",
+ "harp": "豎琴",
+ "orchestra": "管弦樂團",
+ "violin": "小提琴",
+ "gong": "鑼",
+ "flute": "長笛",
+ "bowed_string_instrument": "弓弦樂器",
+ "vibraphone": "顫音琴",
+ "tabla": "塔布拉鼓",
+ "trombone": "長號",
+ "tambourine": "鈴鼓",
+ "double_bass": "低音提琴",
+ "brass_instrument": "銅管樂器",
+ "cello": "大提琴",
+ "clarinet": "單簧管",
+ "pizzicato": "撥奏",
+ "hi_hat": "高帽鈸",
+ "wood_block": "木魚",
+ "tubular_bells": "管鐘",
+ "glockenspiel": "鐘琴",
+ "steelpan": "鋼鼓",
+ "wind_instrument": "管樂器",
+ "bell": "鐘",
+ "bicycle_bell": "單車鈴",
+ "wind_chime": "風鈴",
+ "church_bell": "教堂鐘聲",
+ "chime": "鈴聲",
+ "tuning_fork": "音叉",
+ "jingle_bell": "鈴鐺",
+ "accordion": "手風琴",
+ "bagpipes": "風笛",
+ "didgeridoo": "迪吉里杜管",
+ "theremin": "特雷門琴",
+ "singing_bowl": "頌缽",
+ "scratching": "抓碟聲",
+ "pop_music": "流行音樂",
+ "hip_hop_music": "嘻哈音樂",
+ "harmonica": "口琴",
+ "beatboxing": "人聲節奏",
+ "country": "鄉村音樂",
+ "water": "水",
+ "scary_music": "恐怖音樂",
+ "music_of_asia": "亞洲音樂",
+ "dance_music": "舞曲",
+ "video_game_music": "電子遊戲音樂",
+ "thunderstorm": "雷雨",
+ "bluegrass": "藍草音樂",
+ "train_wheels_squealing": "火車車輪聲",
+ "techno": "電子舞曲",
+ "new-age_music": "新世紀音樂",
+ "background_music": "背景音樂",
+ "theme_music": "主題音樂",
+ "jingle": "鈴聲",
+ "bus": "巴士",
+ "emergency_vehicle": "緊急車輛",
+ "aircraft": "飛機",
+ "ice_cream_truck": "雪糕車",
+ "dubstep": "杜步音樂",
+ "aircraft_engine": "飛機引擎聲",
+ "funk": "放克音樂",
+ "lullaby": "搖籃曲",
+ "rain": "雨",
+ "happy_music": "快樂音樂",
+ "music_of_latin_america": "拉丁美洲音樂",
+ "soundtrack_music": "配樂",
+ "rock_music": "搖滾樂",
+ "rock_and_roll": "搖滾樂",
+ "psychedelic_rock": "迷幻搖滾",
+ "rhythm_and_blues": "節奏藍調",
+ "soul_music": "靈魂音樂",
+ "reggae": "雷鬼音樂",
+ "folk_music": "民謠音樂",
+ "middle_eastern_music": "中東音樂",
+ "jazz": "爵士樂",
+ "disco": "迪斯可音樂",
+ "classical_music": "古典音樂",
+ "opera": "歌劇",
+ "electronic_music": "電子音樂",
+ "house_music": "浩室音樂",
+ "electronic_dance_music": "電子舞曲",
+ "ambient_music": "環境音樂",
+ "trance_music": "迷幻音樂",
+ "salsa_music": "薩爾薩音樂",
+ "flamenco": "佛朗明哥",
+ "blues": "藍調音樂",
+ "music_for_children": "兒童音樂",
+ "vocal_music": "聲樂",
+ "a_capella": "無伴奏合唱",
+ "music_of_africa": "非洲音樂",
+ "afrobeat": "非洲節拍",
+ "christian_music": "基督教音樂",
+ "gospel_music": "福音音樂",
+ "music_of_bollywood": "寶萊塢音樂",
+ "ska": "斯卡音樂",
+ "traditional_music": "傳統音樂",
+ "independent_music": "獨立音樂",
+ "song": "歌曲",
+ "raindrop": "雨點聲",
+ "rain_on_surface": "雨打地面聲",
+ "stream": "小溪",
+ "waterfall": "瀑布",
+ "ocean": "海洋",
+ "waves": "波浪",
+ "steam": "蒸氣",
+ "gurgling": "咕嚕聲",
+ "fire": "火",
+ "crackle": "劈啪聲",
+ "vehicle": "車輛",
+ "boat": "船",
+ "sailboat": "帆船",
+ "rowboat": "划艇",
+ "motorboat": "機動船",
+ "ship": "船",
+ "motor_vehicle": "機動車",
+ "car": "車",
+ "toot": "汽車響咹聲",
+ "car_alarm": "汽車防盜器",
+ "power_windows": "電動車窗",
+ "skidding": "車胎打滑聲",
+ "tire_squeal": "車胎尖叫聲",
+ "car_passing_by": "車駛過聲",
+ "race_car": "賽車",
+ "truck": "貨車",
+ "air_brake": "煞車聲",
+ "air_horn": "空氣喇叭",
+ "police_car": "警車",
+ "ambulance": "救護車",
+ "fire_engine": "消防車",
+ "motorcycle": "電單車",
+ "rail_transport": "鐵路運輸",
+ "train_whistle": "火車汽笛聲",
+ "train_horn": "火車喇叭聲",
+ "railroad_car": "火車車廂",
+ "propeller": "螺旋槳",
+ "helicopter": "直升機",
+ "fixed-wing_aircraft": "固定翼飛機",
+ "bicycle": "單車",
+ "skateboard": "滑板",
+ "engine": "引擎",
+ "light_engine": "小型引擎",
+ "dental_drill's_drill": "牙科鑽機",
+ "lawn_mower": "剪草機",
+ "chainsaw": "電鋸",
+ "medium_engine": "中型引擎",
+ "heavy_engine": "大型引擎",
+ "engine_knocking": "引擎敲擊聲",
+ "engine_starting": "引擎啟動聲",
+ "idling": "引擎空轉聲",
+ "accelerating": "加速聲",
+ "door": "門",
+ "doorbell": "門鈴",
+ "ding-dong": "叮咚聲",
+ "sliding_door": "趟門",
+ "knock": "敲門",
+ "tap": "輕敲門",
+ "squeak": "吱吱聲",
+ "cupboard_open_or_close": "櫃門開關聲",
+ "drawer_open_or_close": "抽屜開關聲",
+ "dishes": "餐具聲",
+ "cutlery": "刀叉",
+ "chopping": "切菜聲",
+ "frying": "炒煮",
+ "microwave_oven": "微波爐",
+ "water_tap": "水龍頭",
+ "electric_toothbrush": "電動牙刷",
+ "vacuum_cleaner": "吸塵機",
+ "zipper": "拉鍊",
+ "keys_jangling": "鎖匙碰撞聲",
+ "coin": "硬幣",
+ "scissors": "剪刀",
+ "electric_shaver": "電鬚刨",
+ "shuffling_cards": "洗牌",
+ "typing": "打字",
+ "computer_keyboard": "電腦鍵盤",
+ "telephone": "電話",
+ "telephone_bell_ringing": "電話鈴聲",
+ "siren": "警報聲",
+ "steam_whistle": "蒸氣汽笛",
+ "mechanisms": "機械聲",
+ "ratchet": "棘輪聲",
+ "clock": "時鐘",
+ "tick": "滴答聲",
+ "tick-tock": "滴答滴答聲",
+ "sewing_machine": "衣車",
+ "mechanical_fan": "機械風扇",
+ "printer": "印表機",
+ "camera": "鏡頭",
+ "single-lens_reflex_camera": "單反相機",
+ "tools": "工具",
+ "hammer": "鎚仔",
+ "sawing": "鋸",
+ "filing": "銼",
+ "sanding": "打磨",
+ "power_tool": "電動工具",
+ "drill": "鑽",
+ "explosion": "爆炸",
+ "fusillade": "連環射擊",
+ "artillery_fire": "火砲",
+ "cap_gun": "玩具槍",
+ "fireworks": "煙花",
+ "firecracker": "炮仗",
+ "burst": "爆裂",
+ "eruption": "爆發",
+ "wood": "木頭",
+ "chop": "劈木聲",
+ "splinter": "木刺聲",
+ "crack": "裂聲",
+ "shatter": "破碎聲",
+ "silence": "寂靜",
+ "sound_effect": "音效",
+ "white_noise": "白噪音",
+ "pink_noise": "粉紅噪音",
+ "television": "電視",
+ "radio": "收音機",
+ "field_recording": "現場錄音",
+ "angry_music": "憤怒音樂",
+ "sad_music": "悲傷音樂",
+ "wind": "風",
+ "wind_noise": "風聲",
+ "drum_and_bass": "鼓和貝斯",
+ "wedding_music": "婚禮音樂",
+ "progressive_rock": "前衛搖滾",
+ "grunge": "垃圾搖滾",
+ "punk_rock": "朋克搖滾",
+ "christmas_music": "聖誕音樂",
+ "subway": "地鐵",
+ "thunder": "雷聲",
+ "carnatic_music": "卡納蒂克音樂",
+ "traffic_noise": "交通噪音",
+ "train": "火車",
+ "slam": "砰門聲",
+ "tender_music": "溫柔音樂",
+ "reversing_beeps": "倒車提示聲",
+ "heavy_metal": "重金屬音樂",
+ "jet_engine": "噴射機引擎聲",
+ "rustling_leaves": "樹葉沙沙聲",
+ "electronica": "電子樂",
+ "swing_music": "搖擺音樂",
+ "exciting_music": "刺激音樂",
+ "ringtone": "鈴聲",
+ "pulleys": "滑輪",
+ "jackhammer": "風鑽",
+ "writing": "寫作",
+ "toilet_flush": "沖廁",
+ "whistle": "哨子聲",
+ "gunshot": "槍聲",
+ "alarm_clock": "鬧鐘",
+ "dial_tone": "電話按號聲",
+ "boom": "轟隆",
+ "typewriter": "打字機",
+ "blender": "攪拌機",
+ "toothbrush": "牙刷",
+ "cash_register": "收銀機",
+ "civil_defense_siren": "民防警報",
+ "machine_gun": "機關槍",
+ "sink": "洗手盆",
+ "fire_alarm": "火警鐘",
+ "bathtub": "浴缸",
+ "busy_signal": "線路繁忙聲",
+ "smoke_detector": "煙霧偵測器",
+ "hair_dryer": "吹風機",
+ "alarm": "警報",
+ "gears": "齒輪",
+ "telephone_dialing": "電話撥號聲",
+ "foghorn": "霧號",
+ "buzzer": "蜂鳴器聲",
+ "air_conditioning": "冷氣機",
+ "glass": "玻璃",
+ "chink": "碰撞聲",
+ "environmental_noise": "環境噪音",
+ "static": "靜電聲",
+ "scream": "尖叫聲"
+}
diff --git a/web/public/locales/yue_Hant/components/auth.json b/web/public/locales/yue_Hant/components/auth.json
new file mode 100644
index 000000000..ebc3b8df7
--- /dev/null
+++ b/web/public/locales/yue_Hant/components/auth.json
@@ -0,0 +1,15 @@
+{
+ "form": {
+ "errors": {
+ "webUnknownError": "未知錯誤。請檢查控制台日誌。",
+ "rateLimit": "超過速率限制。請稍後再試。",
+ "usernameRequired": "必須填寫用戶名",
+ "passwordRequired": "必須填寫密碼",
+ "loginFailed": "登入失敗",
+ "unknownError": "未知錯誤。請檢查日誌。"
+ },
+ "user": "用戶名",
+ "password": "密碼",
+ "login": "登入"
+ }
+}
diff --git a/web/public/locales/yue_Hant/components/icons.json b/web/public/locales/yue_Hant/components/icons.json
new file mode 100644
index 000000000..467858b8d
--- /dev/null
+++ b/web/public/locales/yue_Hant/components/icons.json
@@ -0,0 +1,8 @@
+{
+ "iconPicker": {
+ "selectIcon": "選擇圖示",
+ "search": {
+ "placeholder": "搜尋圖示…"
+ }
+ }
+}
diff --git a/web/public/locales/yue_Hant/components/input.json b/web/public/locales/yue_Hant/components/input.json
new file mode 100644
index 000000000..ed7eee77c
--- /dev/null
+++ b/web/public/locales/yue_Hant/components/input.json
@@ -0,0 +1,10 @@
+{
+ "button": {
+ "downloadVideo": {
+ "label": "下載影片",
+ "toast": {
+ "success": "你的審查項目影片已開始下載。"
+ }
+ }
+ }
+}
diff --git a/web/public/locales/yue_Hant/objects.json b/web/public/locales/yue_Hant/objects.json
new file mode 100644
index 000000000..b0838d796
--- /dev/null
+++ b/web/public/locales/yue_Hant/objects.json
@@ -0,0 +1,120 @@
+{
+ "vehicle": "車輛",
+ "car": "車",
+ "boat": "船",
+ "bus": "巴士",
+ "motorcycle": "電單車",
+ "train": "火車",
+ "bicycle": "單車",
+ "skateboard": "滑板",
+ "door": "門",
+ "blender": "攪拌機",
+ "sink": "洗手盆",
+ "scissors": "剪刀",
+ "clock": "時鐘",
+ "toothbrush": "牙刷",
+ "hair_dryer": "吹風機",
+ "person": "人",
+ "airplane": "飛機",
+ "traffic_light": "紅綠燈",
+ "fire_hydrant": "消防栓",
+ "street_sign": "街道標誌",
+ "stop_sign": "停車標誌",
+ "parking_meter": "咪錶",
+ "bench": "長凳",
+ "bird": "鳥",
+ "cat": "貓",
+ "sheep": "羊",
+ "cow": "牛",
+ "elephant": "大象",
+ "bear": "熊",
+ "zebra": "斑馬",
+ "giraffe": "長頸鹿",
+ "backpack": "背囊",
+ "tie": "領呔",
+ "suitcase": "行李箱",
+ "frisbee": "飛碟",
+ "skis": "滑雪板",
+ "snowboard": "單板滑雪板",
+ "sports_ball": "運動球",
+ "kite": "風箏",
+ "baseball_bat": "棒球棍",
+ "baseball_glove": "棒球手套",
+ "surfboard": "衝浪板",
+ "tennis_racket": "網球拍",
+ "bottle": "樽",
+ "plate": "碟",
+ "wine_glass": "酒杯",
+ "cup": "杯",
+ "fork": "叉",
+ "bowl": "碗",
+ "banana": "香蕉",
+ "apple": "蘋果",
+ "sandwich": "三文治",
+ "orange": "橙",
+ "carrot": "紅蘿蔔",
+ "hot_dog": "熱狗",
+ "pizza": "薄餅",
+ "donut": "甜甜圈",
+ "cake": "蛋糕",
+ "chair": "凳",
+ "couch": "梳化",
+ "laptop": "手提電腦",
+ "mouse": "滑鼠",
+ "remote": "遙控器",
+ "keyboard": "鍵盤",
+ "cell_phone": "手機",
+ "microwave": "微波爐",
+ "oven": "焗爐",
+ "toaster": "多士爐",
+ "refrigerator": "雪櫃",
+ "book": "書",
+ "vase": "花瓶",
+ "teddy_bear": "泰迪熊",
+ "hair_brush": "梳",
+ "squirrel": "松鼠",
+ "deer": "鹿",
+ "animal": "動物",
+ "bark": "樹皮",
+ "fox": "狐狸",
+ "goat": "山羊",
+ "rabbit": "兔",
+ "raccoon": "浣熊",
+ "robot_lawnmower": "自動剪草機",
+ "waste_bin": "垃圾桶",
+ "license_plate": "車牌",
+ "bbq_grill": "燒烤爐",
+ "amazon": "亞馬遜",
+ "usps": "美國郵政",
+ "ups": "UPS",
+ "postnl": "荷蘭郵政",
+ "nzpost": "新西蘭郵政",
+ "postnord": "北歐郵政",
+ "gls": "GLS",
+ "dpd": "DPD",
+ "broccoli": "西蘭花",
+ "umbrella": "雨傘",
+ "eye_glasses": "眼鏡",
+ "dog": "狗",
+ "desk": "書枱",
+ "tv": "電視",
+ "horse": "馬",
+ "mirror": "鏡",
+ "spoon": "匙羹",
+ "hat": "帽",
+ "shoe": "鞋",
+ "potted_plant": "盆栽植物",
+ "fedex": "聯邦快遞",
+ "handbag": "手袋",
+ "dining_table": "飯枱",
+ "an_post": "愛爾蘭郵政",
+ "knife": "刀",
+ "window": "窗",
+ "bed": "床",
+ "toilet": "廁所",
+ "purolator": "Purolator",
+ "on_demand": "按需要提供",
+ "face": "人臉",
+ "package": "包裹",
+ "dhl": "DHL"
+}
diff --git a/web/public/locales/yue_Hant/views/configEditor.json b/web/public/locales/yue_Hant/views/configEditor.json
new file mode 100644
index 000000000..9e2836915
--- /dev/null
+++ b/web/public/locales/yue_Hant/views/configEditor.json
@@ -0,0 +1,15 @@
+{
+ "documentTitle": "設定編輯器 - Frigate",
+ "configEditor": "設定編輯器",
+ "copyConfig": "複製設定",
+ "saveAndRestart": "儲存並重新啟動",
+ "saveOnly": "只儲存",
+ "toast": {
+ "success": {
+ "copyToClipboard": "設定已複製到剪貼簿。"
+ },
+ "error": {
+ "savingError": "儲存設定時出錯"
+ }
+ }
+}
diff --git a/web/public/locales/yue_Hant/views/events.json b/web/public/locales/yue_Hant/views/events.json
new file mode 100644
index 000000000..1e1039c93
--- /dev/null
+++ b/web/public/locales/yue_Hant/views/events.json
@@ -0,0 +1,37 @@
+{
+ "camera": "鏡頭",
+ "alerts": "警報",
+ "empty": {
+ "alert": "沒有警報需要審查",
+ "detection": "沒有偵測到的項目需要審查",
+ "motion": "找不到移動數據"
+ },
+ "timeline": "時間線",
+ "events": {
+ "label": "事件",
+ "noFoundForTimePeriod": "此時段內沒有找到事件。",
+ "aria": "選擇事件"
+ },
+ "recordings": {
+ "documentTitle": "錄影 - Frigate"
+ },
+ "calendarFilter": {
+ "last24Hours": "過去24小時"
+ },
+ "markAsReviewed": "標記為已審查",
+ "markTheseItemsAsReviewed": "將這些項目標記為已審查",
+ "newReviewItems": {
+ "label": "查看新的審查項目",
+ "button": "有新的審查項目"
+ },
+ "selected_one": "已選擇 {{count}} 項",
+ "selected_other": "已選擇 {{count}} 項",
+ "allCameras": "所有鏡頭",
+ "documentTitle": "審查 - Frigate",
+ "motion": {
+ "only": "只顯示移動",
+ "label": "移動"
+ },
+ "detections": "偵測",
+ "timeline.aria": "選擇時間線"
+}
diff --git a/web/public/locales/yue_Hant/views/recording.json b/web/public/locales/yue_Hant/views/recording.json
new file mode 100644
index 000000000..34473d299
--- /dev/null
+++ b/web/public/locales/yue_Hant/views/recording.json
@@ -0,0 +1,12 @@
+{
+ "filter": "篩選",
+ "export": "匯出",
+ "calendar": "日曆",
+ "filters": "篩選條件",
+ "toast": {
+ "error": {
+ "noValidTimeSelected": "未選擇有效的時間範圍",
+ "endTimeMustAfterStartTime": "結束時間必須在開始時間之後"
+ }
+ }
+}