Files
openless/openless-all/app/src/i18n/zh-TW.ts
T
sim 4ec44b2b0b merge: 汇入 origin/beta 第二轮(#1048 根证书指纹核验、#1049 录音保亮屏)
- 五语 PC/手机页文案取云端指纹核验版;de/es/fr 全套补译(指纹 6 键、保亮屏 4 键、恢复 4 键、中断/离线 2 键)
- index.html:帮助块改为指纹核验流程 + 录音屏新增保亮屏开关(默认开)
- RemoteInputStatus 补 caFingerprintSha256;Linux egui 面板移植指纹显示与复制
- remote-input-audio-queue 测试取云端(#1049 音频队列改造),我方仅格式差异
2026-09-10 17:16:58 +08:00

2057 lines
101 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { zhCN } from './zh-CN';
// 繁體中文資源 — 與產品當前文案保持一致。
// 新增 key 時,必須同步更新 en.ts,避免切換到 English 後出現中文殘留。
export const zhTW: typeof zhCN = {
cloudSync: {
title: '雲端同步',
description: '使用 GitHub 帳號,在裝置之間同步詞典、風格與個人偏好。',
signIn: '使用 GitHub 登入',
account: '同步帳號',
refresh: '重新整理狀態',
loading: '正在讀取雲端狀態…',
noBackup: '雲端尚無備份',
available: '雲端備份已就緒',
summary: '{{dictionary}} 個詞條 · {{corrections}} 條修正规則 · {{stylePacks}} 個風格',
updated: '更新於 {{time}}',
upload: '備份至雲端',
restore: '從雲端還原',
delete: '刪除雲端備份',
working: '正在同步…',
uploadSuccess: '已備份至雲端',
restoreSuccess: '已還原雲端設定',
deleteSuccess: '已刪除雲端備份',
failed: '同步失敗:{{error}}',
conflict: '雲端已有更新。請重新整理狀態後,再決定備份或還原。',
unavailable: '官方同步服務暫時無法使用,請稍後重試。',
signInRequired: '請先登入 GitHub。',
restoreTitle: '還原雲端備份?',
restoreDescription:
'雲端的詞典、修正规則、風格和同步偏好將覆蓋本機對應內容。API 金鑰、裝置目錄與權限維持本機設定。',
deleteTitle: '刪除雲端備份?',
deleteDescription: '僅刪除此 GitHub 帳號的雲端備份,本機資料會保留。',
confirmRestore: '還原並取代',
confirmDelete: '刪除備份',
scope: '同步詞典、修正规則、風格圖示與常用偏好。API 金鑰、登入憑據與裝置專屬設定保留在本機。',
},
macDictationKey: {
Changed: '儲存期間快捷鍵已變更,請重試。',
label: 'Mac 聽寫鍵',
description: '用麥克風圖示鍵替換目前的聽寫快捷鍵。結束 OpenLess 後,此鍵交回 macOS。',
Permission: '請在 macOS「隱私權與安全性 → 輔助使用」中允許 OpenLess 後重試。',
Busy: '請先結束目前的聽寫,再變更快捷鍵。',
Unavailable: '無法啟用此快捷鍵,已儲存的綁定未變更。請重試或選擇其他鍵。',
},
app: {
name: 'OpenLess',
tagline: '自然說話,完美書寫',
},
common: {
loading: '加載中…',
retry: '重試',
settingsLoadFailed: '設置加載失敗',
refresh: '刷新',
clear: '清空',
copy: '複製',
delete: '刪除',
later: '稍後',
cancel: '取消',
close: '關閉',
show: '顯示',
hide: '隱藏',
saved: '已保存',
saving: '保存中',
experimental: '實驗性',
copied: '已複製',
operationFailed: '操作失敗',
add: '添加',
durationSeconds: '{{value}} 秒',
durationMillis: '{{value}} 毫秒',
durationMinutes: '{{value}} 分鐘',
},
capsule: {
thinking: 'thinking',
using: 'using',
cancelled: '已取消',
error: '出錯了',
inserted: '已插入 {{count}}',
translating: '正在翻譯',
selectionPolish: {
polishing: '正在潤色...',
replaced: '已替換',
noSelection: '未選中內容',
failed: '潤色失敗,請重試',
},
},
selectionPolishPreview: {
title: '選區潤色預覽',
subtitle: '可直接編輯;點擊確認後才會替換原選區。',
cancel: '取消',
resultLabel: '潤色結果',
sourcePrefix: '原文:',
applyError: '未能應用:',
confirmReplace: '確認並替換',
},
selectionVoiceIntent: {
title: '你想做什麼?',
subtitle: '已識別你的語音指令,請選擇處理方式。',
loading: '載入中…',
sourcePrefix: '選區:',
errorPrefix: '未能繼續:',
question: '提問',
edit: '編輯選區',
cancel: '取消',
},
qa: {
title: '劃詞追問',
headerHint: '隨時提問',
thinking: '思考中…',
error: '出錯了,請稍後再試。',
errorRetry: '重試',
errorRetryHint: '請再試一次。',
pinTooltip: '固定(不自動關閉)',
unpinTooltip: '取消固定',
closeTooltip: '關閉',
micLabel: '語音提問',
micStop: '結束錄音',
selectionPreview: '基於選中文本:',
emptyTitle: '有什麼可以幫你?',
emptyDesc: '選中任意文字後開始追問,或直接在下方輸入問題。回答會顯示在這裏,可以連續多輪。',
recordingHint: '錄音中…再按一次 {{recordHotkey}} 結束並提問',
mobileRecordLabel: '錄音按鈕',
mobileRecordStart: '開始錄音',
mobileRecordStop: '結束並提交',
composerPlaceholder: '輸入問題,Enter 發送',
composerSend: '發送',
statusIdle: '按 {{recordHotkey}} 提問',
statusRecording: '錄音中',
statusThinking: '思考中',
statusError: '出錯了',
jumpToLatest: '跳到最新',
editApplyReplace: '確認並替換選區',
editApplyUnavailable: '沒有可替換的編輯結果',
editRevertPrevious: '保留上一版本',
editInstructionMode: '編輯指令',
},
lessComputer: {
title: 'Less Computer',
subtitle: '想讓電腦做什麼?',
you: '你',
working: '正在操控電腦…',
tool: '呼叫了 {{name}}',
compaction: '上下文已壓縮',
done: '完成',
cost: '${{cost}}',
error: '失敗,請重試。',
closeTooltip: '關閉',
jumpToLatest: '跳到最新',
inputPlaceholder: '輸入指令,Enter 傳送',
send: '傳送',
approvalTitle: '執行被攔截的指令?',
approvalRerunWarning:
'注意:批准後將在已被修改的工作區上重新執行,可能對不可重入操作產生副作用',
approve: '允許',
deny: '拒絕',
approved: '已允許',
denied: '已拒絕',
},
nav: {
overview: '概覽',
history: '歷史',
vocab: '詞典',
style: '風格',
marketplace: '風格市場',
translation: '翻譯',
selectionAsk: '劃詞追問',
corrections: '糾正規則',
polishMode: '潤色模式',
group: {
style: '風格',
tools: '工具',
},
localAsr: '模型設置',
more: '更多',
},
marketplace: {
kicker: '風格市場',
title: '風格包市場',
desc: '瀏覽、安裝和分享社區風格包。',
searchPlaceholder: '搜尋名稱 / 描述 / 標籤…',
sortPopular: '按熱度',
sortNew: '最新',
uploadBtn: '上傳',
uploadDisabledHint: '請先在 設定 → 風格市場 配置 GitHub 使用者名稱',
refreshBtn: '重新整理',
empty: '還沒有風格包',
emptyHint: '換個搜尋詞,或自己上傳一個分享給社群',
loadFailed: '載入失敗:{{err}}',
noDescription: '(暫無描述)',
installBtn: '安裝到本機',
installingBtn: '安裝中…',
downloadZipBtn: '下載 ZIP',
downloadingZipBtn: '下載中…',
downloadAria: '下載「{{name}}」ZIP',
likeBtn: '點讚',
installed: '已安裝「{{name}}」到本機風格包',
downloaded: '已下載「{{name}}」ZIP',
uploaded: '上傳成功,等待審核',
uploadTitle: '選擇要上傳的風格包',
uploadHint: '以 {{login}} 身份上傳。包內容會發送到雲端審核佇列。',
uploadNoLocal: '本機沒有可上傳的風格包',
errors: {
detail: '載入詳情失敗:{{err}}',
install: '安裝失敗:{{err}}',
download: '下載 ZIP 失敗:{{err}}',
like: '點讚失敗:{{err}}',
upload: '上傳失敗:{{err}}',
loadLocal: '載入本機風格包失敗:{{err}}',
},
sortLiked: '我讚過的',
likedEmpty: '你還沒有讚過任何風格包',
likedEmptyHint: '點開任一風格包,紅色星星點亮後會出現在這裡',
derivativeBadge: '衍生自 @{{login}}',
detail: {
withdrawBtn: '撤回發布',
withdrawConfirm: '確認從風格市場撤回「{{name}}」?本機副本不會被刪除。',
withdrawSuccess: '已從風格市場撤回',
withdrawFailed: '撤回失敗:{{err}}',
},
myPacks: {
buttonLabel: '我的發布',
buttonTitle: '查看 {{login}} 的發布',
buttonTitleEmpty: '先在 Settings → 風格市場 填寫發布身份',
searchPlaceholder: '搜尋名稱、標籤',
notLoggedIn: '請先在 Settings → 風格市場 填寫發布身份',
emptyTitle: '你還沒有發布過風格包',
emptyHint: '在「風格」頁面編輯後點「發布到風格市場」,或點擊右上角上傳本機風格包。',
noMatch: '沒有符合的風格包',
summary: '已發布 {{count}} 個風格包',
summaryPending: '已發布 {{count}} 個風格包 · {{pending}} 個審核中',
versionDate: 'v{{version}} · {{date}}',
stats: '★ {{likes}} · ↓ {{downloads}}',
actions: {
update: '更新',
withdraw: '下架',
},
loadFailed: '我的發布載入失敗:{{err}}',
loadingTitle: '正在拉取,請稍後…',
loadingHint: '從風格市場獲取你最新發布的風格包。',
loadErrorTitle: '載入失敗',
loadErrorRetry: '重試',
},
upload: {
confirmBtn: '確定上傳',
updateTitle: '更新「{{name}}」',
updateHint: '選中要上傳的本機新版本風格包,下方點「確定上傳」。同名包預設預選。',
recommendedBadge: '建議更新',
},
state: {
pending: '審核中',
approved: '已上架',
rejected: '未通過',
withdrawn: '已下架',
superseded: '已被新版替換',
unknown: '未知',
},
oauth: {
title: '用 GitHub 登入',
generating: '正在產生裝置驗證碼…',
browserHint: '在瀏覽器中開啟 {{uri}} 並輸入下方代碼:',
copyBtn: '複製',
copied: '已複製裝置碼',
copyFailed: '複製失敗:{{err}}',
openBrowserBtn: '開啟瀏覽器',
cancelBtn: '取消',
waiting: '等待你在瀏覽器中授權…',
successAs: '已登入為 @{{login}}',
retryBtn: '重試',
closeBtn: '關閉',
loginBtn: '登入',
loginTooltip: '點擊用 GitHub 登入',
reloginTooltip: '點擊重新登入 / 切換帳號(目前 @{{login}})',
},
modal: {
loggedIn: '目前登入身份 —— 在 Settings → 錄音 → 風格市場 修改',
notLoggedIn: '未登入 —— 去 Settings → 錄音 → 風格市場 填一個發布者名',
notLoggedInLabel: '未登入',
},
},
shell: {
shortcutLabel: '錄音快捷鍵',
shortcutHint: '開始 / 停止',
betaTag: 'BETA',
betaNote: '本機儲存,可選雲端備份',
navHint: {
overview: '狀態總覽:用量統計、提供商與權限健康檢查',
history: '聽寫歷史:搜尋、回放與複製過往轉寫',
vocab: '詞典:自訂熱詞,提升專有名詞辨識率',
style: '潤色風格:管理輸出風格與自訂提示詞',
translation: '翻譯:按住 Shift 說話,譯成目標語言插入',
selectionAsk: '劃詞追問:選取文字後語音提問',
settings: '偏好設定:快捷鍵、提供商、隱私與更新',
},
footer: {
account: '賬戶',
feedback: '反饋',
settings: '設置',
help: '幫助',
version: '版本 {{version}}',
helpPopover: {
tagline: '本地驅動的語音輸入層',
releaseNotes: '查看發佈日誌 ↗',
docs: '幫助中心 ↗',
},
},
providerPrompt: {
title: '設置語音提供商',
body: '還沒有配置 ASR 或 LLM 提供商,語音輸入和潤色暫時無法正常工作。',
later: '稍後',
openSettings: '去設置',
},
hotkeyModePrompt: {
title: '檢查錄音方式',
body: '預設已改為切換式。如果之前改過觸發方式,請到錄音設定確認一次。',
later: '稍後提醒',
openSettings: '去錄音設置',
},
},
onboarding: {
welcome: '歡迎使用 OpenLess',
intro: '本地說出,本地落字。開始前需要兩個系統權限。',
accessibilityTitle: '輔助功能',
hotkeyTitle: '全局快捷鍵',
accessibilityDesc: '用於監聽全局快捷鍵(默認 {{trigger}})並把識別結果寫入光標位置。',
hotkeyDesc: '用於確認全局快捷鍵監聽可用。',
micTitle: '麥克風',
micDesc: '用於捕獲你的語音輸入。',
actionNotApplicable: '無需授權',
actionGranted: '已授權',
actionOpenSystem: '打開系統設置',
actionRestart: '重置授權並重新啟動 OpenLess',
actionGrant: '授權',
actionRequestMic: '彈出授權',
micNoDeviceHint: '未偵測到麥克風,請連接並啟用麥克風後重試。',
accessibilityHint: '授權後必須**完全退出 OpenLess** 再重新打開(macOS TCC 規則)。',
footerHint:
'授權全部完成後此引導自動關閉。如果一直不消失,從菜單欄 OpenLess → 退出,重新打開 App。',
continueToSettings: '僅進入設定(語音與全域快速鍵暫不可用)',
androidContinue: '先進入應用',
androidFooterHint:
'聽寫需要麥克風權限。可點擊上方「彈出授權」,或先進入應用後在概覽頁繼續授權。',
androidTitle: '配置 OpenLess',
androidIntro: '按步驟完成移動端權限和服務配置。',
androidStepCounter: '第 {{current}} / {{total}} 項',
androidBack: '上一步',
androidNext: '下一步',
androidFinish: '完成並進入',
androidSteps: {
microphoneTitle: '麥克風權限',
microphoneDesc: '調用 Android 系統授權卡片,允許 OpenLess 錄製語音。',
accessibilityTitle: '無障礙服務',
accessibilityDesc: '用於把識別結果貼回當前輸入框,並輔助檢測輸入環境。',
overlayPermissionTitle: '懸浮窗權限',
overlayPermissionDesc: '允許 OpenLess 在其他應用上顯示錄音控制按鈕。',
overlayConfigTitle: '懸浮窗配置',
overlayConfigDesc: '設置懸浮窗顯示時機、觸發方式、滑動動作和按鈕大小。',
asrTitle: 'ASR 雲服務',
asrDesc: '配置語音轉文字服務的供應商、密鑰、接口地址和模型。',
llmTitle: 'LLM 服務',
llmDesc: '配置文本潤色、翻譯和問答使用的語言模型服務。',
},
},
overview: {
refresh: '重新整理狀態',
servicesTitle: '目前的語音服務',
statsTitle: '使用紀錄',
omniKind: '多模態語音',
omniName: '目前的 Omni 模型',
statusLoading: '正在讀取服務設定…',
configureProvider: '前往設定',
manageProvider: '管理服務',
recentEmptyHint: '還沒有聽寫紀錄。依照上方引導試一次,結果就會顯示在這裡。',
providerHelp: {
asr: '將語音轉成文字。',
llm: '依照你的風格整理和潤飾文字。',
omni: '由一個模型完成語音辨識和文字處理。',
},
actions: {
refresh: '重新讀取',
services: 'AI 服務與模型',
general: '錄音與輸入',
shortcuts: '快捷鍵',
privacy: '權限與資料',
},
guide: {
nextStep: '下一步',
loadingTitle: '正在讀取你的設定',
loadingDesc: '請稍候,馬上顯示目前的服務和下一步操作。',
unavailableTitle: '暫時無法讀取服務狀態',
unavailableDesc: '重新讀取,或前往 AI 服務檢查設定。',
servicesTitle: '先設定語音服務',
servicesDesc:
'建議從這裡開始:選擇語音辨識和文字處理服務;使用 Omni 時,只需設定目前的多模態模型。',
permissionsTitle: '先檢查快捷鍵狀態',
permissionsDesc: '目前無法使用快捷鍵介面。請開啟權限與資料,查看狀態和可用的處理方式。',
shortcutsTitle: '設定一個錄音快捷鍵',
shortcutsDesc: '選擇順手的快捷鍵,之後就能在輸入時開始聽寫。',
recordingTitle: '確認你的錄音方式',
recordingDesc: '服務設定已儲存。開啟錄音設定,選擇麥克風和適合你的錄音方式。',
tryDictationTitle: '試一次聽寫',
tryDictationDesc: '將游標放到要輸入的位置。{{shortcut}}',
permissionsHint: '錄音或快捷鍵沒有反應?在「權限與資料」中查看權限、麥克風和快捷鍵狀態。',
},
kicker: '概覽',
title: '今日概覽',
desc: '今日口述統計與系統狀態。',
pressPrefix: '按',
pressSuffix: '開始錄音',
asrKind: '語音辨識',
llmKind: '文字處理',
asrName: '火山引擎',
asrSubname: 'bigmodel',
llmName: 'OpenAI 兼容',
llmConfigured: '已配置 active LLM',
llmNotConfigured: '未配置',
statusConfigured: '已配置',
statusNotConfigured: '未配置',
statusUnknown: '無法讀取',
credentialsLoadError: '無法讀取憑據狀態',
metricChars: '今日字數',
metricSegments: '{{count}} 段',
metricDuration: '今日總時長',
metricAvg: '平均段落',
metricAvgTrend: '今日均值',
metricNoData: '暫無數據',
historyLoadError: '歷史讀取失敗',
metricTotal: '累計記錄',
metricTotalTrend: '本機存檔 (上限 200)',
activityTitle: '年度活動',
activityCount: '{{count}} 次聽寫',
activityLoadError: '活動數據讀取失敗',
period: {
ariaLabel: '統計週期',
last7Days: '近 7 天',
last30Days: '近 30 天',
dailyAverage: '日均 {{value}}',
minutes: '{{value}} 分鐘',
hoursMinutes: '{{hours}} 小時 {{minutes}} 分',
},
metricName: {
ariaLabel: '統計指標',
count: '條數',
chars: '字數',
duration: '時長',
},
recentTitle: '最近識別',
recentAll: '全部記錄 →',
recentEmpty: '還沒有記錄。按 {{trigger}} 開始第一次錄音。',
recentLoadFailed: '無法讀取最近識別,請重試。',
historyRetry: '重試',
weekDays: ['日', '一', '二', '三', '四', '五', '六'],
inAppDictation: {
title: '應用內錄音',
start: '開始錄音',
stop: '停止錄音',
idle: '點擊開始錄音',
recording: '錄音中…',
processing: '處理中…',
},
androidMicBanner: {
title: '需要麥克風權限',
desc: '授權麥克風後可使用應用內錄音與語音輸入。',
grant: '彈出授權',
openSettings: '打開系統設置',
},
},
history: {
exportError: '匯出錄音失敗,請重試。',
kicker: '歷史記錄',
title: '歷史記錄',
desc: '本機保存的識別記錄。',
filterAll: '全部',
summary: '共 {{total}} 條 · 顯示 {{shown}}',
searchPlaceholder: '搜尋轉寫內容…({{shortcut}})',
searchNoMatch: '沒有符合「{{query}}」的記錄。',
empty: '還沒有歷史記錄。按 {{trigger}} 錄一段試試。',
loadFailed: '加載歷史失敗:{{err}}',
retry: '重試',
clearFailed: '清空失敗:{{err}}',
deleteFailed: '刪除失敗:{{err}}',
copyFailed: '複製失敗:{{err}}',
playRecording: '播放錄音',
audioLoading: '載入中…',
audioDecodeFailed: '音訊解碼失敗:{{err}}',
exportRecording: '匯出錄音',
exportFailed: '匯出失敗:{{err}}',
retranscribe: '重新轉錄',
retranscribing: '轉錄中…',
retranscribeFailed: '重新轉錄失敗:{{err}}',
rawLabel: '原文',
rawEmpty: '(空)',
selectHint: '左側選一條查看詳情。',
recorded: '錄音 {{duration}}',
stepAsr: '辨識',
multimodalPipeline: '多模態',
stepAsrHint: '放開按鍵後等待辨識結果的耗時。串流辨識邊錄邊轉,此值通常遠小於錄音時長。',
stepPolish: '潤飾',
stepInsert: '插入',
chars: '{{count}} 字',
vocabHits: '{{count}} 個熱詞',
inserted: '已插入',
pasteSent: '已嘗試粘貼',
copiedFallback: '已複製(需 {{shortcut}})',
insertFailed: '插入失敗',
confirmClear: '確定清空全部 {{count}} 條記錄?此操作不可恢復。',
backToList: '返回列表',
repolish: {
title: '重新潤色',
hint: '基於上面的原文再跑一次潤色。結果只在本次查看時顯示,不寫回這條記錄。原風格包已刪除或舊記錄時,重試將使用當前風格。',
retry: '用原風格重試',
retrying: '重試中…',
apply: '套用',
applying: '潤色中…',
pickStyle: '選擇風格包',
noPacks: '沒有可用的風格包。',
packsLoadFailed: '讀取風格包失敗:{{err}}',
failed: '重新潤色失敗:{{err}}',
timeout:
'當前 LLM 提供商 30 秒內沒有返回結果。換個更快的提供商,或稍後重試 —— 免費模型池經常排隊。',
resultTitle: '{{name}} 的結果',
retryResultTitle: '重試結果',
empty: '(模型返回了空結果)',
clear: '清除結果',
},
},
vocabCard: {
title: '要記住這個詞嗎?',
accept: '記住',
reject: '不用',
},
insertFallbackCard: {
copy: '複製',
copied: '已複製',
copyFailed: '複製失敗',
dismiss: '關閉',
},
vocab: {
selectAllVisible: '選取目前結果',
selectedCount: '已選取 {{count}} 個詞',
selectWord: '選取「{{phrase}}」',
deleteSelected: '刪除已選({{count}})',
batchDeleteFailed: '{{count}} 個詞條刪除失敗,已保留選取,可重試。',
kicker: '詞典',
title: '詞典',
desc: '添加生詞或專業術語,提高識別準確率。',
sectionTitle: '詞條',
placeholder: '輸入詞語,按 Enter 或點添加…',
tip: '支持中英混合 · 數字開頭按字面識別 · 命中次數自動計數',
loadFailed: '加載失敗:{{err}}',
empty: '還沒有詞條。在上面輸入一個生詞或專業術語,讓模型在聽寫時優先匹配。',
tipDisabled: '點擊禁用此詞條',
tipEnabled: '點擊啓用此詞條',
removeAria: '刪除',
edit: '編輯',
editTitle: '編輯詞彙',
editSave: '儲存',
editEmpty: '詞條不能為空。',
filter: { all: '所有', auto: '自動新增', manual: '手動新增' },
searchPlaceholder: '搜尋',
searchEmpty: '沒有符合的詞條。',
newWord: '新詞',
newWordTitle: '新增新詞',
newWordDesc: '直接輸入新詞,或從預設範本批次匯入。',
newWordInputPlaceholder: '輸入詞語,按 Enter 新增…',
newWordTemplates: '預設範本',
newWordTemplateCount: '{{count}} 詞',
newWordAddSelected: '新增所選',
learnedSection: '自動收集({{count}})',
removeAllLearned: '全部刪除',
corrections: {
title: '糾正規則',
tip: '修正常見 ASR 誤識別,支援 {num} 數字通配。',
patternPlaceholder: '誤識別寫法,如 {num}粒',
replacementPlaceholder: '目標寫法,如 {num}例',
empty: '還沒有糾正規則。',
invalid: '僅支援字面替換,或一個 {num} 通配數字的規則,例如 {num}粒 → {num}例。',
tipDisabled: '點擊停用此規則',
tipEnabled: '點擊啟用此規則',
removeAria: '刪除糾正規則',
learnedBadge: '自動',
learnedTip: '從你的手動修改中自動收集。可以隨時刪掉。',
onlyLearned: '只看自動收集的({{count}})',
removeAllLearned: '刪除全部自動收集的',
suggestTitle: '要記住這個改法嗎?',
suggestAccept: '記住',
suggestDismiss: '不用',
},
presets: {
title: '場景預設',
tip: '可多選批量啟用,支援編輯和新建。',
create: '新建預設',
apply: '啓用所選',
save: '保存預設',
edit: '編輯 {{name}}',
newPreset: '新預設',
namePlaceholder: '預設名稱',
wordsPlaceholder: '詞條(用逗號或換行分隔)',
},
},
style: {
kicker: '風格',
title: '輸出風格',
desc: '選擇錄音的預設輸出風格。',
masterToggle: '整體啓用',
currentDefault: '當前默認',
ariaSetDefault: '設爲默認',
saveFailed: '保存失敗:{{error}}',
customPromptTitle: '自定義提示詞',
customPromptPlaceholder: '可選,追加到這個風格的內建 system prompt 末尾。',
customPromptHint:
'留空則保持當前行為不變。保存後會在該風格的潤色和 repolish 中生效;按 Ctrl/Cmd+Enter 也可保存。',
customPromptSave: '保存提示詞',
customPromptDirty: '未保存',
systemPromptMovedHint:
'完整 System Prompt 已移到 設定 -> Providers 頁面統一編輯。這裡現在只負責風格啟停和預設風格。',
modes: {
raw: {
name: '原文',
desc: '只補標點和必要分句,不改寫不擴寫。',
sample: '保留原始口語;嗯、那個等口癖會被去除,但不會重組語句。',
},
light: {
name: '輕度潤色',
desc: '去口癖、補標點,整理爲可發送的自然文字。',
sample: '讓轉寫聽起來不像念稿——保留語氣和表達習慣,但行文流暢。',
},
structured: {
name: '清晰結構',
desc: '面向程式協作、技術排障和產品回饋,準確保留術語並整理結構。',
sample: '1. 主題一\na. 要點\nb. 要點\n2. 主題二\na. 要點\nb. 要點',
},
formal: {
name: '正式表達',
desc: '工作溝通和郵件場景,更專業更完整。',
sample: '郵件場景自動識別問候 / 落款;不引入空泛客套。',
},
},
pack: {
builtinTags: {
minimalEdits: '最小改寫',
strongCorrection: '強糾錯',
communication: '溝通',
natural: '自然',
organized: '條理',
workplaceCommunication: '工作溝通',
aiCoding: 'AI 程式開發',
technicalStructure: '技術結構化',
},
newName: '未命名風格',
newDescription: '簡短描述這個風格的使用情境。',
uploadIcon: '為「{{name}}」上傳 SVG 圖示',
resetIcon: '還原預設圖示',
iconSaved: '圖示已儲存',
iconInvalid: '請選擇不含外部資源的有效 SVG 圖示(最大 256 KB)。',
iconSaveFailed: '圖示儲存失敗,請再試一次。',
selectionListTitle: '選區書面潤色風格',
selectionListDesc:
'用於無需 ASR 的已選文字:單純語法、清晰度和格式潤色。可為它單獨選擇風格與 Prompt。',
dictationTab: '錄音 / ASR 風格',
selectionTab: '選區潤色',
current: '目前',
useForSelection: '用於選區',
writtenPolish: '書面潤色',
selectionPromptTitle: '選區潤色 Prompt(無 ASR)',
selectionPromptHint:
'用於使用者主動選中的書面文字;不經過 ASR,不把內容當成轉寫,也不回答其中的問題。',
selectionPromptEditorDesc:
'目前編輯選區潤色 Prompt;輸入對象是使用者主動選中的書面文字,不經過 ASR。',
dictationPromptEditorDesc: '目前編輯錄音 / ASR 風格 Prompt;輸入對象是語音辨識後的轉寫文本。',
dictationPromptTitle: '錄音 / ASR Prompt',
dictationPromptHint:
'用於錄音轉寫後的 ASR 文本;這裡可以寫口語整理、ASR 錯字糾正和專有名詞還原規則。',
selectionPromptFallback: '尚未配置書面潤色 Prompt;將使用安全預設規則。',
selectionActivated: '已將「{{name}}」用於選區潤色',
selectionActivateFailed: '選區潤色風格切換失敗:{{err}}',
selectionChars: '{{count}} 字元',
kicker: '風格包',
title: '風格包',
desc: '管理本機風格包。',
marketplaceBtn: '風格市場',
loadFailed: '載入風格包失敗:{{err}}',
importZip: '匯入 ZIP',
exportZip: '匯出 ZIP',
exportShort: '匯出',
publishMarketplace: '發布到風格市場',
updateMarketplace: '更新到風格市場新版本',
publishDisabledHint: '請先在 設定 → 風格市場 設定 GitHub 使用者名稱',
publishSuccess: '發布成功,等待 marketplace 審核',
publishFailed: '發布失敗:{{err}}',
publishBuiltinRejected: '內建風格包不能直接發布,請先編輯產生一份匯入版。',
builtin: '內建',
imported: '匯入',
active: '目前',
activate: '啟用',
edit: '編輯',
closeEditor: '關閉',
unsaved: '未儲存',
listTitle: '本機風格包',
listDesc: '瀏覽和切換風格包。',
listCount: '{{count}} 個風格包',
addPackTileTitle: '新建風格包',
addPackTileHint: '從空白範本開始。',
createSuccess: '已建立新風格包',
createFailed: '建立風格包失敗:{{err}}',
save: '儲存',
revert: '還原',
saveSuccess: '風格包已儲存',
saveFailed: '儲存風格包失敗:{{err}}',
activateSuccess: '已將"{{name}}"設為目前風格',
activateFailed: '設為目前風格失敗:{{err}}',
importSuccess: '已匯入"{{name}}"',
importFailed: '匯入 ZIP 失敗:{{err}}',
exportSuccess: '已匯出到 {{path}}',
exportFailed: '匯出 ZIP 失敗:{{err}}',
exportDirtyFirst: '請先儲存目前風格包,再匯出 ZIP。',
resetBuiltin: '重設',
resetSuccess: '已重設"{{name}}"',
resetFailed: '重設風格包失敗:{{err}}',
deleteImported: '刪除',
deleteConfirm: '確定刪除"{{name}}"嗎?刪除後無法復原。',
deleteSuccess: '已刪除"{{name}}"',
deleteFailed: '刪除風格包失敗:{{err}}',
summaryCurrentEmpty: '還沒有選中風格包',
editorTitle: '編輯風格',
editorDesc: '編輯目前風格包。',
metaTitle: '安裝資訊',
metaSource: '來源',
metaBaseMode: '基礎模式',
metaUpdatedAt: '更新時間',
fieldName: '名稱',
fieldAuthor: '作者',
fieldAuthorPlaceholder: '可選,方便標註來源',
fieldVersion: '版本',
fieldTags: '標籤',
fieldTagsPlaceholder: '用英文逗號分隔,例如 community, voiceover, formal',
fieldDescription: '描述',
fieldModel: '建議模型(僅元資料)',
fieldModelPlaceholder: '可選,例如 gpt-4.1 / deepseek-v3',
fieldModelHint: '僅作說明,不會切換實際模型。',
fieldCompatibility: '相容版本',
fieldCompatibilityPlaceholder: '可選,例如 >=1.3.0',
fullPromptTitle: 'System Prompt',
fullPromptHint: '這就是這套風格包自己的 Prompt。',
promptChars: '{{count}} 字元',
runtimeTitle: 'OpenLess 執行時附加指令',
runtimeDesc: '只讀的執行時輔助項。',
runtimeContextTitle: '上下文前提',
runtimeContextDesc: '來自語言與應用上下文',
runtimeContextEmpty: '目前不會附加',
runtimeHotwordTitle: '熱詞提示段',
runtimeHotwordDesc: '來自已啟用熱詞',
runtimeHotwordEmpty: '目前不會附加',
runtimeHistoryTitle: '多輪歷史保護段',
runtimeHistoryDesc: '僅用於即時多輪 polish',
runtimeHistoryEmpty: '只有存在 prior turns 時才會附加',
runtimeActive: '目前生效',
runtimeInactive: '目前未生效',
runtimePreviewFailed: '產生執行時預覽失敗:{{err}}',
runtimePreviewOmittedFrontApp: '預覽已省略前台 app 標籤。',
examplesTitle: '效果範例',
examplesDesc: '會隨風格包一起匯出。',
addExample: '新增範例',
examplesEmpty: '還沒有範例。',
exampleTitlePlaceholder: '範例 {{index}} 標題',
exampleInput: '輸入',
exampleOutput: '輸出',
examplesCount: '{{count}} 個範例',
discardCloseConfirm: '關閉編輯面板前要捨棄未儲存修改嗎?',
discardSwitchConfirm: '要捨棄目前未儲存修改,並切換到"{{name}}"嗎?',
derivativeBadge: '衍生自 @{{login}}',
},
},
translation: {
searchLanguages: '搜尋語言…',
noMatchingLanguages: '沒有符合的語言',
selectedLanguages: '已選擇 {{count}} 種語言',
languageSupportHint: '語音服務支援的語種可能不同;翻譯目標不受介面語言限制。',
kicker: '翻譯',
title: '翻譯',
desc: '錄音後自動翻譯為目標語言再插入。',
statusEnabled: '已啓用',
statusDisabled: '未啓用',
working: {
title: '工作語言',
desc: '勾選日常使用的語言,影響潤色與翻譯效果。',
},
target: {
title: '翻譯目標語言',
desc: '錄音時按 Shift 觸發翻譯。選「不啟用」則 Shift 無效。',
disabled: '不啓用(Shift 按下不觸發翻譯)',
sameAsWorking:
'目標語言與你唯一的工作語言相同,翻譯不會生效:按 Shift 仍按普通潤色處理。換一個目標語言,或在上方多勾選一個工作語言。',
},
style: {
title: '翻譯風格',
desc: '自動沿用「風格」頁目前啓用的風格包。',
unavailable: '暫時無法取得',
},
save: {
workingFailed: '工作語言保存失敗,請重試。',
targetFailed: '翻譯目標語言保存失敗,請重試。',
hotkeyRegisterFailed: '翻譯快捷鍵註冊失敗,未繼續保存。',
hotkeySaveFailed: '翻譯快捷鍵保存失敗,請重試。',
},
howto: {
title: '使用方法',
step1: '在任意輸入框聚焦游標。',
step2: '按 {{trigger}} 開始錄音。',
step3: '錄音中按一下 {{shortcut}} 啟動翻譯。',
step4: '再按 {{trigger}} 停止錄音。',
step5: '翻譯結果自動插入到游標位置。',
indicatorTitle: '怎麼知道翻譯模式生效了',
indicatorDesc: '按 Shift 後螢幕底部會顯示藍色「正在翻譯」標識。',
fallbackTitle: '安全兜底',
fallbackDesc: '翻譯失敗時回退為插入原始轉寫,不會丟字。',
},
},
selectionAsk: {
title: '劃詞追問',
desc: '選中文字後語音提問,支援多輪追問。',
shortcutSettings: '快捷鍵設定',
guide: {
openTitle: '開啟追問浮窗',
openDesc: '按 <key>{{hotkey}}</key>,開始一輪對話。',
unsetDesc: '先到快捷鍵設定中,為劃詞追問設定快捷鍵。',
selectTitle: '選取想了解的內容',
askTitle: '開口說出問題',
askDesc: '按 <key>{{recordHotkey}}</key> 錄音,再按一次提交。',
followup: '繼續使用錄音快捷鍵,即可多輪追問。',
dismiss: '關閉浮窗,結束本次對話',
},
hotkey: {
title: '彈出浮窗的快捷鍵',
},
save: {
historySaveFailed: 'Q&A 歷史保存設置保存失敗,請重試。',
},
history: {
title: '保存歷史',
desc: '開啟後在本地保存問答記錄,預設關閉。',
},
howto: {
title: '使用方法',
step2: '在任意 app 選中文字。',
},
},
settings: {
selectionWorkspace: {
title: '選區助手',
hint: '選中文字後按同一快捷鍵:關閉語音編輯時直接潤色;開啟後口述指令,說完再選擇「提問」或「編輯選區」。',
polishHotkey: '選區助手快捷鍵',
polishHotkeyDesc:
'關閉語音編輯時直接潤色;開啟語音編輯時按住口述指令(錄音方式跟隨全域設定)。',
polishDelivery: '結果處理',
voiceDeliveryDesc: '語音編輯完成後:直接替換選區,或在華詞面板中預覽後再確認。',
voiceEnable: '語音編輯',
voiceEnableDesc: '與上方同一快捷鍵;錄音方式跟隨全域設定(目前:{{recordingLabel}})。',
autoIntent: '自動判斷意圖',
autoIntentDesc:
'開啟後預設用服務配置的模型判斷問句 vs 編輯;模型不可用或解析失敗時回退到問句啟發式。',
editKeywords: '額外問句線索',
editKeywordsDesc: '關閉自動判斷時生效;每行一個,指令含則視為提問,否則仍按問句啟發式判定。',
},
selectionPolish: {
title: '選區潤色',
hotkey: '觸發快捷鍵',
hotkeyDesc: '錄製後立即生效;與錄音、追問等全域快捷鍵衝突時會被拒絕。',
delivery: '結果處理方式',
hint: '選取任意文字後觸發。它不依賴麥克風或 ASR,使用目前風格包與獨立的選區 Prompt。',
directReplace: '直接覆蓋',
directReplaceHint: '模型完成後安全替換原選區。',
previewConfirm: '預覽確認',
previewConfirmHint: '在可編輯彈窗中核對結果,再確認覆蓋原選區。',
},
kicker: '設定',
title: '設置',
desc: '錄音、提供商、快捷鍵與權限配置。',
network: {
title: '網路',
useSystemProxyLabel: '使用系統代理',
useSystemProxyDesc:
'開啟時請求跟隨系統代理;關閉後所有網路請求直連(國內服務延遲通常更低),GitHub 登入、更新等境外服務可能連不上。即時語音串流與 Less Computer 不受此開關影響。',
},
dataStorage: {
title: '資料儲存',
desc: '本機保留的歷史會話與對話上下文。',
cursorContextLabel: '游標上下文(實驗)',
cursorContextDesc:
'潤稿時讀取你正在寫的那篇文件中游標附近的原文,幫模型判斷同音詞、專有名詞與代詞該怎麼寫。開啟後這段文字會隨請求送給你設定的 LLM 服務商;關閉時一個字都不讀。密碼輸入框、Secure Input、密碼管理器與終端機始終不讀。僅 macOS。',
},
codingConsole: {
title: 'Claude 主控台',
desc: '偵測本機 Claude Code 與 MCP(computer use)狀態,並以護欄方式無頭執行一次 Claude、串流檢視輸出與用量。',
guardNote:
'預設放行可復原操作;rm -rf / sudo / 強制推送等高風險指令會被攔截;若工作目錄為 git 儲存庫,執行前自動建立快照可回滾。',
status: '狀態',
detect: '偵測',
detecting: '偵測中…',
installed: '已偵測到 Claude',
notInstalled: '未偵測到 claude',
notInstalledHint:
'請先安裝 Claude Code(參見 docs.anthropic.com/claude-code),或在下方填入其執行檔完整路徑。',
mcpServers: '已設定 {{count}} 個 MCP 服務',
computerUsePresent: '已設定桌面控制(computer use)MCP',
computerUseAbsent: '未設定桌面控制 MCP(複製/貼上等輕動作用 Bash 即可,無需此項)',
exePath: '執行檔',
workdir: '工作目錄',
workdirDesc: '選填。Claude 在此目錄內執行;填入 git 儲存庫可啟用執行前快照回滾。',
workdirPlaceholder: '留空則於暫存目錄執行',
permissionMode: '權限模式',
mode: {
acceptEdits: '放行(可復原操作)',
plan: '唯讀 / 計畫',
default: '預設(逐項確認)',
bypassPermissions: '完全放行(高風險)',
},
promptPlaceholder: '讓 Claude 做點什麼,例如:列出目前目錄的檔名',
run: '執行',
running: '執行中…',
cancel: '取消',
clear: '清空',
riskWarn: '偵測到高風險意圖:{{reason}}。護欄會在執行層攔截高風險指令。',
toolUse: '呼叫工具 {{name}}',
done: '完成',
doneCost: '完成 · 用量 ${{cost}}',
cancelled: '已取消',
outputPlaceholder: '輸出會串流顯示在這裡…',
},
codingAgent: {
title: 'Less Computer',
desc: '按住一個鍵說話,由所選 Agent 幫你操作電腦。僅 macOS。',
enable: '啟用 Less Computer',
comingSoonNote: '設定即時儲存;熱鍵觸發與執行鏈路隨後續版本生效。',
hotkeyHint: '開啟後,按住快捷鍵說話,放開後由所選 Agent 處理並把結果顯示在膠囊裡。',
voiceHotkey: '按住說話鍵',
voiceHotkeyDesc:
'按住說話、放開執行。支援 Ctrl/Option/Fn 等單鍵。功能說明參見「進階」設定頁。',
provider: 'Agent 後端',
opencodeReady: '已偵測到 OpenCode v{{version}}。',
opencodeMissing:
'未偵測到 opencode 指令。請先安裝(npm i -g opencode-ai)並用 opencode auth login 登入後再使用。',
cliReady: '已偵測到 {{name}} v{{version}}。',
cliMissing: '未偵測到 {{name}} 指令。請先安裝並登入,或在下方「執行檔」欄填它的絕對路徑。',
sandboxGuardHint:
'此後端只有粗粒度沙箱層級,沒有逐指令的高風險清單:碰到限制時會直接據實回報錯誤,不會跳出「核准這條指令」的卡片。',
codexModelHint: '填 Codex 的模型名稱(如 gpt-5);留空則使用 ~/.codex/config.toml 的設定。',
codexBudgetHint: 'Codex 沒有單次美元預算上限;費用取決於你設定的服務商。',
codexMode: {
plan: '唯讀 / 計畫',
workspaceWrite: '允許工作目錄寫入',
},
codexModelPlaceholder: '留空 = 使用 Codex 自己的預設',
dshModelHint:
'dsh 的 headless 設定沒有模型開關:模型由 dsh 自己的 profile 決定,這裡改不了。',
panelHotkey: '面板鍵(語音 Agent)',
panelHotkeyDesc: '錄音 → ASR → Claude → 結果串流進面板。預設 Cmd/Ctrl+Shift+Enter。',
quickHotkey: '快取用鍵',
quickHotkeyDesc: '取目前選取文字 → Claude → 結果回插游標處。不開面板、更快。',
model: '模型',
modelPlaceholder: '預設 sonnet',
modelDefault: '預設(自動 sonnet)',
modelHint: 'Haiku 最快 · Sonnet 均衡 · Opus 最強',
opencodeModelDefault: '使用 OpenCode 預設模型',
opencodeModelHint: '自動拉取 OpenCode 目前帳號可用的 provider/model;選取後立即儲存。',
opencodeModelsRefresh: '重新拉取模型',
opencodeModelsRefreshing: '正在拉取 OpenCode 模型…',
opencodeModelsLoaded: '已拉取 {{count}} 個模型。',
opencodeModelsEmpty: '沒有回傳可用模型,請先完成 OpenCode 登入或設定模型提供商。',
opencodeModelsError: '拉取模型失敗:{{message}}',
exe: '可執行檔路徑',
openPanel: '文字測試',
openPanelHint: '直接開啟 Less Computer 浮窗,以文字驗證目前的 Agent 與模型設定。',
openPanelAction: '開啟 Less Computer',
},
debug: {
cursorLabel: '游標',
title: '除錯工具',
desc: '排查辨識問題時使用,平時無需開啟。',
cursorProbeLabel: '游標上下文探針',
cursorProbeDesc:
'點一下,然後在倒數內切到目標 app 並點進輸入框——探針會讀那裡的游標附近原文,用來確認哪些 app 讀得到、哪些被安全閘門擋住。只讀一次,不送給任何服務商。',
cursorProbeBtn: '探測(5 秒後)',
cursorProbeCountdown: '{{n}} 秒後讀取…',
},
marketplace: {
title: '擴充市集',
desc: '風格市集的上傳身份。瀏覽與安裝風格在「風格」頁內完成。',
github: {
signIn: '用 GitHub 帳號登入',
signedIn: '已透過 GitHub 登入',
signedOut: '登入後即可上傳風格、為風格按讚。',
signOut: '登出',
starting: '正在發起登入…',
codeHint: '在開啟的 GitHub 頁面輸入這個驗證碼:',
openGithub: '開啟 GitHub',
waiting: '已開啟 GitHub,完成授權後會自動登入…',
failed: '登入失敗,請重試',
},
},
recording: {
title: '錄音與輸入',
desc: '定義全局錄音的快捷鍵與觸發方式。',
hotkeyLabel: '錄音快捷鍵',
hotkeyDescAcc: '按下即開始捕獲語音,全局生效。需要授予輔助功能權限。',
hotkeyDescNoAcc: '按下即開始捕獲語音,全局生效。無需額外輔助功能授權。',
modeLabel: '錄音方式',
modeDesc: '切換式 = 按一次開始、再按一次結束;按住說話 = 按住開始、鬆開結束。',
modeToggle: '切換式',
modeHold: '按住說話',
modeAuto: '自動',
silenceAutoStopLabel: '靜音後自動停止',
silenceAutoStopDesc:
'僅切換模式生效。偵測到語音後,連續靜音達到所選時長即自動結束並提交;一直沒說話則 10 秒後取消。預設關閉;第二次按鍵停止和 Esc 取消仍然有效。',
silenceAutoStopSecondsLabel: '靜音時長',
silenceAutoStopSecondsValue: '{{value}} 秒',
migrationNoticeTitle: '默認已改爲切換式說話',
migrationNoticeDesc:
'如果你之前改過快捷鍵觸發方式,請在這裏手動確認一次。本次更新調整了快捷鍵方式的默認值與讀取邏輯;如果你更習慣按住說話,可以重新切回“按住說話”。',
comboRecordLabel: '錄製快捷鍵',
comboRecordDesc: '點擊後按下你想要的快捷鍵組合(如 ⌘⇧D),支援 Toggle 與 Hold 模式。',
comboRecordBtn: '錄製快捷鍵',
comboResetBtn: '重置',
comboMenuToggle: '更多操作',
comboDisableHint: '核心快捷鍵不可停用,錄音必須綁定一個快捷鍵',
comboRecordHint: '請按下快捷鍵組合…',
comboNeedKey: '請設定組合鍵(如 ⌘⇧J),不支援單獨的修飾鍵',
comboRecorded: '已錄製',
comboClear: '清除',
comboConflict: '此快捷鍵組合不可用',
microphoneLabel: '首選麥克風',
microphoneDesc:
'選擇優先使用的輸入設備。設備暫時不可用時會使用系統默認麥克風,重新連接後自動切回首選設備。',
microphoneDefault: '系統默認麥克風',
microphoneDefaultDesc: '使用系統默認輸入設備',
microphoneSystemDefault: '系統默認',
microphoneUnavailable: '不可用',
microphoneLoadError: '麥克風列表讀取失敗:{{message}}',
microphoneDialogTitle: '麥克風',
microphoneDialogDesc: '選擇能捕捉到您聲音的麥克風。如果指示條沒有移動,請嘗試其他麥克風。',
microphoneMonitorError: '輸入電平監聽失敗:{{message}}',
capsuleLabel: '錄音膠囊',
capsuleDesc: '錄音 / 轉寫時在屏幕底部顯示半透明膠囊。',
capsuleStyleTypeless: 'Typeless 傳統風格',
capsuleStyleLabel: '膠囊樣式',
capsuleStyleSiri: '流光 Siri 風格',
capsuleStyleClassic: 'Openless 預設風格',
muteDuringRecordingLabel: '錄音時靜音',
muteDuringRecordingDesc: '錄音期間臨時靜音系統輸出,避免揚聲器回音。',
audioCueLabel: '錄音提示音',
audioCueDesc: '按下熱鍵開始錄音時播放一段合成提示音,提醒已開始錄音。膠囊隱藏時也會響。',
audioCuePreview: '試聽',
insertGroupTitle: '插入與剪貼板',
restoreClipboardLabel: '插入後恢復剪貼板',
restoreClipboardDesc: '粘貼成功後恢復你原來的剪貼板內容(僅 Windows / Linux)。',
pasteShortcutLabel: '模擬粘貼快捷鍵',
pasteShortcutDesc:
'插入時模擬按下的粘貼鍵,部分終端類應用需要 Ctrl+Shift+V(僅 Windows / Linux)。',
pasteShortcutCtrlV: 'Ctrl+V(默認 / 多數應用)',
pasteShortcutCtrlShiftV: 'Ctrl+Shift+V(kitty / alacritty / wezterm / 多數終端)',
pasteShortcutShiftInsert: 'Shift+Insert(xterm / urxvt)',
allowNonTsfFallbackLabel: '允許非 TSF 兜底',
allowNonTsfFallbackDesc:
'Windows:TSF 失敗時使用分批 Unicode SendInput;如果仍失敗,再複製到剪貼簿。',
windowsInsertionModeLabel: 'Windows 插入方式',
windowsInsertionModeDesc:
'聽寫結果如何插入到目前游標位置。剪貼簿貼上模式使用上方「模擬粘貼快捷鍵」,可完整保留換行。',
windowsInsertionModeTsf: 'TSF 輸入法(預設)',
windowsInsertionModeSendInput: 'SendInput 逐字模擬',
windowsInsertionModePaste: '剪貼簿貼上(Ctrl+V 等)',
macosNewlineModeLabel: '換行怎麼落',
macosNewlineModeDesc:
'自動會在已知終端應用中使用 Line Feed(U+000A / Ctrl+J),其他應用使用 Shift+Return;Return 會直接發送。',
macosNewlineModeAuto: '自動(終端使用 Line Feed)',
macosNewlineModeShiftReturn: 'Shift+Return(聊天框換行)',
macosNewlineModeLineFeed: 'Line Feed(終端 CLI / Ctrl+J)',
macosNewlineModeReturn: 'Return(拆成多條訊息)',
windowsSendInputNewlineModeLabel: 'SendInput 換行模擬',
windowsSendInputNewlineModeDesc:
'SendInput 模式下如何把換行符模擬成按鍵。聊天框通常選 Shift+Enter;記事本 / VS Code 等選 Enter。',
windowsSendInputNewlineModeEnter: 'Enter(多數編輯器)',
windowsSendInputNewlineModeShiftEnter: 'Shift+Enter(聊天輸入框)',
windowsSendInputNewlineModeCrLf: 'CR+LF Unicode',
windowsShowOpenlessInKeyboardListLabel: '在鍵盤列表中顯示 OpenLess',
windowsShowOpenlessInKeyboardListDesc:
'關閉後 Win+Space 切換輸入法時不會出現 OpenLess;SendInput 與剪貼簿貼上插入不受影響。重新開啟本項可恢復顯示。',
windowsShowOpenlessInKeyboardListError:
'無法更新鍵盤列表:系統拒絕更改 OpenLess 語言設定檔。',
historyGroupTitle: '歷史與上下文',
historyRetentionLabel: '歷史保留天數',
historyRetentionDesc: '超過保留天數的歷史在寫入新條目時被清理;0 = 不按時間清理。',
historyMaxEntriesLabel: '歷史條數上限',
historyMaxEntriesDesc: '本地保留會話上限,留空 = 200。範圍 5–200。',
polishContextWindowLabel: '對話上下文窗口(分鐘)',
polishContextWindowDesc: '把最近 N 分鐘內已潤色的轉寫作為多輪上下文,0 = 關閉。',
recordAudioForDebugLabel: '保留原始錄音(除錯)',
recordAudioForDebugDesc: '保存原始麥克風音訊為 wav,便於排查識別問題。',
audioRecordingMaxEntriesLabel: '原始錄音保留條數',
audioRecordingMaxEntriesDesc: '本地保留 wav 檔案數上限,留空 = 200。',
startupGroupTitle: '啟動',
startMinimizedLabel: '啓動時靜默運行',
startMinimizedDesc: '所有啓動路徑都不彈主窗口,僅選單欄 / 托盤運行。',
autoUpdateCheckLabel: '自動檢查更新',
autoUpdateCheckDesc: '啟動時及每 60 分鐘自動檢查更新。',
marketplaceGroupTitle: '風格市場',
marketplaceBaseUrlLabel: '雲端服務位址',
marketplaceBaseUrlDesc: '風格市場後端 URL,留空使用預設值。',
marketplaceDevLoginLabel: 'GitHub 使用者名稱(上傳身份)',
marketplaceDevLoginDesc: '標識上傳者身分,為空時無法上傳或按讚。',
startupAtBoot: '開機自啓',
startupAtBootDesc: '登錄系統時自動啓動 OpenLess。',
startupAtBootError: '開機自啓切換失敗:{{message}}',
},
channels: {
backToList: '返回渠道列表',
done: '完成',
llmTitle: '文字處理渠道',
asrTitle: '語音辨識渠道',
current: '目前使用',
enabled: '啟用',
disabled: '已停用',
enabledFor: '啟用 {{name}}',
modelNotSet: '未單獨設定模型',
localModelManaged: '模型由系統或「本地模型」頁管理',
lastCheck: '上次驗證',
verifying: '正在驗證…',
notVerified: '尚未驗證',
passed: '驗證通過',
failed: '驗證失敗 · {{reason}}',
elapsed: '耗時 {{ms}} ms',
staleResult: '結果已超過 24 小時',
connectionTitle: '服務連線',
modelTitle: '模型設定',
modelHint: '直接輸入模型名稱,或取得並選擇供應商的可用模型。',
availableModels: '可用模型',
validationTitle: '連線驗證',
validationHint:
'手動發出一次實際請求,檢查目前設定;可能消耗服務額度。儲存設定不會自動驗證。',
autoSaveHint: '修改欄位後會自動儲存;完成設定後,可手動驗證連線。',
nameHint: '名稱僅用於區分同一供應商的多個渠道,不影響模型或連線。',
errModel: '模型',
verify: '驗證',
verifyHint: '點一下會真實呼叫一次介面,確認這張卡現在可用',
errTimeout: '逾時',
errNetwork: '網路',
errEndpoint: '網址',
errGeneric: '失敗',
dragHint: '按住拖曳可調整優先順序',
orderHint: '請求會使用列表中第一個啟用的渠道。拖曳可調整順序;停用的渠道會移到末尾。',
empty: '還沒有渠道。點選「新增渠道」,連接你的第一個服務。',
add: '新增渠道',
edit: '編輯',
createTitle: '新增渠道',
editTitle: '編輯渠道',
providerLabel: '供應商',
nameLabel: '渠道名稱(選填)',
namePlaceholder: '例如:矽基流動-主帳號',
create: '建立',
delete: '刪除渠道',
deleteConfirm: '刪除後該渠道儲存的金鑰也會一併清除。',
confirmDelete: '確認刪除',
justNow: '剛剛',
minutesAgo: '{{count}} 分鐘前',
hoursAgo: '{{count}} 小時前',
daysAgo: '{{count}} 天前',
localEngineModelHint: '可在「AI 服務與模型 → 本地模型」中下載和切換本地模型。',
},
providers: {
localEngineNoCredentials: '本機引擎不需要 API Key 與網址。',
localModelLabel: '本地模型',
localModelEmpty: '尚未下載本地模型',
appleSpeechLocalNote: 'Apple 語音辨識使用系統內建引擎,無需選擇模型。',
localEngineNote:
'已下載的本地模型在上方下拉中直接選擇;更多模型在「本地模型」看板下載與管理。',
localTag: '本地',
llmTitle: 'LLM 模型(潤色)',
llmDesc: 'OpenAI 兼容協議,支持多家供應商切換。',
providerLabel: '供應商',
llmProviderDesc: '選擇後將自動填入 Base URL 默認值。',
credentialStorageNotice: '憑據保存在系統憑據庫中。',
codexOAuthNotice:
'Codex OAuth 使用本機 Codex 登入狀態(~/.codex/auth.json),無需在 OpenLess 中保存 API Key 或 Base URL。',
asrProviderDesc: '切換後將自動選用對應憑據。',
asrTitle: 'ASR 語音(轉寫)',
asrDesc: '用於將錄製的語音轉寫為文字。',
omniTitle: '多模態模型',
omniDesc: '一個模型直接接收「提示詞 + 音訊」一步輸出最終文字(實驗性管線)。',
pipelineModeLabel: '識別管線',
pipelineModeHint: '傳統 = ASR 轉寫 + LLM 潤色兩段式;多模態 = 單一多模態模型一次完成。',
pipelineModeTraditional: '傳統模式',
pipelineModeMultimodal: '多模態模式',
pipelineIsolationNotice:
'兩種模式使用完全獨立的憑證設定。切換模式不會刪除另一套設定,只是暫時停用;切回即恢復。',
presets: {
ark: 'ARK(火山方舟)',
deepseek: 'DeepSeek',
siliconflow: '硅基流動',
atlascloud: 'Atlas Cloud',
openai: 'OpenAI',
gemini: 'Google Gemini',
codexOAuth: 'Codex OAuth',
mimo: '小米 MiMo',
cometapi: 'CometAPI',
openrouterFree: 'OpenRouter(免費模型)',
orcarouter: 'OrcaRouter',
alibabaCoding: '阿里雲 Coding Plan',
codingPlanX: 'CodingPlanX',
minimax: 'MiniMax(M3)',
stepfun: 'StepFun(階躍星辰)',
opencode: 'OpenCode Zen',
tencentTokenHub: '騰訊雲 TokenHub',
customChatCompletions: '自訂 · Chat Completions',
customResponses: '自訂 · Responses',
customMessages: '自訂 · Messages',
custom: '自定義',
asrVolcengine: '火山引擎 bigasr',
asrBailian: '阿里雲百煉即時 ASR',
asrBailianQwen3: '阿里雲百煉 Qwen3 即時 ASR',
asrBailianFunAsrFlash: '阿里雲百煉 Fun-ASR-Flash(錄音檔)',
asrSiliconflow: '硅基流動 SenseVoice',
asrStepfun: '階躍星辰 StepAudio',
asrZhipu: '智譜 GLM-ASR',
asrGroq: 'Groq Whisper-large-v3',
asrWhisper: 'OpenAI Whisper(兼容)',
asrOpenrouter: 'OpenRouter Whisper',
asrZenmux: 'ZenMux',
asrOpenAiCompatible: '自訂 OpenAI 相容',
asrXiaomiMimo: '小米 MiMo ASR',
asrIflytek: '訊飛即時語音轉寫',
asrTencentCloud: '騰訊雲混元即時 ASR',
asrElevenLabs: 'ElevenLabs Scribe',
asrSherpaOnnxLocal: '本地 sherpa-onnx(實驗性)',
asrFoundryLocalWhisper: '本地 Whisper(Foundry Local)',
asrLocalWhisper: '本地 Whisper(批次解碼)',
asrLocalQwen3: '本地 Qwen3-ASR',
asrLocalQwen3Mlx: '本地 Qwen3-ASR(MLX / Metal)',
asrLocalQwen3C: '本地 Qwen3-ASR(C / CPU)',
asrAppleSpeech: 'Apple 語音(macOS)',
omniOpenai: 'OpenAI(支援音訊)',
omniGemini: 'Google Gemini',
omniDashscope: '阿里雲百煉 Omni',
},
elevenLabsUploadNotice: 'ElevenLabs 會將錄音上傳至已設定的端點進行批次轉寫。',
zenmuxVocabularyNote:
'ZenMux 走 JSON 轉寫協定,不傳送詞典熱詞(prompt/hotwords);詞典仍會進入潤色鏈路,但不會參與語音辨識偏置。',
asrAdvancedNote:
'以下進階選項僅影響「自訂 OpenAI 相容」與「ZenMux」預設;其餘具名廠商預設維持內建行為。',
asrAdvancedVerboseJsonLabel: '分段指標 (verbose_json)',
asrAdvancedVerboseJsonHint:
'服務端支援時回傳 segments 指標,用於幻聽過濾;自建服務若不支援請保持關閉。',
asrAdvancedChunkLabel: '分片時長 (ms)',
asrAdvancedChunkHint:
'0 = 不分片,整段傳送;按片段多次請求,適合長錄音或服務端單次請求時長受限。',
asrAdvancedEnableItnLabel: '數字正規化 (enable_itn)',
asrAdvancedEnableItnHint:
'把口語數字/單位正規化為阿拉伯數字(如「二零二六年」→「2026年」)。關閉後保留原始文字。',
volcengineAppKeyLabel: 'APP ID',
volcengineAccessKeyLabel: 'Access Token',
volcengineApiKeyLabel: 'API Key',
volcengineResourceIdLabel: 'Resource ID',
volcengineAuthModeLabel: '鑑權模式',
volcengineAuthModeAppIdToken: '舊版應用(APP ID + Access Token)',
volcengineAuthModeApiKey: '新版控制台 API Key',
volcengineMappingNote:
'Secret Key 當前無需填寫。Resource ID 默認使用 volc.seedasr.sauc.duration。',
volcengineApiKeyNote:
'使用新版語音控制台建立的 API Key 鑑權,無需 APP ID。API Key 可在語音控制台「API Key 管理」建立:console.volcengine.com/speech/new/setting/apikeys。Resource ID 預設使用 volc.seedasr.sauc.duration。',
xfyunAppIdLabel: 'AppID',
xfyunApiKeyLabel: 'API Key',
xfyunNote:
'在訊飛開放平台「即時語音轉寫」服務頁取得 AppID 與 API Key。音訊為 16kHz/16bit/單聲道 PCM;標準版介面暫不支援熱詞參數(可在訊飛控制台設定個人化熱詞),語種預設中文普通話。',
tencentCloudAppIdLabel: '騰訊雲 AppID',
tencentCloudSecretIdLabel: 'SecretID',
tencentCloudSecretKeyLabel: 'SecretKey',
tencentCloudNote:
'使用騰訊雲「語音辨識」服務的 API 金鑰。預設 Hy-ASR-3.0-preview 支援中英與 20 種方言;Preview 僅支援 60 秒內的 16kHz 單聲道 PCM,暫不支援上下文或熱詞增強。',
tencentTokenHubNote:
'僅顯示目前在線的語言模型。部分模型始終啟用思考;關閉思考開關時將沿用該模型的固定行為。',
localAsrActiveNotice: '當前已啓用「{{name}}」,可在「高級」中切換或停用。',
localAsrTakeoverHint: '啓動「{{name}}」後,ASR 提供商將被接管。',
asrProviderTakenOver:
'目前使用的是本地引擎,在上方下拉直接選其他供應商即可切換(本地引擎會自動停用);本地模型在「服務 → 本地模型」裡管理。',
localAsrHint: '在本機運行,無需 API Key。從 HuggingFace 下載模型即可使用。',
foundryLocalAsrHint: '在本機運行,無需 ASR API Key。首次使用需下載運行元件和模型。',
localAsrPerformanceWarning: '本地推理比雲端慢,中文準確率可能更低。適合離線或隱私敏感場景。',
localAsrReady: '{{model}} 已下載',
localAsrNotReady: '{{model}} 未下載',
localAsrGoDownload: '前往模型設置下載',
localAsrManage: '前往模型設置',
localAsrDownloadedTitle: '已下載模型',
localAsrDelete: '刪除',
fillDefault: '填入默認值',
readFailed: '讀取失敗',
apiKeyLabel: 'API 密鑰',
baseUrlLabel: '接口地址',
modelLabel: '模型',
customModelLabel: '自訂模型…',
presetListLabel: '返回預設清單',
searchModels: '搜尋模型…',
noMatchingModels: '沒有符合的模型',
orcarouterCatalogHint:
'模型來自 OrcaRouter /models;此供應商只允許從目錄中選擇,不支援手動填寫模型 ID。',
orcarouterAsrCatalogHint:
'模型來自 OrcaRouter /models,並僅顯示相容音訊輸入的 Gemini;不支援手動填寫模型 ID。',
temperatureLabel: 'Temperature',
temperaturePlaceholder: '留空則不發送;範圍 0~2(含邊界),例如 0.3',
extraHeadersLabel: '額外 Headers',
extraHeadersPlaceholder: '{"custom-head":"..."}',
thinkingModeLabel: '思考',
thinkingModeOn: '開啟',
thinkingModeOff: '關閉',
requestFormatLabel: '請求格式',
messagesThinkingLabel: '思考方式',
thinkingAdaptive: '自適應',
thinkingBudget: '固定預算',
maxTokensLabel: '最大輸出 tokens',
thinkingBudgetLabel: '思考預算 tokens',
responsesThinkingHint: '部分模型只能降低思考,無法完全關閉。推理請求不傳送溫度參數。',
messagesThinkingHint:
'舊模型或相容閘道可能需要固定預算;思考預算必須小於最大輸出。開啟思考時不傳送溫度參數。',
llmRequestFormatInvalid: '請求格式無效,請重新選擇。',
llmThinkingModeInvalid: '思考方式無效,請重新選擇。',
llmTokenLimitInvalid: 'Token 上限必須為正整數。',
llmThinkingBudgetInvalid: '思考預算至少為 1024,且固定預算必須小於最大輸出。',
llmResponseIncomplete: '回應未完整結束或達到輸出上限;已輸出正文會保留。',
llmProtocolHeaderConflict:
'Messages 已自動設定驗證與版本標頭,請移除額外 Headers 中的 x-api-key 與 anthropic-version。',
llmStreamError: '伺服器回傳串流錯誤,請檢查模型和請求參數。',
saveProtocol: '儲存協定設定',
thinkingModeHint:
'依所選請求格式與模型支援的參數啟用、關閉或降低思考,不在提示詞注入控制指令。',
bailianVocabularyIdLabel: '熱詞 Vocabulary ID(可選)',
bailianVocabularyIdNote: '如已在百煉建立熱詞表,可填寫 vocab-...;留空則不下發熱詞。',
bailianModelRealtimeHint: '即時模型 · 邊說邊出字。',
bailianModelSyncFileHint: '同步錄音模型 · 說完後整段轉寫(單條 ≤ 5 分鐘)。',
bailianModelAsyncFileHint: '非同步檔案模型 · 錄音上傳後等待轉寫工作完成。',
appIdLabel: 'App ID(應用 ID)',
accessKeyLabel: 'Access Key',
resourceIdLabel: '資源 ID',
toolsLabel: '連接檢查',
toolsDesc: '先保存上方配置,再驗證當前模型連通性或拉取模型;失敗時仍可手動填寫模型 ID。',
validate: '驗證',
validating: '驗證中…',
fetchModels: '拉取模型',
loadingModels: '拉取模型中…',
modelMissing: '未配置模型,請先填寫模型 ID。',
modelsEmpty: '鑑權成功,但沒有返回可用模型。',
modelsLoaded: '已拉取 {{count}} 個模型。',
selectModel: '選擇一個模型寫入上方字段',
modelSaved: '已保存模型 {{model}}。',
validateSuccess: '連接檢查通過。',
validateFailed: '連接檢查未通過。',
providerHttpStatus: '供應商接口返回 {{status}},請檢查 API Key 權限或 Endpoint。',
endpointMustUseHttps:
'允許使用 HTTP Endpoint,但請注意:API Key 和音訊內容可能在傳輸中外洩。',
endpointHttpWarning: '允許使用 HTTP Endpoint,但請注意:API Key 和請求內容可能在傳輸中外洩。',
endpointInvalid: 'Endpoint 格式不合法。',
bailianEndpointSchemeInvalid:
'百煉即時 ASR 走 DashScope WebSocket 閘道,接口地址必須以 wss:// 開頭(預設 wss://dashscope.aliyuncs.com/api-ws/v1/inference/);https:// 的相容模式地址在此不可用。',
qwen3EndpointSchemeInvalid:
'Qwen3 即時 ASR 走 DashScope Realtime WebSocket 閘道,接口地址必須以 wss:// 開頭(預設 wss://dashscope.aliyuncs.com/api-ws/v1/realtime);https:// 地址在此不可用。',
responseTooLarge: '供應商響應過大,已停止驗證以保證安全。',
asrInvalidJson: 'ASR 響應不是有效 JSON。',
asrMissingTextField: 'ASR 響應缺少 text 字段。',
apiKeyMissing: 'API Key 爲空。',
endpointMissing: 'Endpoint 爲空。',
volcengineAppIdMissing: 'APP ID 爲空。',
volcengineAccessTokenMissing: 'Access Token 爲空。',
requestTimeout: '請求超時,請稍後重試。',
},
shortcuts: {
title: '快捷鍵設定',
descAcc: '所有快捷鍵全局生效,需要在權限設置中開啓輔助功能。',
descNoAcc: '所有快捷鍵全局生效。若無響應,請在權限頁查看全局快捷鍵監聽狀態。',
startStop: '開始 / 停止錄音',
cancel: '取消本次錄音',
confirm: '膠囊確認插入',
switchStyle: '切換到上一個風格',
openApp: '打開 OpenLess',
stylePackTitle: '風格直達快捷鍵',
stylePackDesc: '為常用風格包各配一個快捷鍵,按下直接切換;停用中的包會自動啟用。',
stylePackAdd: '新增風格快捷鍵',
stylePackSelect: '選擇風格包',
stylePackDisabledSuffix: '(已停用)',
stylePackRemove: '移除',
agentPolish: '選取文字潤色',
agentPolishDesc: '選取文字 → 按鍵 → Claude 潤色 → 取代選取。',
agentVoice: 'Less Computer',
agentVoiceDesc: '按住自訂按鍵 → 說話 → Claude 執行任務 → 結果彈膠囊顯示。',
agentVoiceHint: '在「進階 → Less Computer」裡設定按住說話鍵。',
agentVoiceTrigger: 'Less Computer 按住說話鍵',
enable: '啟用',
disable: '停用',
confirmHint: '點擊右側 ✓',
notSupported: '暫未支持',
androidReadOnly: 'Android 不支援全域快捷鍵,請在概覽頁使用錄音按鈕。',
},
permissions: {
title: '權限',
descAcc: 'OpenLess 需要以下系統權限才能正常工作。授權後通常需要完全退出 App 重啓一次才生效。',
descNoAcc: 'OpenLess 需要麥克風可用,並依賴全局快捷鍵監聽狀態判斷 native hook 是否正常工作。',
micLabel: '麥克風',
micDesc: '用於捕獲你的語音輸入。',
accLabel: '輔助功能',
accDesc: '用於監聽全局快捷鍵並將識別結果寫入光標位置。',
hotkeyLabel: '全局快捷鍵',
hotkeyDescWithAdapter: '當前適配器:{{adapter}}。用於判斷快捷鍵監聽是否已經安裝。',
hotkeyDescPlain: '用於判斷快捷鍵監聽是否已經安裝。',
networkLabel: '網絡',
networkDesc: '雲端 ASR / LLM 調用所必需。本地模式可關閉。',
networkOk: '可用',
networkOffline: '不可用',
checking: '檢查中…',
granted: '已授權',
notApplicable: '無需授權',
denied: '未授權',
indeterminate: '未確定',
micNoDevice: '未偵測到麥克風',
openSystem: '打開系統設置',
restart: '重置授權並重新啟動',
grant: '授權',
rerunAndroidSetup: '重新執行設定向導',
hotkeyInstalled: '已安裝',
hotkeyStarting: '安裝中…',
hotkeyFailed: '監聽失敗',
windowsImeLabel: 'Windows 輸入法後端',
windowsImeDesc: '用於在語音會話期間臨時切換到 OpenLess TSF 輸入法,避免剪貼板插入限制。',
windowsImeInstalled: '已安裝',
windowsImeUnavailable: '不可用',
androidImeLabel: '輸入法 (IME)',
androidImeSelected: '已選中',
androidImeEnabled: '已啟用',
androidImeDisabled: '未啟用',
androidOverlayLabel: '懸浮窗',
androidAccessibilityLabel: '無障礙服務',
androidAccessibilityImpact:
'開啟後可在不切換鍵盤的情況下把結果輸出到目前輸入框;未開啟時仍會複製到剪貼簿,需要手動貼上。',
androidAccessibilityGrantedStale: '已授權,未連線',
androidAccessibilityMessages: {
not_android: '無障礙狀態僅在 Android 上可用。',
not_enabled: '請在系統無障礙設定中啟用 OpenLess。',
operational: '無障礙服務正在執行。',
authorized_not_connected: '無障礙已授權但未連線,請在系統設定中重新開啟 OpenLess。',
status_read_failed: '無法讀取無障礙狀態。',
},
androidShizukuLabel: 'Shizuku 增強模式',
androidShizukuHint:
'可選功能,在部分機型無法手動開啟無障礙時盡力恢復;無法完全消除跨應用競態。裝置重啟後可能需要重新啟動 Shizuku。',
androidShizukuOpenApp: '開啟 Shizuku',
androidShizukuRequestPermission: '請求授權',
androidShizukuRecover: '恢復無障礙服務',
androidShizukuRecoverConfirm:
'是否透過 Shizuku 嘗試重新啟用 OpenLess 無障礙服務?寫入時會合併當時已啟用的服務。若全域開關為關閉,啟用後可能同時啟動清單中已登記的其他無障礙服務。',
androidShizukuYes: '是',
androidShizukuNo: '否',
androidShizukuAccessibilityOperational: '無障礙服務已註冊且正在執行。',
androidShizukuAccessibilityRegistered: '已註冊:{{registered}} · 執行中:{{operational}}',
androidShizukuState: {
notInstalled: '未安裝',
notRunning: '未執行',
notAuthorized: '未授權',
authorized: '已授權',
binderDead: '連線中斷',
notAndroid: '不可用',
},
androidShizukuMessages: {
not_android: 'Shizuku 僅在 Android 上可用。',
not_installed: '未安裝 Shizuku 或 Sui 後端。',
unsupported_backend: '目前的 Shizuku 後端版本過舊,請更新 Shizuku 或 Sui 至 v11 以上。',
not_running: 'Shizuku 未執行,請先啟動 Shizuku 或 Sui。',
not_authorized: 'Shizuku 未授權,請授予 OpenLess 權限。',
binder_dead: 'Shizuku 連線已中斷,請重新啟動 Shizuku。',
authorized_operational: 'Shizuku 已授權,無障礙服務執行正常。',
authorized_registered_stale: 'Shizuku 已授權,無障礙服務已註冊但未執行。',
authorized_can_recover: 'Shizuku 已授權,可嘗試恢復無障礙服務。',
operational: '無障礙服務已註冊且正在執行。',
registered_stale: '無障礙服務已註冊,但服務目前無法使用。',
not_registered: '無障礙服務未在系統設定中啟用。',
already_granted: 'Shizuku 權限已授予。',
binder_unavailable: '請求授權時 Shizuku 服務不可用。',
request_cancelled: '已取消 Shizuku 授權請求。',
granted: 'Shizuku 權限已授予。',
denied: 'Shizuku 權限被拒絕。',
permission_permanently_denied: 'Shizuku 授權已被阻止。請開啟 Shizuku 並手動允許 OpenLess。',
launched: '已開啟 Shizuku 授權介面。',
launch_failed: '無法開啟 Shizuku 授權介面。',
open_shizuku: '已開啟 Shizuku 管理器。',
jni_error: '無法連線 Android Shizuku 後端。',
status_parse_failed: '無法解析 Shizuku 狀態。',
user_not_confirmed: '需要使用者確認後才能恢復無障礙服務。',
shizuku_unavailable: 'Shizuku 未授權或不可用。',
invalid_component: '無效的無障礙服務元件 ID。',
service_connect_failed: '無法連線 Shizuku 特權服務。',
recovery_in_progress: '已有恢復操作正在進行,請稍後再試。',
parse_failed: '無法解析恢復結果。',
service_not_bound: '設定已寫入,但無障礙服務尚未執行。',
success: '無障礙服務已恢復。',
read_failed: '無法讀取無障礙服務設定。',
read_enabled_failed: '無法讀取無障礙總開關。',
merge_failed: '無法合併無障礙服務清單。',
write_services_failed: '無法寫入已啟用無障礙服務清單。',
write_enabled_failed: '無法啟用無障礙總開關。',
readback_failed: '寫入後無法驗證無障礙設定。',
oem_rollback: '廠商系統回滾了無障礙寫入。',
concurrent_change: '恢復過程中無障礙設定被其他應用修改。',
partial_rollback: '恢復失敗,且設定只能部分回滾。請檢查系統無障礙設定。',
manual_required:
'全域開關關閉且清單中已有其他無障礙服務時,無法安全自動恢復。請前往系統設定手動操作。',
max_retries: '多次嘗試後恢復失敗。',
internal_error: '恢復因內部錯誤失敗。',
unknown: '未知 Shizuku 狀態。',
},
androidInsertStrategyLabel: '文字插入策略',
androidOverlayTriggerLabel: '懸浮窗顯示時機',
androidOverlayActivationModeLabel: '懸浮窗啟用方式',
androidOverlayLeftSwipeActionLabel: '左滑動作',
androidOverlayCancelSwipeDirectionLabel: '取消錄音滑向',
androidOverlaySizeLabel: '懸浮窗大小',
androidOverlaySizeHint: '調整懸浮按鈕直徑,儲存後在目前懸浮窗上生效並保留位置。',
androidInsertStrategy: { accessibility: '自動輸出到輸入框', clipboard: '僅剪貼簿' },
androidInsertStrategyHint: {
accessibility: '需要開啟無障礙服務;不可用時會複製到剪貼簿。',
clipboard: '不需要無障礙權限,只複製到剪貼簿,由你手動貼上。',
},
androidOverlayTrigger: { background: '退到背景', keyboard: '鍵盤彈出時', always: '常駐' },
androidOverlayTriggerHint: {
background: '省電',
keyboard: '此模式已暫緩,既有設定會改回退到背景。',
always: '一直佔屏',
},
androidOverlayTriggerDisabled: {
keyboard: '「鍵盤彈出時」暫緩開放,後續將以懸浮窗手勢取代鍵盤偵測。',
},
androidOverlayActivationMode: { tap: '點按啟用', long_press: '長按啟用' },
androidOverlayActivationModeHint: {
tap: '第一次點按進入啟用狀態,第二次點按開始普通聽寫。',
long_press: '按住進入啟用狀態;放開時結束目前錄音或問答輪次。',
},
androidOverlayLeftSwipeAction: { translation: '翻譯聽寫', style_pack: '切換風格包' },
androidOverlayLeftSwipeActionHint: {
translation: '啟用狀態左滑後按翻譯模式錄音。',
style_pack: '啟用狀態左滑後切換到上一個風格包。',
},
androidOverlayCancelSwipeDirection: { up: '向上滑', down: '向下滑' },
androidOverlayCancelSwipeDirectionHint: {
up: '錄音中向上滑取消本次聽寫,不轉寫、不插入。',
down: '錄音中向下滑取消本次聽寫,不轉寫、不插入。',
},
windowsIme: {
installed: '已安裝。語音輸入時會臨時切換到 OpenLess 輸入法。',
notInstalled: '未安裝。OpenLess 正在使用剪貼板 / WM_PASTE 兜底。',
registrationBroken: '註冊已損壞。請重新安裝 OpenLess 輸入法。',
notWindows: '僅 Windows 可用。',
},
},
advanced: {
multimodalPipelineTitle: '多模態辨識管線',
multimodalPipelineTitleHint:
'用單一多模態模型一步完成語音辨識;與傳統 ASR + LLM 設定完全隔離。',
multimodalPipelineLabel: '啟用多模態辨識管線',
multimodalPipelineHint:
'開啟後,「服務 → AI 提供者」頁出現「傳統模式 / 多模態模式」切換。傳統 = ASR + LLM;多模態 = 單一支援音訊的模型。兩套設定分開儲存、絕不共用憑證。',
streamingInsertTitle: '流式輸入',
streamingInsertTitleLinux: '流式輸入(實驗性)',
streamingInsertDesc: '逐字即時插入,降低感知延遲。不滿足條件時回落到一次性貼上。',
streamingInsertLabel: '流式輸入',
streamingInsertHintMac: '臨時切到 ABC 輸入源,避免 CJK IME 攔截,會話結束後自動切回。',
streamingInsertHintWindows: 'SendInput Unicode 直接送字元,繞過 TSF / IME,不切輸入法。',
streamingInsertHintLinux: '通過 fcitx5 插件提交文字;串流輸入使用 enigo + XTest 合成按鍵。',
streamingInsertSaveClipboardLabel: '同步到剪貼簿',
streamingInsertSaveClipboardHint:
'插入成功後把最終文字寫入剪貼簿,方便 Cmd+V 再次貼上;關閉後流式過程不動剪貼簿。',
localAsrTitle: '本地 ASR 模型',
localAsrDesc: '把轉寫從雲端切到本機推理。僅推薦離線 / 隱私敏感場景。',
localAsrWarningShort: '本地推理較慢,配置不足時可能吞字。',
qwen3Desc: '啓動之後,ASR 提供商將被接管。',
sherpaDesc: '啟用後,ASR 提供商將被接管。',
foundryDesc: '啓動之後,ASR 提供商將被接管。',
notSupportedHere: '本平臺暫不支持,未集成推理模塊。',
enable: '啓用',
alreadyActive: '已啓用',
disableLocalLabel: '停用本地 ASR',
disableLocalDesc: '切回雲端 ASR(默認火山引擎 bigasr)。',
disable: '停用',
platformNotSupported: '該平臺暫未支持本地 ASR 模型集成。',
confirmEnableLocalTitle: '啓用本地 ASR?',
confirmEnableLocalBody: '啟用後轉寫會比雲端慢,準確率可能更低。',
confirm: '確認啓用',
},
language: {
es: 'Español',
fr: 'Français',
de: 'Deutsch',
title: '界面語言',
desc: '切換 UI 顯示語言。當前會話即時生效,下次啓動自動沿用。',
label: '語言',
labelDesc: '選擇「跟隨系統」時按操作系統當前語言顯示。',
followSystem: '跟隨系統',
zh: '簡體中文',
zhTW: '繁體中文',
en: 'English',
ja: '日本語 (Beta)',
ko: '한국어 (Beta)',
restartHint: '部分原生菜單(系統托盤等)可能需要重啓 App 纔會切換。',
},
layout: {
title: '布局',
},
theme: {
title: '外觀',
label: '主題',
activityHeatmapLabel: '概覽頁顯示年度活動熱力圖',
stackedRowLayoutLabel: '易讀布局(防溢出換行)',
stackedRowLayoutDesc:
'小螢幕或大字時,同一行放不下的按鈕和選項會自動換到下一行,避免橫向擠出螢幕或文字被壓扁。',
conservativeLayoutLabel: '保守排版',
conservativeLayoutDesc:
'除首頁、頂欄與底欄外,設定與功能頁改為單列滿寬,最大程度避免橫向溢出。',
system: '跟隨系統',
light: '淺色',
dark: '深色',
},
remoteInput: {
title: '遠端輸入',
enableLabel: '啟用遠端輸入',
enableDesc:
'手機/平板瀏覽器連到電腦錄音,語音即時落到電腦游標處(需 HTTPS,首次存取要信任憑證)',
portLabel: '監聽連接埠',
defaultModeLabel: '預設錄音方式',
modeToggle: '點擊切換',
modeHold: '按住說話',
urlLabel: '存取網址',
pinLabel: '配對碼',
regeneratePin: '重新產生',
portInUse: '連接埠 {{port}} 被佔用,請更換',
startError: '遠端輸入服務啟動失敗:{{reason}}',
securityHint: '僅同一區域網路可存取,需輸入配對碼;不用時建議關閉。',
certHint: "首次連線需核對根憑證指紋後再信任。升級舊版需設定一次;之後重新啟動和更換 IP 會保留信任。",
certFingerprintLabel: "本機根憑證 SHA-256",
certFingerprintCopy: "複製完整指紋",
certFingerprintCopied: "已複製指紋",
certFingerprintUnavailable: "完整指紋無法取得。請勿安裝或信任下載的憑證。",
certVerifyHint: "在手機系統的憑證詳細資訊中找到 SHA-256,與此處全部 64 個字元逐一核對(忽略空格和冒號)。必須在開啟完全信任前完成。網頁、描述檔名稱與識別碼不能證明憑證身分;若不一致或無法查看完整指紋,請停止並移除已下載或安裝的描述檔。",
certProfileHint: "描述檔應只包含一張根憑證。若有其他憑證、VPN 或裝置管理設定,請勿安裝。",
certTrustWarning: "首次憑證下載無法驗證電腦身分,惡意區域網路裝置可能透過中間人攻擊替換根憑證。僅在可信任的家庭或私人網路中安裝,請勿在公共或共享網路操作。根憑證能簽發憑證,私密金鑰保存在這台電腦;不再使用時請從手機移除。",
certSetupLink: "複製 iPhone 憑證連結",
waitingStart: '服務尚未啟動。請關閉開關再打開一次,不要重啟軟體。',
starting: '正在啟動遠端輸入服務…',
urlsStale: '這些地址來自上次執行,可能已經過期。',
},
about: {
tagline: '自然說話,完美書寫',
checkUpdate: '檢查更新',
checkUpdateBtn: '檢查',
checkStableUpdateBtn: '檢查正式版更新',
checkBetaUpdateBtn: '檢查 Beta 更新',
checkingUpdate: '檢查中…',
upToDate: '當前已是最新版本。',
updateError: '檢查或更新失敗,請稍後重試。',
retryBtn: '重試',
openReleases: '打開 Releases',
source: '源碼',
docs: '文檔',
feedback: '反饋',
qq: '社區 QQ 羣',
qqDesc: '使用 QQ 搜索羣號加入,或掃碼進羣。',
copyQq: '複製羣號',
privacy: '隱私',
privacyDesc: '錄音可能會傳送至你設定的雲端服務商進行轉寫。',
localFirst: '本地優先',
linksTitle: '文件連結',
betaChannelLabel: '加入 Beta 渠道',
betaChannelToggleLabel: '啟用 Beta 渠道',
betaChannelDesc:
'開啟後,背景自動更新將跟隨 Beta 渠道;關閉則回到正式版。下方按鈕可隨時手動檢查 Beta 更新。',
autoUpdateSectionTitle: '自動更新',
autoUpdateCheckLabelAndroid: '自動檢查並下載更新',
autoUpdateCheckDescAndroid:
'啟動後及每 60 分鐘自動檢查更新;發現新版本後自動下載並開啟系統安裝器。渠道跟隨上方 Beta 開關。',
betaChannelFetching: '正在獲取最新 Beta 版本…',
betaChannelFetchBtn: '查詢最新 Beta',
betaChannelLatestPrefix: '最新 Beta:',
betaChannelDownloadBtn: '前往下載',
betaChannelRefresh: '重新查詢',
betaChannelNoBeta: '尚未發佈過 Beta 版。',
betaChannelFetchError: '獲取 Beta 版本資訊失敗,請稍後重試。',
betaChannelUpToDate: '已是最新',
betaChannelUpdateNow: '立即更新',
betaChannelUpdateNowTitle: '檢查並下載最新 Beta,然後彈出更新對話框',
betaChannelChecking: '檢查中…',
updateDialog: {
available: {
title: '發現新版本',
desc: '發現 OpenLess {{version}},是否現在更新?',
},
stableChannelSwitch: {
title: '切換到正式版',
desc: '目前版本:OpenLess {{currentVersion}}\n目標版本:OpenLess {{version}}\n這是從 Beta 頻道切換到正式版,是否繼續?',
},
downloading: {
title: '正在下載更新',
desc: '正在下載 OpenLess {{version}},請保持應用打開。',
},
downloaded: {
title: '更新已準備好',
desc: 'OpenLess {{version}} 已安裝完成。是否現在自動重啓以應用更新?',
},
installing: {
title: '正在安裝更新',
desc: '正在安裝 OpenLess {{version}},請保持應用打開。',
},
install: '現在更新',
androidInstall: '下載並開啟安裝器',
androidInstalled: {
title: '系統安裝器已開啟',
desc: '請依系統提示完成安裝。安裝後重新開啟 OpenLess 即可使用 {{version}}。',
},
downloadingLabel: '下載中…',
installingLabel: '安裝中…',
later: '稍後手動重啓',
restartNow: '現在重啓',
progress: '{{progress}}% · {{downloaded}} / {{total}}',
progressUnknown: '已下載 {{downloaded}}',
installError: {
title: '更新失敗',
desc: '自動更新未能完成:{{error}}。你可以前往下載頁手動下載安裝最新版本。',
},
manualDownload: '手動下載',
},
},
},
startup: {
loading: '正在啟動 OpenLess…',
loadingDesc: '正在連接本機服務並檢查相容性。',
failed: 'OpenLess 暫時無法啟動',
recovery:
'請重新檢查。如果仍然失敗,請完全結束後重開應用程式;升級後出現此問題時,確認已安裝完整的同一版本。',
retry: '重新檢查',
details: '查看錯誤詳情',
},
modal: {
serviceViews: {
label: '服務設定分類',
llm: '語言模型',
asr: '語音辨識',
omni: '多模態模型',
models: '本機模型',
connections: '連線與擴充',
statusConfigured: '已設定',
statusMissing: '未設定',
},
searchPlaceholder: '尋找設定分類…',
clearSearch: '清除搜尋',
categoriesLabel: '設定分類',
searchResults: '搜尋結果',
searchCount: '找到 {{count}} 個相關分類',
noResults: '找不到相關分類。試試「麥克風」「模型」或「主題」。',
autoSaveHint: '修改後自動儲存',
backToAdvanced: '返回實驗與擴充',
advancedPages: {
lessComputer: '選擇 Agent,設定模型、權限與工作目錄。',
claudeConsole: '偵測 Claude Code,並查看測試工作的執行輸出。',
multimodal: '管理多模態辨識的實驗性開關。',
debug: '保留偵錯錄音、探測游標上下文與匯出日誌。',
},
descriptions: {
general: '選擇麥克風、設定錄音方式與文字輸入,也可連接手機輸入。',
shortcuts: '設定各功能的觸發方式,以及選取文字後的操作。',
services: '選擇語音辨識與文字處理服務,管理管道、本機模型和網路連線。',
appearance: '調整主題、頁面排版和介面語言,讓閱讀更舒服。',
privacy: '檢查系統權限與連線狀態,管理歷史、錄音和本機資料。',
advanced: '按需設定 Less Computer、多模態與除錯功能。',
about: '查看目前版本、更新管道與自動更新設定。',
},
searchKeywords: {
general: '麥克風 錄音 輸入 手機 遠端 區域網路 PIN 膠囊 靜音 開機',
shortcuts: '快捷鍵 熱鍵 組合鍵 選取 潤飾 語音編輯',
services: 'ASR LLM API 管道 模型 雲端 本機 網路 代理 市場',
appearance: '主題 深色 淺色 暗色 語言 字體 排版 版面 熱圖',
privacy: '權限 麥克風 輔助功能 歷史 錄音 儲存 隱私 匯出',
advanced: 'Less Computer Claude Agent 多模態 Omni 除錯 日誌 實驗',
about: '版本 Beta 穩定 更新 升級',
},
sections: {
appearance: '外觀與語言',
shortcuts: '快捷鍵與選取文字',
general: '錄音與輸入',
services: 'AI 服務與模型',
privacy: '權限與資料',
advanced: '實驗與擴充',
personalize: '個性化',
about: '關於與更新',
helpCenter: '幫助中心',
releaseNotes: '發佈日誌',
},
personalize: {
font: '字體大小',
fontDesc: '整體縮放界面字號,立即生效。',
fontSmall: '小',
fontMedium: '中',
fontLarge: '大',
blur: '毛玻璃強度',
blurDesc: '影響窗口內層 backdrop-filter 強度(macOS 系統磨砂層無法運行時調)。',
},
about: {
tagline: '自然說話,完美書寫',
checkUpdate: '檢查更新',
checkUpdateBtn: '檢查',
docs: '文檔',
docsBtn: 'openless.app/docs ↗',
feedback: '反饋渠道',
feedbackBtn: 'GitHub Issues ↗',
source: '原始碼',
qq: '社群 QQ 群',
qqDesc: '使用 QQ 搜尋群號加入,或掃碼進群。',
copyQq: '複製群號',
exportErrorLog: '匯出錯誤日誌',
exportErrorLogDesc: '把當前會話的執行日誌儲存到本地,便於排查問題或反饋給我們。',
exportErrorLogBtn: '匯出',
exporting: '匯出中…',
exportSuccess: '已儲存',
exportFailed: '匯出失敗',
privacy: '隱私',
privacyDesc: '識別結果保存在本機;已設定的雲端服務商可能接收錄音以完成轉寫。',
localFirst: '本地優先',
},
},
windowChrome: {
restore: '還原',
minimize: '最小化',
maximize: '最大化',
close: '關閉',
},
hotkey: {
triggers: {
rightOption: '右 Option',
leftOption: '左 Option',
rightControl: '右 Control',
leftControl: '左 Control',
rightCommand: '右 Command',
leftCommand: '左 Command',
leftShift: '左 Shift',
rightShift: '右 Shift',
fn: 'Fn (地球鍵)',
rightAlt: '右 Alt',
mediaPlayPause: '⏯ 媒體播放/暫停',
custom: '自訂組合…',
},
fallback: '全局快捷鍵',
modeHoldSuffix: '(按住說話)',
modeToggleSuffix: '(開始 / 停止)',
modeAutoSuffix: '(自動識別)',
usageHold: '按住 {{trigger}} 說話,鬆開結束。',
usageToggle: '按 {{trigger}} 開始錄音,再按一次結束。',
usageAuto: '短按 {{trigger}} 切換開始 / 停止,按住則說完鬆開即停。',
adapter: {
macEventTap: 'macOS Event Tap',
windowsLowLevel: 'Windows 低層鍵盤 hook',
fcitx5: 'fcitx5 輸入法插件',
unavailable: '不可用',
},
},
localAsr: {
kicker: '本地 ASR',
title: '模型設置',
desc: '管理本機語音識別模型。',
storageTitle: '模型儲存位置',
storageBaseDir: '選擇的父目錄',
storageModelsRoot: '實際模型目錄',
storageDefault: '系統預設目錄',
storageChoose: '更改目錄',
storageReset: '恢復預設',
storageReveal: '開啟模型總目錄',
storageDesc:
'自訂目錄會在所選位置下建立 OpenLess/models,並自動遷移現有模型;遷移前會取消下載和釋放已載入模型。',
storageChooseTitle: '選擇本地模型儲存父目錄',
storageChangeConfirm:
'將把現有本地模型遷移到 {{path}}/OpenLess/models。遷移前會自動取消下載並釋放已載入模型。是否繼續?',
storageResetConfirm: '將把現有本地模型遷回系統預設目錄。當前目錄:{{path}}。是否繼續?',
modelDir: '模型目錄',
revealDir: '開啟目錄',
deleteConfirm: '確定刪除 {{name}} 的本地模型檔案嗎?此操作無法復原。',
appleSpeechTitle: 'Apple 語音辨識(macOS)',
appleSpeechDesc:
'macOS 系統內建的語音辨識,在本機把語音轉成文字:不用下載模型、不用填 API Key,主流語言可完全離線、音訊不出本機。適合作雲端 ASR 網路不穩時的本地後備;首次使用會跳出系統語音辨識授權。',
appleSpeechUse: '使用 Apple 語音',
qwenTitle: 'Qwen3-ASR 模型管理',
qwenExperimentalBadge: '實驗性',
engineUnavailable:
'當前平臺暫未集成 Qwen3-ASR 推理引擎。可下載模型,但暫時無法啟用 Qwen3-ASR。',
qwenUnavailableOnWindows: 'Windows 暫不支援 Qwen3-ASR,請使用上方的 Foundry Local Whisper。',
foundryTitle: 'Windows Foundry Local Whisper',
foundryDesc: '在本機識別語音,無需 ASR API Key。首次使用需下載運行元件和模型。',
foundryAvailable: 'Windows 可用',
foundryUnavailable: '僅 Windows 可用',
foundryRuntimeReady: '運行組件已下載',
foundryRuntimeMissing: '運行組件未下載',
foundryRuntimeSourceLabel: '運行組件下載源',
foundryRuntimeSourceAuto: '自動(NuGet 優先)',
foundryRuntimeSourceNuget: 'NuGet 官方源',
foundryRuntimeSourceOrtNightly: 'Microsoft ORT-Nightly 源',
foundryRuntimeSourceDesc: '首次使用前需下載運行元件。',
foundrySelectedModel: '選擇模型',
foundryActiveModel: '當前默認 alias',
foundryLoadedModel: '已加載模型',
foundryNotLoaded: '未加載',
foundryError: 'Foundry 狀態',
foundrySetDefault: '設為默認 / 啟用 Windows 本地 ASR',
foundryEnabling: '正在啟用…',
foundryPrepare: '準備 / 下載 / 加載',
foundryPreparing: '正在準備…',
foundryReleasing: '正在釋放…',
foundryRetryPrepare: '繼續準備 / 重試',
foundryCancelPrepare: '取消準備',
foundryCancelRequested: '已請求取消',
foundryCancelling: '正在取消…',
foundryCancelBestEffort: '已請求取消,會在當前步驟完成後停止。可稍後重試。',
foundryPrepareRuntime: '準備運行時組件',
foundryPrepareModel: '下載模型',
foundryPrepareLoad: '加載模型',
foundryPrepareModelSkipped: '模型已下載,跳過下載階段',
foundryPrepareDone: '已完成',
foundryPrepareWaiting: '等待中',
foundryApproxSizeMb: '約 {{mb}} MB',
foundryLanguageLabel: '識別語言',
foundryLanguageAuto: '自動',
foundryLanguageZh: '中文 zh',
foundryLanguageEn: '英文 en',
foundryLanguageDesc: '中文聽寫選中文,中英混用選自動。',
foundryModelSmall: 'Whisper Small(默認 / 平衡)',
foundryModelSmallDesc: '默認平衡選項,兼顧質量與資源佔用。',
foundryModelMedium: 'Whisper Medium(更高質量)',
foundryModelMediumDesc: '更高準確率,適合性能更強、可接受更大下載和更慢推理的設備。',
foundryModelLarge: 'Whisper Large V3 Turbo(最高質量)',
foundryModelLargeDesc: '更高質量的大模型選項,適合高配設備和質量優先場景。',
foundryModelBase: 'Whisper Base(更快 / 更省資源)',
foundryModelBaseDesc: '更快、資源佔用更低,適合日常輕量使用。',
foundryModelTiny: 'Whisper Tiny(最快 / 冒煙測試)',
foundryModelTinyDesc: '最快的檢查選項,適合確認 Foundry 路徑可用。',
sherpaTitle: 'Windows sherpa-onnx Local(實驗性)',
sherpaDesc: 'Windows 使用 sherpa-onnx 在本機離線批次識別,無需 ASR API Key。',
sherpaRuntimeReady: '模型已載入',
sherpaRuntimeMissing: '模型未載入',
sherpaSetDefault: '設為預設 / 啟用 sherpa-onnx',
sherpaPrepare: '檢查本地檔案 / 載入',
sherpaPreparing: '載入中…',
sherpaPrepareLocalFiles: '檢查本地模型檔案',
sherpaModelDir: '模型目錄',
sherpaRevealDir: '開啟模型目錄',
sherpaError: 'sherpa-onnx 狀態',
sherpaLanguageJa: '日語 ja',
sherpaLanguageKo: '韓語 ko',
sherpaLanguageYue: '粵語 yue',
sherpaModelSenseVoice: 'SenseVoice Small(預設 / 中文優先)',
sherpaModelSenseVoiceDesc: '預設實驗模型,適合中文與中英混合聽寫。',
sherpaModelParaformer: 'Paraformer 中文',
sherpaModelParaformerDesc: '面向中文的實驗模型。',
sherpaModelWhisper: 'Whisper Small 多語言',
sherpaModelWhisperDesc: '與 Whisper 系列行為一致的多語言實驗兜底模型。',
sherpaModelWhisperLargeV3: 'Whisper Large V3(多語)',
sherpaModelWhisperLargeV3Desc:
'開源多語通用中效果最好的 Whisper 檔,品質高、體積大,適合高品質轉寫。',
sherpaModelZipformer: 'Zipformer 串流(中英)',
sherpaModelZipformerDesc: '邊說邊出的串流中英模型,延遲最低,適合即時聽寫。',
sherpaModelQwen3: 'Qwen3-ASR 0.6B INT8',
sherpaModelQwen3Desc:
'轉換後的 sherpa-onnx Qwen3-ASR 模型,支援多語言識別與更強的長上下文能力。',
modelSelectTitle: '本機模型',
modelSelectDesc: '查看下載狀態、管理檔案,或載入模型進行測試。',
modelSelectPlaceholder: '選擇已下載的模型…',
modelSelectEmpty: '還沒有已下載的模型,先到「下載與管理」下載一個。',
groupDownload: '下載與管理',
groupOther: '其他',
mirrorLabel: '下載鏡像源',
mirrorDesc: '官方源在國外網絡更穩;hf-mirror.com 是國內社區維護的鏡像。',
mirrorHuggingface: 'HuggingFace 官方 (huggingface.co)',
mirrorHfMirror: '國內鏡像 (hf-mirror.com)',
activeBadge: '當前使用',
downloadedBadge: '已下載',
notDownloadedBadge: '未下載',
download: '下載',
resume: '繼續下載',
cancel: '取消',
delete: '刪除',
setActive: '設為默認',
failed: '失敗',
cancelled: '已取消',
files: '文件',
sizeLoading: '正在查詢尺寸…',
sizeUnknown: '尺寸未知',
performanceWarning: '本地 ASR 適合離線或隱私敏感場景,首次使用需下載模型。',
test: '加載並測試',
testRunning: '測試中…',
testHeading: '內置音頻測試',
testExpected: '原文',
testActual: '識別',
testStats: '音頻時長 {{audio}}s · 加載 {{load}}s · 推理 {{transcribe}}s · 後端 {{backend}}',
testFailed: '測試失敗',
engineStatusLabel: '內存中的引擎',
engineLoaded: '已加載:{{model}}',
engineUnloaded: '未加載(首次聽寫需先加載模型)',
loadNow: '立即加載',
releaseNow: '立即釋放',
keepLoadedLabel: '保持加載多久',
keepLoadedDesc: '決定 Qwen3-ASR 用完後多久從內存釋放,避免長期佔用內存。',
keepImmediate: '說完話立即釋放',
keep1min: '上次使用後 1 分鐘',
keep5min: '上次使用後 5 分鐘(默認)',
keep30min: '上次使用後 30 分鐘',
keepForever: '不釋放(始終保留)',
sidebarTitle: '已下載與下載中',
activePill: '目前使用',
setDefault: '設為預設',
downloading: '下載中',
startDownload: '開始下載',
downloadNewModel: '下載新模型',
downloadDialogTitle: '下載模型',
downloadDialogAlreadyHave:
'模型檔案已下載。可返回模型頁載入並測試,或在「ASR 語音轉寫」中選擇對應供應商。',
downloadDialogDesc:
'查看模型大小與簡介,選擇後開始下載。下載完成後,在「語音辨識」中選擇對應的本機服務。',
detailRepo: '模型倉庫',
hfDownloads: '下載量',
hfLikes: '收藏數',
hfDescription: '模型簡介',
hfNoDescription: '暫無簡介',
hfCardFailed: '模型資訊取得失敗',
detailFiles: '個檔案',
detailDownloaded: '已下載',
detailEmpty: '選擇一個模型查看詳情',
foundryLanguage: '語言',
foundryRuntimeSource: '執行時來源',
mirrorGithubRelease: 'GitHub Releases',
keep: '保持載入',
downloadSettingsTitle: '下載與儲存設定',
downloadSettingsDesc: '鏡像源 · 模型儲存位置 · 記憶體引擎',
libraryEmptyTitle: '還沒有本機模型',
libraryEmptyDesc:
'下載一個語音辨識模型,讓音訊在本機處理。已有模型卻未顯示時,可重新讀取目錄。',
catalogTitle: '模型目錄',
catalogEmpty: '目前沒有可顯示的模型。請重新讀取目錄後再試。',
reloadCatalog: '重新讀取',
engineLabel: '辨識引擎',
sizeLabel: '模型大小',
allEngines: '全部',
backToCatalog: '返回模型目錄',
detailsTitle: '模型詳情',
testActivateHint: '「載入並測試」會將此模型設為目前使用,再執行內建音訊測試。',
downloadProgressHint: '開始後返回模型頁查看進度,也可隨時取消下載。',
errorDetails: '錯誤詳情',
},
};