{
  "shared": {
    "dialog": {
      "confirm": "Confirm",
      "cancel": "Cancel",
      "close": "Close",
      "closeDialogAria": "Close dialog",
      "closeMenuAria": "Close menu",
      "menuFallbackAria": "Menu"
    },
    "leaveServer": {
      "title": "Leave Server?",
      "removeFromList": "Leaving will remove",
      "fromMyServers": "from your My Servers list.",
      "ownerNotice": "You are the current owner of this server.",
      "ownerTransferHint": "You can optionally promote another member before leaving. If you skip this step, the server will continue without an owner.",
      "newOwner": "New owner",
      "skipOwnerTransfer": "Skip owner transfer",
      "noMembersToPromote": "No other known members are available to promote right now.",
      "leave": "Leave Server",
      "roles": {
        "owner": "Owner",
        "admin": "Admin",
        "moderator": "Moderator",
        "member": "Member"
      }
    },
    "mediaPlayer": {
      "saveAudioAria": "Save audio to folder",
      "saveVideoAria": "Save video to folder",
      "saveToFolder": "Save to folder",
      "play": "Play",
      "pause": "Pause",
      "playAudioAria": "Play audio",
      "pauseAudioAria": "Pause audio",
      "playVideoAria": "Play video",
      "pauseVideoAria": "Pause video",
      "togglePlaybackAria": "Toggle video playback",
      "playVideoOverlay": "Play video",
      "mute": "Mute",
      "unmute": "Unmute",
      "muteAudioAria": "Mute audio",
      "unmuteAudioAria": "Unmute audio",
      "muteVideoAria": "Mute video",
      "unmuteVideoAria": "Unmute video",
      "seekAudioAria": "Seek audio",
      "seekVideoAria": "Seek video",
      "volumeAudioAria": "Audio volume",
      "volumeVideoAria": "Video volume",
      "showWaveform": "Show waveform",
      "hideWaveform": "Hide waveform",
      "showWaveformAria": "Show waveform",
      "hideWaveformAria": "Hide waveform",
      "loadingWaveform": "Loading waveform...",
      "waveformUnavailable": "Couldn't render a waveform preview for this file, but playback still works.",
      "fullscreen": "Fullscreen",
      "exitFullscreen": "Exit fullscreen",
      "enterFullscreenAria": "Enter fullscreen",
      "exitFullscreenAria": "Exit fullscreen"
    },
    "debugConsole": {
      "toggleAria": "Toggle debug console",
      "toggleTitle": "Toggle debug console",
      "resizeWidthAria": "Resize debug console width",
      "resizeWidthRightAria": "Resize debug console width from right",
      "resizeAria": "Resize debug console",
      "resizeHeightBottomAria": "Resize debug console height from bottom",
      "resizeCornerAria": "Resize debug console from corner",
      "moveAria": "Move debug console",
      "dragToMove": "Drag to move",
      "showingLatest": "Showing latest 500 of {{total}} entries",
      "showAll": "Show all",
      "title": "Debug Console",
      "visibleCount": "{{count}} visible",
      "networkSummary": "{{clients}} clients · {{links}} links",
      "logsDescription": "Search logs, filter by level or source, and inspect timestamps inline.",
      "networkDescription": "Visualize signaling, peer links, typing, speaking, streaming, and grouped traffic directly from captured debug data.",
      "dock": "Dock",
      "undock": "Undock",
      "pauseAutoScroll": "Pause auto-scroll",
      "resumeAutoScroll": "Resume auto-scroll",
      "export": "Export",
      "exportLogsTitle": "Export logs",
      "logsSection": "Logs",
      "exportCsv": "Export as CSV",
      "exportTxt": "Export as TXT",
      "exportJson": "Export as JSON",
      "networkSection": "Network",
      "exportNetworkJson": "Export network JSON",
      "clear": "Clear",
      "close": "Close",
      "logsTab": "Logs",
      "networkTab": "Network",
      "searchPlaceholder": "Search messages, payloads, timestamps, and sources",
      "searchLogsSrOnly": "Search logs",
      "filterBySourceSrOnly": "Filter by source",
      "allSources": "All sources",
      "levelsLabel": "Levels",
      "levels": {
        "event": "Events",
        "debug": "Debug",
        "info": "Info",
        "warn": "Warn",
        "error": "Error",
        "unknown": "Unknown"
      },
      "networkTrafficHint": "Traffic is grouped by edge and message type to keep signaling, voice-state, and screen-state chatter readable.",
      "networkBadges": {
        "typing": "{{count}} typing",
        "speaking": "{{count}} speaking",
        "streaming": "{{count}} streaming",
        "memberships": "{{count}} memberships"
      },
      "entryList": {
        "noLogsMatch": "No logs match the current filters.",
        "noLogsHint": "Generate activity in the app or loosen the filters to see captured events.",
        "hideDetails": "Hide details",
        "showDetails": "Show details"
      },
      "networkMap": {
        "clients": "{{count}} clients",
        "servers": "{{count}} servers",
        "peerLinks": "{{count}} peer links",
        "groupedMessages": "{{count}} grouped messages",
        "localClient": "Local client",
        "remoteClient": "Remote client",
        "signaling": "Signaling",
        "server": "Server",
        "noActivityTitle": "No network activity captured yet.",
        "noActivityBody": "Enable debugging before connecting to signaling, joining a server, or opening peer channels to populate the live map.",
        "peerDetails": "Peer details",
        "updated": "Updated {{age}}",
        "peerDetailsEmpty": "Connected clients appear here with IDs, handshakes, text counts, streams, drops, and live download metrics.",
        "streams": "Streams",
        "text": "Text",
        "handshakes": "Handshakes",
        "downloadMbps": "Download Mbps",
        "ping": "Ping",
        "connectionDrops": "Connection drops",
        "connectionFlows": "Connection flows",
        "groupedByEdge": "Grouped by edge + message type",
        "flowsEmpty": "Once logs arrive, each edge will show grouped signaling or P2P message types with counts.",
        "pingMs": "Ping {{ms}} ms",
        "groupedMessagesOnEdge": "{{count}} grouped messages",
        "noGroupedMessagesOnEdge": "No grouped messages on this edge yet.",
        "moreCount": "+{{count}} more",
        "idPrefix": "ID {{id}}",
        "peerPrefix": "Peer {{identity}}",
        "streamsTooltip": "A = audio streams, V = video streams",
        "audioStreams": "Audio streams",
        "videoStreams": "Video streams",
        "textTooltip": "Up arrow = sent messages, down arrow = received messages",
        "sentMessages": "Sent messages",
        "receivedMessages": "Received messages",
        "handshakesTooltip": "Counts are shown as sent / received",
        "webrtcOffers": "WebRTC offers",
        "webrtcAnswers": "WebRTC answers",
        "iceCandidates": "ICE candidates",
        "downloadTooltip": "Down arrow = download rate. F = file, A = audio, V = video.",
        "downloadRate": "Download rate",
        "fileDownloadMbps": "File download Mbps",
        "audioDownloadMbps": "Audio download Mbps",
        "videoDownloadMbps": "Video download Mbps",
        "pingMsValue": "{{ms}} ms",
        "unavailable": "Unavailable"
      },
      "activity": {
        "speaking": "Speaking",
        "typing": "Typing",
        "streaming": "Streaming",
        "muted": "Muted",
        "active": "Active"
      },
      "edgeKind": {
        "membership": "Membership",
        "signaling": "Signaling",
        "peer": "Peer"
      },
      "age": {
        "justNow": "just now",
        "secondsAgo": "{{seconds}}s ago",
        "minutesAgo": "{{minutes}}m ago",
        "hoursAgo": "{{hours}}h ago"
      }
    },
    "accessControl": {
      "roles": {
        "everyone": "@everyone"
      }
    }
  }
}
