5d7fcdf24e
Keep marketing version at 1.6.6 and bump build to 59. Strengthen never-answer polish safeguards, clipboard reply-intent continuity, voice undo UX, device UITests harness, eval fixtures, and What's New assets.
244 lines
12 KiB
Plaintext
244 lines
12 KiB
Plaintext
/* OSGKeyboard · 简体中文翻译 */
|
|
|
|
"OSGKeyboard" = "OSGKeyboard";
|
|
|
|
/* Onboarding */
|
|
"onboarding.welcome.subtitle" = "点按麦克风说话,再点一次结束,文字即出现。";
|
|
"onboarding.enable.title" = "启用 OSGKeyboard";
|
|
"onboarding.enable.step1" = "设置 → 通用 → 键盘 → 键盘";
|
|
"onboarding.enable.step2" = "点击「添加新键盘…」并选择 OSGKeyboard";
|
|
"onboarding.enable.step3" = "点击 OSGKeyboard 并启用「允许完全访问」";
|
|
"onboarding.enable.step4" = "允许完全访问是麦克风和网络调用的前提。";
|
|
"onboarding.enable.openSettings" = "打开 iOS 设置";
|
|
"onboarding.api.title" = "选择引擎";
|
|
"onboarding.api.subtitle" = "Local 不需要 API Key;Cloud 用 LLM 润色文字。";
|
|
"onboarding.api.localReady.title" = "无需配置 API Key";
|
|
"onboarding.api.localReady.body" = "本地识别直接可用,按 Done 即可开始使用。";
|
|
|
|
/* Common navigation */
|
|
"common.back" = "返回";
|
|
"common.next" = "下一步";
|
|
"common.done" = "完成";
|
|
"common.continue" = "继续";
|
|
"common.reset" = "重置";
|
|
"common.cancel" = "取消";
|
|
"common.delete" = "删除";
|
|
"common.space" = "空格";
|
|
"common.newline" = "回车";
|
|
"common.send" = "发送";
|
|
|
|
/* Privacy footnote (onboarding welcome page) */
|
|
"privacy.audio.title" = "支持本地转写";
|
|
"privacy.audio.body" = "支持 iOS 本地引擎转录";
|
|
"privacy.network.title" = "文字自动润色";
|
|
"privacy.network.body" = "通过 AI 自动对文字进行排版润色";
|
|
"privacy.universal.title" = "处处可用";
|
|
"privacy.universal.body" = "聊天、邮件、Vibe Coding 动嘴就行";
|
|
|
|
/* Home */
|
|
"home.status.ready" = "就绪";
|
|
"home.status.setupIncomplete" = "未完成配置";
|
|
"home.hero.label" = "点此配置";
|
|
"home.action.enableInSettings" = "在 iOS 设置中启用";
|
|
"home.action.editApi" = "编辑 API 配置";
|
|
"home.action.keyboardPreview" = "键盘预览(Debug)";
|
|
"home.action.openSettingsA11y" = "打开 OSGKeyboard 设置";
|
|
|
|
/* API settings */
|
|
"api.baseUrl" = "接口地址";
|
|
"api.model" = "模型";
|
|
"api.getKey" = "获取 API Key";
|
|
"api.key" = "API Key";
|
|
"api.key.placeholder" = "sk-…";
|
|
"api.key.show" = "显示";
|
|
"api.key.hide" = "隐藏";
|
|
"api.connection" = "连接测试";
|
|
"api.test.idle" = "测试连接";
|
|
"api.test.running" = "测试中…";
|
|
"api.test.success" = "成功 · 重试";
|
|
"api.test.failure" = "失败 · 重试";
|
|
"api.test.connected" = "连接成功";
|
|
"api.test.missing" = "未填写 API Key";
|
|
"api.test.rateLimited" = "API 限流 (429)";
|
|
"api.test.http" = "HTTP %d";
|
|
"api.test.network" = "网络错误";
|
|
"api.test.connectedWith" = "“%@”";
|
|
"api.test.transportWith" = "%@";
|
|
|
|
/* Settings */
|
|
"settings.title" = "设置";
|
|
"settings.reset.title" = "重置所有设置?";
|
|
"settings.reset.message" = "API key、model 和 base URL 都会被清空。";
|
|
"settings.reset.confirm" = "重置所有设置";
|
|
"settings.engine.title" = "语音转写方式";
|
|
"settings.engine.subtitle" = "本地:系统内置转写;云端:ASR 转写,可用 LLM 润色。";
|
|
"settings.engine.local.title" = "本地转写";
|
|
"settings.engine.local.ios26" = "始终端侧,无需联网。";
|
|
"settings.engine.local.legacy" = "通过系统内置服务语音转写";
|
|
"settings.engine.cloud.title" = "云端转写";
|
|
"settings.engine.cloud.subtitle" = "通过云端 ASR 转写,可用 LLM 润色";
|
|
"settings.provider.title" = "云端引擎";
|
|
"settings.provider.subtitle" = "选择 LLM 提供商。";
|
|
"settings.api.title" = "接口";
|
|
"settings.language.title" = "语言";
|
|
"settings.language.subtitle.cloud" = "选择识别语言和文字处理模式。";
|
|
"settings.language.subtitle.local" = "选择识别语言。";
|
|
"settings.mode.title" = "模式";
|
|
"settings.mode.off" = "关闭";
|
|
"settings.mode.transcribe" = "转写";
|
|
"settings.mode.polish" = "润色";
|
|
"settings.systemPrompt.title" = "系统提示";
|
|
"settings.systemPrompt.reset" = "重置";
|
|
"settings.asrLocale" = "识别语言";
|
|
"settings.engineBadge.ios26" = "SpeechAnalyzer — 始终端侧";
|
|
"settings.engineRow.title" = "识别引擎";
|
|
"settings.onDeviceOnly.title" = "仅端侧识别";
|
|
"settings.onDeviceOnly.body" = "禁用云端回退,识别失败时会报错而非联网。";
|
|
"settings.legend.onDevice" = "端侧识别";
|
|
"settings.legend.cloudFallback" = "需联网";
|
|
|
|
/* App group error */
|
|
"appGroup.error.title" = "App Group 未配置";
|
|
"appGroup.error.body" = "OSGKeyboard 需要 App Group 才能在键盘扩展和主 App 之间共享配置。";
|
|
"appGroup.error.step1" = "在 Apple Developer 后台创建 group.com.osgkeyboard.shared";
|
|
"appGroup.error.step2" = "主 App 和键盘扩展都启用该 App Group";
|
|
"appGroup.error.step3" = "重新生成 provisioning profile 并下载";
|
|
|
|
/* Keyboard preview */
|
|
"preview.title" = "键盘预览";
|
|
"preview.subtitle" = "点击「开始录音」/「停止录音」按钮测试;真实键盘为长按麦克风圆盘。";
|
|
"preview.placeholder" = "试着输入或点击按钮录音";
|
|
"preview.clear" = "清空";
|
|
"preview.openSettingsA11y" = "打开 OSGKeyboard 设置";
|
|
"preview.modeChip.cycle" = "切换输入模式";
|
|
"preview.localeChip.cycle" = "切换识别语言";
|
|
|
|
/* Keyboard (ext) */
|
|
"keyboard.placeholder.idle" = "点按说话";
|
|
"keyboard.placeholder.idleClipboard" = "点击说话,长按处理剪贴板";
|
|
"keyboard.clipboard.recordingLeft" = "指令录制中";
|
|
"keyboard.clipboard.recordingRight" = "点按结束处理";
|
|
"keyboard.placeholder.preparing" = "准备中…";
|
|
"keyboard.placeholder.preparingRecording" = "准备录音…";
|
|
"keyboard.clipboard.reject.pasteDenied" = "需要允许粘贴才能处理剪贴板";
|
|
"keyboard.clipboard.reject.empty" = "剪贴板里没有可处理的文字";
|
|
"keyboard.clipboard.reject.phoneOrNumeric" = "看起来像号码,未开始处理";
|
|
"keyboard.clipboard.reject.emojiOrSymbolOnly" = "没有可处理的文字内容";
|
|
"keyboard.clipboard.reject.verificationCode" = "看起来像验证码,未开始处理";
|
|
"keyboard.clipboard.reject.tooShort" = "内容太短,请复制更完整的文字";
|
|
"keyboard.clipboard.reject.repetitiveSpam" = "内容无效,未开始处理";
|
|
"keyboard.clipboard.reject.secureField" = "密码框中不能使用剪贴板指令";
|
|
"keyboard.clipboard.reject.noFullAccess" = "需要开启完全访问才能处理剪贴板";
|
|
"keyboard.clipboard.reject.prepareFailed" = "麦克风未能及时就绪,请再试一次";
|
|
"keyboard.clipboard.hint.hostStarting" = "正在启动,准备好后将自动录音;点按可取消";
|
|
"keyboard.placeholder.processing" = "处理中…";
|
|
"keyboard.placeholder.error" = "润色失败";
|
|
"keyboard.placeholder.localBadge" = "本地";
|
|
"keyboard.placeholder.cloudBadge" = "云端";
|
|
"keyboard.models.notDownloaded" = "本地模型尚未下载";
|
|
"keyboard.models.downloadHint" = "打开 OSGKeyboard 下载模型";
|
|
"keyboard.rec" = "REC";
|
|
"keyboard.space" = "空格";
|
|
"keyboard.denied.mic" = "麦克风被拒绝";
|
|
"keyboard.denied.speech" = "语音识别被拒绝";
|
|
"keyboard.openSettingsA11y" = "打开 OSGKeyboard 设置";
|
|
"keyboard.deniedHint" = "打开 OSGKeyboard 设置,可授予麦克风 / 语音识别权限。";
|
|
"keyboard.tapToTalkA11y" = "点按说话";
|
|
"keyboard.undoA11y" = "撤销上次听写";
|
|
"keyboard.cursorDrag.hint" = "按住并拖动以移动光标";
|
|
"keyboard.cursorDrag.centerHint" = "拖动移动光标";
|
|
|
|
/* Flow session (keyboard) */
|
|
"keyboard.flow.sessionInactive" = "语音会话未启动";
|
|
"keyboard.flow.start" = "启动";
|
|
"keyboard.flow.startA11y" = "启动语音会话";
|
|
"keyboard.flow.sessionExpired" = "语音会话已结束,请打开 OSGKeyboard 重新启动";
|
|
"keyboard.flow.startingSession" = "正在启动语音会话…";
|
|
"keyboard.flow.transcribing" = "识别中…";
|
|
"keyboard.flow.resultTimeout" = "等待识别结果超时,请重试";
|
|
"keyboard.flow.hostDisconnected" = "语音会话已断开,请打开 OSGKeyboard 重新启动";
|
|
"keyboard.flow.manualOpenHost" = "无法自动跳转,请从主屏幕打开 OSGKeyboard 后返回";
|
|
|
|
/* Keyboard status badges */
|
|
"keyboard.status.rec" = "录音";
|
|
"keyboard.status.recWarning" = "录音";
|
|
"keyboard.status.processing" = "···";
|
|
"keyboard.status.error" = "!";
|
|
|
|
/* Keyboard errors */
|
|
"keyboard.error.appGroupUnavailable" = "App Group 未配置";
|
|
"keyboard.error.appGroupCommunication" = "App Group 未配置,请重新安装并检查签名";
|
|
"keyboard.error.fullAccessRequired" = "请在系统设置中为 OSGKeyboard 开启「允许完全访问」";
|
|
"keyboard.error.fullAccessForJump" = "请先开启「允许完全访问」,否则键盘无法跳转到 App";
|
|
"keyboard.error.manualOpenSettings" = "系统拒绝了跳转,请手动打开 OSGKeyboard 进入设置";
|
|
"keyboard.error.manualOpenForFlow" = "语音会话未启动,请打开 OSGKeyboard 后再点麦克风";
|
|
"keyboard.error.manualOpenDictateLocal" = "系统拒绝了跳转,请手动打开 OSGKeyboard 完成本地转写";
|
|
"keyboard.error.manualOpenDictate" = "系统拒绝了跳转,请手动打开 OSGKeyboard 录音";
|
|
"keyboard.error.llm.noApiKey" = "未配置 API Key · 请在主 App 设置中填写";
|
|
"keyboard.mic.disabled.missingApiKey" = "请先在设置中填写 API Key";
|
|
"keyboard.error.llm.localPolishUnavailable" = "内置润色不可用 · 已插入原始文本";
|
|
"keyboard.error.llm.unauthorized" = "API Key 无效 (401) · 请检查主 App 设置";
|
|
"keyboard.error.llm.rateLimited" = "API 限流 (429) · 请稍后再试";
|
|
|
|
/* Legacy dictation handoff progress */
|
|
"keyboard.dictation.opening" = "正在打开 OSGKeyboard…";
|
|
"keyboard.dictation.openingLocal" = "正在打开 OSGKeyboard(本地转写)…";
|
|
"keyboard.dictation.recording" = "正在录音,请完成后返回当前输入页";
|
|
"keyboard.dictation.recordingLocal" = "正在本地录音,请完成后返回当前输入页";
|
|
"keyboard.dictation.transcribing" = "识别中,请稍候并返回输入页";
|
|
"keyboard.dictation.transcribingLocal" = "本地识别中,请稍候并返回输入页";
|
|
"keyboard.dictation.failed" = "录音失败,请重试";
|
|
"keyboard.dictation.resultTimeout" = "等待录音结果超时,请返回 OSGKeyboard 完成录音后重试";
|
|
|
|
/* Locale chip (short labels) */
|
|
"locale.chip.auto" = "自动";
|
|
"locale.chip.zh-Hans" = "简";
|
|
"locale.chip.zh-Hant" = "繁";
|
|
"locale.chip.en-US" = "EN";
|
|
"locale.chip.ja-JP" = "日";
|
|
"locale.chip.ko-KR" = "韩";
|
|
|
|
/* Translation chip (v0.3) */
|
|
"keyboard.translation.chip" = "翻译";
|
|
"keyboard.translation.offMenu" = "不翻译";
|
|
"keyboard.translation.off" = "不翻译";
|
|
"keyboard.translation.enable" = "开启翻译";
|
|
"keyboard.translation.disable" = "关闭翻译";
|
|
"keyboard.translation.a11y" = "翻译";
|
|
"keyboard.translation.a11yHint" = "切换翻译开关或修改目标语言。";
|
|
"keyboard.scenario.a11y" = "润色场景";
|
|
"keyboard.scenario.a11yHint" = "选择润色风格或使用场景。";
|
|
|
|
/* Mode chip labels */
|
|
"mode.off" = "关闭";
|
|
"mode.transcribe" = "转写";
|
|
"mode.polish" = "润色";
|
|
|
|
/* Locale chip labels (preview stub) */
|
|
"locale.zh-Hans" = "简体";
|
|
|
|
/* Locale menu items (settings) */
|
|
"locale.auto" = "跟随系统";
|
|
"locale.zh-Hans" = "中文(简体)";
|
|
"locale.zh-Hant" = "中文(繁體)";
|
|
"locale.en-US" = "English (US)";
|
|
"locale.ja-JP" = "日本語";
|
|
"locale.ko-KR" = "한국어";
|
|
|
|
/* 未完成主 App 引导时,语音入口提示 */
|
|
"keyboard.hint.finishSetupInApp" = "请在 OSGKeyboard App 中完成设置后再使用语音输入。";
|
|
|
|
/* v0.3.0:键盘顶栏的输入场景芯片 */
|
|
"keyboard.appContext.a11y" = "润色场景";
|
|
"keyboard.appContext.a11yHint" = "点击可手动切换输入场景(代码/邮件/聊天/文档),覆盖自动检测结果。";
|
|
"keyboard.appContext.chip.code" = "代码";
|
|
"keyboard.appContext.chip.email" = "邮件";
|
|
"keyboard.appContext.chip.chat" = "聊天";
|
|
"keyboard.appContext.chip.document" = "文档";
|
|
"keyboard.appContext.chip.unknown" = "通用";
|
|
"keyboard.appContext.menu.code" = "代码 — 保留标识符、不做自然语言化";
|
|
"keyboard.appContext.menu.email" = "邮件 — 礼貌专业、合理分段";
|
|
"keyboard.appContext.menu.chat" = "聊天 — 简短随意、保留口语";
|
|
"keyboard.appContext.menu.document" = "文档 — 长文、结构化";
|
|
"keyboard.appContext.menu.unknown" = "通用 — 中性口吻";
|