From 5b4225f6ff82f86285e570fa8ae1bb232d9e4b37 Mon Sep 17 00:00:00 2001 From: eugenechang1 <30685498+eugenetwtw@users.noreply.github.com> Date: Tue, 28 Jul 2026 14:33:54 +0800 Subject: [PATCH 01/11] Register zh-TW UI locale --- src/i18n/types.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/i18n/types.ts b/src/i18n/types.ts index eaffaba..ea9f7a6 100644 --- a/src/i18n/types.ts +++ b/src/i18n/types.ts @@ -1,13 +1,14 @@ import type { Dict, MessageKey } from "./locales/en"; /** BCP-47 UI locales. Add a locale here, then register its dictionary in messages.ts. */ -export type Locale = "en" | "zh-CN" | "ja"; +export type Locale = "en" | "zh-CN" | "zh-TW" | "ja"; export type UiLocale = Locale; -export const LOCALES: Locale[] = ["en", "zh-CN", "ja"]; +export const LOCALES: Locale[] = ["en", "zh-CN", "zh-TW", "ja"]; export const LOCALE_LABEL: Record = { en: "English", "zh-CN": "简体中文", + "zh-TW": "繁體中文", ja: "日本語", }; From 4d832711f9b33dac4267baab616fb7f0b41b4f79 Mon Sep 17 00:00:00 2001 From: eugenechang1 <30685498+eugenetwtw@users.noreply.github.com> Date: Tue, 28 Jul 2026 14:41:00 +0800 Subject: [PATCH 02/11] Add zh-TW dictionary --- src/i18n/locales/zh-TW.ts | 982 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 982 insertions(+) create mode 100644 src/i18n/locales/zh-TW.ts diff --git a/src/i18n/locales/zh-TW.ts b/src/i18n/locales/zh-TW.ts new file mode 100644 index 0000000..9365dfa --- /dev/null +++ b/src/i18n/locales/zh-TW.ts @@ -0,0 +1,982 @@ +import { en, type Dict } from "./en"; + +export const zhTW: Dict = { + ...en, + "settings.open": "開啟設定", + "settings.title": "設定", + "settings.language": "介面語言", + "settings.languageHelp": "應用於 Codex Slides 的所有介面文案", + "settings.zh": "中文", + "settings.en": "English", + "settings.ja": "日本語", + "settings.close": "關閉設定", + "settings.codex": "Codex 連接", + "settings.codexHelp": "識別本地 Codex,或在桌面端使用", + "codexSetup.title": "連接 Codex", + "codexSetup.subtitle": "由 Codex 撰寫文案並繪製每一頁投影片 —— 零配置。", + "codexSetup.close": "關閉", + "codexSetup.detecting": "正在識別本地 Codex…", + "codexSetup.redetect": "重新識別", + "codexSetup.readyTitle": "本地 Codex 已就緒", + "codexSetup.readyBody": "已偵測到你的 ChatGPT 登入,可以直接開始生成。", + "codexSetup.notReadyTitle": "尚未發現本地 Codex", + "codexSetup.notReadyBody": "在本機登入,或在 Codex 桌面端 App 中使用 Codex Slides。", + "codexSetup.tokenLabel": "ChatGPT 登入", + "codexSetup.tokenReady": "已登入", + "codexSetup.tokenMissing": "未登入", + "codexSetup.cliLabel": "Codex CLI", + "codexSetup.cliReady": "已在 PATH 中", + "codexSetup.cliMissing": "不在 PATH 中", + "codexSetup.optionLocalTitle": "使用本地 Codex", + "codexSetup.optionLocalBody": "用 Codex CLI 登入一次,即可在此生成。", + "codexSetup.optionLocalCta": "使用此 Codex", + "codexSetup.optionLocalStep": "在終端執行以下命令,然後重新識別:", + "codexSetup.optionDesktopTitle": "使用 Codex 桌面端", + "codexSetup.optionDesktopBody": "在 Codex 桌面端 App 中開啟 Codex Slides —— 自帶 Agent。", + "codexSetup.optionDesktopHere": "你正在 Codex 桌面端 App 中 —— 內置 Agent 已就緒。", + "codexSetup.optionDesktopBadge": "執行於桌面端", + "codexSetup.capabilitiesTitle": "Codex 在這裡提供的核心能力", + "codexSetup.capAgent": "Agent 編排", + "codexSetup.capAgentBody": "規劃大綱並撰寫每一頁文案。", + "codexSetup.capImage": "生圖", + "codexSetup.capImageBody": "將每一頁繪製為圖像 —— 每頁一次呼叫。", + "codexSetup.capResearch": "深度研究", + "codexSetup.capResearchBody": "抓取實時來源,讓內容有據可依。", + "codexSetup.capExport": "編輯與匯出", + "codexSetup.capExportBody": "用 Mark 精修,再匯出 PPTX 與 PDF。", + "codexSetup.skip": "暫時跳過", + "codexSetup.copy": "複製", + "codexSetup.copied": "已複製", + "codexSetup.openEntry": "Codex 設定", + "topbar.backProjects": "返回專案", + "topbar.moreActions": "更多", + "topbar.moreActionsHelp": "更多專案操作", + "home.badge": "✧ 零配置", + "home.tagline": "本地 Codex 負責撰寫文案並繪製投影片", + "home.title": "今天想做什麼簡報?", + "scenario.quickLabel": "選擇一個簡報場景開始", + "scenario.all": "全部場景", + "scenario.dialogTitle": "從一個場景開始", + "scenario.dialogSubtitle": "{{count}} 種簡報工作流,已配好任務上下文與推薦材料。", + "scenario.close": "關閉場景庫", + "scenario.search": "搜尋匯報、資料、研究、美化……", + "scenario.clearSearch": "清空搜尋", + "scenario.groupLabel": "場景分類", + "scenario.allGroup": "全部場景", + "scenario.resultCount": "{{count}} 個工作流", + "scenario.output": "產出", + "scenario.noResults": "沒有匹配的場景", + "scenario.noResultsHelp": "換一個任務、材料類型或產出試試。", + "scenario.context": "場景", + "scenario.expectedOutput": "預設產出", + "scenario.suggestedMaterial": "建議補充上下文", + "scenario.required": "必需", + "scenario.optional": "可選", + "scenario.added": "已新增", + "scenario.addMaterial": "新增{{name}}", + "scenario.missingMaterial": "請先補齊必需的上下文材料。", + "composer.placeholder": "描述你想製作的簡報", + "composer.addOptions": "新增材料或選項", + "composer.addFiles": "新增圖片或檔案", + "composer.dropFiles": "拖入檔案以新增上下文", + "composer.dropFilesHelp": "發送後會儲存到 Design Files", + "composer.dropIntoSlot": "拖入這個上下文槽位", + "composer.dropIntoSlotHelp": "Agent 會按這個角色使用檔案", + "composer.research": "深度研究", + "composer.fast": "快速模式", + "composer.fastValue": "並行生成", + "composer.fastOn": "所有頁面並行生成,超出的自動排隊", + "composer.fastOff": "並行生成所有頁面,更快看到初稿", + "composer.fastHelp": "同時繪製多個頁面,而不是逐頁生成", + "composer.outputType": "輸出類型", + "composer.slides": "投影片", + "composer.engine": "編排引擎", + "composer.unavailable": "不可用", + "composer.quality": "畫質", + "composer.aspect": "畫面比例", + "composer.auto": "自動", + "composer.high": "高", + "composer.medium": "中", + "composer.low": "低", + "composer.qualityTip.auto": "預設使用 2K,適合大多數簡報,兼顧清晰度與速度", + "composer.qualityTip.high": "4K,適合大屏展示、高清匯出和精細畫面,生成較慢", + "composer.qualityTip.medium": "2K,適合日常簡報,清晰度與生成速度均衡", + "composer.qualityTip.low": "1K,適合快速草稿和預覽,生成最快", + "composer.aspectTip.auto": "預設採用 16:9,適合絕大多數通用簡報場景", + "composer.aspectTip.16x9": "適合現代顯示器、電視和投影儀的寬螢幕簡報", + "composer.aspectTip.9x16": "適合手機、Stories 和短影片的直式內容", + "composer.aspectTip.4x3": "適合傳統投影儀、教室螢幕和舊版簡報", + "composer.aspectTip.3x4": "適合豎版報告、海報和文件式簡報", + "composer.aspectTip.1x1": "適合社群媒體方圖、卡片和跨平台視覺", + "composer.voiceSoon": "語音輸入(即將支援)", + "composer.generateHint": "生成(回車發送 · Shift+回車換行)", + "composer.design": "設計", + "community.title": "✦ 社區靈感", + "community.subtitle": "從成熟方向或社區風格開始", + "community.all": "全部", + "community.forYou": "為你推薦", + "community.group.businessReport": "商業與報告", + "community.group.infographic": "訊息圖", + "community.group.diagram": "圖解", + "community.group.dataMap": "資料與地圖", + "community.group.uiDashboard": "UI 與儀表板", + "community.group.posterAd": "海報與廣告", + "community.group.product": "產品", + "community.group.brandIdentity": "品牌與視覺識別", + "community.group.architectureSpace": "建築與空間", + "community.group.photoCinematic": "攝影與電影感", + "community.group.editorial": "編輯設計", + "community.group.illustration": "插畫", + "community.browseCount": "瀏覽全部 {{count}} 個", + "community.filter": "按風格分組篩選", + "community.scrollLeft": "向左捲動", + "community.scrollRight": "向右捲動", + "projects.title": "專案", + "projects.subtitle": "繼續上次的創作", + "projects.countOne": "{{count}} 個專案", + "projects.countMany": "{{count}} 個專案", + "projects.loading": "正在載入專案", + "projects.open": "開啟 {{title}}", + "projects.noPreview": "暫無預覽", + "projects.slides": "{{rendered}}/{{total}} 頁", + "projects.stageClarify": "需求確認中", + "projects.stageResearch": "正在深度調研", + "projects.stageOutlining": "正在生成大綱", + "projects.stageOutline": "大綱待繼續", + "projects.stageInspire": "待選擇視覺方向", + "projects.stageRendering": "{{rendered}}/{{total}} 頁 · 生成已暫停", + "projects.emptyTitle": "你的專案會顯示在這裡", + "projects.emptyBody": "在上方描述一個簡報主題,建立第一個專案。", + "projects.noSearchResults": "沒有匹配的專案。", + "library.title": "專案庫", + "library.searchProjects": "搜尋專案", + "library.clearSearch": "清空搜尋", + "projectTemplates.title": "範本", + "projectTemplates.context": "專案範本", + "projectTemplates.search": "搜尋範本", + "projectTemplates.none": "不使用範本", + "projectTemplates.noneHelp": "按目前需求與已選視覺風格開始", + "projectTemplates.pickerTitle": "專案範本", + "projectTemplates.pickerHelp": "複用已儲存專案的品牌、風格與視覺參考", + "projectTemplates.emptyPicker": "還沒有儲存過專案範本。", + "projectTemplates.emptyTitle": "把專案儲存為範本", + "projectTemplates.emptyBody": "開啟任意專案並選擇“儲存為範本”,其品牌體系、風格和視覺參考會出現在這裡。", + "projectTemplates.noMatch": "沒有匹配的範本。", + "projectTemplates.references": "{{count}} 張視覺參考", + "projectTemplates.fromProject": "來自 {{name}}", + "projectTemplates.selected": "已選擇", + "projectTemplates.use": "使用範本", + "projectTemplates.inUse": "使用中", + "projectTemplates.deleteNamed": "刪除 {{name}}", + "projectTemplates.deleteConfirm": "刪除範本“{{name}}”?已經使用它建立的專案不會受影響。", + "projectTemplates.deleteFailed": "範本刪除失敗。", + "projectTemplates.saveButton": "儲存為範本", + "projectTemplates.saveHelp": "把目前專案的品牌、風格與視覺參考儲存為可複用範本", + "projectTemplates.saveTitle": "把專案儲存為範本", + "projectTemplates.saveSubtitle": "之後可直接在首頁輸入框中選擇並複用。", + "projectTemplates.name": "範本名稱", + "projectTemplates.description": "使用說明", + "projectTemplates.descriptionPlaceholder": "這個視覺體系適合在什麼場景使用?", + "projectTemplates.savedContents": "會儲存品牌設計體系、基礎風格、畫面比例、品牌資產,以及最多 6 張已生成頁面作為視覺參考;不會複製原專案內容。", + "projectTemplates.save": "儲存範本", + "projectTemplates.saved": "範本已儲存", + "projectTemplates.saveFailed": "範本儲存失敗。", + "time.justNow": "剛剛", + "time.minutesAgo": "{{count}} 分鐘前", + "time.hoursAgo": "{{count}} 小時前", + "time.daysAgo": "{{count}} 天前", + "onboard.title": "✦ 快速確認幾個問題", + "onboard.customInput": "自定義輸入…", + "onboard.referenceImage": "參考圖", + "onboard.referenceImageHelp": "新增參考圖(用於生成)", + "onboard.uploading": "上傳中…", + "onboard.removeImage": "移除 {{name}}", + "onboard.imageCount": "📎 {{count}} 張參考圖", + "onboard.skip": "跳過", + "onboard.apply": "應用並生成簡報", + "onboard.confirmOutline": "確認,開始寫大綱 →", + "onboard.stageTitle": "先確認幾個問題", + "onboard.step": "第 1 步 · 明確需求", + "onboard.preparing": "正在根據你的主題準備問題…", + "chat.deckAgent": "簡報助手", + "chat.working": "處理中", + "chat.backgroundRunning": "後台執行", + "chat.backgroundStopping": "正在終止", + "chat.stopBackgroundRun": "終止後台任務", + "chat.expand": "展開對話面板", + "chat.collapse": "收起對話面板", + "chat.expandTitle": "展開對話", + "chat.collapseTitle": "收起對話", + "chat.queued": "已排隊", + "chat.queuedHelp": "已排隊,將在目前任務結束後執行", + "chat.queuePlaceholder": "繼續輸入要求;目前任務結束後會自動執行…", + "chat.queueRegion": "待執行佇列", + "chat.queueCount": "{{count}} 條已排隊", + "chat.queueToSend": "待發送", + "chat.queueReorder": "拖動調整順序", + "chat.queueEdit": "編輯排隊內容", + "chat.queuePrioritize": "下一條優先執行", + "chat.queueDelete": "刪除排隊內容", + "chat.queueEditing": "正在編輯排隊內容", + "chat.queueCancelEdit": "取消", + "chat.queueSaveEdit": "儲存排隊內容", + "chat.queueEditingPlaceholder": "可修改文字、圖片、檔案或頁面上下文,完成後儲存…", + "chat.queueImages": "{{count}} 張圖片", + "chat.queueFiles": "{{count}} 個檔案", + "chat.queueDesignFiles": "{{count}} 個 Design File", + "chat.queueSlide": "第 {{index}} 頁", + "chat.queueAttachmentOnly": "僅附件請求", + "chat.queueMore": "+{{count}} 條更多內容", + "chat.slidePlaceholder": "詢問第 {{index}} 頁,例如“在這頁後補一頁”", + "chat.defaultPlaceholder": "告訴簡報助手要新增、改寫、換風格或優化什麼…", + "chat.addFiles": "新增圖片或檔案", + "chat.queue": "加入佇列", + "chat.send": "發送", + "chat.scrollToBottom": "回到最新消息", + "chat.removeSlideContext": "移除第 {{index}} 頁上下文", + "chat.useAttachments": "請使用這些附件作為簡報的上下文。", + "chat.useDesignFiles": "請使用引用的 Design Files 作為簡報上下文。", + "chat.mentionDesignFile": "引用 Design File", + "chat.mentionPicker": "使用 @ 新增上下文", + "chat.contextSources": "上下文來源", + "chat.allContext": "全部", + "chat.designFilesSection": "Design Files", + "chat.filteredFileCount": "匹配 {{count}} 個", + "chat.contextSelected": "已選擇", + "chat.noMatchingDesignFiles": "沒有匹配的 Design Files", + "chat.mentionPickerHelp": "輸入篩選 · ↑↓ 選擇 · Enter 引用 · Esc 關閉", + "chat.referencedDesignFiles": "已引用的 Design Files", + "chat.openReferencedFile": "在 Design Files 中開啟 {{name}}", + "chat.removeReferencedFile": "從本輪移除 {{name}}", + "chat.openFile": "開啟檔案", + "chat.slide": "第 {{index}} 頁", + "chat.previewSlide": "預覽第 {{index}} 頁", + "chat.goToSlide": "定位到第 {{index}} 頁", + "chat.toolCalls": "工具呼叫", + "chat.stateWorking": "處理中", + "chat.stateDone": "完成", + "chat.stateStopped": "已停止", + "chat.toolRunning": "執行中", + "chat.toolDone": "完成", + "chat.toolFailed": "失敗", + "chat.toolWaiting": "等待中", + "chat.inspiration": "視覺參考靈感", + "chat.inspirationChosen": "已選:{{name}}", + "chat.customStyle": "自定義風格", + "chat.inspirationSkipped": "已跳過 · 使用預設風格", + "chat.inspirationMatches": "{{count}} 個風格 · 匹配「{{query}}」", + "chat.browse": "瀏覽", + "chat.skip": "跳過", + "chat.answerDone": "已完成", + "chat.tasks": "任務", + "chat.tasksProgress": "已完成 {{done}} / {{total}}", + "chat.estimatedCost": "服務商未返回費用,按可見回答估算", + "chat.reportedCost": "服務商返回的生成費用", + "chat.costEstimate": "{{cost}}", + "chat.estimatedTokens": "由於服務商未返回用量,按可見回答估算", + "chat.reportedTokens": "服務商返回的輸出 token", + "chat.outputTokens": "{{count}} 輸出 token", + "chat.totalTokens": "{{count}} 總 token", + "chat.reportedTotalTokens": "服務商返回的總 token", + "chat.answerCopied": "回答已複製", + "chat.copyAnswer": "複製回答", + "chat.copied": "已複製", + "chat.progress": "簡報進度", + "chat.progressStep": "第 {{current}} / {{total}} 步", + "chat.progressPages": "已完成 {{done}} / {{total}} 頁", + "chat.viewOutline": "查看大綱", + "chat.outlineLabel": "{{title}} 的大綱", + "chat.closeOutline": "關閉大綱預覽", + "chat.noPoints": "暫無要點", + "chat.previewAgain": "再次預覽", + "chat.currentInspiration": "目前簡報採用的視覺參考", + "chat.manageConversations": "管理會話", + "chat.conversations": "會話", + "chat.newConversation": "新建", + "chat.searchConversations": "搜尋會話", + "chat.conversationName": "會話名稱", + "chat.saveConversationName": "儲存會話名稱", + "chat.cancelRename": "取消重命名", + "chat.deleteConversationQuestion": "刪除這個會話?", + "chat.confirm": "確認", + "chat.cancel": "取消", + "chat.messageCount": "{{count}} 條消息", + "chat.manageNamed": "管理 {{name}}", + "chat.rename": "重命名", + "chat.delete": "刪除", + "chat.noConversationMatch": "沒有匹配的會話", + "chat.emptyTitle": "開始一個新會話", + "chat.emptyBody": "這條會話會獨立儲存,但仍能編輯目前簡報。", + "workflow.clarify": "明確需求", + "workflow.preparing": "正在根據主題準備問題…", + "workflow.questionsPending": "{{count}} 個問題待確認", + "workflow.waitingBrief": "等待補充需求", + "workflow.questionsConfirmed": "{{count}} 個問題已確認", + "workflow.briefConfirmed": "需求已確認", + "workflow.research": "深度研究", + "workflow.researchAfterBrief": "確認需求後開始聯網研究", + "workflow.researching": "第 {{round}} / {{total}} 輪 · 已檢索 {{searches}} 次", + "workflow.researchWriting": "第 {{round}} / {{total}} 輪 · 正在流式撰寫報告", + "workflow.researchComplete": "已檢索 {{searches}} 次 · 收錄 {{sources}} 個來源", + "workflow.researchFailed": "研究中斷 · 已保留可用過程", + "workflow.outline": "編輯大綱", + "workflow.afterBrief": "確認需求後開始", + "workflow.afterResearch": "深度研究完成後開始", + "workflow.generatingOutline": "正在生成大綱…", + "workflow.outlineEditable": "{{count}} 頁 · 可編輯並確認", + "workflow.outlineConfirmed": "{{count}} 頁大綱已確認 · 可回看", + "workflow.inspiration": "選擇靈感", + "workflow.afterOutline": "確認大綱後選擇", + "workflow.pickInspiration": "挑選視覺參考或使用預設風格", + "workflow.inspirationSkipped": "已跳過 · 使用預設風格", + "workflow.inspirationSelected": "{{name}} · 可再次預覽", + "workflow.selectedFallback": "已選視覺參考", + "workflow.render": "生成頁面", + "workflow.afterInspiration": "選定視覺方向後開始", + "workflow.rendering": "正在生成 {{done}} / {{total}} 頁", + "workflow.rendered": "{{done}} / {{total}} 頁已生成", + "flow.attachedRequirement": "請根據附件上下文建立一份簡報。", + "flow.clarifyIntro": "先在右側確認幾個問題,我就開始寫大綱。", + "flow.confirmed": "已確認:\n{{summary}}", + "flow.skipClarify": "跳過確認,直接寫大綱。", + "flow.researchIntro": "正在進行深度研究——多角度聯網檢索並多輪驗證,然後再撰寫大綱。", + "flow.searching": "聯網檢索:{{detail}}", + "flow.synthesizing": "整理研究簡報({{detail}})", + "flow.outlineReady": "我整理了一個 {{count}} 頁的大綱——「{{title}}」。你可以在右側改標題、要點和順序,或直接告訴我怎麼改;滿意後點「生成」我再逐頁出圖。", + "flow.outlineDoc": "大綱 · {{count}} 頁", + "flow.outlineUpdated": "已更新大綱。", + "flow.stylePrompt": "出圖前,先挑一個視覺參考風格吧——我已按你的主題和大綱排好順序。點「瀏覽」選擇,或跳過並使用預設風格。", + "flow.styleSelected": "選定風格:{{name}}", + "flow.styleFailed": "應用風格失敗:{{error}}", + "flow.styleSkipped": "跳過風格,使用預設風格生成。", + "flow.fastRender": "⚡ 快速模式:{{count}} 頁並行生成(超出並發的會自動排隊),並保持統一的風格與需求…", + "flow.render": "開始逐頁生成 {{count}} 頁投影片,每頁約 30 秒…", + "flow.renderDone": "完成!已生成 {{count}} 頁。接下來可以直接告訴我怎麼優化,或從右上角匯出:", + "flow.renderingTitle": "正在生成頁面", + "flow.fastRenderingTitle": "正在生成頁面 · 快速模式", + "flow.fastRenderingNote": "快速模式並行生成所有頁面(超出的自動排隊),大綱與視覺參考保持鎖定。", + "flow.fastRenderTool": "並行生成簡報頁面", + "flow.renderingNote": "大綱與視覺參考已鎖定,正在逐頁繪製。", + "flow.renderTool": "生成簡報頁面", + "flow.renderingSlide": "正在生成第 {{index}} 頁", + "flow.failedCount": "{{count}} 頁失敗", + "flow.retrying": "重試第 {{index}} 頁(第 {{attempt}}/{{total}} 次)", + "flow.verifying": "校驗每一頁… 待補 {{pending}}/{{total}} 頁", + "flow.verifyDone": "校驗完成 · {{rendered}}/{{total}} 頁已生成", + "flow.renderFinishedWithErrors": "頁面生成完成,部分失敗", + "flow.renderFinished": "頁面生成完成", + "flow.renderStopped": "頁面生成中斷", + "flow.renderRestored": "已恢復並保留這次生成記錄。", + "flow.styleConfirmed": "已確認視覺參考:{{name}}。你可以隨時重新開啟這個選項。", + "flow.suggestionSummary": "加一頁總結收尾", + "flow.suggestionBusiness": "整體換成更商務的風格", + "flow.suggestionCover": "重畫封面,讓它更醒目", + "flow.suggestionSpecific": "把要點講得更具體", + "flow.placeholderClarify": "還可以補充其它要求;確認後開始寫大綱…", + "flow.placeholderOutline": "告訴助手怎麼改大綱,或直接在右側編輯…", + "flow.placeholderInspire": "點「瀏覽」選擇視覺風格,或跳過並使用預設風格…", + "flow.placeholderDeck": "讓助手增刪頁面、改寫內容、換風格或繼續優化…", + "agent.understanding": "正在理解你的修改", + "agent.understandingNote": "我正在核對修改要求、頁面上下文和附件,然後再更新簡報。", + "agent.readDesignFile": "讀取 Design File", + "agent.revisingOutline": "正在修改大綱", + "agent.revisingOutlineNote": "我會先讀取修改要求與引用的專案檔案,再更新大綱。", + "agent.reviseOutline": "修改大綱", + "agent.reviseOutlineDetail": "應用要求,並保留未涉及的頁面", + "agent.outlineRevised": "已更新 {{count}} 頁", + "agent.outlineComplete": "大綱修改完成", + "agent.outlineFailed": "大綱修改失敗", + "agent.editChecklist": "修改任務清單", + "agent.editChecklistDetail": "追蹤 {{count}} 個頁面修改", + "agent.runCommand": "執行命令", + "agent.readFile": "讀取檔案", + "agent.editFiles": "編輯檔案", + "agent.search": "搜尋", + "agent.taskList": "任務清單", + "agent.useTool": "呼叫工具", + "agent.plan": "規劃修改", + "agent.planDetail": "識別操作和受影響的頁面", + "agent.targetOne": "目標頁面:第 {{targets}} 頁", + "agent.targetMany": "目標頁面:第 {{targets}} 頁", + "agent.addRender": "新增並生成一個新頁面", + "agent.replyOnly": "回覆,不修改簡報", + "agent.answering": "回答問題", + "agent.readContext": "讀取引用的專案上下文", + "agent.adding": "正在新增新頁面", + "agent.applying": "正在應用修改", + "agent.reviewed": "請求已檢查", + "agent.plannedChange": "計劃修改:{{instruction}}", + "agent.noChange": "此請求不需要修改頁面。", + "agent.insert": "插入頁面", + "agent.after": "在第 {{index}} 頁之後", + "agent.renderSlide": "生成頁面", + "agent.matchStyle": "匹配目前視覺系統", + "agent.inserted": "已插入第 {{index}} 頁", + "agent.renderingSlide": "正在生成第 {{index}} 頁", + "agent.renderedSlide": "第 {{index}} 頁已生成", + "agent.addedSlide": "已新增第 {{index}} 頁", + "agent.addedReply": "{{reply}}(已新增第 {{index}} 頁)", + "agent.addTask": "新增第 {{index}} 頁", + "agent.updateSlide": "更新第 {{index}} 頁", + "agent.waitPrevious": "等待上一項修改完成", + "agent.redrawing": "按目前簡報風格重繪", + "agent.updatedSlide": "第 {{index}} 頁已更新", + "agent.updatedReply": "{{reply}}(已更新第 {{targets}} 頁)", + "agent.partialFailure": "{{reply}} 其餘頁面已更新,但第 {{targets}} 頁失敗。", + "agent.editErrors": "修改完成,但有錯誤", + "agent.editComplete": "簡報修改完成", + "agent.editFailed": "未能完成修改", + "agent.markRequest": "請修改第 {{index}} 頁中標注的區域。", + "agent.visualMark": "視覺標注", + "agent.editingSlide": "正在修改第 {{index}} 頁", + "agent.markNoteOne": "我正在讀取標注區域和你的修改說明。", + "agent.markNoteTwo": "會保留周圍佈局和整套簡報的視覺系統。", + "agent.applyVisual": "應用視覺修改", + "agent.processMark": "處理第 {{index}} 頁的標注區域", + "agent.markApplied": "已將視覺標注應用到第 {{index}} 頁。", + "agent.updated": "已更新", + "agent.updatedSaved": "更新後的頁面已儲存", + "agent.notUpdated": "第 {{index}} 頁未更新", + "agent.ranSeconds": "耗時 {{seconds}} 秒", + "agent.ranMinutes": "耗時 {{minutes}} 分 {{seconds}} 秒", + "status.outlining": "正在規劃簡報…", + "status.rendering": "正在繪製投影片…", + "status.editing": "正在應用修改…", + "status.drawingSlide": "正在繪製第 {{index}} 頁{{title}}", + "status.workingEdit": "正在處理修改…", + "status.outliningDeck": "正在編寫大綱", + "status.outlineReady": "大綱已就緒", + "status.renderingPages": "正在生成頁面", + "status.renderingNamed": "正在生成第 {{index}} 頁{{title}}", + "status.renderingCount": "正在生成 {{done}} / {{total}} 頁", + "template.preset": "預設風格", + "outline.draft": "大綱草稿", + "outline.pageCount": "{{count}} 頁 · {{aspect}}", + "outline.generate": "✓ 生成 {{count}} 頁", + "outline.generateHelp": "按大綱逐頁生成投影片", + "outline.hint": "先確認大綱:可改標題、增刪要點、調整順序,也可讓左側助手直接修改。滿意後點「生成」開始逐頁出圖。", + "outline.brief": "研究簡報", + "outline.pageTitle": "第 {{index}} 頁標題", + "outline.moveUp": "上移", + "outline.moveDown": "下移", + "outline.delete": "刪除", + "outline.pointsPlaceholder": "這一頁講什麼?每行寫一個要點…", + "outline.insert": "在此插入一頁", + "outline.insertAfter": "在第 {{index}} 頁後插入一頁", + "outline.add": "+ 新增一頁", + "outline.ready": "共 {{count}} 頁大綱已就緒", + "outline.timeHint": "確認後逐頁生成,每頁約 30 秒", + "outline.generating": "生成中…", + "outline.generateSlides": "✓ 生成 {{count}} 頁投影片", + "outline.streaming": "正在繼續撰寫下一頁…", + "outline.streamingCount": "已流式生成 {{count}} 頁大綱", + "outline.streamingHint": "大綱會邊寫邊顯示,完成後即可編輯確認", + "inspire.search": "搜尋視覺風格,如資料可視化 / 雜誌排版 / 手繪…", + "inspire.searchLabel": "搜尋風格", + "inspire.clear": "清空搜尋", + "inspire.close": "關閉", + "inspire.preview": "風格預覽", + "inspire.previewNamed": "放大預覽「{{name}}」", + "inspire.closePreview": "關閉風格預覽", + "inspire.previousPreview": "上一個風格", + "inspire.nextPreview": "下一個風格", + "inspire.previewKeyHint": "← → 翻頁 · Esc 關閉", + "inspire.previewSelected": "已選擇此風格", + "inspire.try": "試試:", + "inspire.recommended": "✦ 推薦", + "inspire.empty": "沒有匹配的風格,換個篩選或搜尋詞。", + "inspire.pickOne": "選擇一個風格(最多 1 個)", + "inspire.skip": "跳過,使用預設風格", + "inspire.apply": "應用風格並生成", + "inspire.libraryCount": "{{count}} 個 PPT 可用風格", + "inspire.selectNamed": "使用「{{name}}」", + "inspire.applyNamed": "應用「{{name}}」→", + "inspire.sourceMeta": "{{source}} · {{license}}", + "inspire.ranking": "智慧匹配中", + "inspire.ranked": "已按你的主題排序", + "inspire.generateNamed": "用「{{name}}」生成 →", + "inspire.choose": "選擇一個風格", + "inspire.query.businessReport": "專業商業匯報", + "inspire.query.infographic": "訊息圖佈局", + "inspire.query.diagram": "技術圖解", + "inspire.query.data": "資料可視化", + "inspire.query.uiDashboard": "儀表板介面", + "inspire.query.poster": "大膽海報", + "inspire.query.product": "產品展示", + "inspire.query.brandIdentity": "品牌視覺板", + "inspire.query.architectureSpace": "建築空間提案", + "inspire.query.photoCinematic": "電影感攝影", + "inspire.query.editorial": "雜誌排版", + "inspire.query.illustration": "插畫風格", + "slide.present": "播放", + "slide.presentHelp": "全屏播放", + "slide.export": "匯出", + "slide.exportHelp": "匯出簡報", + "slide.download": "下載簡報", + "slide.pdfHelp": "適合列印,每頁一張圖片", + "slide.pptxHelp": "可編輯的 .pptx,並保留原生演講備註", + "export.loading": "正在匯出 {{format}}…", + "export.ready": "{{format}} 已匯出", + "export.error": "{{format}} 匯出失敗", + "slide.previous": "上一頁", + "slide.next": "下一頁", + "slide.tools": "第 {{index}} 頁編輯工具", + "slide.askAi": "問 AI", + "slide.askAiHelp": "讓 AI 修改或擴展這一頁", + "slide.mark": "標注並評論", + "slide.markHelp": "標注一個區域並留下修改意見", + "slide.transition": "轉場", + "slide.transitionHelp": "設定頁面轉場", + "slide.replace": "替換圖片", + "slide.replaceHelp": "用上傳圖片替換目前頁面", + "slide.moveLeft": "向前移動", + "slide.moveLeftHelp": "把這一頁向前移動一位", + "slide.moveRight": "向後移動", + "slide.moveRightHelp": "把這一頁向後移動一位", + "slide.upload": "上傳圖片", + "slide.uploadHelp": "上傳一張投影片圖片", + "slide.duplicate": "複製", + "slide.duplicateHelp": "複製這一頁", + "slide.delete": "刪除", + "slide.deleteHelp": "刪除這一頁", + "slide.renderFailed": "生成失敗", + "slide.retry": "重新生成", + "slide.emptyBody": "讓 AI 生成一個視覺頁面,或上傳完成的投影片圖片。", + "slide.askAgent": "詢問簡報助手", + "slide.continueChat": "在助手對話中繼續", + "slide.formats": "PNG、JPG 或 WebP", + "slide.addFirst": "新增第一張投影片", + "slide.addFirstBody": "先新增空白頁,再生成或上傳視覺稿。", + "slide.add": "新增頁面", + "slide.select": "{{title}} — 選擇頁面", + "slide.transitionState": "第 {{index}} 頁轉場:{{transition}}", + "slide.none": "無", + "slide.addAfter": "在第 {{index}} 頁後新增頁面", + "slide.untitled": "未命名簡報", + "slide.ready": "第 {{index}} 頁已就緒", + "slide.drawing": "正在繪製第 {{index}} 頁{{title}}…", + "slide.queued": "已排隊,等待繪製…", + "slide.adding": "正在新增第 {{index}} 頁…", + "slide.agentUnavailable": "此頁面暫時無法使用簡報助手。", + "slide.imageTooLarge": "請選擇小於 20 MB 的圖片", + "slide.imagePrepareFailed": "無法處理這張圖片", + "slide.imageConvertFailed": "無法轉換這張圖片", + "slide.transitionTitle": "轉場:{{transition}}", + "versions.entry": "版本", + "versions.title": "版本管理", + "versions.count": "{{count}} 個版本", + "versions.current": "目前", + "versions.sourceAi": "AI 編輯", + "versions.sourceManual": "手動編輯", + "versions.sourceRestore": "回退生成", + "versions.slides": "{{count}} 頁", + "versions.restored": "已回退", + "versions.restoredFrom": "從 v{{version}} 回退", + "versions.search": "搜尋版本", + "versions.listAria": "簡報版本", + "versions.empty": "暫無已生成版本。", + "versions.noResults": "沒有匹配的版本。", + "versions.prompt": "提示詞", + "versions.noPrompt": "此版本沒有記錄提示詞。", + "versions.copyPrompt": "複製提示詞", + "versions.copied": "已複製", + "versions.copyFailed": "無法複製提示詞。", + "versions.promptSource.message": "來自使用者請求", + "versions.promptSource.project": "來自專案需求", + "versions.promptSource.manual": "手動操作", + "versions.promptSource.restore": "回退操作", + "versions.play": "播放", + "versions.restore": "切換版本", + "versions.restoring": "切換中…", + "versions.restoreConfirmTitle": "切換到此版本?", + "versions.restoreConfirmBody": "版本 {{version}} 會被恢復為一個新的目前版本,現有歷史不會被覆蓋。", + "versions.restoreConfirm": "確認切換", + "versions.loadingPreview": "正在載入版本預覽…", + "versions.noRenderedSlides": "此版本沒有已生成頁面。", + "versions.slidesAria": "版本頁面", + "versions.close": "關閉版本管理", + "play.mode": "簡報模式", + "play.navigate": "翻頁", + "play.exit": "退出", + "play.exitPresentation": "退出簡報", + "play.enterFullscreen": "進入全屏", + "play.exitFullscreen": "退出全屏", + "presenter.audiencePlayback": "觀眾播放", + "presenter.fromCurrent": "從目前頁播放", + "presenter.fromCurrentHelp": "從畫布目前選中的頁面開始", + "presenter.fromBeginning": "從頭開始播放", + "presenter.fromBeginningHelp": "從第一張已生成頁面開始", + "presenter.mode": "演講者模式", + "presenter.presenterFromCurrent": "從目前頁進入演講者模式", + "presenter.presenterFromBeginning": "從頭進入演講者模式", + "presenter.modeHelp": "觀眾畫面與備註計時視窗同步播放", + "presenter.windowTitle": "演講者視圖", + "presenter.opening": "正在開啟演講者視圖…", + "presenter.popupBlocked": "演講者視窗被瀏覽器攔截,請允許本站彈出視窗後重試。", + "presenter.pause": "暫停計時", + "presenter.resume": "繼續計時", + "presenter.reset": "重新開始", + "presenter.previous": "上一頁", + "presenter.next": "下一頁", + "presenter.slide": "第 {{current}} / {{total}} 頁", + "speakerNotes.title": "演講備註", + "speakerNotes.slide": "第 {{current}} 頁", + "speakerNotes.edit": "編輯", + "speakerNotes.save": "儲存", + "speakerNotes.saved": "已儲存", + "speakerNotes.generated": "已生成", + "speakerNotes.failed": "儲存失敗", + "speakerNotes.saving": "正在儲存…", + "speakerNotes.placeholder": "輸入這一頁的演講備註", + "speakerNotes.empty": "這一頁還沒有演講備註。你可以直接撰寫,也可以讓 AI 生成自然的講稿。", + "speakerNotes.emptyPresenter": "這一頁暫無演講備註,點擊此處新增。", + "speakerNotes.generate": "讓 AI 生成", + "speakerNotes.generating": "正在生成…", + "speakerNotes.regenerate": "重新生成", + "speakerNotes.write": "手動撰寫", + "speakerNotes.unavailable": "專案儲存後才可使用演講備註。", + "transition.title": "頁面轉場", + "transition.help": "該頁面進入簡報模式時播放。", + "transition.none": "無", + "transition.fade": "淡入", + "transition.push": "推進", + "transition.wipe": "擦除", + "transition.zoom": "縮放", + "transition.flip": "翻轉", + "transition.done": "完成", + "transition.slideTitle": "第 {{index}} 頁轉場", + "transition.close": "關閉轉場選擇器", + "transition.saveFailed": "儲存失敗:{{error}}", + "transition.saving": "正在儲存轉場…", + "transition.selected": "已選擇{{transition}}", + "mark.region": "標注第 {{index}} 頁", + "mark.textPlaceholder": "輸入文字,回車確認", + "mark.tools": "標注工具", + "mark.freehand": "自由繪製", + "mark.line": "直線", + "mark.rectangle": "矩形", + "mark.text": "文字標注", + "mark.textHelp": "文字標注 · 拖動可調整位置", + "mark.undo": "撤銷", + "mark.redo": "重做", + "mark.clear": "清除標注", + "mark.close": "關閉標注工具", + "mark.comment": "給簡報助手的修改說明", + "mark.cancel": "取消", + "mark.send": "發送給簡報助手", + "mark.imageLoading": "頁面圖片仍在載入,請稍後重試。", + "mark.imagePrepareFailed": "無法生成標注圖片,請重試。", + "mark.retryHelp": "你的標注仍然保留,可再次發送重試。", + "mark.editing": "修改中", + "mark.sending": "發送中", + "mark.retry": "重試", + "mark.sendShort": "發送", + "material.title": "品牌參考", + "material.optional": "可選", + "material.help": "新增 Logo、產品圖或視覺樣例,作為所有頁面的風格參考。", + "material.remove": "移除 {{name}}", + "material.addMore": "新增更多品牌圖片", + "material.add": "新增品牌圖片", + "material.guidance": "圖片僅用作視覺參考", + "material.uploading": "上傳中…", + "material.addMoreShort": "繼續新增", + "template.title": "視覺風格", + "template.palette": "色板:{{colors}}", + "template.styles": "視覺風格", + "template.search": "搜尋風格或類別", + "template.current": "目前專案風格", + "template.currentHelp": "不應用預設,按目前風格重新生成", + "template.stylesCount": "{{count}} 個風格", + "template.community": "Community 社區", + "template.useCurrent": "使用目前專案風格", + "template.presetShort": "預設", + "template.density": "{{category}} · {{density}}密度", + "template.densityLow": "低", + "template.densityMedium": "中", + "template.densityHigh": "高", + "template.noPreset": "不會應用預設風格", + "template.searchLabel": "搜尋視覺風格", + "template.noMatch": "沒有匹配“{{query}}”的風格。", + "restyle.open": "為所有頁面應用新的視覺風格", + "restyle.button": "整體換風格", + "restyle.close": "關閉整體換風格面板", + "restyle.title": "為整套簡報換風格", + "restyle.subtitle": "選擇一個視覺系統,並可新增品牌參考。", + "restyle.warning": "所有頁面的視覺稿都會被替換。", + "restyle.warningHelp": "大綱、文案和頁面順序保持不變。", + "restyle.progress": "正在重繪第 {{current}}/{{total}} 頁…", + "restyle.allOne": "重繪全部 {{count}} 頁", + "restyle.allMany": "重繪全部 {{count}} 頁", + "restyle.started": "正在為全部 {{count}} 頁更換視覺風格…", + "restyle.done": "完成——全部 {{count}} 頁已應用新的視覺風格。", + "restyle.saveFailed": "無法儲存新的簡報風格", + "brandSystem.open": "開啟整套簡報的品牌與設計體系", + "brandSystem.button": "品牌與設計體系", + "brandSystem.title": "Brand & Design System", + "brandSystem.subtitle": "用一套可編輯規範約束整份簡報。", + "brandSystem.close": "關閉品牌與設計體系", + "brandSystem.alwaysOn": "始終傳給 Agent 的上下文", + "brandSystem.alwaysOnHelp": "儲存後,這些規則會自動進入本簡報的每次新會話、生成和編輯。", + "brandSystem.overview": "體系總覽", + "brandSystem.unnamedBrand": "未命名品牌", + "brandSystem.systemReady": "顏色、字型與版式規則均可編輯", + "brandSystem.identity": "品牌標識", + "brandSystem.identityHelp": "名稱、核心訊息、語氣與 Logo 使用方式", + "brandSystem.brandName": "品牌名稱", + "brandSystem.brandNamePlaceholder": "例如:NOVA", + "brandSystem.tagline": "Slogan / 核心訊息", + "brandSystem.taglinePlaceholder": "希望品牌長期佔據的一句話", + "brandSystem.voice": "品牌語氣", + "brandSystem.voicePlaceholder": "清晰、樂觀、準確;避免誇張表述…", + "brandSystem.logoUsage": "Logo 規範", + "brandSystem.logoUsagePlaceholder": "位置、留白、顏色及禁止使用方式…", + "brandSystem.visualStyle": "設計風格", + "brandSystem.visualStyleHelp": "可替換預設,也可繼續編輯視覺方向", + "brandSystem.direction": "視覺方向", + "brandSystem.directionPlaceholder": "例如:瑞士編輯風 + 溫暖的產品攝影", + "brandSystem.keywords": "風格關鍵詞", + "brandSystem.keywordsPlaceholder": "簡潔、高級、編輯感、高對比…", + "brandSystem.imageTreatment": "圖片處理", + "brandSystem.imageTreatmentPlaceholder": "攝影、插畫、裁切、光線、材質方式…", + "brandSystem.colors": "顏色", + "brandSystem.colorsHelp": "所有頁面統一使用的語義色板", + "brandSystem.colorPrimary": "Primary", + "brandSystem.colorPrimaryTint": "Primary Tint", + "brandSystem.colorAccent": "Accent", + "brandSystem.colorAccentTint": "Accent Tint", + "brandSystem.colorInk": "Ink", + "brandSystem.colorSurface": "Surface", + "brandSystem.colorBackground": "Background", + "brandSystem.colorBackgroundWarm": "Background Warm", + "brandSystem.typography": "字型排版", + "brandSystem.typographyHelp": "字型家族、字重與簡報字號層級", + "brandSystem.headingFont": "標題字型", + "brandSystem.bodyFont": "正文字型", + "brandSystem.monoFont": "等寬 / 資料字型", + "brandSystem.typeScale": "字號層級", + "brandSystem.headingWeight": "標題字重", + "brandSystem.bodyWeight": "正文字重", + "brandSystem.effects": "效果", + "brandSystem.effectsHelp": "陰影、描邊與表面材質", + "brandSystem.shadow": "陰影", + "brandSystem.border": "描邊", + "brandSystem.texture": "紋理 / 材質", + "brandSystem.spacing": "間距", + "brandSystem.spacingHelp": "全部版式共享的密度與節奏", + "brandSystem.density": "密度", + "brandSystem.densityCompact": "緊湊", + "brandSystem.densityBalanced": "均衡", + "brandSystem.densitySpacious": "寬鬆", + "brandSystem.baseUnit": "基礎單位(px)", + "brandSystem.sectionGap": "區塊間距(px)", + "brandSystem.radius": "圓角", + "brandSystem.radiusHelp": "卡片與控件共享的幾何規範", + "brandSystem.cardRadius": "卡片(px)", + "brandSystem.controlRadius": "控件(px)", + "brandSystem.pillRadius": "膠囊(px)", + "brandSystem.assets": "品牌素材", + "brandSystem.assetsHelp": "Logo、產品圖與視覺參考", + "brandSystem.saveHelp": "儲存會影響後續 Agent 工作;重繪為可選操作,會替換現有頁面圖片。", + "brandSystem.saveAndRedraw": "儲存並重繪 {{count}} 頁", + "brandSystem.redrawProgress": "正在重繪 {{current}}/{{total}}…", + "brandSystem.save": "儲存體系", + "brandSystem.saved": "品牌與設計體系已儲存。它會作為這份簡報每次新會話、頁面生成和編輯的預設上下文。", + "brandSystem.renderContext": "接下來將以已儲存的品牌與設計體系作為視覺基準;每一頁都會遵循其中的配色、字型、圖片、間距與組件規則。", + "brandSystem.useSaved": "使用已儲存的品牌與設計體系,繼續生成頁面。", + "brandSystem.saveFailed": "無法儲存品牌與設計體系", + "brandSystem.workflowLabel": "品牌體系", + "project.draftIntro": "這個簡報還是草稿——「{{title}}」有 {{count}} 頁大綱,尚未生成視覺稿。你可以在右側編輯大綱或讓我修改,滿意後點「生成」逐頁出圖。", + "project.readyIntro": "我是這份簡報的助手。「{{title}}」共有 {{count}} 頁(已生成 {{rendered}} 頁)。我可以新增頁面、改寫內容、重繪指定頁面,或優化整套簡報。", + "context.preview": "預覽 {{name}}", + "context.remove": "移除 {{name}}", + "context.attachedImage": "已附圖片", + "dialog.closePreview": "關閉圖片預覽", + "loading.project": "正在開啟 {{title}}…", + "loading.default": "正在開啟專案…", + "common.cancel": "取消", + "common.send": "發送", + "common.working": "處理中…", + "common.upload": "上傳", + "common.refresh": "刷新", + "common.saveChanges": "儲存修改", + "common.saving": "儲存中…", + "common.saved": "已儲存", + "common.recommended": "推薦", + "chat.openDesignFiles": "在 Design Files 中開啟", + "chat.newConversationTitle": "新會話", + "designFiles.title": "Design Files", + "designFiles.workspaceViews": "工作區視圖", + "designFiles.canvas": "PPT 畫布", + "designFiles.itemCountOne": "{{count}} 項", + "designFiles.itemCountMany": "{{count}} 項", + "designFiles.list": "設計檔案", + "designFiles.referenceFiles": "參考檔案", + "designFiles.workflowEmpty": "流程開始後,問題、大綱和靈感會出現在這裡。", + "designFiles.noPreview": "暫無可預覽檔案", + "designFiles.noPreviewHelp": "完成流程步驟後,可從會話卡片或左側列表開啟。", + "designFiles.confirmedAnswers": "已確認的回答", + "designFiles.defaultStyle": "使用預設視覺風格", + "designFiles.defaultStyleHelp": "靈感步驟已跳過,生成會根據簡報主題與內容自動選擇視覺語言。", + "designFiles.templatePalette": "範本色板", + "designFiles.refresh": "刷新檔案", + "designFiles.back": "返回簡報", + "designFiles.project": "專案", + "designFiles.fileCountOne": "{{count}} 個檔案", + "designFiles.fileCountMany": "{{count}} 個檔案", + "designFiles.generated": "生成檔案", + "designFiles.uploads": "上傳檔案", + "designFiles.loading": "正在載入檔案…", + "designFiles.loadFailed": "檔案列表載入失敗", + "designFiles.searchPlaceholder": "搜尋檔案", + "designFiles.searchLabel": "搜尋專案檔案", + "designFiles.clearSearch": "清空搜尋", + "designFiles.searchResults": "{{count}} 個結果", + "designFiles.noSearchResults": "沒有匹配的檔案", + "designFiles.empty": "簡報流程中建立的檔案會顯示在這裡。", + "designFiles.select": "選擇一個檔案", + "designFiles.selectHelp": "在這裡預覽和編輯專案產物。", + "designFiles.viewMode": "檔案查看方式", + "designFiles.preview": "預覽", + "designFiles.source": "源碼", + "designFiles.edit": "編輯 {{name}}", + "designFiles.contentLoadFailed": "這個檔案暫時無法載入", + "designFiles.retry": "重試", + "designFiles.autoSaveHint": "更改會自動儲存", + "designFiles.autoSaved": "已於 {{time}} 自動儲存", + "designFiles.saveFailed": "儲存失敗 · 點擊重試", + "designFiles.retrySave": "重新儲存這個檔案", + "designFiles.dropToUpload": "鬆開以上傳檔案", + "designFiles.dropToUploadHelp": "檔案會新增到目前專案的 Design Files。", + "designFiles.uploadFailed": "上傳失敗", + "designFiles.copyPath": "複製路徑", + "designFiles.pathCopied": "路徑已複製", + "designFiles.download": "下載", + "designFiles.downloadNamed": "下載 {{name}}", + "designFiles.questionsPrepared": "我準備了 {{count}} 個確認問題。它們會作為 Design File 保留,後面可以隨時回看。", + "designFiles.questionsTitle": "需求確認問題", + "designFiles.questionsPending": "{{count}} 個問題 · 待確認", + "designFiles.questionsConfirmed": "{{count}} 個問題 · 已確認", + "designFiles.questionsConfirmedOpenBrief": "已確認 · 開啟專案簡報", + "designFiles.questionsSkipped": "已跳過問題確認", + "designFiles.outlineTitle": "簡報大綱", + "designFiles.outlineEditing": "{{count}} 頁 · 編輯中", + "designFiles.outlineConfirmed": "{{count}} 頁 · 已確認", + "designFiles.researchTitle": "深度研究報告", + "designFiles.researchRunning": "流式生成中 · 已收錄 {{count}} 個來源", + "designFiles.researchComplete": "已儲存 · {{count}} 個來源", + "designFiles.researchError": "研究中斷 · 已儲存目前內容", + "designFiles.researchPending": "完成首輪檢索後,Markdown 報告會出現在這裡。", + "designFiles.inspirationTitle": "視覺參考靈感", + "designFiles.inspirationSkipped": "已跳過 · 預設風格", + "designFiles.inspirationSelected": "已選擇 · 可回看", + "designFiles.inspirationPending": "候選方向 · 待選擇", + "research.title": "深度研究", + "research.running": "執行中…", + "research.starting": "正在啟動…", + "research.brief": "研究簡報——可編輯的 Markdown,大綱將基於此內容生成", + "research.researching": "研究中…", + "research.noDocument": "暫無文件", + "research.generate": "根據研究簡報生成簡報 →", + "research.round": "第 {{round}} 輪:{{queries}}", + "research.results": "🔎 {{query}} → {{count}} 條結果", + "research.searchCount": "已檢索 {{count}} 次", + "research.synthesizing": "✍ 正在整理(第 {{round}} 輪)…", + "research.complete": "✓ 研究完成", + "research.stageRound": "第 {{round}} / {{total}} 輪", + "research.sourceCount": "{{count}} 個來源", + "research.failed": "研究中斷", + "research.stageEyebrow": "Research workspace", + "research.liveTitle": "深度研究正在持續推進", + "research.completeTitle": "研究報告已完成", + "research.failedTitle": "研究過程已中斷", + "research.stageHelp": "搜尋呼叫、來源站點與 Markdown 報告會在這裡持續流式出現。", + "research.completeHelp": "報告與來源已經儲存,接下來會基於這份研究生成大綱。", + "research.failedHelp": "已保留目前報告、來源與過程,後續仍可回看。", + "research.outlineStarting": "深度研究已完成,正在根據報告生成簡報大綱…", + "research.searchMetric": "次搜尋", + "research.sourceMetric": "個來源", + "research.progressLabel": "深度研究進度", + "research.liveProcess": "實時過程", + "research.activityCount": "{{count}} 個步驟", + "research.startingDetail": "正在規劃檢索角度並連接搜尋工具…", + "research.sourcesTitle": "已讀取的網站", + "research.sourcesPending": "來源會隨著搜尋和引用核驗持續出現。", + "research.sourceFallback": "已用於研究報告中的事實核驗與交叉驗證。", + "research.reportTitle": "研究報告 · Markdown", + "research.reportStreaming": "流式寫入中", + "research.reportSaved": "已儲存", + "research.reportPending": "完成首輪檢索後,報告會在這裡逐字生成。", + "research.persisting": "研究過程正在持續寫入專案,刷新後仍可恢復", + "research.partialSaved": "目前過程與可用內容已儲存到專案", + "research.persisted": "報告已儲存為 Design Files / research.md", + "research.searchPreparing": "準備聯網檢索", + "research.activityRound": "第 {{round}} 輪", + "research.writingReport": "流式撰寫研究報告", + "research.writingRound": "第 {{round}} 輪綜合與交叉驗證", + "research.roundPlan": "規劃第 {{round}} 輪研究", + "research.roundPlanDetail": "拆分角度、補齊證據並檢查訊息缺口", + "chatEdit.title": "通過對話修改", + "chatEdit.you": "你", + "chatEdit.agent": "助手", + "chatEdit.placeholder": "例如“把第 2 頁改暖一些”或“整套換成瑞士國際主義風格”", + "tutorial.entry.eyebrow": "Codex 工作流", + "tutorial.entry.title": "在 Codex 中可視化使用 Codex Slides", + "tutorial.entry.body": "從開啟 Browser 到生成、修改、簡報和匯出的完整指引。", + "tutorial.entry.cta": "開啟教程", + "tutorial.dialog.kicker": "Codex Slides × Codex", + "tutorial.dialog.title": "不離開 Codex,完成整套簡報", + "tutorial.dialog.subtitle": "讓 Codex Slides 始終顯示在 Codex Browser 中,每個決策都可確認,每次生成和修改都能實時查看。", + "tutorial.dialog.close": "關閉 Codex 教程", + "tutorial.tabs.label": "Codex 教程內容", + "tutorial.tabs.guide": "可視化流程", + "tutorial.tabs.prompts": "Prompt 示例庫", + "tutorial.steps.label": "教程步驟", + "tutorial.stepCount": "第 {{current}} / {{total}} 步", + "tutorial.browserFirst.title": "核心規則:先開啟 Browser", + "tutorial.browserFirst.body": "Codex 必須先開啟 Codex Slides 首頁,再讓專案工作區持續顯示需求確認、大綱、風格、生成和複查過程,不能在隱藏後台一口氣跑完。", + "tutorial.sayInCodex": "在 Codex 裡這樣說", + "tutorial.copy": "複製", + "tutorial.copied": "已複製", + "tutorial.previous": "上一步", + "tutorial.next": "下一步", + "tutorial.openPrompts": "開啟 Prompt 示例庫", + "tutorial.step1.title": "開啟實時產品介面", + "tutorial.step1.body": "從 Codex 開始,而不是呼叫隱藏的後台任務。Codex 先在 Browser 中開啟 Codex Slides 首頁,確認建立介面已經顯示,再開始製作。", + "tutorial.step1.prompt": "在 Codex Browser 中開啟 Codex Slides。整個流程都保持產品介面可見,不要在隱藏的後台呼叫裡直接生成整套 PPT。", + "tutorial.step2.title": "建立可恢復的 Project", + "tutorial.step2.body": "在首頁輸入需求後立即建立 Project。之後每一步都會儲存,同一個 URL 可以隨時重新開啟並繼續。", + "tutorial.step2.prompt": "在 Codex Slides 首頁建立一個“2026 年人形機器人市場”Project:12 頁、16:9、中文、開啟深度研究。建立後進入 Project 頁面並繼續操作。", + "tutorial.step3.title": "確認需求問題", + "tutorial.step3.body": "在 Project 中檢查系統生成的問題,確認受眾、頁數、比例、語言、用途和內容重點,再讓 Codex 起草大綱。", + "tutorial.step3.prompt": "繼續操作目前可見的 Project。檢查需求確認問題;已有明確答案的採用推薦項,會實質影響結果但我沒有說明的選項保留在介面裡讓我確認,然後再生成大綱。", + "tutorial.step4.title": "確認大綱與視覺方向", + "tutorial.step4.body": "直接編輯、排序、新增或刪除大綱頁面。確認敘事後比較視覺參考,選擇風格,再進入生成。", + "tutorial.step4.prompt": "檢查 Codex Slides 中的大綱:把市場證據提前到競品分析之前,最後增加 90 天行動計劃,然後展示視覺風格選項。大綱和風格確認前不要生成頁面。", + "tutorial.step5.title": "可視化查看逐頁生成", + "tutorial.step5.body": "從已確認的 Project 開始生成,保持畫布開啟,讓完成的頁面逐一出現;生成期間仍可繼續輸入修改要求並自動排隊。", + "tutorial.step5.prompt": "確認目前視覺方向並生成 PPT。生成期間持續顯示 Codex Slides Project,展示逐頁進度,完成後在畫布中檢查整套簡報。", + "tutorial.step6.title": "通過 Deck Agent 持續修改", + "tutorial.step6.body": "可以用自然語言改寫單頁、新增或刪除頁面、調整結構、重繪視覺,或重設整套風格;生成中發送的要求會按順序排隊執行。", + "tutorial.step6.prompt": "在目前 Project 中,把第 3 頁文案縮短一半,在第 5 頁後增加一頁執行摘要,並把第 7 頁重繪成清晰的對比版式。其他頁面保持不變,每個結果都在畫布中展示。", + "tutorial.step7.title": "標注、品牌、播放與匯出", + "tutorial.step7.body": "可以直接在頁面上標注精確修改,用 @ 引用 Design Files,儲存始終生效的品牌與設計系統,通過 Play 檢查,視覺確認後再匯出。", + "tutorial.step7.prompt": "開啟第 4 頁的標注模式並按我的標記修改。然後把目前顏色、字型和 Logo 規則儲存為品牌與設計系統,通過 Play 模式檢查整套簡報,最後匯出 PPTX。", + "tutorial.library.title": "覆蓋完整流程的可複製 Prompt", + "tutorial.library.body": "直接在 Codex 中使用;每條 Prompt 都會把實時 Codex Slides Project 作為可視化事實來源。", + "tutorial.prompt.generate.title": "從零生成", + "tutorial.prompt.generate.body": "在 Codex Browser 中開啟 Codex Slides,建立一份 8 頁、16:9、英文的產品戰略簡報。持續顯示 Project,讓我依次確認問題、大綱和視覺方向,然後生成並檢查每一頁。", + "tutorial.prompt.sources.title": "基於檔案生成", + "tutorial.prompt.sources.body": "開啟 Codex Slides,把我上傳的 PDF 作為內容來源、表格作為資料集、Logo 和產品截圖作為品牌參考。在 Browser 中建立 Project,生成前停在大綱確認步驟。", + "tutorial.prompt.outline.title": "修改敘事結構", + "tutorial.prompt.outline.body": "在目前 Project 中把大綱收緊為決策敘事:背景、證據、選項、建議和下一步。合並重複頁面,展示修改後的大綱,確認後再生成。", + "tutorial.prompt.content.title": "改寫單頁內容", + "tutorial.prompt.content.body": "面向管理層改寫第 3 頁:保留結論,文案減少 50%,所有數字可追溯,只重新生成這一頁,並展示更新結果。", + "tutorial.prompt.structure.title": "新增、複製或刪除頁面", + "tutorial.prompt.structure.body": "在第 1 頁後增加執行摘要,複製第 5 頁並改成海外市場版本,刪除最後一頁附錄。保持現有視覺系統和轉場不變。", + "tutorial.prompt.visual.title": "改變整套視覺方向", + "tutorial.prompt.visual.body": "把整套簡報調整為克制的瑞士編輯設計:嚴格網格、高對比字型、暖色攝影和單一藍色強調。匯出前先在 Browser 中展示結果。", + "tutorial.prompt.mark.title": "按標注修改", + "tutorial.prompt.mark.body": "開啟第 4 頁標注模式,嚴格按照我的箭頭、文字和評論修改,只重新生成這一頁,並在專案歷史中保留標注源圖。", + "tutorial.prompt.brand.title": "應用品牌並匯出", + "tutorial.prompt.brand.body": "開啟品牌與設計系統,把 Logo、顏色角色、字型、間距和品牌語氣儲存為 Project 全域上下文;重繪目前簡報,通過 Play 檢查,然後匯出 PPTX 和 PDF。", +}; From 6403b2a65628bfd915ea0c3392f82e9b751b9060 Mon Sep 17 00:00:00 2001 From: eugenechang1 <30685498+eugenetwtw@users.noreply.github.com> Date: Tue, 28 Jul 2026 14:45:15 +0800 Subject: [PATCH 03/11] Register zh-TW dictionary in the locale registry --- src/i18n/messages.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/i18n/messages.ts b/src/i18n/messages.ts index 1d91c54..2e97110 100644 --- a/src/i18n/messages.ts +++ b/src/i18n/messages.ts @@ -1,6 +1,7 @@ import { en } from "./locales/en"; import { ja } from "./locales/ja"; import { zhCN } from "./locales/zh-CN"; +import { zhTW } from "./locales/zh-TW"; import { LOCALES, type Dict, type Locale, type MessageKey, type MessageValues, type UiLocale } from "./types"; export { LOCALES, LOCALE_LABEL, RTL_LOCALES } from "./types"; @@ -13,6 +14,7 @@ export const UI_LOCALE_STORAGE_KEY = "codex-slides-ui-locale"; export const DICTS: Record = { en, "zh-CN": zhCN, + "zh-TW": zhTW, ja, }; From 49d78cb11dfda1b646f576cbbeb5be8d789eef62 Mon Sep 17 00:00:00 2001 From: eugenechang1 <30685498+eugenetwtw@users.noreply.github.com> Date: Tue, 28 Jul 2026 14:46:10 +0800 Subject: [PATCH 04/11] Add zh-TW badge to the language switcher --- src/components/GlobalSettings.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/GlobalSettings.tsx b/src/components/GlobalSettings.tsx index 3f83d0d..b656ce3 100644 --- a/src/components/GlobalSettings.tsx +++ b/src/components/GlobalSettings.tsx @@ -84,7 +84,7 @@ export default function GlobalSettings() { onClick={() => setLocale(value)} > - {value === "zh-CN" ? "文" : value === "ja" ? "日" : value.slice(0, 2).toUpperCase()} + {value === "zh-CN" ? "简" : value === "zh-TW" ? "繁" : value === "ja" ? "日" : value.slice(0, 2).toUpperCase()} {LOCALE_LABEL[value]} {locale === value &&