From 9fd3885e43594536e2a2ec1a7818e3fe2b3b61b4 Mon Sep 17 00:00:00 2001 From: "Chen, Ting-An" <73953029+nrps9909@users.noreply.github.com> Date: Fri, 28 Aug 2026 21:47:31 +0800 Subject: [PATCH] fix(i18n): complete Traditional Chinese space translations (#6241) --- web/src/locales/zh-Hant.json | 217 ++++++++++++++++++++++++++--------- 1 file changed, 161 insertions(+), 56 deletions(-) diff --git a/web/src/locales/zh-Hant.json b/web/src/locales/zh-Hant.json index 14105601..4ad4b068 100644 --- a/web/src/locales/zh-Hant.json +++ b/web/src/locales/zh-Hant.json @@ -202,7 +202,7 @@ "resize-sidebar": "調整側邊欄寬度", "resources": "檔案", "restore": "還原", - "role": "身份", + "role": "角色", "save": "儲存", "search": "搜尋", "select": "選擇", @@ -290,7 +290,7 @@ "audio-recorder": { "attachment-label": "錄音", "attachment-label-with-time": "錄音 {{time}}", - "configure-ai-provider": "請先配置 AI provider", + "configure-ai-provider": "請先設定 AI 服務供應商", "discard": "丟棄", "error": "麥克風不可用", "error-description": "檢查此網站的麥克風存取權限後重試。", @@ -436,7 +436,9 @@ "protected": "受保護", "protected-description": "已登入的使用者可見", "public": "公開", - "public-description": "所有人皆可見" + "public-description": "所有人皆可見", + "space": "空間", + "space-description": "此空間的成員可見" } }, "message": { @@ -564,58 +566,60 @@ "username-note": "用於登入" }, "ai": { - "add-provider": "新增 provider", - "api-key": "API key", - "api-key-required": "API key 不可為空。", - "byok-description": "使用你自己的 OpenAI 或 Gemini 帳號 API key。Memos 會從本實例伺服器直接呼叫 provider。", - "byok-key-note": "使用你在 provider 帳號中建立的 key;Memos 不提供共享 AI 憑證。", + "add-provider": "新增服務供應商", + "api-key": "API 金鑰", + "api-key-required": "API 金鑰不可為空。", + "byok-description": "使用你自己的 OpenAI 或 Gemini 帳號 API 金鑰。Memos 會從本實例伺服器直接呼叫服務供應商。", + "byok-key-note": "使用你在服務供應商帳號中建立的金鑰;Memos 不提供共享 AI 憑證。", "byok-label": "BYOK", "byok-model-note": "Memos 會為音訊轉寫等功能選擇內建支援的模型。", - "byok-storage-note": "Key 保存在本實例中,並在載入設定時進行遮罩處理。", + "byok-storage-note": "金鑰儲存在本實例中,並在載入設定時進行遮罩處理。", "byok-title": "使用你自己的 AI 帳號", "configured": "已設定", - "current-key": "目前 key:{{key}}", + "current-key": "目前金鑰:{{key}}", "default-endpoint": "預設端點", - "delete-provider": "刪除 AI provider `{{title}}`?", - "description": "Provider key 由實例擁有者提供,並用於伺服器端 AI 功能。", - "dialog-description": "新增你自己的 provider 帳號 key。Memos 會為每個 provider 使用內建模型;編輯時留空 API key 可保留已保存的 key。", - "edit-provider": "編輯 provider", + "delete-provider": "刪除 AI 服務供應商 `{{title}}`?", + "description": "服務供應商金鑰由實例擁有者提供,並用於伺服器端 AI 功能。", + "dialog-description": "新增你自己的服務供應商帳號金鑰。Memos 會為每個服務供應商使用內建模型;編輯時將 API 金鑰留空可保留已儲存的金鑰。", + "edit-provider": "編輯服務供應商", "endpoint": "端點", - "endpoint-hint": "留空則使用官方 provider 端點。", - "integrations-description": "Provider key 由實例擁有者提供,並用於伺服器端 AI 功能。", + "endpoint-hint": "留空則使用服務供應商的官方端點。", + "integrations-description": "服務供應商金鑰由實例擁有者提供,並用於伺服器端 AI 功能。", "integrations-title": "AI 整合", - "keep-api-key": "留空以保留已保存的 key", + "keep-api-key": "留空以保留已儲存的金鑰", "label": "AI", - "no-providers": "尚未設定 AI provider。", - "provider-title": "Provider 名稱", - "provider-title-required": "Provider 名稱不可為空。", - "provider-type": "Provider 類型", - "providers": "Providers", + "no-providers": "尚未設定 AI 服務供應商。", + "provider-title": "服務供應商名稱", + "provider-title-required": "服務供應商名稱不可為空。", + "provider-type": "服務供應商類型", + "providers": "服務供應商", "transcription-description": "在備忘錄編輯器中錄製音訊時使用的語音轉文字設定。", "transcription-empty-providers": "請先新增 AI 整合以啟用轉寫功能。", "transcription-language": "預設語言", "transcription-language-help": "ISO 639-1 短代碼(例如 en、de、zh)。留空則自動偵測。", "transcription-language-placeholder": "自動偵測", "transcription-model": "模型", - "transcription-model-help": "任意模型 id。使用 provider 的模型識別碼,例如 whisper-1、gpt-4o-transcribe、whisper-large-v3-turbo。", + "transcription-model-help": "任意模型 ID。使用服務供應商的模型識別碼,例如 whisper-1、gpt-4o-transcribe、whisper-large-v3-turbo。", "transcription-model-placeholder-gemini": "gemini-2.5-flash, gemini-2.5-pro", "transcription-model-placeholder-openai": "whisper-1, gpt-4o-transcribe, gpt-4o-mini-transcribe, gpt-4o-transcribe-diarize", "transcription-no-provider": "無 — 轉寫功能已停用", "transcription-prompt": "提示詞", "transcription-prompt-help": "改善專有名詞和行話的拼寫。OpenAI Whisper 將此視為軟性提示(Whisper 限制約 224 個 token)。Gemini 將此視為生成提示中的字面指令。", "transcription-prompt-placeholder": "名稱:Alice, Bob。詞彙表:kubernetes, OAuth。", - "transcription-provider": "Provider", + "transcription-provider": "服務供應商", "transcription-title": "轉寫", - "transcription-warning-no-key": "所選 provider 尚未設定 API key。請編輯上方的整合以新增。" + "transcription-warning-no-key": "所選服務供應商尚未設定 API 金鑰。請編輯上方的整合以新增。" }, "instance": { - "access-description": "控制此實例的註冊、身份驗證、個人檔案編輯和日曆預設值。", + "access-description": "控制此實例的註冊、身分驗證、個人檔案編輯和日曆預設值。", "access-title": "存取與政策", + "allow-public-access": "允許公開存取", + "allow-public-access-description": "允許未登入的訪客瀏覽公開備忘錄。停用此選項後,共享的備忘錄連結仍可使用。", "disallow-change-nickname-description": "防止使用者變更其顯示名稱。", "disallow-change-nickname": "禁止變更暱稱", "disallow-change-username-description": "防止使用者變更其登入帳號。", "disallow-change-username": "禁止變更使用者名稱", - "disallow-password-auth-description": "要求使用者透過身份提供者登入,而非使用密碼登入。", + "disallow-password-auth-description": "要求使用者透過身分識別提供者登入,而非使用密碼登入。", "disallow-password-auth": "禁止使用密碼登入", "disallow-user-registration-description": "防止新使用者從註冊頁面建立帳號。", "disallow-user-registration": "禁止使用者註冊", @@ -652,6 +656,8 @@ "configured-reactions": "已設定的表情回應", "content-length-limit": "內容長度限制(位元組)", "content-length-limit-description": "伺服器接受的備忘錄內容最大長度。", + "content-length-limit-error": "內容長度限制必須是介於 {{min}} 到 {{max}} 位元組之間的整數。", + "content-length-limit-minimum": "最小值:{{min}} 位元組", "double-click-edit-description": "允許使用者雙擊備忘錄以開啟編輯。", "editing-description": "控制備忘錄編輯行為和伺服器端內容限制。", "editing-title": "編輯", @@ -692,7 +698,7 @@ "smtp-password-placeholder-existing": "留空以保留目前密碼", "smtp-password-preserve-description": "留空以保留現有 SMTP 密碼。僅在更換憑證時輸入新的應用程式密碼。", "smtp-port": "SMTP 連接埠", - "smtp-port-description": "Gmail 及大多數 provider 請使用 587 搭配 STARTTLS。僅在啟用 SSL/TLS 時使用 465。", + "smtp-port-description": "Gmail 及大多數服務供應商請使用 587 搭配 STARTTLS。僅在啟用 SSL/TLS 時使用 465。", "smtp-username": "SMTP 使用者名稱", "smtp-username-description": "驗證用使用者名稱。Gmail 需使用完整的 Gmail 地址。", "test-email": "傳送測試郵件", @@ -727,32 +733,32 @@ }, "sso": { "account": "帳號", - "accounts-description": "檢視每個身份提供者、查看目前的連結狀態,並從此帳號連接或斷開外部身份。", + "accounts-description": "檢視每個身分識別提供者、查看目前的連結狀態,並從此帳號連接或斷開外部身分。", "accounts-title": "SSO 帳號", - "authorization-endpoint": "驗證端點(Authorization Endpoint)", + "authorization-endpoint": "授權端點(Authorization Endpoint)", "avatar-url": "頭像 URL", "basic-settings": "基本設定", - "basic-settings-description": "在填寫 OAuth 詳細資料之前,設定 provider 身份、顯示名稱及可選的識別碼規則。", - "client-id": "客戶端 ID(Client ID)", + "basic-settings-description": "在填寫 OAuth 詳細資料之前,設定身分識別提供者、顯示名稱及選用的識別碼規則。", + "client-id": "用戶端 ID(Client ID)", "client-secret": "客戶端金鑰(Client Secret)", "client-secret-optional-description": "留空以保留現有的客戶端金鑰不變。", - "configuration": "配置", - "configuration-summary-description": "顯示有助於識別和稽核 provider 的基本資訊,而不會內嵌揭露完整配置。", - "confirm-delete": "您確定要刪除 `{{name}}` 的單點登錄 (SSO) 配置嗎?此操作無法恢復。", + "configuration": "設定", + "configuration-summary-description": "顯示有助於識別和稽核身分識別提供者的基本資訊,而不會內嵌揭露完整設定。", + "confirm-delete": "您確定要刪除 `{{name}}` 的單一登入(SSO)設定嗎?此操作無法復原。", "create-sso": "新增 SSO", - "create-sso-description": "為管理員管理的單一登入建立新的身份提供者。", + "create-sso-description": "為管理員管理的單一登入建立新的身分識別提供者。", "custom": "自訂", "delete-sso": "確認刪除", - "disabled-password-login-warning": "已停用密碼登入,删除身份提供程式時,請格外小心", + "disabled-password-login-warning": "已停用密碼登入,刪除身分識別提供者時請格外小心", "endpoints": "端點", "display-name": "顯示名稱", "extern-uid": "外部 ID", - "extern-uid-description": "這是目前連結至您帳號的 provider 端身份標識。", + "extern-uid-description": "這是目前連結至您帳號的身分識別提供者端識別資訊。", "filter-disabled": "已停用", "identifier": "識別碼(Identifier)", "identifier-filter": "識別碼篩選(Identifier Filter)", "identifier-filter-description": "可選的正規表示式,用於允許或限制哪些外部識別碼可以登入。", - "field-mapping": "聲明對應", + "field-mapping": "欄位對應", "field-mapping-description": "對應上游個人檔案欄位,以識別使用者並預填個人檔案資料。", "field-mapping-identifier-description": "在登入或連結帳號時作為穩定的外部識別碼使用。", "linked": "已連結", @@ -761,35 +767,116 @@ "mapping-avatar-short": "頭像", "mapping-display-name-short": "名稱", "mapping-email-short": "信箱", - "mapping-identifier-short": "id", + "mapping-identifier-short": "ID", "mapping-none": "未設定", "no-sso-found": "未設定 SSO", "not-linked": "未連結", - "not-linked-description": "尚未連結外部身份。您可以連接此 provider 以便日後使用它登入。", - "oauth-configuration": "OAuth 配置", - "oauth-configuration-description": "填寫 OAuth 客戶端憑證及登入時使用的 provider 端點。", - "provider": "Provider", - "provider-id": "Provider ID", - "provider-id-description": "僅限小寫字母、數字和連字號。此值將成為 provider 資源名稱的一部分。", + "not-linked-description": "尚未連結外部身分。您可以連接此身分識別提供者,以便日後使用它登入。", + "oauth-configuration": "OAuth 設定", + "oauth-configuration-description": "填寫 OAuth 用戶端憑證及登入時使用的身分識別提供者端點。", + "provider": "身分識別提供者", + "provider-id": "提供者 ID", + "provider-id-description": "僅限小寫字母、數字和連字號。此值將成為身分識別提供者資源名稱的一部分。", "provider-uid": "UID", "redirect-url": "重新導向 URL", - "redirect-url-description": "向您的身份提供者註冊此 callback URL,以便完成授權碼流程。", + "redirect-url-description": "向您的身分識別提供者註冊此回呼 URL,以便完成授權碼流程。", "scope-count_one": "{{count}} 個範圍", "scope-count_other": "{{count}} 個範圍", "scopes": "範圍", - "scopes-description": "以空格分隔範圍。大多數 provider 只需要一小組範圍,例如 profile 或 email 存取。", - "single-sign-on": "設定單一登入 SSO 進行身份驗證", + "scopes-description": "以空格分隔範圍。大多數身分識別提供者只需要少數範圍,例如個人檔案或電子郵件存取權。", + "single-sign-on": "設定單一登入 SSO 進行身分驗證", "sso-created": "SSO {{name}} 新增成功", "sso-list": "SSO 列表", "sso-updated": "SSO {{name}} 更新成功", "template": "範本", - "template-description": "從 provider 預設範本開始,然後調整您的租戶適用的憑證和端點。", + "template-description": "從身分識別提供者的預設範本開始,再調整適用於您租戶的憑證和端點。", "unlink-success": "已取消連結 {{name}}。", "token-endpoint": "權杖端點(Token Endpoint)", "update-sso": "更新 SSO", - "update-sso-description": "檢視 provider 配置,然後儲存需要變更的欄位。", + "update-sso-description": "檢視身分識別提供者設定,然後儲存需要變更的欄位。", "user-endpoint": "使用者端點(User Endpoint)" }, + "spaces": { + "accept": "接受", + "accept-success": "你已接受邀請並加入 {{space}}。", + "active-user": "有效的 Memos 使用者", + "admin-role-description": "可以編輯此空間、邀請使用者及管理成員。", + "already-invited": "已有待處理的邀請", + "already-member": "已是成員", + "cancel-invitation": "取消邀請", + "cancel-invitation-confirm-description": "該使用者將無法再接受此邀請。你之後仍可再次邀請對方。", + "cancel-invitation-confirm-title": "要取消給 @{{username}} 的邀請嗎?", + "cancel-invitation-success": "已取消邀請。", + "change-role": "變更 @{{username}} 的角色", + "create-scope-note": "你將成為第一位管理員。在此建立空間不會變更目前的瀏覽範圍。", + "create-space": "建立空間", + "decline": "拒絕", + "decline-success": "已拒絕邀請。", + "delete-confirm-description": "這會永久刪除此空間及其中的備忘錄。此操作無法復原。", + "delete-confirm-title": "要刪除 {{space}} 嗎?", + "delete-description": "永久刪除此空間及其中的備忘錄。", + "delete-space": "刪除空間", + "delete-success": "已刪除 {{space}}。", + "description": "查看你所屬的空間,並管理成員與邀請。", + "description-help": "說明此空間的用途。", + "general": "一般", + "invitation-pending": "邀請待處理", + "invitations": "邀請", + "invite-description": "邀請現有的 Memos 使用者。對方必須接受邀請後才能加入空間。", + "invite-member": "邀請成員", + "invite-success": "已將邀請傳送給 @{{username}}。", + "invite-to": "邀請加入 {{space}}", + "invite-yourself": "這是你", + "invited-to-join": "你已受邀加入此空間。", + "label": "空間", + "last-admin-leave-description": "離開前請先指派另一位空間管理員。", + "leave": "離開", + "leave-confirm-description": "你將無法再存取此空間中的備忘錄與附件。", + "leave-confirm-title": "要離開 {{space}} 嗎?", + "leave-description": "你將無法再存取其中的備忘錄與附件。", + "leave-space": "離開空間", + "leave-success": "你已離開 {{space}}。", + "load-error": "無法載入你的空間。", + "loading": "正在載入空間...", + "loading-invitations": "正在載入邀請...", + "loading-members": "正在載入成員...", + "manage-space": "管理 {{space}}", + "member-count": "{{count}} 位成員", + "members": "成員", + "members-count": "{{count}} 位成員", + "members-description": "可以查看此空間並在其中貢獻內容的人。", + "members-load-error": "無法載入成員。", + "memos-user": "Memos 使用者", + "no-description": "尚無說明。", + "no-pending-invitations": "沒有待處理的邀請。", + "no-spaces": "尚無空間", + "no-spaces-description": "建立供備忘錄與成員共用的空間。在此建立空間不會變更目前的瀏覽範圍。", + "pending-count": "{{count}} 個待處理項目", + "pending-invitations": "待處理的邀請", + "remove": "移除", + "remove-confirm-description": "對方將無法再存取此空間中的備忘錄與附件。", + "remove-confirm-title": "要將 @{{username}} 從此空間移除嗎?", + "remove-success": "已將 @{{username}} 從此空間移除。", + "role-in-space": "此空間中的角色", + "role-update-success": "已更新成員角色。", + "save-changes": "儲存變更", + "save-success": "已儲存空間詳細資料。", + "search-user-placeholder": "以完整使用者名稱搜尋", + "send-invitation": "傳送邀請", + "space-admin": "空間管理員", + "space-count": "{{count}} 個空間", + "space-details": "空間詳細資料", + "space-details-description": "此空間中的所有人都能看到這些詳細資料。", + "space-user": "空間使用者", + "spaces-count": "{{count}} 個空間", + "title": "空間", + "untitled": "未命名空間", + "user-not-found": "找不到使用者名稱為 @{{username}} 的有效 Memos 使用者。", + "user-role-description": "可以查看此空間並在其中貢獻內容。", + "you": "你", + "your-access": "你的存取權限", + "your-spaces": "你的空間" + }, "storage": { "accesskey": "存取金鑰(Access key)", "accesskey-description": "儲存桶或 S3 相容服務的存取金鑰 ID。", @@ -822,9 +909,9 @@ "path-description": "您可以使用與本機儲存空間相同的動態變數,如 {filename}", "path-placeholder": "自訂路徑", "region": "地區", - "region-description": "Provider 所需的地區。對於某些相容服務,任何 provider 接受的地區字串即可。", + "region-description": "服務供應商所需的地區。對於某些相容服務,任何服務供應商接受的地區字串即可。", "region-placeholder": "地區名稱", - "s3-configuration": "S3 配置", + "s3-configuration": "S3 設定", "s3-configuration-description": "為新附件設定 S3 相容儲存桶。", "s3-description": "將新附件儲存在 S3 相容的物件儲存服務中。", "s3-note-config": "需要有效的端點、地區、儲存桶、憑證、權限和伺服器網路存取。", @@ -859,7 +946,7 @@ "additional-style-description": "在網頁應用程式中注入 CSS 以調整實例範圍的呈現方式。", "additional-style-placeholder": "自訂 CSS 代碼", "allow-user-signup": "允許使用者註冊", - "basic-description": "設定此實例顯示的公開身份資訊。", + "basic-description": "設定此實例顯示的公開身分資訊。", "customize-server": { "description": "說明", "icon-url": "圖示網址", @@ -870,7 +957,7 @@ "custom-code-title": "自訂代碼", "disable-password-login": "停用密碼登入", "disable-password-login-final-warning": "如果您知道自己在做什麼,請輸入 `CONFIRM`。", - "disable-password-login-warning": "所有使用者將無法使用密碼登入。如果設定的身份識別提供者失效,不在資料庫中恢復此設定將無法登入。刪除身分識別提供者時也要特別小心❗", + "disable-password-login-warning": "所有使用者將無法使用密碼登入。如果設定的身分識別提供者失效,不在資料庫中恢復此設定將無法登入。刪除身分識別提供者時也要特別小心❗", "display-with-updated-time": "顯示更新時間", "enable-auto-compact": "啟用摺疊顯示", "enable-double-click-to-edit": "啟用雙擊編輯", @@ -922,7 +1009,7 @@ "configured-rules": "已設定的規則", "default-color": "預設", "matching-rule": "錨定正規表示式", - "no-tags-configured": "未配置標籤元資料。", + "no-tags-configured": "尚未設定標籤中繼資料。", "tag-name": "標籤名稱", "tag-name-placeholder": "例如工作或project/.*", "tag-already-exists": "標籤已經存在。", @@ -950,6 +1037,24 @@ "load-error": "載入統計資料失敗" } }, + "space": { + "create": "建立空間", + "create-description": "建立供備忘錄與成員共用的空間。", + "create-success": "已建立空間", + "creator-admin-note": "你將成為第一位管理員。", + "current": "空間", + "custom-id-conflict": "此空間 UID 已被使用。", + "custom-id-help": "用於連結與 API 請求,之後無法變更。請使用 1 至 36 個 ASCII 字母、數字或連字號,且開頭與結尾不得為連字號。", + "custom-id-invalid": "請使用 1 至 36 個 ASCII 字母、數字或連字號,且開頭與結尾不得為連字號。", + "custom-id-label": "空間 UID", + "custom-id-toggle": "自訂空間 UID", + "description-placeholder": "此空間的用途是什麼?", + "load-error": "無法載入空間", + "loading": "正在載入空間…", + "name-placeholder": "例如:產品", + "spaces": "空間", + "switch": "切換空間" + }, "tag": { "all-tags": "所有標籤", "create-tag": "建立標籤",