/* 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" = "本地识别无需 Key;填写 API Key 后可开启 AI 润色。"; "onboarding.api.localReady.title" = "本地识别已就绪"; "onboarding.api.localReady.body" = "识别在端侧完成。请在设置中填写 API Key 以开启 AI 润色。"; /* 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.tab.ai" = "AI"; "keyboard.tab.voice" = "语音"; "keyboard.tab.chinese" = "中文"; "keyboard.tab.english" = "EN"; "keyboard.tab.ai.a11y" = "切换到 AI 问答"; "keyboard.tab.voice.a11y" = "切换到语音输入"; "keyboard.tab.chinese.a11y" = "切换到中文输入"; "keyboard.tab.english.a11y" = "切换到英文输入"; "keyboard.placeholder.idle" = "点按说话"; "keyboard.placeholder.preparing" = "准备中…"; "keyboard.placeholder.preparingRecording" = "准备录音…"; "keyboard.placeholder.processing" = "处理中…"; "keyboard.placeholder.error" = "润色失败"; "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.redoA11y" = "重做"; "keyboard.copyA11y" = "拷贝"; "keyboard.cutA11y" = "剪切"; "keyboard.cursorDrag.hint" = "按住并拖动以移动光标"; "keyboard.cursorDrag.centerHint" = "拖动移动光标"; "keyboard.nextKeyboardA11y" = "切换键盘"; "keyboard.nextKeyboardA11yHint" = "轻点切换到下一个键盘;长按查看全部键盘。"; "keyboard.typing.setupA11yHint" = "打开 OSGKeyboard 完成输入法初始化。"; /* 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.mic.hint.missingPolishApiKey" = "请先在设置中填写 API Key,才能润色"; "keyboard.error.llm.localPolishUnavailable" = "未填写 API Key · 已插入原始文本"; "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 完成录音后重试"; /* 翻译菜单 */ "keyboard.translation.offMenu" = "不翻译"; "keyboard.translation.a11y" = "翻译"; "keyboard.translation.a11yHint" = "切换翻译开关或修改目标语言。"; "keyboard.clipboard.a11y" = "剪贴板"; "keyboard.clipboard.a11yHint" = "查看剪贴板历史或开启剪贴板功能。"; "keyboard.clipboard.guide.body" = "请先在设置中开启剪贴板历史。"; "keyboard.clipboard.guide.cta" = "去设置开启"; "keyboard.clipboard.panel.title" = "剪贴板"; "keyboard.clipboard.panel.empty" = "暂无历史记录"; "keyboard.clipboard.panel.delete" = "删除"; "keyboard.clipboard.panel.close" = "关闭剪贴板"; "keyboard.clipboard.panel.closeHint" = "返回键盘输入界面。"; "keyboard.clipboard.clear.title" = "清空剪贴板历史?"; "keyboard.clipboard.clear.message" = "将从本机永久删除全部剪贴板历史,且无法撤销。"; "keyboard.clipboard.clear.confirm" = "清空历史"; "keyboard.clipboard.suggestion.dismissA11y" = "关闭剪贴板建议"; "keyboard.clipboard.suggestion.dismissHint" = "隐藏本次剪贴板建议条。"; "keyboard.voice.cancel" = "取消本次语音输入"; "keyboard.voice.cancelHint" = "放弃当前录音、识别和润色结果。"; "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" = "通用 — 中性口吻"; /* 长按编辑上一条输入 */ "keyboard.edit.hint.available" = "长按编辑上一条"; "keyboard.edit.error.noTarget" = "没有可编辑的上一条输入"; "keyboard.edit.error.llmUnavailable" = "请先在主 App 配置可用的 AI 服务"; "keyboard.edit.error.startTimeout" = "麦克风启动超时,点击重试"; "keyboard.edit.error.processing" = "编辑失败,请重试"; "keyboard.edit.error.processingTimeout" = "编辑超时,请重试"; "keyboard.edit.error.unchanged" = "内容没有变化,请换一种说法"; "keyboard.edit.status.preparing" = "正在启动麦克风…"; "keyboard.edit.status.listening" = "正在聆听编辑指令"; "keyboard.edit.status.processing" = "正在编辑…"; "keyboard.edit.status.review" = "左右滑动对比原文和结果"; "keyboard.edit.status.applying" = "正在应用编辑…"; "keyboard.edit.page.original" = "原文"; "keyboard.edit.page.edited" = "编辑后"; "keyboard.edit.helper.speak" = "说话编辑文字"; "keyboard.edit.helper.finish" = "点击完成编辑"; "keyboard.edit.helper.compare" = "左右滑动对比"; "keyboard.edit.helper.apply" = "点击应用编辑"; "keyboard.edit.helper.append" = "插入当前位置"; "keyboard.edit.close" = "关闭编辑模式"; "keyboard.edit.closeHint" = "放弃本次编辑并返回语音输入。"; "keyboard.edit.apply" = "应用编辑"; "keyboard.edit.append" = "插入当前位置"; "keyboard.edit.stop" = "完成编辑指令"; /* AI 问答模式 */ "keyboard.ai.placeholder" = "点击麦克风向 AI 提问"; "keyboard.ai.hintA11yPrefix" = "建议:"; "keyboard.ai.hint" = "先插入 AI 回答,再按发送"; "keyboard.ai.listening" = "正在聆听…"; "keyboard.ai.recognizing" = "正在识别问题…"; "keyboard.ai.generating" = "AI 正在回答…"; "keyboard.ai.thinking" = "AI 正在思考…"; "keyboard.ai.send" = "发送"; "keyboard.ai.insert" = "插入"; "keyboard.ai.inserted" = "已插入"; "keyboard.ai.sent" = "已发送"; "keyboard.ai.cancel" = "取消 AI 问答"; "keyboard.ai.cancelHint" = "取消当前录音、识别或 AI 请求。"; "keyboard.ai.sendA11y" = "首次点击插入 AI 回答;在支持发送的输入框中再次点击发送"; "keyboard.ai.startA11y" = "开始向 AI 提问"; "keyboard.ai.stopA11y" = "结束提问并发送给 AI"; "keyboard.ai.error.missingAPIKey" = "请先在主 App 配置可用的 AI 服务"; "keyboard.ai.error.pipelineBusy" = "语音服务正忙,请稍后重试"; "keyboard.ai.error.startTimeout" = "麦克风启动超时,请重试"; "keyboard.ai.error.requestTimeout" = "AI 回答超时,请重试"; "keyboard.ai.error.requestFailed" = "AI 回答失败,请重试"; "keyboard.ai.error.clipboardUnavailable" = "剪贴板建议已过期,请重新复制文本";