const messages = {
  common: {
    cancel: "Cancel",
    create: "Create",
    save: "Save",
    saving: "Saving…",
    saveChanges: "Save changes",
    connected: "Connected",
    notConnected: "Not connected",
    disconnect: "Disconnect",
    disconnecting: "Disconnecting...",
  },
  root: {
    commandActions: "Actions",
    commandSearch: "Search",
    commandAppearance: "Appearance",
    toggleTheme: "Toggle theme",
    extensionSignedInTitle: "Signed in",
    extensionSignedInDescription:
      "Open the Clips extension again to start recording.",
    gotIt: "Got it",
  },
  builderCredits: {
    pausedTitle: "Builder.io credits paused",
    transcriptionDescription:
      "Upgrade Builder.io to resume backup transcription. Existing native transcripts stay visible.",
    cleanupDescription:
      "Upgrade Builder.io to resume transcript cleanup, summaries, and AI titles. The native transcript was kept.",
    settingsDescription:
      "Upgrade Builder.io to resume backup transcription, transcript cleanup, summaries, and AI titles. Existing native transcripts stay visible.",
    titleDescription:
      "AI title generation is paused. Your transcript still works.",
    upgrade: "Upgrade Builder.io",
    retryAfterUpgrade: "Retry after upgrade",
    openAiSetup: "AI setup",
    featureBackupTranscription: "Backup transcription",
    featureCleanup: "Transcript cleanup",
    featureSummaries: "Summaries",
    featureTitles: "AI titles",
  },
  recorder: {
    cameraBlurTitle: "Blur background",
    cameraBlurDescription: "Keep yourself sharp, blur what's behind you",
    cameraBlurToggle: "Blur the camera background",
    cameraBlurIntensityLabel: "Intensity",
    cameraBlurIntensityAria: "Background blur intensity",
  },
  navigation: {
    brand: "Clips",
    library: "Library",
    spaces: "Spaces",
    meetings: "Meetings",
    dictate: "Dictate",
    archive: "Archive",
    trash: "Trash",
    settings: "Settings",
    notifications: "Notifications",
    insights: "Insights",
    space: "Space",
    folder: "Folder",
    extensions: "Extensions",
    newRecording: "New recording",
    folders: "Folders",
    newFolder: "New folder",
    noSpaces: "No spaces yet",
    desktopCta: "Get desktop app",
    desktopTitle: "Get the Clips desktop app.",
    desktopBody: "Record from the menu bar, global shortcut, auto-updates.",
    expandSidebar: "Expand sidebar",
    collapseSidebar: "Collapse sidebar",
    agentEmptyState: "How can I help with your recordings?",
    agentSuggestionSummary: "Summarize my last recording",
    agentSuggestionPricing: "Find where I mentioned pricing",
    agentSuggestionFiller: "Remove filler words from this clip",
    createFolderError: "Create failed",
    folderCreated: "Folder created",
    folderNamePlaceholder: "Folder name",
  },
  empty: {
    library: {
      title: "Your library is empty",
      body: "Capture your first screen recording and it'll land here, ready to share.",
      cta: "Record your first Clip",
    },
    folder: {
      title: "This folder is empty",
      body: "Drag recordings in, or hit record to start something new in this folder.",
      cta: "Record here",
    },
    space: {
      title: "No recordings in this space yet",
      body: "Share a recording with the space or record something new — your team will see it here.",
      cta: "Record for this space",
    },
    archive: {
      title: "Nothing archived",
      body: "Archived recordings are hidden from the library but kept safe. You can always restore them later.",
    },
    trash: {
      title: "Trash is empty",
      body: "Deleted recordings appear here for 30 days before being permanently removed.",
    },
    search: {
      title: "No matches",
      body: "Try a different search term or check your filters.",
    },
  },
  trashRoute: {
    title: "Trash",
    selected: "{{count}} selected",
    deselectAll: "Deselect all",
    selectAll: "Select all",
    restore: "Restore",
    deleteForever: "Delete forever",
    deleteForeverTitle: "Delete forever?",
    bulkDeleteDescription:
      "Recordings to permanently remove: {{count}}. This cannot be undone.",
    singleDeleteDescription:
      "This recording will be permanently removed. This cannot be undone.",
    restored: "Restored",
    restoreFailed: "Restore failed",
    permanentlyDeleted: "Permanently deleted",
    deleteFailed: "Delete failed",
  },
  recordingRoute: {
    pageTitle: "Clip recording · Clips",
  },
  meetingDetailRoute: {
    pageTitle: "Meeting · Clips",
  },
  recordingPage: {
    untitledClip: "Untitled Clip",
    recordingNotFound: "Recording not found",
    noAccess: "You may not have access to this clip.",
    backToLibrary: "Back to library",
    storageStillDisconnected: "Storage still isn't connected",
    finishBuilderOrS3:
      "Finish the Builder.io popup or configure S3-compatible storage, then try again.",
    loomImportResumed: "Loom import resumed",
    clipUploadResumed: "Clip upload resumed",
    couldNotRetryLoom: "Couldn't retry Loom import",
    couldNotResumeUpload: "Couldn't resume upload",
    tryAgainMoment: "Try again in a moment.",
    aiRequestFailed: "AI request failed",
    titleUpdated: "Title updated",
    transcriptNotReady: "Transcript is not ready yet",
    tryAfterTranscription: "Try again after transcription finishes.",
    titleGenerationQueued: "Title generation queued",
    descriptionQueued: "Description request queued",
    chapterQueued: "Chapter request queued",
    fillerQueued: "Filler-word removal queued",
    silenceQueued: "Silence removal queued",
    workflowQueued: "Workflow request queued",
    pageTitle: "Clip recording · Clips",
    loomMissingUrl: "This Loom recording is missing its source URL.",
    finalizeFailed: "Finalize failed ({{status}})",
    uploadTooLarge:
      "Clips tried to compress this desktop recording, but it is still too large to upload. The original is saved locally and can be retried from the Clips menu.",
    desktopSavedUploadFailed:
      "The desktop recorder finished and saved a local copy, but Clips could not upload it. You can retry from the Clips menu without recording again.",
    retryLibrary: "You can retry from the library.",
    processingStuck:
      "Processing has not completed after 30 seconds (status={{status}}). The clip may not have finished uploading — check the server logs for chunk/finalize messages.",
    uploadingAssembling:
      "Uploading and assembling your video — this usually takes just a few seconds.",
    connectStorageImportLoom: "Connect storage to import this Loom.",
    connectStorageFinishClip: "Connect storage to finish saving this clip.",
    uploadPausedSaved: "Upload paused; clip saved locally.",
    savingWentWrong: "Something went wrong while saving this clip.",
    finishingClip: "Finishing up your clip…",
    loomSourcePreserved:
      "The Loom source link is preserved. Connect storage with Builder.io (free tier storage + AI) or S3-compatible storage, and Clips will retry saving its own copy.",
    clipDataPreserved:
      "Your clip data is still preserved. Connect storage with Builder.io (free tier storage + AI) or S3-compatible storage, and Clips will upload it automatically.",
    details: "Details",
    importingLoom: "Importing Loom...",
    uploadingSavedClip: "Uploading saved clip…",
    storageConnectedSavingLoom:
      "Storage is connected. Clips is saving its own copy now.",
    storageConnectedFinishing:
      "Storage is connected. Clips is finishing the upload now.",
    connectStorageImportLoomTitle: "Connect storage to import Loom",
    connectStorageFinishSaving: "Connect storage to finish saving",
    chooseStorageRetryLoom:
      "Choose where Clips should store videos. After it connects, Clips will retry this Loom import.",
    chooseStorageUpload:
      "Choose where Clips should store videos. After it connects, this saved clip will upload automatically.",
    storageConnectedImporting: "Storage connected. Importing Loom...",
    storageConnectedUploading: "Storage connected. Uploading this clip...",
    retryImport: "Retry import",
    retryUpload: "Retry upload",
    checkAgain: "Check again",
    back: "Back",
    done: "Done",
    edit: "Edit",
    aiTools: "AI tools",
    enhanceRecording: "Enhance this recording",
    regenerateTitle: "Regenerate title",
    regenerateDescription: "Regenerate description",
    autoChapters: "Auto chapters",
    removeFillerWords: "Remove filler words",
    removeSilences: "Remove silences (>1.2s)",
    generatePrSummary: "Generate PR summary",
    generateSop: "Generate SOP",
    generateSopTooltip:
      "SOP means Standard Operating Procedure: a reusable step-by-step runbook generated from this clip.",
    generateTicket: "Generate ticket",
    generateEmail: "Generate email",
    share: "Share",
    fromMeeting: "From meeting:",
    untitled: "Untitled",
    agent: "Agent",
    activity: "Activity",
    transcript: "Transcript",
    insights: "Insights",
    settings: "Settings",
    askAboutClip: "Ask about this clip…",
    summarizeClip: "Summarize this clip",
    generateChapters: "Generate chapters from the transcript",
    findActionItems: "Find action items and follow-ups",
    draftRecap: "Draft a shareable recap",
    findKeyMoments: "Find the key moments",
    listFollowUpActions: "List follow-up actions",
    draftQuestions: "Draft questions for the author",
    retryFailed: "Retry failed: {{message}}",
    networkError: "network error",
    ownerInsights: "Owner insights",
    ownerInsightsDescription:
      "Views, completion, and viewer details are visible to editors of this clip.",
  },
  sharePage: {
    agentReadableContext: "Agent-readable clip context",
    agentInstructions:
      "Fetch agentContextUrl for the transcript and JPEG frame URLs. Fetch the frame URLs to SEE the screen, not just read the transcript.",
    untitledClip: "Untitled Clip",
    incorrectPassword: "Incorrect password",
    passwordProtected: "This clip is password-protected",
    linkExpired: "Link expired",
    linkExpiredMessage: "The creator set an expiry on this share link.",
    clipUnavailable: "Clip unavailable",
    clipUnavailableMessage:
      "This recording isn't public, or the link is invalid. If it's your clip, sign in to check access.",
    signIn: "Sign in",
    somethingWentWrong: "Something went wrong",
    pleaseTryAgain: "Please try again.",
    connectStorageFinish: "Connect storage to finish this clip.",
    needsAttention: "This clip needs attention to finish.",
    savingWentWrong: "Something went wrong while saving this clip.",
    finishingClip: "Finishing up this clip...",
    loomPreservedManage:
      "The Loom source link is preserved. Connect storage with Builder.io (free tier storage + AI) or S3-compatible storage, then retry the import.",
    videoPreservedManage:
      "The video is preserved. Connect storage with Builder.io (free tier storage + AI) or S3-compatible storage, and Clips will finish uploading it.",
    creatorNeedsStorage:
      "The creator needs to connect storage before this clip can finish: Builder.io (free tier storage + AI) or S3-compatible storage.",
    signInStorage:
      "If this is your clip, sign in here to connect storage with Builder.io (free tier storage + AI) or S3-compatible storage and finish the upload.",
    uploadNotCompleteSession:
      "The upload has not completed yet. Open the dashboard for this clip or ask the creator to check storage.",
    uploadNotCompleteSignIn:
      "The upload has not completed yet. If this is your clip, sign in to open the owner controls and check storage.",
    creatorMayRetry: "The creator may need to retry.",
    uploadingAssembling:
      "Uploading and assembling the video. This page will update automatically.",
    details: "Details",
    connectStorageFinishSaving: "Connect storage to finish saving",
    chooseStorageCheck:
      "Choose where Clips should store videos. After it connects, this page will check again.",
    storageConnectedChecking: "Storage connected. Checking this clip...",
    signInToFinish: "Sign in to finish",
    signInIfYours: "Sign in if this is yours",
    openDashboard: "Open dashboard",
    checkAgain: "Check again",
    backToHome: "Back to home",
    generatingTitle: "Generating title",
    tryClips: "Try Clips",
    clipOptions: "Clip options",
    downloading: "Downloading...",
    downloadMp4: "Download MP4",
    share: "Share",
    agent: "Agent",
    comments: "Comments",
    transcript: "Transcript",
    insights: "Insights",
    downloadForMac: "Download for Mac",
    downloadForWindows: "Download for Windows",
    downloadDesktopApp: "Download desktop app",
    agentNativeClips: "Agent-Native Clips",
    agentNativeClipsIntro: "is a free,",
    openSource: "open-source",
    agentFriendly: "agent-friendly",
    loomAlternative: "Loom alternative",
    signUp: "Sign up",
    ownerInsights: "Owner insights",
    ownerInsightsDescription:
      "Views, completion, and viewer details are visible to editors of this clip.",
  },
  meetingDetail: {
    untitledMeeting: "Untitled meeting",
    unassigned: "Unassigned",
    them: "Them",
    me: "Me",
    regeneratingNotes: "Regenerating notes — your own notes are kept",
    meetingRemoved: "Meeting removed",
    couldNotRemoveMeeting: "Couldn't remove meeting",
    couldNotLoadMeeting: "Couldn't load this meeting.",
    transcriptCopied: "Transcript copied",
    couldNotCopyTranscript: "Couldn't copy transcript",
    allMeetings: "All meetings",
    live: "Live",
    generatingNotesInline: "Generating notes…",
    regenerateNotes: "Regenerate notes",
    share: "Share",
    meetingOptions: "Meeting options",
    removeMeeting: "Remove meeting",
    removeThisMeeting: "Remove this meeting?",
    removeDescription:
      "This removes the meeting from Clips. It will not delete any linked transcript or change your Google Calendar.",
    cancel: "Cancel",
    removing: "Removing...",
    remove: "Remove",
    desktopHint:
      "Record live notes for this meeting from the Clips desktop app — the transcript and AI notes will appear here automatically.",
    getDesktopApp: "Get desktop app",
    generateNotesFailed: "Couldn't generate notes. Try again.",
    attendee_one: "{{count}} attendee",
    attendee_other: "{{count}} attendees",
    joinCall: "Join call",
    myNotes: "My notes",
    aiNotes: "AI notes",
    actionItems: "Action items",
    working: "Working…",
    noActionItems:
      "No action items yet. They appear here after notes are generated from a transcript.",
    transcript: "Transcript",
    segments: "{{count}} segments",
    copyTranscript: "Copy transcript",
    copyFullTranscript: "Copy full transcript",
  },
  transcriptPanel: {
    transcribing: "Transcribing…",
    pendingDescription:
      "Live transcript appears as soon as speech is captured. Cleanup continues in the background.",
    noSpeechDetected: "No speech detected",
    noSpeechDescription:
      "We did not catch any speech in this recording. If that was intentional, you are all set. If not, check your microphone and speech permissions, then retry transcription.",
    retry: "Retry",
    transcriptUnavailable: "Transcript unavailable: {{reason}}",
    transcriptUnavailableTitle: "Transcript unavailable",
    providerNeedsAttention: "Provider needs attention",
    providerNeedsAttentionDescription:
      "The current provider paused this request. Switch to Builder.io or update the key, then retry.",
    enableTranscriptionTitle: "Enable transcription",
    enableTranscriptionDescription:
      "Unlock captions, transcript search, and summaries for this Clip.",
    searchPlaceholder: "Search transcript",
    copyTranscript: "Copy transcript",
    downloadSrt: "Download .srt",
    cleanupRunning: "Cleaning up transcript in the background.",
    noMatches: "No matches.",
    noTranscript: "No transcript yet.",
    noTranscriptCaptured: "No transcript was captured.",
    backupFailed:
      "No speech was captured locally, and backup transcription did not finish. Retry or check microphone and speech permissions.",
    backupNotSetup:
      "No speech was captured locally, and backup transcription is not set up.",
    cleanupKept: "Cleanup could not finish. Native transcript was kept.",
    cleanupBuilderFailed:
      "Cleanup could not finish even though Builder.io is connected. Native transcript was kept.",
    cleanupPaused:
      "Cleanup is paused. Connect AI in Settings: Builder.io (free credits) or your own LLM key.",
    builderNoResponse:
      "Didn't hear back from Builder. Allow popups and try again.",
    saveFailed: "Save failed ({{status}})",
    savedRetrying: "Saved. Retrying transcription…",
    getGroqKey: "Get Groq key",
    groqKeysStart: "Groq keys start with",
    waiting: "Waiting…",
    nativeSpeechPrimary: "Native speech remains the primary transcript source.",
  },
  thumbnailPicker: {
    failedCapture: "Failed to capture frame",
    failedGif: "Failed to generate GIF — try a shorter range",
    nothingToApply: "Nothing to apply yet",
    updated: "Thumbnail updated",
    failedUpdate: "Failed to update thumbnail",
    thumbnail: "Thumbnail",
    upload: "Upload",
    frame: "Frame",
    animatedGif: "Animated GIF",
    uploadImage: "Upload an image",
    uploadedPreview: "Uploaded preview",
    currentThumbnail: "Current thumbnail",
    frameAt: "Frame at {{time}}",
    captureFrame: "Capture frame",
    preview: "Preview",
    capturedFrame: "Captured frame",
    capturePreview: "Capture a frame to preview",
    start: "Start: {{time}}",
    duration: "Duration: {{time}}",
    generateGif: "Generate GIF",
    animatedPreview: "Animated thumbnail preview",
    generateGifPreview: "Generate a GIF to preview",
    cancel: "Cancel",
    saveThumbnail: "Save thumbnail",
  },
  shareDialog: {
    publicDescription:
      "Anyone with the link can view — sign in to comment or react",
    shareRecording: "Share recording",
    sharePlainTitle: "Share {{title}}",
    shareTitle: 'Share "{{title}}"',
    link: "Link",
    invite: "Invite",
    embed: "Embed",
    shareLink: "Share link",
    shareWithAgents: "Share with agents",
    copyAgentPrompt: "Copy agent prompt",
    agentPrompt:
      "Fetch this Clips agent context URL: {{agentContextUrl}}. Use transcript.segments for spoken context, fetch recommendedFrames or the frame API URLs to see the screen, and check browserDiagnostics if present for redacted console logs and fetch/XHR request metadata.",
    agentTokenDescription:
      "This temporary agent URL lets agents read the clip without making it public. It expires after two hours.",
    gifPreview: "GIF preview",
    openPlayer: "Open player",
    downloadMp4: "Download MP4",
    embedsNeedPublic: "Embeds need a public clip",
    embedPublicDescription:
      "This clip is currently {{visibility}}. Embedded iframes load anonymously, so the clip must be public for viewers to watch.",
    makingPublic: "Making public…",
    makePublic: "Make public",
    askOwnerPublic: "Ask the owner to make it public.",
    responsive: "Responsive (16:9)",
    fixedSize: "Fixed size",
    embedIframeTitle: "Clips video",
    width: "Width",
    height: "Height",
    autoplay: "Autoplay",
    startAt: "Start at (seconds)",
    embedCode: "Embed code",
  },
  shareUi: {
    owner: "Owner: {{email}}",
    generalAccess: "General access",
    restrictedLinkDescription:
      "This link will only work for people who already have access.",
    makingPublic: "Making public…",
    makePublicAndCopy: "Make public and copy",
    copy: "Copy",
    addPeopleByEmail: "Add people by email",
    notifyPeople: "Notify people",
    peopleWithAccess: "People with access",
    ownerRole: "Owner",
    remove: "Remove",
    noAccessYet: "No one has access yet.",
    visibility: {
      private: {
        label: "Private",
        description: "Only people with access can view",
      },
      org: {
        label: "Organization",
        description: "Anyone in your organization can view",
      },
      public: {
        label: "Public",
        description: "Anyone with the link can view",
      },
    },
    roles: {
      viewer: "Viewer",
      editor: "Editor",
      admin: "Admin",
    },
  },
  quickAsk: {
    title: "Ask about this meeting",
    toggleHint: "to toggle · Esc to close",
    quickPrompts: "Quick prompts",
    whatDidIMiss: "What did I miss?",
    whatDidIMissPrompt: "What did I miss?",
    summarizeLastFive: "Summarize the last 5 minutes",
    summarizeLastFivePrompt:
      "Summarize the last 5 minutes of this meeting in 3-5 bullets.",
    actionItemsForMe: "Action items for me",
    actionItemsForMePrompt:
      "List the action items from this meeting that are assigned to me. Use checkbox bullets.",
    history: "History",
    emptyDescription:
      "Ask anything. The agent has the full transcript and meeting context.",
    placeholder: "Ask anything…",
    send: "Send",
    sentToChat: "Sent to chat — see the agent sidebar for the reply.",
  },
  brandingEditor: {
    title: "Branding",
    uploadImageFile: "Please upload an image file.",
    logoUploaded: "Logo uploaded",
    uploadFailed: "Upload failed",
    brandingUpdated: "Branding updated",
    saveFailed: "Failed to save",
    organizationName: "Organization name",
    brandColor: "Brand color",
    brandColorPicker: "Brand color picker",
    useColor: "Use {{color}}",
    logo: "Logo",
    logoPreview: "Logo preview",
    dropReplace: "Drop a new image to replace",
    dropHere: "Drop a PNG / JPG / SVG here",
    uploading: "Uploading…",
    chooseFile: "Choose file",
    remove: "Remove",
    preview: "Preview",
    organizationFallback: "Organization",
    saving: "Saving…",
    save: "Save",
  },
  downloadRoute: {
    pageTitle: "Download Clips Desktop",
    description:
      "Record your screen from the menu bar. Auto-updating desktop app for macOS and Windows.",
    macSublabel: "Universal (Apple Silicon + Intel)",
    windowsSublabel: "64-bit MSI installer",
    downloadFor: "Download for {{platform}}",
    alsoFor: "Also available for {{platform}}",
    backToLibrary: "Back to library",
    clipsDesktop: "Clips Desktop",
    heroDescription:
      "A menu-bar recorder for screen, camera, and screen + camera. One-click start, draggable camera bubble, instant-share link when you stop.",
    versionReleased: "Version {{version}} — released {{date}}",
    version: "Version {{version}}",
    manifestError:
      "Could not load release manifest — pick an installer from the releases page.",
    loadingRelease: "Loading latest release…",
    chromeTitle: "Chrome extension for browser logs",
    chromeDescription:
      "Use the extension when you want a recording plus redacted console and fetch/XHR diagnostics from the tab you launch from. The desktop app is still the smoothest everyday recorder.",
    installChrome: "Install Chrome extension",
    chromePending: "Chrome Web Store URL pending",
  },
  inviteRoute: {
    missingToken: "Missing invite token.",
    notFound: "Invite not found or expired.",
    loadFailed: "Failed to load invite",
    joined: "Joined {{team}}",
    theTeam: "the team",
    acceptFailed: "Failed to accept invite",
    declined: "Invite declined",
    declineFailed: "Failed to decline",
    signInRequired: "Sign in required",
    signInDescription: "You need to sign in before you can accept an invite.",
    signIn: "Sign in",
    invited: "You've been invited",
    loading: "Loading…",
    role: "Role:",
    invitedToJoin: "{{inviter}} invited you to join {{team}} on Clips.",
    emailMismatch:
      "Heads up: this invite was sent to {{inviteEmail}}. You are signed in as {{sessionEmail}}. Accepting will still work but your account email will be the one joining.",
    decline: "Decline",
    joining: "Joining…",
    acceptInvite: "Accept invite",
    declineInvite: "Decline this invite?",
    declineDescription:
      "The invite will be removed. The admin can always send you a new one.",
    cancel: "Cancel",
    pageTitle: "Join team · Clips",
  },
  settings: {
    openAgentSettings: "Open agent settings",
    agentDescription:
      "Open the agent sidebar settings for model, API keys, automations, voice, and other agent controls.",
    agentTitle: "Agent settings",
    title: "Settings",
    pageTitle: "Settings · Clips",
    intro: "Preferences and connected services for this Clips workspace.",
    languageTitle: "Language",
    languageDescription:
      "Choose the interface language for this account. Clips remembers it across devices.",
    languageLabel: "Interface language",
    whatsNew: "What's new",
    changelogEmpty: "No updates yet.",
    viewAllUpdates: "View all updates",
    expand: "Expand",
    collapse: "Collapse",
    changelogMarkdown: `# Changelog

All notable user-facing changes to Clips are documented here. Open it any time from the command menu (Cmd+K -> "What's new") or from Settings.

## 2026-06-23

### Added

- See what's new right inside Clips. A changelog now lives in the command menu (Cmd+K) and in Settings.`,
    profile: "Profile",
    email: "Email",
    displayName: "Display name",
    displayNamePlaceholder: "Your name",
    playback: "Playback",
    defaultPlaybackSpeed: "Default playback speed",
    playbackDescription: "Applied automatically when you open a recording.",
    transcript: "Transcript",
    transcriptCleanup: "Background cleanup",
    transcriptCleanupDescription:
      "Show the native transcript immediately, then clean it up in the background when available.",
    notifications: "Notifications",
    emailNotifications: "Email notifications",
    emailNotificationsDescription:
      "Get an email when someone comments, reacts, or shares a recording with you.",
    saved: "Settings saved",
    saveFailed: "Failed to save",
    builderConnectedToast: "Builder.io connected",
    videoStorage: "Video storage",
    videoStorageDescription:
      "Builder.io is the primary storage path for Clips uploads. S3 is available when you need to bring your own bucket.",
    checkingBuilder: "Checking Builder.io",
    builderConnected: "Builder.io connected",
    connectBuilder: "Use Builder.io (free)",
    builderConnectedFor: "Using Builder.io for {{orgName}}.",
    builderConnectedGeneric: "New clips use the connected Builder.io provider.",
    builderIncludes:
      "Includes object storage, uploads, and managed transcription for new clips.",
    s3Title: "S3-compatible storage",
    secondary: "Secondary",
    active: "Active",
    s3BuilderConnectedDescription:
      "Use this only if this workspace should upload to your own bucket instead of Builder.io.",
    s3CurrentProvider: "Currently using {{providerName}}.",
    s3OwnBucketDescription:
      "Use your own bucket if you do not want Builder.io storage.",
    configureS3: "Configure S3",
    hideS3: "Hide S3",
    saveStorage: "Save storage",
    storageSaved: "Storage settings saved",
    storageRequired: "Endpoint, bucket, access key, and secret are required.",
    s3EndpointLabel: "Endpoint URL",
    s3BucketLabel: "Bucket",
    s3AccessKeyLabel: "Access key ID",
    s3SecretAccessKeyLabel: "Secret access key",
    s3RegionLabel: "Region",
    s3PublicBaseUrlLabel: "Public base URL",
    apiSetup: "AI setup",
    apiSetupDescription:
      "Connect AI with Builder.io free credits or your own LLM keys.",
    builderEasySetup: "Builder.io free credits",
    builderAiAvailable:
      "Included AI credits and managed transcription are available for Clips.",
    builderAiDescription:
      "Use Builder.io first for included AI credits, object storage, uploads, and managed transcription.",
    providerKeyTitle: "Bring your own provider key",
    providerKeyDescription:
      "Add Anthropic, OpenAI, Gemini, Groq, or OpenRouter keys for provider-billed usage.",
    providerKeysSet: "{{count}} set",
    checkingProviderKeys: "Checking provider keys…",
    keySet: "Set",
    replaceKey: "Replace key…",
    pasteProviderKey: "Paste a provider key first.",
    apiKeySaved: "API key saved",
    apiKeyFailed: "Failed to save key",
    slackTitle: "Agent-Native Clips for Slack",
    slackDescription:
      "Share a public clip, paste the link in Slack, and it plays inline — no extra steps for viewers. Connect each workspace once.",
    checkingSlack: "Checking Slack",
    slackConnected_one: "{{count}} workspace connected",
    slackConnected_other: "{{count}} workspaces connected",
    slackOauthNeeded: "OAuth credentials needed",
    slackPreviewDescription:
      "Public Clips links can render as playable Slack previews.",
    connectSlack: "Connect Slack",
    slackClientMissing:
      "Set SLACK_CLIENT_ID and SLACK_CLIENT_SECRET for this deployment before connecting workspaces.",
    slackSigningMissing:
      "Set SLACK_SIGNING_SECRET so Slack event callbacks can be verified.",
    connectedBy: "Connected by {{email}}",
    disconnectSlackLabel: "Disconnect {{team}}",
    slackConnectedToast: "Slack connected",
    slackCheckedToast: "Slack connection checked",
    slackDisconnectedToast: "Slack disconnected",
    slackConnectFailed: "Failed to connect Slack",
    slackDisconnectFailed: "Failed to disconnect Slack",
    disconnectSlackTitle: "Disconnect Slack?",
    disconnectSlackDescription:
      "Clips will delete the stored bot token for {{team}} and stop sending playable Slack previews.",
    thisWorkspace: "this workspace",
    slackConnected: "Slack Connected",
  },
  insightsHub: {
    title: "Insights",
    period: "Period",
    last7Days: "Last 7 days",
    last14Days: "Last 14 days",
    last30Days: "Last 30 days",
    last90Days: "Last 90 days",
    exportCsv: "Export CSV",
    description:
      "Engagement across your organization over the last {{days}} days.",
    views: "Views",
    reactions: "Reactions",
    comments: "Comments",
    recordings: "Recordings",
    engagementTrend: "Engagement trend",
    topVideos: "Top videos",
    topCreators: "Top creators",
  },
  folderTree: {
    noFolders: "No folders yet",
    rename: "Rename",
    newSubfolder: "New subfolder",
    delete: "Delete",
    renameFolder: "Rename folder",
    renamed: "Folder renamed",
    renameFailed: "Rename failed",
    createInside: 'Create a folder inside "{{name}}".',
    folderName: "Folder name",
    created: "Folder created",
    createFailed: "Create failed",
    deleteFolder: "Delete folder?",
    deleteDescription:
      "Recordings inside will move to the parent scope (library root or the parent folder). Nested subfolders are removed. This cannot be undone.",
    deleted: "Folder deleted",
    deleteFailed: "Delete failed",
  },
  organizationSettings: {
    pageTitle: "Organization settings · Clips",
    title: "Organization · Settings",
    namedTitle: "{{name}} · Settings",
    noOrganization:
      "No organization yet. Create one from the organization switcher to get started.",
    description: "Organization admin: branding, members, invites.",
    adminsOnlyBranding: "Only admins can edit branding.",
    members: "Members",
    pendingInvites: "Pending invites",
    noPendingInvites: "No pending invites.",
    email: "Email",
    role: "Role",
    sent: "Sent",
  },
  recordingInsights: {
    loading: "Loading insights…",
    noData: "No data yet.",
    views: "Views",
    uniqueViewers: "Unique viewers",
    completion: "Completion",
    ctaConversion: "CTA conversion",
    dropOff: "Drop-off",
    viewersCount: "{{count}} viewers",
    watching: "Watching",
    recentViewers: "Recent viewers",
    noViewers: "No viewers yet.",
    anonymous: "Anonymous",
    anon: "Anon",
    moreViewers: "+{{count}} more",
  },
  libraryGrid: {
    spaceRoot: "Space root",
    libraryRoot: "Library root",
    clipsMoved: "{{count}} clips moved",
    moveFailed: "Failed to move clips",
    titleRequired: "Title cannot be empty",
    clipRenamed: "Clip renamed",
    renameFailed: "Failed to rename clip",
    renameClip: "Rename clip",
    clipTitle: "Clip title",
    movedToTrash: "Moved to trash",
    restoredFromArchive: "Restored from archive",
    archived: "Archived",
    clipsArchived: "{{count}} clips archived",
    clipsArchiveFailed: "{{count}} clips could not be archived",
    clipsMovedToTrash: "{{count}} clips moved to trash",
    clipsTrashFailed: "{{count}} clips could not be moved to trash",
  },
  notificationsRoute: {
    pageTitle: "Notifications · Clips",
    title: "Notifications",
    description:
      "Comments, reactions, mentions, and shares on your recordings in the last 30 days.",
    replySent: "Reply sent",
    sendFailed: "Failed to send",
    all: "All",
    comments: "Comments",
    reactions: "Reactions",
    mentions: "Mentions",
    shares: "Shares",
    loading: "Loading…",
    replyTo: "Reply to {{email}} on",
    replyPlaceholder: "Write a reply…",
  },
  stitchManager: {
    defaultTitle: "Stitched recording",
    title: "Stitch recordings",
    pickAtLeastTwo: "Pick at least 2 recordings to stitch together",
    videoUrlMissing: "One or more recordings don't have a ready video URL yet",
    connectStorage:
      "Connect storage before stitching recordings: Builder.io (free tier storage + AI) or S3-compatible storage.",
    created: "Stitched recording created",
    failed: "Failed to stitch recordings",
    noOtherRecordings: "No other recordings available.",
    combineOrder: "Combine order",
    emptyQueue:
      "Click recordings on the left to add them here. Drag to reorder.",
    titleLabel: "Title",
    combining:
      "Combining with ffmpeg.wasm — {{progress}}%. Large stitches may take a minute.",
    combine: "Combine",
  },
  inviteDialog: {
    title: "Invite members",
    description:
      "Paste one or more emails separated by commas or new lines. Invites expire in 7 days.",
    enterEmail: "Enter at least one email address.",
    invalidEmails: "Invalid email(s): {{emails}}",
    emailFailed: "{{email}}: {{message}}",
    failed: "Failed",
    sent: "Sent {{count}} invites.",
    sentWithFailures: "Sent {{sent}} invites, {{failed}} failed.",
    emails: "Emails",
    memberRole: "Member — record, edit, share",
    adminRole: "Admin — full control",
    sending: "Sending…",
    sendInvites: "Send invites",
  },
  membersList: {
    memberRole: "Member",
    adminRole: "Admin",
    roleUpdated: "Updated {{email}}'s role to {{role}}",
    updateFailed: "Failed to update role",
    removed: "Removed {{email}} from the organization",
    removeFailed: "Failed to remove member",
    noMembers: "No members yet.",
    member: "Member",
    joined: "Joined",
    you: "(you)",
    removeMemberLabel: "Remove {{email}}",
    removeTitle: "Remove member?",
    removeDescription:
      "{{email}} will lose access to this organization. You can always invite them back.",
    remove: "Remove",
  },
  slackShareHint: {
    playsInline: "Plays inline in Slack",
    connectedDescription:
      "Paste this link in any connected workspace to play it inline.",
    makeInline: "Make it play inline in Slack",
    connectDescription: "Connect a workspace so this link unfurls as a video.",
    connect: "Connect",
  },
  commentsPanel: {
    disabled: "Comments are disabled for this recording.",
    beFirst: "Be the first to comment",
    leaveNotePanel: "Leave a note at the top of this panel.",
    leaveNoteTimestamp: "Leave a note at the current timestamp.",
    leaveComment: "Leave a comment...",
    signInToComment: "Sign in to leave a comment.",
    signIn: "Sign in",
    replyingTo: "Replying to",
    commentAt: "Comment at",
    writeReply: "Write a reply...",
    commentButton: "Comment",
    composerPlaceholder: "Add a comment…",
    mentionSomeone: "Mention someone",
    addEmoji: "Add emoji",
  },
  shareMeeting: {
    pageTitle: "Meeting notes · Clips",
    description: "AI meeting notes shared via Clips.",
    unavailable: "This meeting is private or no longer available.",
    tryClips: "Try Clips",
    attendees: "{{count}} attendees",
    noAiNotes: "AI notes haven't been generated yet for this meeting.",
    summary: "Summary",
    keyPoints: "Key points",
    actionItems: "Action items",
  },
  deleteRecordingMenu: {
    movedToTrash: "Clip moved to trash",
    deleteFailed: "Failed to delete clip",
    clipOptions: "Clip options",
    delete: "Delete",
    moveTitle: "Move this clip to trash?",
    moveDescription:
      "This removes the clip from your library. You can restore it from Trash or delete it forever later.",
    deleting: "Deleting...",
    moveToTrash: "Move to trash",
  },
  recordingToolbar: {
    controls: "Recording controls",
    resumeRecording: "Resume recording",
    pauseRecording: "Pause recording",
    resumeShortcut: "Resume (⌥⇧P)",
    pauseShortcut: "Pause (⌥⇧P)",
    stop: "Stop recording",
    elapsed: "Elapsed time",
    cancel: "Cancel recording",
    cancelShortcut: "Cancel (⌥⇧C)",
  },
  countdownOverlay: {
    startsIn: "Recording starts in {{count}}",
    cancel: "Cancel recording",
    skip: "Skip countdown and start recording now",
    hint: "Esc to cancel · Enter to start now",
  },
  videoPlayer: {
    loomVideo: "Loom video",
    noVideo: "No video available",
    thanks: "Thanks for watching",
    playClip: "Play clip",
  },
  searchBar: {
    placeholder: "Search recordings…",
    clear: "Clear search",
    searching: "Searching…",
    noMatchesFor: "No matches for",
    titleTranscript: "Title + transcript",
    titleComment: "Title + comment",
    transcript: "Transcript",
    comment: "Comment",
    titleOrDescription: "Title or description",
  },
  organizationSwitcher: {
    noOrganization: "No organization",
    organizationCount: "{{count}} organizations",
    organizations: "Organizations",
    noOrganizations: "No organizations yet",
    switchFailed: "Failed to switch organization",
    newOrganization: "New organization",
    createOrganization: "Create organization",
    organizationName: "Organization name",
    created: 'Created "{{name}}"',
    createFailed: "Failed to create organization",
    creating: "Creating…",
  },
  playerControls: {
    playbackSpeed: "Playback speed",
  },
  autoRecordPrompt: {
    notesStarted: "Notes started.",
    cancelWithSeconds: "Cancel ({{count}}s)",
    startNotesQuestion: "It's time for this meeting — start notes?",
    autoStartsIn: "Auto-starts in {{count}}s",
    startNotes: "Start notes",
    dismiss: "Dismiss",
  },
  meetingCanvas: {
    noAiNotes: "No AI notes yet. Generate notes from a finished transcript.",
    noNotes: "No notes.",
    yourNotes: "Your notes…",
    clickToEdit: "Click to edit",
  },
  meetingCard: {
    live: "Live",
    transcript: "Transcript",
    aiNotesReady: "AI notes ready",
    noSummary: "No summary yet",
    transcriptSource: "Transcript source",
    now: "Now",
    started: "Started",
    inMinutes: "in {{count}} min",
    inHours: "in {{count}} hr",
    join: "Join",
    openNotes: "Open notes",
    open: "Open",
  },
  transcriptBubbles: {
    listening: "Listening…",
    noTranscript: "No transcript yet.",
    liveTranscriptDescription:
      "The live transcript will appear here once notes start.",
    me: "Me",
    them: "Them",
  },
  editorLayout: {
    trimmed: "Trimmed",
    trimFailed: "Trim failed",
    cut: "Cut",
    cutFailed: "Cut failed",
    split: "Split",
    splitFailed: "Split failed",
    loadingRecording: "Loading recording…",
    recordingNotFound: "Recording not found",
    noVideoYet: "No video available yet.",
  },
  transcriptEditor: {
    transcript: "Transcript",
    selectionRange: "· selection {{start}} → {{end}}",
    selectTextToTrim: "· select text to trim",
    cutSelection: "Cut selection",
    noTranscript: "No transcript yet.",
  },
  createSpaceDialog: {
    newSpace: "New space",
    description: "Create a space in the current organization.",
    name: "Name",
    color: "Color",
    useColor: "Use color {{color}}",
    spaceCreated: "Space created",
    createFailed: "Could not create space",
  },
  signInPrompt: {
    title: "Sign in to {{intent}}",
    description:
      "Create an account or sign in to {{intent}} on this clip. We'll bring you right back here when you're done.",
    notNow: "Not now",
    signIn: "Sign in",
  },
  embedRoute: {
    passwordRequired: "Password required",
    unavailable: "Clip unavailable.",
  },
  cameraVisualizer: {
    bubble: "Bubble",
    live: "Live",
    waiting: "Waiting",
    opening: "Opening",
    stop: "Stop",
    openingEllipsis: "Opening...",
    test: "Test",
    selectedPreview: "Selected camera preview",
    preview: "Camera preview",
    setBubbleSize: "Set camera bubble size {{size}}",
  },
  storageSetup: {
    builderTimeout:
      "Didn't hear back from Builder in 5 minutes. Check the popup and try again.",
    builderConnected: "Builder.io connected",
    waitingForBuilder: "Waiting for Builder...",
    connectBuilder: "Use Builder.io (free)",
    free: "Free",
    configureS3: "configure S3-compatible storage",
    whyPrompt: "Why am I seeing this?",
    whyDescription:
      "Clips is 100% free and open source, so you need to hook up a way to store clips. Connect storage with Builder.io for free-tier storage and AI, or use S3-compatible object storage and your own LLM keys.",
  },
  captureInstall: {
    title: "Choose your recorder",
    description:
      "Use Chrome when you need browser logs, or desktop for the smoothest everyday capture.",
    chromeTitle: "Chrome extension",
    chromeDescription:
      "Best when you want redacted console and network diagnostics from the browser tab.",
    chromePendingDescription:
      "Browser logs option is ready, pending the Chrome Web Store URL.",
    desktopTitle: "Desktop app",
    desktopDescription:
      "Most seamless for global shortcuts, menu-bar recording, meetings, and repeat captures.",
  },
  editableTitle: {
    untitled: "Untitled Clip",
    renameFailed: "Failed to rename clip",
    emptyTitle: "Title cannot be empty",
    generatingTitle: "Generating title",
    placeholder: "Clip title",
    editLabel: "Edit clip title",
  },
  chapters: {
    title: "Chapters",
    addHere: "Add here",
    empty: "No chapters yet.",
    remove: "Remove chapter",
    saveFailed: "Failed to save chapters",
    duplicateAtPoint: "A chapter already exists at this point",
    defaultTitle: "Chapter {{count}}",
    seekTo: "Seek to {{time}}",
  },
  editorToolbar: {
    undoTooltip: "Undo (Cmd/Ctrl+Z)",
    playPauseTooltip: "Play / Pause (Space)",
    sourceDuration: "({{duration}} src)",
    previewSpeed: "Preview speed",
    previewSpeedTooltip: "Preview speed while trimming",
    cutSelection: "Cut selection",
    cutSelectedRange: "Cut selected range",
    edit: "Edit",
    playheadEdits: "Playhead edits",
    splitAtPlayhead: "Split at playhead",
    cutBeforePlayhead: "Cut before playhead",
    cutAfterPlayhead: "Cut after playhead",
    panels: "Panels",
    hideChapters: "Hide chapters",
    showChapters: "Show chapters",
    thumbnail: "Thumbnail",
    stitchClips: "Stitch clips",
    zoom: "Zoom",
    zoomOut: "Zoom out",
    fitToWidth: "Fit to width",
    zoomIn: "Zoom in",
    clearAllEdits: "Clear all edits",
    loadingFfmpeg: "Loading ffmpeg…",
    exportMp4: "Export MP4",
    longExportTitle: "This export is long",
    longExportDescription:
      "The edited video is {{duration}}. ffmpeg.wasm runs in your browser and may run out of memory for very long exports. You can try anyway or download the original file instead.",
    downloadOriginal: "Download original",
    exportAnyway: "Export anyway",
    clearAllEditsTitle: "Clear all edits?",
    clearAllEditsDescription:
      "This removes every trim, blur, and the custom thumbnail from this recording. The original video is never modified.",
    clearEdits: "Clear edits",
    nothingToUndo: "Nothing to undo",
    undoFailed: "Undo failed",
    editsCleared: "Edits cleared",
    clearFailed: "Clear failed",
    selectRangeFirst: "Select a range on the waveform or transcript first",
    selectionCut: "Selection cut",
    trimFailed: "Trim failed",
    movePlayheadPastIntro: "Move the playhead past the intro you want to cut",
    startCut: "Start cut",
    movePlayheadBeforeEnding:
      "Move the playhead before the ending you want to cut",
    endCut: "End cut",
    splitAdded: "Split added",
    splitFailed: "Split failed",
    videoNotReady: "Video not ready yet",
    exportedMp4: "Exported MP4",
    exportFailed:
      "Export failed — ffmpeg.wasm can't always handle long videos. Try shorter edits or use the original file.",
  },
  preRecord: {
    modeScreenCamera: "Screen + cam",
    modeScreenOnly: "Screen only",
    modeCameraOnly: "Camera only",
    surfaceWindow: "Window",
    surfaceWindowDescription: "Best for slides or one app",
    surfaceBrowser: "Browser tab",
    surfaceBrowserDescription: "Choose an open tab",
    surfaceScreen: "Screen",
    surfaceScreenDescription: "Capture everything",
    microphoneSelectionUnsupported:
      "This browser does not support microphone device selection.",
    enumerateFailed: "Could not enumerate devices",
    noMicrophone: "No microphone",
    defaultMicrophone: "Default microphone",
    shortMicLabel: "Mic {{id}}",
    defaultCamera: "Default camera",
    shortCameraLabel: "Camera {{id}}",
    noAudio: "No audio",
    noCamera: "No camera",
    loomImportFailed: "Could not import that Loom.",
    fixMicrophoneAccess:
      "Fix microphone access or turn audio off before recording.",
    fixCameraAccess:
      "Fix camera access or switch to Screen mode before recording.",
    captureSource: "Capture source",
    selectedSurface: "{{surface}} selected",
    change: "Change",
    audioAndCamera: "Audio & camera",
    audio: "Audio",
    check: "Check",
    choose: "Choose",
    defaultMicPlaceholder: "Default mic",
    openingMicrophone: "Opening microphone...",
    chooseMicrophone: "Choose microphone...",
    includeAudioAria: "Include audio in this recording",
    tryClipsDesktop: "Try Clips Desktop.",
    cameraOff: "Camera off",
    includeCameraAria: "Include camera in this recording",
    startRecording: "Start recording",
    uploadVideo: "Upload video",
    importLoom: "Import Loom",
    importing: "Importing...",
    import: "Import",
  },
  playerSettings: {
    title: "Settings",
    privacy: "Privacy",
    visibility: "Visibility",
    visibilityPrivate: "Private",
    visibilityOrg: "Organization",
    visibilityPublic: "Public",
    passwordProtection: "Password protection",
    passwordSetPlaceholder:
      "Password is set — type to replace, leave empty + Save to clear",
    noPasswordPlaceholder: "No password",
    expiry: "Expiry",
    viewerOptions: "Viewer options",
    comments: "Comments",
    reactions: "Reactions",
    allowDownloads: "Allow downloads",
    animatedThumbnail: "Animated thumbnail",
    defaultPlaybackSpeed: "Default playback speed",
    callToAction: "Call to action",
    defaultCtaLabel: "Learn more",
    addCta: "+ Add",
    noCtas: "No CTAs yet. Add a button that appears during or after the video.",
    buttonLabelPlaceholder: "Button label",
    placementThroughout: "Throughout",
    placementEnd: "At end",
    delete: "Delete",
  },
  recordRoute: {
    pageTitle: "New recording — Clips",
    uploadFailed: "Upload failed",
    uploadFailedAtChunk:
      "Upload failed at chunk {{chunk}}/{{total}}: {{message}}",
    couldNotStartRecording: "Could not start recording",
    couldNotStartRecorder: "Could not start recorder",
    openSettings: "Open settings",
    openedRecorderInNewTab: "Opened recorder in a new tab",
    videoReadyToUpload: "Video is ready to upload",
    videoUploaded: "Video uploaded",
    videoTooLarge: "Video is too large",
    storageNeededToFinishLoomImport: "Storage needed to finish Loom import",
    loomImported: "Loom imported",
    couldNotImportLoom: "Could not import that Loom.",
    recordingReadyToUpload: "Recording is ready to upload",
    recordingSaved: "Recording saved",
    noLocalRecordingData: "No local recording data is available to download.",
    recordingDownloadStarted: "Recording download started",
    backToLibrary: "Back to library",
    clipsRecorder: "Clips recorder",
    preparingSources: "Preparing sources…",
    recordingScreen:
      "Recording your screen — switch to the window you want to capture",
    largeClipsNeedReencode: "Large clips need a quick re-encode before upload.",
    savingRecording: "Saving your recording…",
    sessionExpired: "Session expired",
    sessionExpiredDescription:
      "Your login session has expired. Log in again to start recording.",
    logIn: "Log in",
    betterInDesktop: "Better in the desktop app",
    desktopAppDescription:
      "Menu-bar launch, global shortcuts, auto-updates, and smoother repeat recordings.",
    downloadDesktopApp: "Download desktop app",
    technicalDetails: "Technical details",
    whatToCheck: "What to check",
    downloadRecording: "Download recording",
    openRecorderInTab: "Open recorder in tab",
    connectStorageToFinish:
      "Connect storage on the next screen: Builder.io (free tier storage + AI) or S3-compatible storage. Clips will finish saving it.",
    connectStorageToRetryLoom:
      "Connect storage on the next screen: Builder.io (free tier storage + AI) or S3-compatible storage. Clips will retry the import.",
  },
  dictateRoute: {
    pageTitle: "Dictate · Clips",
    howToUse: "How to use Dictate",
    browserDictation: "Browser dictation",
    browserDictationDescription:
      "Use the button on this page, or press the shortcut while this tab is focused. Browser dictation saves here for copy and cleanup.",
    desktopShortcuts: "Desktop shortcuts",
    desktopShortcutsDescriptionSuffix: ", in the desktop app.",
    holdFn: "Hold Fn",
    browserUnavailable:
      "Browser speech recognition is unavailable here. Use Chrome or the desktop app for global dictation.",
    browserUnavailableShort: "Browser speech recognition is unavailable here",
    startSpeaking: "Start speaking...",
    replacedOriginal: "Replaced original with cleaned text",
    noText: "No text",
    emptyTranscript: "Empty transcript",
    replaceOriginal: "Replace original with cleaned",
    cleanupWithAi: "Cleanup with AI",
    cleanupHint:
      'Click "Cleanup with AI" to fix punctuation, casing, and filler words.',
    startFirst: "Start your first dictation",
    emptyDesktopDescription:
      "Hold {{fnKey}} anywhere on your Mac, or press {{modifierKey}} ⇧ Space. Your history will live here.",
    emptyWebDescription:
      "Dictation runs through the desktop app for global shortcuts that work in any app — Slack, your editor, anywhere.",
    downloadDesktopApp: "Download Clips desktop app",
    holdToDictate: "hold to dictate",
    toggle: "toggle",
    desktopCtaTitle: "Dictate from anywhere with the desktop app",
    desktopCtaDescription:
      "Press {{modifierKey}} ⇧ Space in any app. Browser dictation is unreliable — the desktop app is the way to use this.",
    noSpeechCaptured: "No speech captured",
    dictationSaved: "Dictation saved",
    voiceToTextDescription:
      "Voice-to-text dictation with AI cleanup. Get the desktop app to dictate from anywhere with a global shortcut.",
    loadFailed: "Couldn't load dictations.",
    noFilterMatches: "No dictations matching this filter.",
  },
  clipsFinalRaw: {
    splitAtPlayhead: "Split at playhead (S)",
    selectedCount: "{{count}} selected",
    move: "Move",
    moveSelected: "Move {{count}} selected",
    current: "Current",
    clearSelection: "Clear selection",
    waitingForStorage: "Waiting for storage",
    savedLocally: "Saved locally",
    uploadFailed: "Upload failed",
    connectStorageToFinish: "Open to connect storage and finish saving.",
    retryFromClipsMenu: "Retry from the Clips menu; no need to re-record.",
    removeFailedClip: "Remove this failed clip.",
    remove: "Remove",
    viewsCount: "{{count}} views",
    recordingMenu: "Recording menu",
    moveToFolder: "Move to folder",
    unarchive: "Unarchive",
    shareNamedMeeting: 'Share "{{title}}"',
    shareMeeting: "Share meeting",
    shareLink: "Share link",
    alreadyHaveIt: "I already have it",
    link: "Link",
    invite: "Invite",
    inviteFailed: "Couldn't invite person",
    removePersonFailed: "Couldn't remove person",
    passwordProtectedDescription:
      "This video is protected. Enter the password to watch.",
    password: "Password",
    unlock: "Unlock",
    noEngagementData: "No engagement data yet.",
    allCaughtUp: "You're all caught up.",
    someone: "Someone",
    view: "View",
    reply: "Reply",
    commentedOn: "commented on",
    reactedTo: "reacted to",
    mentionedYouIn: "mentioned you in",
    shared: "shared",
    noCreatorsYet: "No creators yet.",
    creator: "Creator",
    engagement: "Engagement",
    selectedMicrophoneWaveform: "Selected microphone waveform",
    goHome: "Go home",
    testMic: "Test mic",
    archivePageTitle: "Archive · Clips",
    insightsPageTitle: "Insights · Clips",
    folderPageTitle: "Folder · Clips",
    spacePageTitle: "Space · Clips",
    spacesPageTitle: "Spaces · Clips",
    trashPageTitle: "Trash · Clips",
  },
  bugReportRoute: {
    pageTitle: "Bug report · Clips",
    donePageTitle: "Bug report submitted · Clips",
    eyebrow: "Bug report",
    title: "Record a bug report",
    description:
      "Capture a short repro with screen, voice, and redacted browser context for your team.",
    issueTitleLabel: "Issue title",
    issueTitlePlaceholder: "What went wrong?",
    detailsLabel: "Details",
    detailsPlaceholder: "What did you expect to happen?",
    emailLabel: "Your email",
    emailPlaceholder: "you@example.com",
    severityLabel: "Severity",
    severityLow: "Low",
    severityNormal: "Normal",
    severityHigh: "High",
    severityUrgent: "Urgent",
    sourceLabel: "Source",
    sourceUnknown: "Current product page",
    startRecording: "Record screen report",
    privacyNote:
      "Clips stores the recording with workspace access by default. URLs and metadata are redacted before they are saved.",
    doneTitle: "Bug report submitted",
    doneDescription:
      "The recording is saved in Clips and the host product has been notified.",
    openRecording: "Open recording",
    copyLink: "Copy link",
    copied: "Copied",
    returnToProduct: "Return to product",
    missingRecording: "Recording not found",
  },
  meetingsRoute: {
    pageTitle: "Meetings · Clips",
    transcriptPending: "Transcript pending",
    notesPending: "Notes pending",
    pastRecordings: "Past recordings",
    calendarNeedsReconnect:
      "Google Calendar needs to be reconnected to keep showing your upcoming meetings.",
    connectGoogleCalendar: "Connect Google Calendar",
    desktopReminder:
      "Get a desktop reminder when meetings start so recorded notes land in this history automatically.",
    getDesktopApp: "Get desktop app",
    requiredForReminders: "Required for meeting reminders and transcription.",
    calendarConnected: "Calendar connected",
    calendarDisconnected: "Calendar disconnected",
    calendarSettings: "Calendar settings",
    connectCalendarReminder: "Connect Google Calendar for meeting reminders.",
    disconnectGoogleCalendarTitle: "Disconnect Google Calendar?",
    title: "Meetings",
    intro: "Upcoming calendar meetings and your recorded notes.",
    searchPlaceholder: "Search meetings...",
    clearSearch: "Clear search",
    noMeetingsYet: "No meetings yet",
    noMeetingsDescription:
      "Upcoming calendar meetings show up here, and finished recordings land here once you take notes.",
    noMeetingsMatch: 'No meetings match "{{query}}"',
    refreshing: "Refreshing…",
  },
};

export default messages;
