Files
OSGKeyboard/OSGKeyboardShared/en.lproj/Shared.strings
T
Rocky 2cc81c4628 feat(keyboard): expand contextual skills and managed flows
Add local clipboard intent recommendations, webpage and phone actions, and safer host handoffs. Refine managed gateway, catalog refresh, onboarding, and adaptive polish behavior.
2026-08-23 14:02:33 +08:00

475 lines
27 KiB
Plaintext
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.
/* Engine status labels */
"engine.summary.local" = "On-device · %@";
"engine.summary.cloud" = "Active: %@";
"engine.summary.cloudWithModel" = "Active: %1$@ · %2$@";
"engine.asr.appleSpeech" = "Apple SpeechAnalyzer";
/* v0.2.0: flow-level warnings surfaced alongside the final transcript. */
"flow.warning.polishMissingAPIKey" = "Add an API key in Settings to enable polish. Inserted raw ASR text.";
"flow.warning.cloudPolishMissingKey" = "Add an API key in Settings to enable polish. Inserted raw ASR text.";
"flow.warning.localPolishUnavailable" = "Add an API key in Settings to enable polish. Inserted raw ASR text.";
"flow.warning.polishDegraded" = "Weak network — inserted raw ASR text without polish.";
"flow.warning.polishDegradedQuality" = "Polish output failed validation; inserted a conservative version.";
"flow.warning.managedInsufficientCredits" = "Managed credits are insufficient. Inserted raw ASR text; open the Account tab to add credits.";
"flow.warning.managedGrantRejected" = "Managed service authorization expired. Inserted raw ASR text; open the main app to reconnect your account.";
"flow.warning.oobeFeatureAlreadyUsed" = "This guided page is already complete. Return to the app to continue.";
/* LLM providers */
"provider.openai" = "OpenAI";
"provider.ark" = "Volcengine Ark";
"provider.deepseek" = "DeepSeek";
"provider.qwen" = "Qwen (DashScope)";
"provider.zhipu" = "Zhipu GLM";
"provider.moonshot" = "Moonshot";
"provider.siliconflow" = "SiliconFlow";
"provider.groq" = "Groq";
"provider.minimax" = "MiniMax";
"provider.mimo" = "Xiaomi MiMo";
"provider.openrouter" = "OpenRouter";
"provider.gemini" = "Google Gemini";
"provider.anthropic" = "Anthropic Claude";
"provider.xai" = "xAI Grok";
"provider.mistral" = "Mistral AI";
"provider.cometapi" = "CometAPI";
"provider.alibabaCoding" = "Alibaba Coding";
"provider.codingPlanX" = "CodingPlanX";
"provider.volcengine" = "Volcengine ASR";
"provider.bailian" = "Bailian Realtime ASR";
"provider.whisper" = "Whisper (OpenAI)";
"provider.codex_oauth" = "Codex OAuth";
"provider.custom" = "Custom";
/* LLM errors */
"error.llm.invalidURL" = "Invalid API URL. Check Base URL in Settings.";
"error.llm.noAPIKey" = "API Key is missing.";
"error.llm.http" = "API returned HTTP %lld. Try again later or contact the provider.";
"error.llm.decoding" = "Failed to parse the API response.";
"error.llm.transport" = "Network error. Check your connection and try again.";
"error.llm.rateLimited" = "Too many API requests. Please wait and try again.";
"error.llm.cancelled" = "Request cancelled.";
/* ASR errors */
"error.asr.localeUnsupported" = "Speech language assets are unavailable. Try again later or switch the recognition language.";
"error.asr.assetsNotReady" = "Speech language assets are not ready. Try again later.";
"error.asr.formatUnsupported" = "This device does not support the required audio format.";
"error.asr.noSpeech" = "No speech detected. Please try again.";
"error.asr.chunkFailed" = "Segment %lld failed: %@";
/* Cloud ASR errors */
"error.cloudASR.noAPIKey" = "API Key is missing.";
"error.cloudASR.invalidURL" = "Invalid cloud ASR endpoint.";
"error.cloudASR.http" = "Cloud ASR returned HTTP %lld.";
"error.cloudASR.httpWithMessage" = "Cloud ASR returned HTTP %lld: %@";
"error.cloudASR.decoding" = "Failed to parse cloud ASR response: %@";
"error.cloudASR.transport" = "Cloud ASR network error: %@";
"error.cloudASR.emptyTranscript" = "Cloud ASR returned an empty transcript.";
"error.cloudASR.audioTooLong" = "Audio segment is too long for this cloud ASR provider.";
"error.cloudASR.providerUnsupported" = "This provider does not support cloud speech recognition yet.";
"error.cloudASR.streamingNotImplemented" = "Streaming ASR failed for this provider. Check your API key and network, or try again.";
/* Managed account gateway */
"managed.error.grantUnavailable" = "Managed service is not ready. Open the main app and reconnect your account.";
"managed.error.scopeNotGranted" = "Managed service access is missing for %@. Open the main app and reconnect your account.";
"managed.error.grantRejected" = "Managed service authorization expired. Open the main app and reconnect your account.";
"managed.error.insufficientCredits" = "Not enough credits. Open the Account tab in the main app to add credits.";
"managed.error.oobeFeatureAlreadyUsed" = "This guided page is already complete. Return to the app to continue.";
"managed.error.timeout" = "Managed service timed out. Check your connection and try again.";
"managed.error.providerUnavailable" = "Credits AI service is temporarily unavailable. Try again later.";
"managed.error.providerRateLimited" = "Credits AI service is busy. Try again shortly.";
"managed.error.providerTimeout" = "The AI provider timed out. Try again.";
"managed.error.providerFailure" = "The AI provider returned an invalid result. Try again.";
"managed.error.internalFailure" = "Credits service encountered an internal error. Try again later.";
"managed.error.server" = "Managed service failed (%1$@, HTTP %2$lld). Try again later.";
"managed.asr.error.invalidConfiguration" = "Managed speech settings are invalid. Open the main app and select the service again.";
"managed.asr.error.concurrencyLimit" = "Another managed speech session is active. Stop it and try again.";
"managed.asr.error.sessionCreation" = "Managed speech could not start. Check your connection and try again.";
"managed.asr.error.transport" = "Managed speech connection failed. Check your network and try again.";
"managed.asr.error.connectTimeout" = "Managed speech took too long to connect. Check your network and try again.";
"managed.asr.error.idleTimeout" = "Managed speech stopped because no audio was received. Tap the microphone and try again.";
"managed.asr.error.streaming" = "Managed speech streaming was interrupted. Check your network and try again.";
"managed.asr.error.invalidResult" = "Managed speech returned an invalid result. Please try again.";
"managed.asr.error.batch" = "Managed speech retry failed. Check your network and try again.";
/* Provider tools */
"providerTools.error.invalidURL" = "Invalid model endpoint.";
"providerTools.error.missingAPIKey" = "API Key is missing.";
"providerTools.error.http" = "Model endpoint returned HTTP %lld.";
"providerTools.error.empty" = "No models returned.";
"providerTools.error.decoding" = "Failed to parse model list.";
"providerTools.error.transport" = "Network error while loading models.";
/* Polish scenarios */
"polishScenario.daily_chat" = "Daily Chat";
"polishScenario.social_lifestyle" = "Social Network";
"polishScenario.social_short" = "Instagram";
"polishScenario.goofy" = "Goofy";
"polishScenario.work" = "Work";
"polishScenario.document" = "Document";
"polishScenario.todo" = "TODO";
"polishScenario.custom" = "Custom";
"polishScenario.chip.daily_chat" = "Chat";
"polishScenario.chip.social_lifestyle" = "Social";
"polishScenario.chip.social_short" = "IG";
"polishScenario.chip.goofy" = "Goofy";
"polishScenario.chip.work" = "Work";
"polishScenario.chip.document" = "Doc";
"polishScenario.chip.todo" = "TODO";
"polishScenario.chip.custom" = "Custom";
"polishStyle.light" = "Light Cleanup";
"polishStyle.structured" = "Clear Structure";
"polishStyle.formal" = "Formal Writing";
"polishStyle.dating" = "Dating Coach";
"polishStyle.chat" = "Daily Chat";
"polishStyle.flex" = "Flex Guide";
"polishStyle.corp" = "Corp Speak";
"polishStyle.diba" = "DiBa Logic";
"polishStyle.xhs" = "RED Sisters";
/* Polish intensity */
"polish.intensity.light" = "Light";
"polish.intensity.heavy" = "Heavy";
"polish.intensity.light.desc" = "Uses full fidelity and question safeguards to reduce distortion.";
"polish.intensity.heavy.desc" = "Uses only transcript formatting before the selected fun personality.";
/* AI response length */
"ai.responseLength.short" = "Short";
"ai.responseLength.medium" = "Medium";
"ai.responseLength.detailed" = "Detailed";
/* v0.3.0: Detected app context labels */
"appContext.code" = "Code";
"appContext.email" = "Email";
"appContext.chat" = "Chat";
"appContext.document" = "Document";
"appContext.unknown" = "General";
/* v0.3.0: Personal dictionary categories */
"dict.category.properNoun" = "Names & places";
"dict.category.technical" = "Technical terms";
"dict.category.acronym" = "Acronyms";
"dict.category.productName" = "Product names";
"dict.category.custom" = "Custom";
/* v0.3.0: Personal dictionary sources */
"dict.source.manual" = "Manual";
"dict.source.history" = "Auto-learned";
"dict.source.contacts" = "From Contacts";
"dict.source.recentEdit" = "From recent edit";
/* Keyboard UI (shared between extension + preview) */
"keyboard.tapToTalkA11y" = "Tap to talk";
"keyboard.translation.offMenu" = "Don't translate";
"keyboard.translation.a11y" = "Translation";
"keyboard.translation.a11yHint" = "Toggle translation or change the target language.";
/* macOS app */
"mac.section.dashboard" = "Home";
"mac.section.history" = "History";
"mac.section.dictionary" = "Dictionary";
"mac.section.styles" = "Polish Styles";
"mac.styles.subtitle" = "Choose or create a complete writing personality for polished dictation.";
"mac.styles.add" = "Add Polish Style";
"mac.styles.edit" = "Edit Style";
"mac.styles.builtin" = "Built-in";
"mac.styles.fun" = "Fun styles";
"mac.styles.custom" = "My Styles";
"mac.styles.copy" = "Copy";
"mac.styles.viewPrompt" = "View Prompt";
"mac.styles.light" = "Minimal rewriting with recognition and punctuation fixes.";
"mac.styles.structured" = "Clear paragraphs and lists for multiple points.";
"mac.styles.formal" = "Professional writing for email and work.";
"mac.styles.dating" = "Warm, playful messages with a light touch of wit.";
"mac.styles.chat" = "Short, natural messages without a formal tone.";
"mac.styles.flex" = "4A / study-abroad Chinglish with optional luxury seasoning.";
"mac.styles.corp" = "Big-tech buzzwords for syncs, pushback, and blame-shifting.";
"mac.styles.diba" = "Clean logical takedowns that leave the other side stuck.";
"mac.styles.xhs" = "Sisterly Xiaohongshu note voice with hooks, ready to post.";
"mac.styles.customDescription" = "Custom complete writing personality";
"mac.styles.error" = "Couldnt Save Style";
"mac.styles.validation" = "Check the name, prompt length, and the 8-style limit.";
"mac.styles.name" = "Style name";
"mac.styles.allowsAddedEmoji" = "Allow mood emojis";
"mac.styles.allowsAddedEmoji.hint" = "When on, polish may add a few emojis that match the drafts emotion, and keeps them on screen. Off by default.";
"mac.styles.prompt" = "Complete prompt";
"mac.styles.hint" = "Use {{DICTIONARY}} to place the personal dictionary. System rules are appended automatically.";
"mac.styles.learn.title" = "Generate Your Style";
"mac.styles.learn.body" = "Learn how you naturally express yourself from past dictation.";
"mac.styles.learn.progress" = "%lld / %lld characters";
"mac.styles.learn.remaining" = "%lld to go";
"mac.styles.learn.ready" = "Ready";
"mac.styles.learn.action" = "Generate Style";
"mac.styles.learn.generating" = "Generating…";
"mac.styles.learn.privacy" = "Sent to your configured AI only when you generate. Review and edit before saving.";
"mac.styles.learn.limit" = "Delete a custom style before generating another one.";
"mac.styles.learn.error.insufficient" = "Keep dictating until 5,000 effective characters are available.";
"mac.styles.learn.error.invalidResponse" = "The AI did not return a valid writing style. Please try again.";
"mac.styles.learn.error.promptTooLong" = "The generated prompt exceeded 6,000 characters. Please try again.";
"mac.styles.learn.error.requestTooLarge" = "The learning sample is too large for the configured AI service. Shorten unusually long history entries and try again.";
"mac.styles.learn.error.request" = "Couldnt generate a style with the configured AI service. Check your connection and AI settings, then try again.";
"mac.section.settings" = "Settings";
"mac.brand.subtitle" = "AI DICTATION";
"mac.brand.tagline" = "Speak it. Its typed.";
"mac.brand.tagline.subtitle" = "Local-first · Cross-device · One-tap dictation";
"mac.devices" = "Devices";
"mac.page.history.subtitle" = "Every dictation, kept in order.";
"mac.page.dictionary.subtitle" = "Words that teach recognition your voice.";
"mac.page.settings.subtitle" = "Engine, shortcuts, and appearance.";
"mac.status.ready" = "Ready when you are…";
"mac.status.listening" = "Listening…";
"mac.status.transcribing" = "Transcribing…";
"mac.status.polishing" = "Polishing…";
"mac.status.copied" = "Copied to clipboard";
"mac.status.pasted" = "Inserted into front app";
"mac.status.copiedAndPasted" = "Copied and inserted";
"mac.status.deliveryWithNote" = "%@ — %@";
"stat.dictationTime" = "Dictation Time";
"stat.words" = "Dictation Chars";
"stat.translation" = "Translation Chars";
"stat.dictionary" = "Dictionary";
"stat.cumulativeDuration" = "Total time";
"stat.transcribed" = "Transcribed";
"stat.cumulativeTranslation" = "Translated";
"stat.customTerms" = "Custom terms";
"stat.weekChart.title" = "Last 7 days";
"stat.weekChart.caption" = "Dictation chars";
"stat.weekChart.empty" = "No dictation yet this week";
"mac.status.chipReady" = "Ready";
"mac.status.chipProcessing" = "Processing";
"mac.overlay.listening" = "Listening";
"mac.overlay.preparing" = "Starting…";
"mac.overlay.transcribing" = "Transcribing";
"mac.overlay.polishing" = "Polishing";
"mac.overlay.live" = "Live";
"mac.overlay.done" = "Done";
"mac.overlay.dragHint" = "Drag to move · double-click to reset";
"mac.record.start" = "Record";
"mac.record.stop" = "Stop";
"mac.record.pressStop" = "Press Stop";
"mac.copy" = "Copy";
"mac.openWindow" = "Open Window";
"mac.quit" = "Quit";
"mac.mode.cloud" = "Cloud Mode";
"mac.mode.local" = "Local Mode";
"mac.connected" = "Connected";
"mac.offline" = "Offline";
"mac.history.empty" = "No dictations yet";
"mac.history.emptyBody" = "Hold Option anywhere to speak — transcripts land here.";
"mac.history.select" = "Select a dictation";
"mac.history.clearTitle" = "Clear all history?";
"mac.history.clearMessage" = "This cannot be undone.";
"mac.history.clearConfirm" = "Clear all";
"mac.history.clearDayTitle" = "Delete this day's history?";
"mac.history.clearDayMessage" = "All transcripts from this day will be removed. This cannot be undone.";
"mac.history.clearDayConfirm" = "Delete day";
"mac.history.clearDayButton" = "Delete this day's history";
"mac.dict.health" = "Vocabulary Health";
"mac.dict.healthDesc" = "Custom terms that bias recognition and are never rewritten.";
"mac.dict.add" = "Add Personal Word";
"mac.dict.addField" = "Word or phrase";
"mac.dict.addFooter" = "Common recognition mistakes will be generated automatically after saving.";
"mac.dict.aliasesGenerating" = "Generating aliases…";
"mac.dict.search" = "Search words";
"mac.dict.empty" = "No words yet";
"mac.dict.emptyBody" = "Add personal words to improve recognition accuracy. They sync across your devices via iCloud.";
"mac.dict.noMatch" = "No matches";
"mac.cancel" = "Cancel";
"mac.save" = "Save";
"mac.done" = "Done";
"mac.delete" = "Delete";
"mac.dict.deleteTitle" = "Delete this word?";
"mac.dict.deleteMessage" = "This cannot be undone.";
"mac.hint.holdOption" = "Hold Option to dictate";
"mac.settings.cloudProvider" = "CLOUD PROVIDER";
"mac.settings.polishProvider" = "TEXT POLISH (LLM)";
"mac.settings.asrProvider" = "SPEECH RECOGNITION (ASR)";
"mac.settings.asrService" = "ASR service";
"mac.settings.asrApiKey" = "ASR API key";
"mac.settings.asrModel" = "ASR model";
"mac.settings.baseURL" = "Base URL";
"mac.settings.service" = "Service";
"mac.settings.apiKey" = "API Key";
"mac.settings.model" = "Model";
"mac.settings.modelFetchHint" = "Enter an API Key, then fetch models.";
"mac.settings.connectionCheck" = "Connection check";
"mac.settings.validate" = "Validate";
"mac.settings.fetchModels" = "Fetch models";
"mac.settings.validating" = "Validating…";
"mac.settings.validateSuccess" = "Success · Retry";
"mac.settings.validateFailure" = "Failed · Retry";
"mac.settings.loadingModels" = "Loading models…";
"mac.settings.modelsLoaded" = "%lld models loaded.";
"mac.settings.selectModel" = "Select model";
"mac.settings.modelSelected" = "Selected %@";
"mac.settings.modelsEmptyHint" = "Tap refresh to load models";
"mac.settings.thinking" = "Thinking";
"mac.settings.thinkingSubtitle" = "Slower, higher quality — recommended off";
"mac.settings.thinkingHint" = "Off by default. Enable only for slower, deeper reasoning.";
"mac.settings.translation" = "Polish then translate";
"mac.settings.translationOff" = "Don't translate";
"mac.settings.volcengineAppId" = "APP ID";
"mac.settings.volcengineAccessToken" = "Access Token";
"mac.settings.volcengineApiKey" = "API Key";
"mac.settings.volcengineApiKeyMode" = "Use new API Key";
"mac.settings.volcengineApiKeyModeSubtitle" = "API Key for the new console; turn off for APP ID + Token.";
"mac.settings.volcengineNoteAppToken" = "Legacy console: APP ID + Access Token. Secret Key not required. Resource fixed to Doubao streaming 2.0 (volc.seedasr.sauc.duration).";
"mac.settings.volcengineNoteApiKey" = "New console: API Key only. Resource fixed to Doubao streaming 2.0 (volc.seedasr.sauc.duration).";
"mac.settings.recognition" = "RECOGNITION METHOD";
"mac.settings.cloudEngine" = "Cloud Engine & AI Refinement";
"mac.settings.cloudEngineDesc" = "Premium transcription via your provider's API, plus AI grammar and style polishing.";
"mac.settings.localEngine" = "Local Recognition";
"mac.settings.localEngineDesc" = "On-device transcription with a local model. High privacy, zero latency.";
"mac.settings.localSpeechFallback" = "Local Recognition (Apple Speech)";
"mac.settings.localSpeechFallbackDesc" = "On-device Apple Speech when the Qwen3 model is not installed.";
"mac.settings.about" = "About";
"mac.settings.version" = "Version";
"mac.settings.privacyPolicy" = "Privacy Policy";
"mac.settings.thirdPartyLicenses" = "Third-Party Licenses";
"mac.settings.licenses.footer" = "Open-source components used by OSGKeyboard. License texts are reproduced from upstream repositories; model weights are downloaded at runtime and cached on device. OSGKeyboard itself is source-available — commercial licensing: rocky.hk@gmail.com.";
"mac.settings.restartOnboarding" = "Restart First-Run Setup";
"mac.settings.general" = "General";
"mac.settings.input" = "Input & Shortcuts";
"mac.settings.recognitionLanguage" = "Recognition Language";
"mac.settings.interfaceLanguage" = "Interface Language";
"mac.settings.autoPaste" = "Auto-paste after dictation";
"mac.settings.autoPasteDesc" = "Simulate ⌘V in the front app after transcription (requires Accessibility).";
"mac.settings.hotkey" = "Global shortcut";
"mac.settings.hotkeyDesc" = "Hold Option (⌥) to dictate from any app.";
"mac.settings.hotkeyTrigger" = "Shortcut key";
"mac.settings.hotkeyTriggerDesc" = "Which Option (⌥) key starts dictation when held.";
"mac.hotkeyTrigger.rightOption" = "Right Option (⌥)";
"mac.hotkeyTrigger.leftOption" = "Left Option (⌥)";
"mac.hotkeyTrigger.eitherOption" = "Either Option key";
"mac.hint.hold.rightOption" = "Hold right Option (⌥) to dictate";
"mac.hint.hold.leftOption" = "Hold left Option (⌥) to dictate";
"mac.hint.hold.eitherOption" = "Hold either Option (⌥) to dictate";
"mac.hint.holdOption" = "Hold Option to dictate";
"mac.settings.qwen3Model" = "Qwen3 model folder";
"mac.settings.qwen3ModelDesc" = "Folder with config.json, model.safetensors, vocab.json, and merges.txt.";
"mac.settings.qwen3Browse" = "Choose folder…";
"mac.settings.qwen3Missing" = "Qwen3 model not found — using Apple Speech for now.";
"mac.settings.mlxModelMissing" = "Select a Qwen3 MLX model folder below, or choose another installed model.";
"mac.settings.selectedModelMissing" = "%@ is not installed — using Apple Speech for now.";
"mac.settings.localModelFallbackApple" = "No local model is ready — using Apple Speech for now.";
"mac.settings.accessibility" = "Accessibility Permission";
"mac.settings.accessibilityDesc" = "Required for global shortcut and auto-paste.";
"mac.settings.openAccessibility" = "Open System Settings";
"mac.settings.appearance" = "Appearance";
"mac.settings.appearanceDesc" = "Match the system, or force a light or dark look.";
"mac.appearance.system" = "System";
"mac.appearance.light" = "Light";
"mac.appearance.dark" = "Dark";
"mac.onboarding.progress" = "Step %lld of %lld";
"mac.onboarding.back" = "Back";
"mac.onboarding.next" = "Next";
"mac.onboarding.finish" = "Finish";
"mac.onboarding.skipForNow" = "Skip for now";
"mac.onboarding.welcome.title" = "Speak it. Its typed.";
"mac.onboarding.welcome.subtitle" = "Set up dictation in a minute. Everything here can be changed later in Settings.";
"mac.onboarding.welcome.privacy" = "Your voice stays local unless you choose a cloud provider.";
"mac.onboarding.welcome.hotkey" = "Hold Option to dictate from any app.";
"mac.onboarding.welcome.local" = "Local Sherpa recognition can be prepared now or later.";
"mac.onboarding.microphone.title" = "Allow microphone access";
"mac.onboarding.microphone.subtitle" = "OSGKeyboard needs the microphone to capture your dictation audio.";
"mac.onboarding.microphone.allow" = "Allow Microphone";
"mac.onboarding.microphone.granted" = "Microphone access is granted.";
"mac.onboarding.microphone.needed" = "Microphone access is needed for recording.";
"mac.onboarding.accessibility.title" = "Enable Accessibility";
"mac.onboarding.accessibility.subtitle" = "Accessibility lets OSGKeyboard listen for the global shortcut and paste text into the front app. You can skip it and grant it later.";
"mac.onboarding.accessibility.open" = "Open System Settings";
"mac.onboarding.accessibility.granted" = "Accessibility permission is granted.";
"mac.onboarding.accessibility.needed" = "Accessibility is not enabled yet.";
"mac.onboarding.engine.title" = "Choose a recognition path";
"mac.onboarding.engine.subtitle" = "Start locally for privacy, or use your own cloud API for provider-based recognition and polish.";
"mac.onboarding.engine.localDesc" = "Private on-device recognition with Sherpa models. Falls back to Apple Speech until a model is installed.";
"mac.onboarding.engine.cloudDesc" = "Use your API key for cloud speech recognition and AI polishing.";
"mac.onboarding.cloud.title" = "Configure API access";
"mac.onboarding.cloud.subtitle" = "Pick a provider and add your key. This step is optional, so you can finish now and fill it later in Settings.";
"mac.onboarding.cloud.skipHint" = "You can leave these blank and finish setup; cloud mode will ask for a key before use.";
"mac.onboarding.model.title" = "Prepare local recognition";
"mac.onboarding.model.subtitle" = "Download the basic Sherpa runtime and default model now, or skip and continue with Apple Speech fallback.";
"mac.onboarding.model.download" = "Download Default Model";
"mac.onboarding.model.done" = "Local model is ready.";
"mac.onboarding.model.skipHint" = "Skipping is safe: Settings keeps the same download controls for later.";
"mac.onboarding.popover.title" = "Finish setup";
"mac.onboarding.popover.subtitle" = "Open the main window to choose permissions, API settings, and local model download.";
"mac.error.noAudio" = "No audio captured";
"mac.error.noCloudASR" = "Selected provider has no cloud ASR";
"mac.error.emptyTranscript" = "No speech recognized";
"mac.error.qwen3ModelMissing" = "Qwen3-ASR model not installed";
"mac.error.qwen3LoadFailed" = "Failed to load Qwen3 model: %@";
"mac.error.qwen3InferenceFailed" = "Qwen3 transcription failed: %@";
"mac.localASR.models" = "Local ASR Engine & Models";
"mac.localASR.modelsDesc" = "Models download directly. Mainland China uses the hf-mirror mirror first; elsewhere the official Hugging Face endpoint first. Interrupted downloads resume automatically and fall back across mirrors.";
"mac.localASR.downloadSource" = "Download source";
"mac.localASR.downloadSource.auto" = "Automatic (by region)";
"mac.localASR.downloadSource.hfMirror" = "hf-mirror (recommended in China)";
"mac.localASR.downloadSource.huggingface" = "Hugging Face (official)";
"mac.localASR.download" = "Download";
"mac.localASR.selectFolder" = "Choose folder";
"mac.localASR.openFolder" = "Open folder";
"mac.localASR.pause" = "Pause";
"mac.localASR.resume" = "Resume";
"mac.localASR.needsFolder" = "Folder required";
"mac.localASR.installDone" = "Install completed.";
"mac.localASR.installed" = "Installed";
"mac.localASR.notInstalled" = "Not installed";
"mac.localASR.personalDictionaryTag" = "Personal dictionary";
"mac.localASR.badge.fastest" = "Fastest";
"mac.localASR.badge.balanced" = "Most balanced";
"mac.localASR.badge.quality" = "Best quality";
"mac.localASR.hotwordsYes" = "Hotwords";
"mac.localASR.hotwordsNo" = "No hotwords";
"mac.localASR.catalogMissing" = "Local ASR catalog is missing from the app bundle.";
"mac.localASR.diagnostics" = "Last Bias Diagnostics";
"mac.localASR.diagnosticsDesc" = "Captured after your most recent local dictation.";
"mac.localASR.diagEmpty" = "No local dictation yet.";
"mac.localASR.diagBackend" = "Backend";
"mac.localASR.diagUserTerms" = "User terms";
"mac.localASR.diagBuiltinTerms" = "Builtin terms";
"mac.localASR.diagHotwords" = "Hotwords sent";
"mac.localASR.diagPrompt" = "Prompt chars";
"mac.localASR.diagTruncated" = "Prompt truncated";
"mac.localASR.delete" = "Delete";
"mac.localASR.deleteDone" = "Model deleted.";
"mac.localASR.redownload" = "Re-download";
"mac.localASR.revealInFinder" = "Reveal in Finder";
"mac.localASR.openStorage" = "Open model storage folder";
"mac.localASR.runtime" = "Local ASR runtime";
"mac.localASR.runtimeDesc" = "Installed automatically with the models above; required for Qwen3, SenseVoice, and similar models.";
"mac.localASR.phase.downloading" = "Downloading";
"mac.localASR.phase.paused" = "Paused";
"mac.localASR.phase.extracting" = "Extracting";
"mac.localASR.phase.validating" = "Validating";
"mac.localASR.phase.finalizing" = "Finalizing";
"mac.localASR.phase.failed" = "Failed";
"mac.localASR.phase.completed" = "Completed";
"mac.error.accessibilityRequired" = "Dictation copied to the clipboard. Press ⌘V to paste, then enable Accessibility for OSGKeyboard in System Settings.";
"mac.foregroundApp" = "Front app: %@";
"mac.sync.settingsTitle" = "Cross-Device iCloud Sync";
"mac.sync.settingsSubtitle" = "Sync settings, history, and API keys across devices via iCloud.";
"mac.sync.syncNow" = "Sync Now";
"mac.sync.dictTitle" = "Personal dictionary iCloud sync";
"mac.sync.dictSubtitle" = "Keep your dictionary in sync across all devices.";
"mac.sync.error.generic" = "Could not sync with iCloud. Try again later.";
"mac.sync.error.dictTooLarge" = "Dictionary is too large to sync via iCloud.";
"settings.appLanguage.auto" = "Auto";
"settings.appLanguage.english" = "English";
"settings.appLanguage.chinese" = "Chinese";
/* Voluntary support tip (Consumable IAP — no feature unlock) */
"tip.title" = "Support the Developer";
"tip.body" = "OSGKeyboard is completely free with every feature unlocked. If you find it useful, you can leave an optional tip — it does not unlock anything extra.";
"tip.button" = "Tip %@";
"tip.buttonFallback" = "Send a Tip";
"tip.consumableNotice" = "Consumable in-app purchase. Tips cannot be restored (Apple policy).";
"tip.thankYou.title" = "Thank you!";
"tip.thankYou.message" = "Your support helps keep OSGKeyboard free and open for everyone.";
"tip.thankYou.past" = "You've supported us %lld time(s). Thank you!";
"tip.error.title" = "Purchase Failed";
"tip.error.productUnavailable" = "The tip product is unavailable right now. Try again later.";
"tip.error.pending" = "Your purchase is pending approval.";
"tip.error.unknown" = "The purchase could not be completed.";
"tip.alert.dismiss" = "OK";