532 lines
30 KiB
JSON
532 lines
30 KiB
JSON
{
|
|
"nav.recording": "Recording",
|
|
"nav.hardware": "Hardware",
|
|
"nav.storage": "Storage",
|
|
"nav.calendar": "Calendar",
|
|
"nav.sync": "Sync",
|
|
"nav.ai": "AI",
|
|
"nav.mcp": "MCP server",
|
|
"nav.privacy": "Privacy",
|
|
"nav.about": "About",
|
|
"nav.language": "Language",
|
|
|
|
"settings.language.title": "Language",
|
|
"settings.language.display": "Display language",
|
|
"settings.language.display_hint": "The language of the app interface. Adding a language is as simple as dropping in one translation file.",
|
|
|
|
"settings.transcription.title": "Transcription Language",
|
|
"settings.transcription.label": "Language",
|
|
"settings.transcription.auto": "Auto-detect",
|
|
"settings.transcription.applies_hint": "Applies to the next recording. The language actually used is shown on each meeting afterward.",
|
|
"settings.transcription.english_only": "English only",
|
|
"settings.transcription.model_english_only": "\"{model}\" is English-only.",
|
|
"settings.transcription.no_model": "No model selected.",
|
|
"settings.transcription.switch_multilingual": "Switch to a multilingual model above to choose a language.",
|
|
|
|
"settings.hardware.title": "Hardware",
|
|
"settings.hardware.active_backend": "Active backend",
|
|
"settings.hardware.model_meta": "· model {size}",
|
|
"settings.hardware.preferred_backend": "Preferred backend",
|
|
"settings.hardware.auto_backend": "Auto (best available)",
|
|
"settings.hardware.not_available": "not available",
|
|
"settings.hardware.fallback_hint": "Falls back automatically (NPU → NVIDIA → AMD → Intel → CPU) if the chosen backend fails to load.",
|
|
"settings.hardware.audio_devices": "Audio Devices",
|
|
"settings.hardware.recording_device": "Recording device",
|
|
"settings.hardware.default_system_audio": "Default system audio",
|
|
"settings.hardware.recording_device_hint": "WhispAssist records whatever this device plays (loopback) — the other side of the call. Pick a specific output if you don't want it following Windows' system default.",
|
|
"settings.hardware.microphone": "Microphone",
|
|
"settings.hardware.mic_off": "Off — don't capture my microphone",
|
|
"settings.hardware.default_mic": "Default microphone",
|
|
"settings.hardware.mic_hint": "Adds your own voice to the live transcript so both sides of the meeting are captured. Stays on your device — nothing is uploaded. Choose “Off” to transcribe only the system audio above.",
|
|
"settings.hardware.npu_detected": "NPU accelerator detected",
|
|
"settings.hardware.ready": "Ready",
|
|
"settings.hardware.downloading": "Downloading…",
|
|
"settings.hardware.package_needed": "Package needed",
|
|
"settings.hardware.npu_hint": "Your NPU needs a one-time acceleration package (Whisper ONNX model{extra}). It downloads in the background; you can also start it now.",
|
|
"settings.hardware.plus_openvino": " + OpenVINO runtime",
|
|
"settings.hardware.download_npu": "Download NPU package",
|
|
"settings.hardware.dml_title": "GPU acceleration (DirectML)",
|
|
"settings.hardware.dml_hint": "Your GPU can be accelerated without Vulkan via DirectML — a one-time package (Whisper ONNX model{extra}).",
|
|
"settings.hardware.plus_directml": " + DirectML runtime",
|
|
"settings.hardware.download_dml": "Download DirectML package",
|
|
"settings.hardware.detection_unavailable": "Hardware detection unavailable.",
|
|
"settings.hardware.low_overhead": "Low overhead preset",
|
|
"settings.hardware.low_overhead_note": "CPU + smallest model, for battery/background use",
|
|
"settings.hardware.models": "Models",
|
|
"settings.hardware.downloading_model": "Downloading {name}",
|
|
"settings.hardware.active_badge": "Active",
|
|
"settings.hardware.installed": "Installed",
|
|
"settings.hardware.use": "Use",
|
|
"settings.hardware.remove": "Remove",
|
|
"settings.hardware.cant_remove_active": "Can't remove the active model",
|
|
"settings.hardware.download": "Download",
|
|
"settings.hardware.diarization": "Speaker diarization",
|
|
"settings.hardware.diarization_hint": "Install both models to have finished recordings separated by speaker (Speaker 1, Speaker 2, …) instead of one running transcript. Runs fully offline, once per meeting after it stops. Without them, every line is attributed to a single speaker.",
|
|
|
|
"settings.storage.title": "Storage",
|
|
"settings.storage.location_label": "Location",
|
|
"settings.storage.location_hint": "Changing the storage location isn't supported yet — this is where meetings, models, and the database currently live.",
|
|
"settings.storage.retention_title": "Retention",
|
|
"settings.storage.retention_hint": "Automatically delete the oldest meetings past a limit. Checked once at startup; empty means no limit. Never touches a meeting that's currently recording.",
|
|
"settings.storage.max_age": "Max age (days)",
|
|
"settings.storage.max_size": "Max size (GB)",
|
|
"settings.storage.no_limit": "no limit",
|
|
"settings.storage.export_import_title": "Export & import",
|
|
"settings.storage.export_hint_1": "Move recordings between computers as portable bundle folders (audio, transcript, notes, summary, and a",
|
|
"settings.storage.export_hint_2": "manifest). Export to any folder — a synced drive, a USB stick, or a sync target's local mount — then import it on the other machine. Imported meetings get a fresh id, so re-importing never overwrites anything.",
|
|
"settings.storage.export_dialog_title": "Export all meetings into…",
|
|
"settings.storage.import_dialog_title": "Import a bundle (or a folder of bundles)…",
|
|
"settings.storage.exporting": "Exporting…",
|
|
"settings.storage.export_all": "Export all meetings…",
|
|
"settings.storage.importing": "Importing…",
|
|
"settings.storage.import_all": "Import meetings…",
|
|
"settings.storage.exported_one": "Exported {n} meeting.",
|
|
"settings.storage.exported_many": "Exported {n} meetings.",
|
|
"settings.storage.imported_one": "Imported {n} meeting.",
|
|
"settings.storage.imported_many": "Imported {n} meetings.",
|
|
|
|
"settings.calendar.title": "Calendar & Outlook .pst",
|
|
"settings.calendar.intro_1": "Import events and attendees from a local Outlook",
|
|
"settings.calendar.intro_2": "backup — read-only, nothing is written back to the file. Nothing leaves this device.",
|
|
"settings.calendar.pst_file": ".pst file",
|
|
"settings.calendar.no_file": "No file selected",
|
|
"settings.calendar.browse": "Browse…",
|
|
"settings.calendar.password": "Password",
|
|
"settings.calendar.password_note": "rarely needed",
|
|
"settings.calendar.optional": "optional",
|
|
"settings.calendar.import_range": "Import range",
|
|
"settings.calendar.range_30": "Last 30 days",
|
|
"settings.calendar.range_90": "Last 90 days",
|
|
"settings.calendar.range_180": "Last 6 months",
|
|
"settings.calendar.range_365": "Last 1 year",
|
|
"settings.calendar.range_all": "All time",
|
|
"settings.calendar.range_hint": "A long-lived mailbox can hold years of recurring/holiday entries — narrowing the range keeps the imported calendar to what's actually relevant. Applies to both this Import button and automatic re-import on launch.",
|
|
"settings.calendar.importing": "Importing…",
|
|
"settings.calendar.import": "Import",
|
|
"settings.calendar.import_progress": "{processed}/{total} events",
|
|
"settings.calendar.auto_reimport": "Re-import this file automatically on launch",
|
|
"settings.calendar.auto_reimport_hint": "Runs once at startup, not on a timer — re-import is safe to repeat (existing events are matched and updated, not duplicated).",
|
|
"settings.calendar.import_failed": "Import failed: {error} — the file itself is untouched; check the path and try again.",
|
|
"settings.calendar.cleanup_title": "Clean up",
|
|
"settings.calendar.cleanup_hint": "Events already attached to a recorded meeting are always kept, no matter which option below is picked.",
|
|
"settings.calendar.cleanup_30": "Older than 30 days",
|
|
"settings.calendar.cleanup_90": "Older than 90 days",
|
|
"settings.calendar.cleanup_180": "Older than 6 months",
|
|
"settings.calendar.cleanup_365": "Older than 1 year",
|
|
"settings.calendar.cleanup_all": "Delete all",
|
|
"settings.calendar.cleaning": "Cleaning up…",
|
|
"settings.calendar.cleanup_btn": "Clean up calendar",
|
|
"settings.calendar.cleanup_result": "Deleted {deleted}{extra}.",
|
|
"settings.calendar.cleanup_kept": ", kept {n} (linked to a meeting)",
|
|
"settings.calendar.cleanup_failed": "Clean up failed: {error}",
|
|
"settings.calendar.imported_events": "Imported events",
|
|
"settings.calendar.no_events": "No events imported yet.",
|
|
"settings.calendar.search_title": "Search title",
|
|
"settings.calendar.search_placeholder": "Meeting name…",
|
|
"settings.calendar.date_label": "Date",
|
|
"settings.calendar.events_count": "{shown} of {total} events",
|
|
"settings.calendar.untitled": "(untitled)",
|
|
|
|
"settings.dialog_title": "Settings",
|
|
"settings.close": "Close",
|
|
"settings.close_title": "Close (Esc)",
|
|
|
|
"settings.sync.stub": "Preview mode — the sync backend isn't implemented yet (Phase 9). Changes are kept in the UI only.",
|
|
"settings.sync.title": "Sync & upload",
|
|
"settings.sync.enable_label": "Enable uploading meeting artifacts to configured targets",
|
|
"settings.sync.enable_hint": "Off by default. Nothing is uploaded unless this is on and a target is enabled. Self-hosted targets keep data on your own server; third-party clouds are clearly labeled.",
|
|
"settings.sync.targets_title": "Targets",
|
|
"settings.sync.no_targets": "No targets yet. Add one below.",
|
|
"settings.sync.third_party": "third-party",
|
|
"settings.sync.your_server": "your server",
|
|
"settings.sync.edit": "Edit",
|
|
"settings.sync.remove": "Remove",
|
|
"settings.sync.edit_target": "Edit target",
|
|
"settings.sync.add_target": "Add a target",
|
|
"settings.sync.webdav_hint": "WebDAV covers Nextcloud, ownCloud, Cloudreve, Seafile, and Synology. (Seafile: enable SeafDAV server-side.)",
|
|
"settings.sync.name": "Name",
|
|
"settings.sync.name_placeholder": "Home Nextcloud",
|
|
"settings.sync.provider": "Provider",
|
|
"settings.sync.server_url": "Server URL",
|
|
"settings.sync.server_url_note_1": "Just your server URL — WhispAssist adds",
|
|
"settings.sync.server_url_note_2": "automatically.",
|
|
"settings.sync.remote_folder": "Remote folder",
|
|
"settings.sync.username": "Username",
|
|
"settings.sync.app_password": "App password",
|
|
"settings.sync.pw_keep": "leave blank to keep current password",
|
|
"settings.sync.pw_store": "stored in OS credential store",
|
|
"settings.sync.upload_legend": "Upload",
|
|
"settings.sync.artifact_transcript": "transcript",
|
|
"settings.sync.artifact_notes": "notes",
|
|
"settings.sync.artifact_summary": "summary",
|
|
"settings.sync.artifact_recording": "recording (.wav, if retained)",
|
|
"settings.sync.allow_plaintext": "Allow plaintext http for a LAN address (not recommended)",
|
|
"settings.sync.encrypt_before": "Encrypt before upload (destination stores only ciphertext)",
|
|
"settings.sync.requires_vault": "— requires an unlocked vault",
|
|
"settings.sync.test_connection": "Test connection",
|
|
"settings.sync.save_changes": "Save changes",
|
|
"settings.sync.add_target_btn": "Add target",
|
|
"settings.sync.cancel": "Cancel",
|
|
"settings.sync.third_party_banner": "{kind} is a third-party cloud — uploading sends your data off your device to {kind}.",
|
|
"settings.sync.link_account": "Link {kind} account…",
|
|
"settings.sync.oauth_hint": "Opens an OAuth sign-in (loopback redirect); the token is stored in your OS credential store.",
|
|
"settings.sync.footnote": "Credentials are never written to settings or the database — only the OS credential store. TLS is required for non-LAN targets.",
|
|
|
|
"settings.ai.title": "AI summary provider",
|
|
"settings.ai.intro_1": "Summaries run on a local LLM by default. Point this at Ollama on this PC or another machine on your LAN (e.g.",
|
|
"settings.ai.intro_2": "— both count as local, so nothing leaves your network. Hosted providers (Anthropic) are optional, off by default, and send the transcript to a third party once you turn one on.",
|
|
"settings.ai.provider": "Provider",
|
|
"settings.ai.off": "Off",
|
|
"settings.ai.provider_ollama": "Ollama (local / LAN)",
|
|
"settings.ai.provider_custom": "Custom (OpenAI-compatible)",
|
|
"settings.ai.provider_anthropic": "Anthropic (Claude) — hosted, leaves this device",
|
|
"settings.ai.endpoint": "Endpoint",
|
|
"settings.ai.model": "Model",
|
|
"settings.ai.api_key": "API key",
|
|
"settings.ai.api_key_set_placeholder": "•••••••••••••••• (already set — leave blank to keep it)",
|
|
"settings.ai.show_api_key": "Show API key",
|
|
"settings.ai.hide_api_key": "Hide API key",
|
|
"settings.ai.anthropic_banner": "Anthropic is a hosted, third-party service — this meeting's transcript leaves your device when you generate a summary.",
|
|
"settings.ai.endpoint_banner": "This endpoint isn't on your machine or LAN — your transcript would leave your network.",
|
|
"settings.ai.saving": "Saving…",
|
|
"settings.ai.save": "Save",
|
|
"settings.ai.test_connection": "Test connection",
|
|
"settings.ai.this_hosted_provider": "this hosted provider",
|
|
"settings.ai.reachable": "Reachable",
|
|
"settings.ai.unreachable": "Unreachable",
|
|
"settings.ai.model_count_one": "· {n} model",
|
|
"settings.ai.model_count_many": "· {n} models",
|
|
"settings.ai.on_lan": "· on your machine / LAN",
|
|
"settings.ai.leaves_network": "· leaves your network",
|
|
"settings.ai.advanced_title": "Advanced Ollama configuration",
|
|
"settings.ai.changed": "{n} changed",
|
|
"settings.ai.reset_all": "Reset all to defaults",
|
|
"settings.ai.system_prompt": "System prompt",
|
|
"settings.ai.system_prompt_placeholder": "e.g. You are a concise meeting summarizer.",
|
|
"settings.ai.system_prompt_hint": "Added before WhispAssist's required output format, so your instructions can't break summary/action-item parsing.",
|
|
"settings.ai.think": "Think",
|
|
"settings.ai.think_help": "Reasoning effort (reasoning models only).",
|
|
"settings.ai.keep_alive": "Keep alive",
|
|
"settings.ai.keep_alive_help": "How long the model stays in RAM. e.g. 5m, 1h, 0 (unload), -1 (forever).",
|
|
"settings.ai.runtime_hardware": "Runtime & hardware",
|
|
"settings.ai.rarely_needed": "— rarely needed",
|
|
"settings.ai.save_advanced": "Save advanced",
|
|
"settings.ai.saved": "Saved",
|
|
"settings.ai.turn_off": "Turn off",
|
|
"settings.ai.default_value": "Default {value}.",
|
|
"settings.ai.reset_default": "Reset to default",
|
|
"settings.ai.reset_field": "Reset {name}",
|
|
|
|
"settings.mcp.title": "MCP server",
|
|
"settings.mcp.banner_1": "This lets your own coding agent (Claude Code, Codex, Copilot, OpenCode, …) pull meeting context on your local machine. Once connected,",
|
|
"settings.mcp.banner_agent": "that agent",
|
|
"settings.mcp.banner_2": "may forward what it reads to its own model provider's cloud — outside WhispAssist's control. WhispAssist itself never sends this data anywhere; the server only listens on this device (",
|
|
"settings.mcp.banner_3": ") and every read is logged below.",
|
|
"settings.mcp.enable": "Enable the MCP server",
|
|
"settings.mcp.enable_hint": "Off by default. Loopback-only, token-gated — nothing is reachable from the network.",
|
|
"settings.mcp.transport": "Transport",
|
|
"settings.mcp.transport_http": "Streamable HTTP",
|
|
"settings.mcp.transport_stdio": "stdio (agent spawns a process)",
|
|
"settings.mcp.port": "Port",
|
|
"settings.mcp.transport_change_hint": "To change transport/port, turn the server off first, then back on.",
|
|
"settings.mcp.scope_title": "Scope",
|
|
"settings.mcp.expose": "Expose",
|
|
"settings.mcp.scope_none": "None — nothing is shared",
|
|
"settings.mcp.scope_selected": "Selected — only feature briefs you've marked shared",
|
|
"settings.mcp.scope_all": "All — meetings, transcripts, action items, and shared briefs",
|
|
"settings.mcp.expose_recordings": "Also allow meetings with a saved recording (off by default — a recorded meeting's transcript is withheld even in \"All\" scope until this is on)",
|
|
"settings.mcp.token_title": "New auth token — shown once, copy it now",
|
|
"settings.mcp.token_hint": "This won't be shown again. It's stored in your OS credential store; if you lose it, turn the server off and back on to mint a new one.",
|
|
"settings.mcp.copied": "Copied",
|
|
"settings.mcp.copy": "Copy",
|
|
"settings.mcp.endpoint": "Endpoint",
|
|
"settings.mcp.endpoint_hint": "Point your agent's MCP client config at this {kind}, with the token above as a bearer credential.",
|
|
"settings.mcp.kind_command": "command",
|
|
"settings.mcp.kind_url": "URL",
|
|
"settings.mcp.access_log": "Access log",
|
|
"settings.mcp.access_log_hint": "Every tool read an agent makes, allowed or denied (FR-MCP-5).",
|
|
"settings.mcp.no_reads": "No agent has read anything yet.",
|
|
"settings.mcp.log_meeting": "meeting {id}",
|
|
"settings.mcp.refresh": "Refresh",
|
|
|
|
"settings.privacy.title": "Privacy",
|
|
"settings.privacy.intro": "What WhispAssist is actually allowed to send off this device right now. With everything off (the default), nothing leaves the device at all.",
|
|
"settings.privacy.llm_endpoint": "LLM endpoint",
|
|
"settings.privacy.off": "off",
|
|
"settings.privacy.local_only": "local-only",
|
|
"settings.privacy.leaves_device": "leaves this device",
|
|
"settings.privacy.sync_label": "Sync",
|
|
"settings.privacy.enabled": "enabled",
|
|
"settings.privacy.mcp_label": "MCP server",
|
|
"settings.privacy.mcp_on": "on · {scope}",
|
|
"settings.privacy.mcp_loopback_note": "Inbound on loopback only — it adds nothing to the egress list above. A connected agent may still forward what it reads to its own model provider; see the MCP server tab.",
|
|
"settings.privacy.egress_title": "Egress allowlist",
|
|
"settings.privacy.no_egress": "No hosts are allowlisted — WA makes no content egress.",
|
|
"settings.privacy.sync_targets_title": "Sync targets",
|
|
"settings.privacy.third_party": "third-party",
|
|
"settings.privacy.your_server": "your server",
|
|
"settings.privacy.tls": "TLS",
|
|
"settings.privacy.no_tls": "no TLS",
|
|
"settings.privacy.refresh": "Refresh",
|
|
"settings.privacy.unavailable": "Privacy self-check unavailable.",
|
|
"settings.privacy.vault_title": "Encryption vault",
|
|
"settings.privacy.vault_intro": "Encrypt notes, transcripts, and summaries at rest with a password. (Audio files are not encrypted yet.)",
|
|
"settings.privacy.vault_password": "Vault password",
|
|
"settings.privacy.enable_vault": "Enable vault",
|
|
"settings.privacy.vault_pw_hint": "Use at least 8 characters. If you forget it, encrypted content can't be recovered.",
|
|
"settings.privacy.vault_locked_1": "Vault is ",
|
|
"settings.privacy.locked_word": "locked",
|
|
"settings.privacy.vault_locked_2": ". Unlock to read encrypted meetings.",
|
|
"settings.privacy.password": "Password",
|
|
"settings.privacy.unlock": "Unlock",
|
|
"settings.privacy.vault_unlocked_1": "Vault is ",
|
|
"settings.privacy.unlocked_word": "unlocked",
|
|
"settings.privacy.vault_unlocked_2": ". New notes, transcripts, and summaries are encrypted at rest.",
|
|
"settings.privacy.lock_now": "Lock now",
|
|
"settings.privacy.change_password": "Change password",
|
|
"settings.privacy.current_password": "Current password",
|
|
"settings.privacy.new_password": "New password",
|
|
|
|
"settings.about.title": "About",
|
|
"settings.about.tagline": "A fully local, open-source, Windows-native meeting assistant.",
|
|
"settings.about.build_commit": "Build commit",
|
|
|
|
"consent.heading": "Before you record",
|
|
"consent.body": "Recording conversations without the consent of participants may be illegal in your region. Check your local recording laws. This is a caution, not legal advice.",
|
|
"consent.accept": "I understand — enable recording",
|
|
"consent.cancel": "Cancel",
|
|
|
|
"hosted.heading": "Before using {provider}",
|
|
"hosted.body_1": "Generating with",
|
|
"hosted.body_2": "sends this meeting's transcript to their servers — it leaves this device and is subject to their privacy policy. WhispAssist has no control over data handling once it leaves your device. This is off by default; you're choosing it now.",
|
|
"hosted.accept": "I understand — continue",
|
|
"hosted.cancel": "Cancel",
|
|
|
|
"theme.group": "Theme",
|
|
"theme.system": "Match system",
|
|
"theme.light": "Light",
|
|
"theme.dark": "Dark",
|
|
|
|
"import.dialog_label": "Add a meeting from a file or URL",
|
|
"import.title": "Add a meeting",
|
|
"import.close": "Close",
|
|
"import.close_title": "Close (Esc)",
|
|
"import.body": "Import an existing recording — a local audio/video file, or a link (YouTube, a streaming page, or a direct media URL). It's transcribed and diarized just like a live recording.",
|
|
"import.file_or_url": "File or URL",
|
|
"import.source_placeholder": "Paste a URL, or browse for a file…",
|
|
"import.choose_file": "Choose a local file",
|
|
"import.browse": "Browse…",
|
|
"import.title_label": "Title",
|
|
"import.optional": "optional",
|
|
"import.title_placeholder": "Defaults to the file name",
|
|
"import.filter_av": "Audio / video",
|
|
"import.requires_1": "Requires",
|
|
"import.requires_2": "installed and on your PATH (plus",
|
|
"import.requires_3": "for URLs). WhispAssist doesn't bundle them.",
|
|
"import.importing": "Importing… this can take a while",
|
|
"import.import": "Import",
|
|
"import.cancel": "Cancel",
|
|
|
|
"tagchip.filter": "Filter meetings tagged \"{tag}\"",
|
|
"tagchip.remove": "Remove tag {tag}",
|
|
|
|
"levelmeter.system_mic": "System and microphone input level",
|
|
"levelmeter.system": "System input level",
|
|
|
|
"app.tagline": "local · private",
|
|
"app.note_template": "Note template",
|
|
"app.no_template": "No template",
|
|
"app.add_meeting": "Add meeting",
|
|
"app.add_meeting_title": "Add a meeting from a file or URL",
|
|
"app.record": "Record",
|
|
"app.record_title": "Start recording (Ctrl+Shift+R)",
|
|
"app.stop": "Stop",
|
|
"app.stop_title": "Stop recording (Ctrl+Shift+R)",
|
|
"app.cancel": "Cancel",
|
|
"app.cancel_title": "Discard this recording and delete it",
|
|
"app.recording": "Recording…",
|
|
"app.backend_title": "Active transcription backend",
|
|
"app.retention_title": "Save audio as .wav for this meeting",
|
|
"app.saving": "saving",
|
|
"app.not_saved": "not saved",
|
|
"app.reconnecting": "reconnecting audio device…",
|
|
"app.settings": "Settings",
|
|
"app.settings_title": "Settings (Ctrl+,)",
|
|
"app.discard_confirm": "Discard this recording? Its audio and transcript will be deleted.",
|
|
"app.announce_started": "Recording started",
|
|
"app.announce_paused": "Recording paused",
|
|
"app.announce_stopped": "Recording stopped",
|
|
"app.consent_dialog": "Recording consent",
|
|
"app.vault_dialog": "Unlock encryption vault",
|
|
"app.vault_title": "Unlock encryption vault",
|
|
"app.vault_desc": "Your meetings are encrypted at rest. Enter your password to read them.",
|
|
"app.vault_password": "Vault password",
|
|
"app.vault_incorrect": "Incorrect password",
|
|
"app.unlock": "Unlock",
|
|
"app.continue_locked": "Continue locked",
|
|
"app.show_meetings": "Show meetings list",
|
|
"app.hide_meetings": "Hide meetings list",
|
|
"app.show_summary": "Show summary panel",
|
|
"app.hide_summary": "Hide summary panel",
|
|
"app.resize_meetings": "Resize meetings list",
|
|
"app.resize_summary": "Resize summary panel",
|
|
|
|
"meetings.search_placeholder": "Search meetings…",
|
|
"meetings.search_aria": "Search meetings",
|
|
"meetings.filter_tag_aria": "Filter by tag",
|
|
"meetings.all_tags": "All tags",
|
|
"meetings.from_date_aria": "From date",
|
|
"meetings.to_date_aria": "To date",
|
|
"meetings.bulk_format_aria": "Bulk export format",
|
|
"meetings.bulk_export": "Bulk export",
|
|
"meetings.bulk_export_title": "Export every meeting matching the tag/date filters above",
|
|
"meetings.exporting": "Exporting…",
|
|
"meetings.exported_one": "Exported {n} meeting.",
|
|
"meetings.exported_many": "Exported {n} meetings.",
|
|
"meetings.searching": "Searching…",
|
|
"meetings.loading": "Loading meetings…",
|
|
"meetings.no_matches": "No matches.",
|
|
"meetings.empty": "No meetings yet — click Record above to start.",
|
|
"meetings.status.recording": "recording",
|
|
"meetings.status.transcribing": "transcribing",
|
|
"meetings.status.recovering": "recovering",
|
|
"meetings.status.error": "error",
|
|
"meetings.resume": "Resume transcription",
|
|
"meetings.delete_aria": "Delete meeting",
|
|
"meetings.delete_confirm": "Delete this meeting? This removes its recording, transcript, and notes.",
|
|
|
|
"transcript.heading": "Transcript",
|
|
"transcript.title_aria": "Meeting title",
|
|
"transcript.lang_title": "Transcription language",
|
|
"transcript.lang_auto": "auto-detecting…",
|
|
"transcript.show": "Show transcript",
|
|
"transcript.hide": "Hide transcript",
|
|
"transcript.empty": "No transcript for this meeting.",
|
|
"transcript.will_appear": "Transcript will appear here as you record.",
|
|
"transcript.play_from_here": "Play from here",
|
|
"transcript.resize": "Resize transcript and notes",
|
|
"transcript.reprocess_placeholder": "Re-transcribe with…",
|
|
"transcript.reprocess_lang_aria": "Reprocess language",
|
|
"transcript.reprocess_keep_lang": "Keep current language",
|
|
"transcript.reprocess_go": "Go",
|
|
"transcript.retranscribing": "Re-transcribing…",
|
|
"transcript.has_note": "Has a note",
|
|
"transcript.note_placeholder": "Add a note for this moment…",
|
|
"transcript.note_aria": "Note for this transcript line",
|
|
"transcript.filter_md": "Markdown",
|
|
"transcript.filter_pdf": "PDF",
|
|
"transcript.filter_docx": "Word document",
|
|
"transcript.filter_obsidian": "Obsidian note",
|
|
|
|
"notes.heading": "Notes",
|
|
"notes.show": "Show notes",
|
|
"notes.hide": "Hide notes",
|
|
"notes.placeholder": "Notes…",
|
|
"notes.live_placeholder": "Type notes while you talk…",
|
|
"notes.toolbar_aria": "Notes formatting",
|
|
"notes.bold": "Bold",
|
|
"notes.italic": "Italic",
|
|
"notes.h1": "Heading 1",
|
|
"notes.h2": "Heading 2",
|
|
"notes.bullet": "Bullet list",
|
|
"notes.checkbox_title": "Checkbox",
|
|
"notes.checkbox_aria": "Checkbox list item",
|
|
"notes.edit_raw": "Edit the raw markdown",
|
|
"notes.render": "Render the markdown",
|
|
"notes.editor": "Editor",
|
|
"notes.preview": "Preview",
|
|
"notes.export_md_title": "Export notes as .md",
|
|
"notes.export_pdf_title": "Export notes as .pdf",
|
|
"notes.export_docx_title": "Export notes as .docx",
|
|
"notes.export_bundle_title": "Export audio + transcript + notes to a folder",
|
|
"notes.export_obsidian_title": "Export one Obsidian note (notes + summary + transcript, no audio)",
|
|
|
|
"summary.recording_heading": "Recording",
|
|
"summary.loading_recording": "Loading recording…",
|
|
"summary.sync_heading": "Sync",
|
|
"summary.uploading": "Uploading…",
|
|
"summary.upload_now": "Upload now",
|
|
"summary.no_uploads": "No uploads yet for this meeting.",
|
|
"summary.retry": "retry",
|
|
"summary.tags_heading": "Tags",
|
|
"summary.tags_select": "Select a meeting to tag it.",
|
|
"summary.tag_add_placeholder": "Add tag…",
|
|
"summary.tag_first_placeholder": "project, client, topic…",
|
|
"summary.generating": "Generating…",
|
|
"summary.generate_tags": "Generate tags",
|
|
"summary.saving": "Saving…",
|
|
"summary.save_tags": "Save tags",
|
|
"summary.summary_heading": "Summary",
|
|
"summary.ai_provider": "AI provider",
|
|
"summary.provider_off": "Off",
|
|
"summary.provider_custom": "Custom",
|
|
"summary.local": "local",
|
|
"summary.leaves_device": "leaves this device",
|
|
"summary.this_hosted_provider": "this hosted provider",
|
|
"summary.select_generate": "Select a meeting to generate a summary.",
|
|
"summary.decisions_heading": "Decisions",
|
|
"summary.regenerate": "Regenerate",
|
|
"summary.generated_hint": "Generated locally after the meeting (requires a local LLM provider).",
|
|
"summary.no_provider": "No AI provider configured — enable one in Settings.",
|
|
"summary.generate_summary": "Generate summary",
|
|
"summary.briefs_heading": "Feature briefs",
|
|
"summary.briefs_select": "Select a meeting to create or view feature briefs.",
|
|
"summary.briefs_desc": "Distills this meeting into an agent-ready spec (requires a local LLM provider) — hand it to a coding agent, or serve it over the MCP server once that's on.",
|
|
"summary.brief_repo_placeholder": "Target repo (optional), e.g. acme/reporting-web",
|
|
"summary.distilling": "Distilling…",
|
|
"summary.create_brief": "Create feature brief",
|
|
"summary.brief_mcp_title": "Available when the MCP server is on",
|
|
"summary.copied": "Copied",
|
|
"summary.copy_md": "Copy as Markdown",
|
|
"summary.copy_json": "Copy as JSON",
|
|
"summary.brief_problem": "Problem",
|
|
"summary.brief_outcome": "Desired outcome",
|
|
"summary.brief_criteria": "Acceptance criteria",
|
|
"summary.brief_none": "None captured.",
|
|
"summary.brief_context": "Context",
|
|
"summary.action_items_heading": "Action items",
|
|
"summary.ai_select": "Select a meeting to see its action items.",
|
|
"summary.ai_empty": "None yet — add one below, or generate a summary to extract them automatically.",
|
|
"summary.confirmed": "Confirmed",
|
|
"summary.ai_text_placeholder": "Action item…",
|
|
"summary.ai_text_aria": "Action item text",
|
|
"summary.owner": "Owner",
|
|
"summary.due_date": "Due date",
|
|
"summary.reminder_title": "Schedule a local reminder for this due date",
|
|
"summary.ai_delete_title": "Delete this action item",
|
|
"summary.ai_delete_aria": "Delete action item",
|
|
"summary.add_action_item": "Add action item",
|
|
"summary.save_action_items": "Save action items",
|
|
"summary.calendar_heading": "Calendar event",
|
|
"summary.cal_select": "Select a meeting to link it to a calendar event.",
|
|
"summary.event_search_placeholder": "Search event title…",
|
|
"summary.linked_event": "Linked event",
|
|
"summary.change_event": "Change event…",
|
|
"summary.link_event": "Link an event…",
|
|
"summary.untitled_event": "(untitled)",
|
|
"summary.no_events_1": "No events imported yet — import a",
|
|
"summary.no_events_2": "from Settings → Calendar.",
|
|
"summary.no_events_match": "No events match this search/date — try clearing one.",
|
|
"summary.organizer_label": "Organizer: {name}",
|
|
"summary.participants_heading": "Participants",
|
|
"summary.participants_hint": "Populated from the linked calendar event.",
|
|
"summary.speakers_heading": "Speakers",
|
|
"summary.speakers_select": "Select a meeting to name its speakers.",
|
|
"summary.no_speakers": "No speakers detected yet.",
|
|
"summary.speaker_name_placeholder": "Speaker name",
|
|
"summary.save": "Save",
|
|
"summary.cancel": "Cancel",
|
|
"summary.name_speaker": "Name this speaker…",
|
|
"summary.add_new_name": "+ Add new name…",
|
|
|
|
"settings.recording.title": "Recording",
|
|
"settings.recording.record_default": "Record meetings by default",
|
|
"settings.recording.save_audio_as": "save audio as",
|
|
"settings.recording.default_hint": "Off by default. When off, audio is used only to produce the transcript and is deleted when the meeting is finalized. You can also toggle recording per meeting.",
|
|
"settings.recording.consent_label": "Consent: {status}.",
|
|
"settings.recording.consent_ack": "acknowledged",
|
|
"settings.recording.consent_not": "not yet acknowledged",
|
|
"settings.recording.auto_label": "Auto-start recording when a calendar event begins",
|
|
"settings.recording.auto_hint": "Only while WhispAssist is open. When an imported calendar event's start time arrives, a recording begins automatically (using your default retention setting above). Nothing runs in the background — the timer is armed only while the app is running. Import events under Settings → Calendar."
|
|
}
|