Complete Phase 4: Comprehensive preferences, localization, and UX polish
- Rename application from MenuWhisper to Tell me with new domain com.fmartingr.tellme - Implement comprehensive preferences window with 6 tabs (General, Models, Text Insertion, Interface, Advanced, Permissions) - Add full English/Spanish localization for all UI elements - Create functional onboarding flow with model download capability - Implement preview dialog for transcription editing - Add settings export/import functionality - Fix HUD content display issues and add comprehensive permission checking - Enhance build scripts and app bundle creation for proper localization support
This commit is contained in:
parent
7ba5895406
commit
54c3b65d4a
25 changed files with 3086 additions and 235 deletions
|
|
@ -1,7 +1,7 @@
|
|||
/* Menu-Whisper - English Localization */
|
||||
/* Tell me - English Localization */
|
||||
|
||||
/* General */
|
||||
"app.name" = "Menu-Whisper";
|
||||
"app.name" = "Tell me";
|
||||
"general.ok" = "OK";
|
||||
"general.cancel" = "Cancel";
|
||||
"general.continue" = "Continue";
|
||||
|
|
@ -13,29 +13,54 @@
|
|||
"menubar.listening" = "Listening";
|
||||
"menubar.processing" = "Processing";
|
||||
"menubar.preferences" = "Preferences...";
|
||||
"menubar.quit" = "Quit Menu-Whisper";
|
||||
"menubar.help" = "Help";
|
||||
"menubar.quit" = "Quit Tell me";
|
||||
"menubar.loading_model" = "Loading model...";
|
||||
"menubar.model_status" = "Model: %@";
|
||||
"menubar.model_loading" = "Model: Loading...";
|
||||
"menubar.no_model" = "No model - click Preferences";
|
||||
"menubar.reset_onboarding" = "Reset Onboarding";
|
||||
|
||||
/* HUD States */
|
||||
"hud.listening" = "Listening...";
|
||||
"hud.processing" = "Transcribing...";
|
||||
"hud.cancel" = "Press Esc to cancel";
|
||||
"hud.please_wait" = "Please wait";
|
||||
|
||||
/* Permissions */
|
||||
"permissions.microphone.title" = "Microphone Access Required";
|
||||
"permissions.microphone.message" = "Menu-Whisper needs access to your microphone to perform speech-to-text transcription.";
|
||||
"permissions.microphone.message" = "Tell me needs access to your microphone to capture speech for transcription. Please grant microphone access in System Settings.";
|
||||
"permissions.accessibility.title" = "Accessibility Access Required";
|
||||
"permissions.accessibility.message" = "Menu-Whisper needs Accessibility access to insert transcribed text into applications.";
|
||||
"permissions.accessibility.message" = "Tell me needs Accessibility access to insert transcribed text into other applications. Please grant accessibility access in System Settings.";
|
||||
"permissions.input_monitoring.title" = "Input Monitoring Required";
|
||||
"permissions.input_monitoring.message" = "Menu-Whisper needs Input Monitoring access to register global hotkeys.";
|
||||
"permissions.input_monitoring.message" = "Tell me needs Input Monitoring access to register global hotkeys and insert text. Please grant input monitoring access in System Settings.";
|
||||
"permissions.open_settings" = "Open System Settings";
|
||||
"permissions.refresh_status" = "Refresh Status";
|
||||
|
||||
/* Button Labels */
|
||||
"general.select" = "Select";
|
||||
"general.reset" = "Reset";
|
||||
|
||||
/* Picker Labels */
|
||||
"general.language" = "Language";
|
||||
"general.mode" = "Mode";
|
||||
"general.method" = "Method";
|
||||
|
||||
/* Slider and Control Labels */
|
||||
"preferences.general.time_limit_slider" = "Time Limit";
|
||||
"preferences.hud.opacity_slider" = "HUD Opacity";
|
||||
"preferences.hud.size_slider" = "HUD Size";
|
||||
"preferences.advanced.threads_slider" = "Processing Threads";
|
||||
|
||||
/* Preferences Window */
|
||||
"preferences.title" = "Menu-Whisper Preferences";
|
||||
"preferences.title" = "Tell me Preferences";
|
||||
"preferences.general" = "General";
|
||||
"preferences.models" = "Models";
|
||||
"preferences.hotkeys" = "Hotkeys";
|
||||
"preferences.insertion" = "Text Insertion";
|
||||
"preferences.interface" = "Interface";
|
||||
"preferences.advanced" = "Advanced";
|
||||
"preferences.permissions" = "Permissions";
|
||||
|
||||
/* General Preferences */
|
||||
"preferences.general.hotkey" = "Global Hotkey:";
|
||||
|
|
@ -51,6 +76,7 @@
|
|||
"preferences.models.language" = "Language:";
|
||||
"preferences.models.language.auto" = "Auto-detect";
|
||||
"preferences.models.download" = "Download";
|
||||
"preferences.models.downloading" = "Downloading...";
|
||||
"preferences.models.delete" = "Delete";
|
||||
"preferences.models.size" = "Size:";
|
||||
"preferences.models.languages" = "Languages:";
|
||||
|
|
@ -74,4 +100,161 @@
|
|||
/* Success Messages */
|
||||
"success.model.downloaded" = "Model downloaded successfully";
|
||||
"success.settings.exported" = "Settings exported successfully";
|
||||
"success.settings.imported" = "Settings imported successfully";
|
||||
"success.settings.imported" = "Settings imported successfully";
|
||||
|
||||
/* Status Labels */
|
||||
"status.loaded" = "Loaded";
|
||||
"status.loading" = "Loading...";
|
||||
"status.granted" = "Granted";
|
||||
"status.denied" = "Denied";
|
||||
"status.not_set" = "Not Set";
|
||||
"status.restricted" = "Restricted";
|
||||
|
||||
/* Alert Titles */
|
||||
"alert.delete_model" = "Delete Model";
|
||||
"alert.success" = "Success";
|
||||
"alert.error" = "Error";
|
||||
|
||||
/* Permissions */
|
||||
"permissions.microphone.title_short" = "Microphone";
|
||||
"permissions.microphone.description_short" = "Required to capture speech for transcription";
|
||||
"permissions.accessibility.title_short" = "Accessibility";
|
||||
"permissions.accessibility.description_short" = "Required to insert transcribed text into other applications";
|
||||
"permissions.input_monitoring.title_short" = "Input Monitoring";
|
||||
"permissions.input_monitoring.description_short" = "Required to send keyboard events for text insertion";
|
||||
|
||||
/* Preview Dialog */
|
||||
"preview.title" = "Preview Transcription";
|
||||
"preview.description" = "Review and edit the transcribed text before insertion.";
|
||||
"preview.transcribed_text" = "Transcribed Text:";
|
||||
"preview.character_count" = "%d characters";
|
||||
"preview.insert" = "Insert";
|
||||
|
||||
/* HUD Settings */
|
||||
"preferences.hud.title" = "Interface Settings";
|
||||
"preferences.hud.appearance" = "HUD Appearance";
|
||||
"preferences.hud.opacity" = "Opacity:";
|
||||
"preferences.hud.size" = "Size:";
|
||||
"preferences.hud.audio_feedback" = "Audio Feedback";
|
||||
"preferences.hud.sounds_description" = "Enable audio feedback to know when dictation starts and stops.";
|
||||
|
||||
/* Advanced Settings */
|
||||
"preferences.advanced.title" = "Advanced Settings";
|
||||
"preferences.advanced.processing" = "Processing";
|
||||
"preferences.advanced.threads" = "Processing threads:";
|
||||
"preferences.advanced.threads_description" = "More threads can improve performance on multi-core systems but use more CPU.";
|
||||
"preferences.advanced.logging" = "Logging";
|
||||
"preferences.advanced.logging_description" = "Logs are stored locally only and contain timing and error information. No audio or text is ever logged.";
|
||||
"preferences.advanced.enable_logging" = "Enable local logging";
|
||||
"preferences.advanced.reset" = "Reset";
|
||||
"preferences.advanced.reset_button" = "Reset All Settings to Default";
|
||||
"preferences.advanced.reset_title" = "Reset Settings";
|
||||
"preferences.advanced.reset_message" = "This will reset all settings to their default values. This action cannot be undone.";
|
||||
|
||||
/* General Settings */
|
||||
"preferences.general.global_hotkey" = "Global Hotkey";
|
||||
"preferences.general.hotkey_combination" = "Hotkey Combination:";
|
||||
"preferences.general.audio_timing" = "Audio & Timing";
|
||||
"preferences.general.settings_management" = "Settings Management";
|
||||
"preferences.general.export_settings" = "Export Settings...";
|
||||
"preferences.general.import_settings" = "Import Settings...";
|
||||
|
||||
/* Insertion Settings */
|
||||
"preferences.insertion.title" = "Text Insertion";
|
||||
"preferences.insertion.method_description" = "Paste is faster and more reliable, but may not work in all applications. Type method works everywhere but is slower.";
|
||||
"preferences.insertion.preview_description" = "When enabled, transcribed text will be shown in a dialog before insertion, allowing you to review and edit it.";
|
||||
"preferences.insertion.secure_input_title" = "Secure Input Handling";
|
||||
"preferences.insertion.secure_input_description" = "Text insertion is automatically disabled in secure contexts (password fields, etc.). Text is copied to clipboard instead.";
|
||||
|
||||
/* Languages */
|
||||
"language.auto_detect" = "Auto-detect";
|
||||
"language.english" = "English";
|
||||
"language.spanish" = "Spanish";
|
||||
"language.french" = "French";
|
||||
"language.german" = "German";
|
||||
"language.italian" = "Italian";
|
||||
"language.portuguese" = "Portuguese";
|
||||
"language.russian" = "Russian";
|
||||
"language.chinese" = "Chinese";
|
||||
"language.japanese" = "Japanese";
|
||||
"language.korean" = "Korean";
|
||||
|
||||
/* Hotkey Recorder */
|
||||
"hotkey.press_keys" = "Press keys...";
|
||||
"hotkey.reset_default" = "Reset to Default";
|
||||
"hotkey.record_description" = "Click to record a new hotkey combination";
|
||||
|
||||
/* Onboarding */
|
||||
"onboarding.title" = "Welcome to Tell me";
|
||||
"onboarding.subtitle" = "Offline speech-to-text for macOS";
|
||||
"onboarding.what_is" = "What is Tell me?";
|
||||
"onboarding.feature.offline" = "Offline Speech Recognition";
|
||||
"onboarding.feature.offline_desc" = "Convert your speech to text without internet connection";
|
||||
"onboarding.feature.hotkey" = "Global Hotkey";
|
||||
"onboarding.feature.hotkey_desc" = "Use ⌘⇧V from anywhere to start dictation";
|
||||
"onboarding.feature.privacy" = "Privacy First";
|
||||
"onboarding.feature.privacy_desc" = "Your audio never leaves your device";
|
||||
|
||||
"onboarding.permissions.title" = "Permissions Required";
|
||||
"onboarding.permissions.description" = "Tell me needs the following permissions to work properly:";
|
||||
|
||||
"onboarding.models.title" = "Download a Speech Model";
|
||||
"onboarding.models.description" = "Tell me requires a speech recognition model to work. We recommend starting with the tiny model for quick setup.";
|
||||
"onboarding.models.recommended" = "Recommended: Whisper Tiny";
|
||||
"onboarding.models.tiny_description" = "39 MB • Fast • Good for quick setup";
|
||||
"onboarding.models.downloaded" = "Downloaded";
|
||||
"onboarding.models.downloading" = "Downloading...";
|
||||
"onboarding.models.download_failed" = "Download failed: %@";
|
||||
"onboarding.models.info1" = "You can download larger, more accurate models later from Preferences";
|
||||
"onboarding.models.info2" = "Models work completely offline once downloaded";
|
||||
|
||||
"onboarding.completion.ready_title" = "You're All Set!";
|
||||
"onboarding.completion.ready_desc" = "Tell me is ready to use with your downloaded model!";
|
||||
"onboarding.completion.incomplete_title" = "Setup Not Complete";
|
||||
"onboarding.completion.incomplete_desc" = "Tell me won't work properly without a speech recognition model.";
|
||||
"onboarding.completion.no_model_warning" = "No model downloaded - dictation will not work";
|
||||
"onboarding.completion.what_next" = "What to do next:";
|
||||
"onboarding.completion.step1" = "Press ⌘⇧V to start dictation";
|
||||
"onboarding.completion.step1_desc" = "Or change the hotkey in Preferences";
|
||||
"onboarding.completion.step2" = "Speak clearly when the HUD appears";
|
||||
"onboarding.completion.step2_desc" = "Release the hotkey when done speaking";
|
||||
"onboarding.completion.step3" = "Press Esc to cancel anytime";
|
||||
"onboarding.completion.step3_desc" = "Works in all apps and contexts";
|
||||
"onboarding.completion.next_step1" = "• Go back to step 3 and download the tiny model";
|
||||
"onboarding.completion.next_step2" = "• Or download models later from Preferences → Models";
|
||||
"onboarding.completion.next_step3" = "• You'll see an alert when you try to use dictation without a model";
|
||||
"onboarding.completion.footer" = "Access Preferences from the menu bar icon at any time.";
|
||||
|
||||
"onboarding.buttons.skip" = "Skip Setup";
|
||||
"onboarding.buttons.back" = "Back";
|
||||
"onboarding.buttons.next" = "Next";
|
||||
"onboarding.buttons.get_started" = "Get Started";
|
||||
|
||||
/* Missing Preferences Strings */
|
||||
"preferences.models.speech_recognition" = "Speech Recognition Models";
|
||||
"preferences.models.description" = "Download and manage speech recognition models. Larger models provide better accuracy but use more memory and processing time.";
|
||||
"preferences.models.current_model" = "Current Model";
|
||||
"preferences.models.no_model" = "No model selected";
|
||||
"preferences.models.recognition_language" = "Recognition Language:";
|
||||
"preferences.models.available_models" = "Available Models";
|
||||
"preferences.models.active_badge" = "ACTIVE";
|
||||
"preferences.models.delete_confirm" = "Are you sure you want to delete '%@'? This action cannot be undone.";
|
||||
|
||||
/* Permissions Strings */
|
||||
"preferences.permissions.description" = "Tell me requires certain system permissions to function properly. Click the buttons below to grant permissions in System Settings.";
|
||||
"preferences.permissions.need_help" = "Need Help?";
|
||||
"preferences.permissions.after_granting" = "After granting permissions in System Settings:";
|
||||
"preferences.permissions.step1" = "1. Close System Settings";
|
||||
"preferences.permissions.step2" = "2. Click 'Refresh Status' to update permission status";
|
||||
"preferences.permissions.step3" = "3. Some permissions may require restarting Tell me";
|
||||
|
||||
/* General Tab Strings */
|
||||
"preferences.general.title" = "General Settings";
|
||||
"preferences.general.dictation_limit" = "Dictation time limit:";
|
||||
"preferences.general.minutes" = "minutes";
|
||||
|
||||
/* Advanced Tab Strings */
|
||||
"preferences.advanced.threads_description" = "More threads can improve performance on multi-core systems but use more CPU.";
|
||||
"preferences.advanced.logging_description" = "Logs are stored locally only and contain timing and error information. No audio or text is ever logged.";
|
||||
"preferences.advanced.reset_confirmation" = "This will reset all settings to their default values. This action cannot be undone.";
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue