/** Chat: sidebar lists, composer, transcript, threads and voice. */ export const chat = { 'chat.rooms.title': 'Channels', 'chat.rooms.empty': 'No channels yet', 'chat.rooms.create': 'New channel', 'chat.rooms.name': 'Channel name', 'chat.rooms.topic': 'Topic', 'chat.rooms.private': 'Private channel', 'chat.rooms.created': 'Channel created.', 'chat.rooms.updated': 'Channel updated.', 'chat.rooms.deleted': 'Channel deleted.', 'chat.dms.title': 'Direct messages', 'chat.dms.empty': 'No direct messages yet', 'chat.upload.failedStatus': 'Upload failed ({status})', 'chat.composer.placeholder': 'Message #{room}', 'chat.composer.send': 'Send', 'chat.composer.attach': 'Add attachment', 'chat.composer.emoji': 'Emoji', 'chat.composer.tooLong': 'Message is too long (maximum {max} characters).', 'chat.composer.empty': 'Message cannot be empty.', 'chat.composer.sent': 'Message sent.', 'chat.composer.failed': 'Sending failed. Please try again.', 'chat.composer.unauthorized': 'Your session expired — sign in again', 'chat.composer.forbidden': 'You cannot post in this channel', 'chat.composer.notFound': 'That channel or message no longer exists', 'chat.composer.rateLimited': 'Sending too fast — try again shortly', 'chat.composer.unavailable': 'No response from the service; the message was not sent', 'chat.message.edited': 'edited', 'chat.message.deleted': 'Message deleted', 'chat.message.edit': 'Edit message', 'chat.message.delete': 'Delete message', 'chat.message.reply': 'Reply', 'chat.message.thread': 'Thread', 'chat.message.save': 'Save', 'chat.message.unsave': 'Unsave', 'chat.message.pin': 'Pin', 'chat.message.unpin': 'Unpin', 'chat.message.copyLink': 'Copy link', 'chat.message.saved': 'Message saved.', 'chat.message.unsaved': 'Message removed from saved.', 'chat.message.deletedNotice': 'Message deleted.', 'chat.message.editedNotice': 'Message updated.', 'chat.message.deleteConfirm': 'Delete this message? This cannot be undone.', 'chat.day.today': 'Today', 'chat.day.yesterday': 'Yesterday', 'chat.day.weekday': '{weekday}', 'chat.thread.title': 'Threads', 'chat.thread.empty': 'No threads yet', 'chat.thread.create': 'New thread', 'chat.thread.replies': '{count} replies', 'chat.thread.archived': 'Archived', 'chat.thread.archivedNotice': 'Thread archived.', 'chat.attachment.image': 'Image', 'chat.attachment.video': 'Video', 'chat.attachment.audio': 'Audio', 'chat.attachment.pdf': 'PDF', 'chat.attachment.text': 'Text', 'chat.attachment.file': 'File', 'chat.attachment.download': 'Download attachment', 'chat.attachment.tooLarge': 'The attachment exceeds the size limit.', 'chat.attachment.uploadFailed': 'Attachment upload failed. Please retry.', 'chat.voice.join': 'Join voice', 'chat.voice.leave': 'Leave voice', 'chat.voice.mute': 'Mute', 'chat.voice.unmute': 'Unmute', 'chat.voice.stage': 'Stage', 'chat.voice.connected': 'Connected to the voice channel', 'chat.voice.disconnected': 'Left the voice channel', 'chat.voice.restore': 'Restore sound', 'chat.voice.failed': 'Could not join the voice channel. Please retry.', 'chat.voice.members': 'Members online', 'chat.voice.empty': 'Nobody else is in this channel yet', 'chat.voice.membersCount': '{count} members are already here', 'chat.member.list': 'Members', 'chat.member.invite': 'Invite members', 'chat.member.online': 'Online', 'chat.mention.everyone': 'Mention everyone', 'chat.notification.newMessage': '{author} mentioned you in #{room}', 'chat.notification.reply': '{author} replied to your message', 'chat.notification.viewChannel': 'View channel', // Room header, connection banner and room lifecycle. 'chat.room.slowModeTitle': 'Slow mode — one message every {seconds}s', 'chat.room.dmTopicPlaceholder': 'Every conversation starts with a hello', 'chat.room.topicPlaceholder': 'Share what you are thinking and get things done together', 'chat.room.transcriptPane': 'Transcript', 'chat.room.callPane': 'Call view', 'chat.room.pins': 'Pinned messages', 'chat.room.threads': 'Threads', 'chat.room.members': 'Channel members', 'chat.room.membersWithCount': 'Channel members · {count}', 'chat.room.options': 'Channel options', 'chat.room.mute': 'Mute this channel', 'chat.room.unmute': 'Unmute', 'chat.room.favorite': 'Favourite this channel', 'chat.room.unfavorite': 'Remove from favourites', 'chat.room.clearDraft': 'Clear draft', 'chat.room.closeDm': 'Close this conversation', 'chat.room.settings': 'Channel settings', 'chat.room.info': 'Channel info', 'chat.room.dmSettings': 'Conversation settings', 'chat.room.ownedByViewer': 'You own this channel', 'chat.room.leave': 'Leave channel', 'chat.room.details': 'Channel details', 'chat.room.accessDenied': 'You cannot view this channel', 'chat.room.gone': 'This channel no longer exists or was deleted', 'chat.room.goneHint': 'The link may have expired, or the owner deleted the channel. Pick another one from the list on the left.', 'chat.room.settingsNoteDm': 'A direct message only exposes a few settings beyond its name; closing it removes it from the list.', 'chat.room.settingsNoteManage': 'These fields are written to the room itself, so every member sees the change.', 'chat.room.settingsNoteView': 'You have read access only — the settings below are read-only.', 'chat.room.nameHint': 'Lowercase letters, digits and hyphens are the safest choice', 'chat.room.topicHint': 'Shown in the title bar; up to 1024 characters', 'chat.room.private': 'Private channel (members only)', 'chat.room.rateLimit': 'Slow mode (seconds)', 'chat.room.rateLimitHint': '0 disables it; the shortest gap between two messages from one member', 'chat.room.deleteNote': 'The channel stops being visible and its messages will not come back.', 'chat.room.deleteConfirm': 'Delete the channel', 'chat.room.deleteAction': 'Delete this channel', 'chat.room.saved': 'Saved', 'chat.room.slowModeShort': 'Slow mode {seconds}s', // Realtime connection banner. 'chat.connection.authRequired': 'The realtime connection needs a fresh sign-in', 'chat.connection.stopped': 'Realtime stopped; messages will not update automatically', 'chat.connection.connecting': 'Connecting to the realtime channel…', 'chat.connection.closed': 'Realtime disconnected; messages will not update automatically', 'chat.connection.retry': 'Reconnect', // Transcript. 'chat.transcript.aria': 'Chat messages', 'chat.transcript.accessDenied': 'You no longer have access to this channel', 'chat.transcript.accessDeniedHint': 'The server revoked read access here. Pick another channel from the left.', 'chat.transcript.loadingOlder': 'Loading earlier messages…', 'chat.transcript.threadStart': 'The thread starts here', 'chat.transcript.start': 'Every good conversation starts somewhere', 'chat.transcript.loadFailed': 'Messages failed to load', 'chat.transcript.seedFailed': 'The latest messages could not be loaded', 'chat.transcript.threadEmptyTitle': 'Keep the discussion going', 'chat.transcript.threadEmptyBody': 'Share your take and be the first to reply.', 'chat.transcript.roomEmptyTitle': 'Welcome to {room}', 'chat.transcript.roomEmptyBody': 'A new topic, a fresh idea, or just a hello. Let us start here.', 'chat.transcript.newMessages': '{count} new messages', 'chat.transcript.newMessages_one': '{count} new message', 'chat.transcript.newMessages_other': '{count} new messages', 'chat.transcript.backToLatest': 'Back to the latest', 'chat.transcript.pinned': 'Pinned', 'chat.transcript.replyDeleted': 'Replying to a deleted message', 'chat.transcript.thisDeleted': '(this message was deleted)', 'chat.transcript.deletedShort': '(deleted)', 'chat.transcript.jumpToOriginal': 'Jump to the original message', 'chat.transcript.actions': 'Message actions', 'chat.transcript.typingOne': '{name} is typing…', 'chat.transcript.typingTwo': '{first} and {second} are typing…', 'chat.transcript.typingMany': '{names} are typing…', 'chat.transcript.mine': 'You', 'chat.transcript.unsent': 'Not sent', 'chat.transcript.sending': 'Sending', 'chat.transcript.sendFailed': 'Sending failed', 'chat.transcript.editHint': 'Enter to save · Shift+Enter for a new line · Esc to cancel', 'chat.transcript.react': 'Add a reaction', 'chat.transcript.replyInThread': 'Reply in a thread', 'chat.transcript.quoteReply': 'Quote reply', 'chat.transcript.copied': 'Copied', 'chat.transcript.copyText': 'Copy text', 'chat.transcript.more': 'More actions', 'chat.transcript.lastReply': 'Last reply {time}', 'chat.transcript.locked': 'Locked', // Reactions and unread markers. 'chat.reaction.aria': '{emoji}, {count} reacted', 'chat.reaction.ariaMine': '{emoji}, {count} reacted, including you', 'chat.reaction.title': '{count} reacted', 'chat.unread.count': '{count} unread', 'chat.unread.label': 'Unread', // System lines written by the backend into a room. 'chat.system.integration': 'Integration', 'chat.system.postWithContent': '{author}: {content}', 'chat.system.post': '{author} posted a message', 'chat.system.threadCreated': '{author} started a thread', 'chat.system.joined': '{author} joined this channel', 'chat.system.left': '{author} left this channel', 'chat.system.topicChanged': '{author} changed the topic to "{topic}"', 'chat.system.topicUpdated': '{author} updated the channel topic', 'chat.system.pinned': '{author} pinned a message', 'chat.system.reminder': '{author} set a reminder: {content}', 'chat.system.reminderSet': '{author} set a reminder', 'chat.system.message': 'System message', 'chat.system.sent': '{author} sent a message', // Thread panels. 'chat.panel.close': 'Close panel', 'chat.panel.resize': 'Resize side panel', 'chat.panel.clearFocus': 'Restore chat clarity', 'chat.panel.loadedMembers': 'Loading space members…', 'chat.panel.searching': 'Searching…', 'chat.thread.lockedNotice': 'This thread is locked and cannot be replied to', 'chat.thread.archivedReadOnly': 'This thread is archived and read-only', 'chat.thread.byOwner': "{name}'s thread", 'chat.thread.fromOwner': 'Thread from {name}', 'chat.thread.summary': '{replies} replies · {participants} participants', 'chat.thread.participants': '{count} people', 'chat.thread.participants_one': '{count} participant', 'chat.thread.participants_other': '{count} participants', 'chat.thread.count': '{count} threads', 'chat.thread.follow': 'Turn on alerts', 'chat.thread.followTitle': 'Notify me about every new reply in this thread', 'chat.thread.following': 'Alerts on', 'chat.thread.followingTitle': 'New replies will notify you; click to turn alerts off', 'chat.thread.unfollow': 'Turn off alerts', 'chat.thread.unfollowTitle': 'Stop notifying me about this thread', 'chat.thread.lock': 'Lock the thread (no new replies)', 'chat.thread.unlock': 'Unlock the thread', 'chat.thread.locked': 'Locked', 'chat.thread.missing': 'Not found', 'chat.thread.missingHint': 'This thread may have been deleted, or it is still loading. Close this and reopen it from the thread list.', 'chat.thread.emptyHint': 'No threads yet. Choose "Reply in a thread" from a message toolbar to keep the discussion organised.', // Pin list. 'chat.pins.count': '{count} pinned', 'chat.pins.empty': 'Nothing is pinned yet. Hover a message and pin it from "More actions".', 'chat.pins.jump': 'Jump to this message', 'chat.pins.jumpShort': 'Jump', // Member roster. 'chat.member.count': '{count} people', 'chat.member.count_one': '{count} person', 'chat.member.count_other': '{count} people', 'chat.member.owner': 'Owner', 'chat.member.forbidden': 'This is a private channel; its member list is not shared with you.', 'chat.member.loadFailed': 'The member list failed to load.', 'chat.member.self': 'This is you', 'chat.member.dmTitle': 'Direct message @{username}', 'chat.member.addCount': 'Add ({count})', 'chat.member.allInRoom': 'Everyone in this space is already in this channel.', 'chat.member.listFailed': 'Space members could not be read', // Search panel. // Attachments. 'chat.attachment.unknownType': 'Unknown type', 'chat.attachment.preview': 'Preview', 'chat.attachment.closePreview': 'Close preview', // Emoji picker. 'chat.emoji.common': 'Frequent', 'chat.emoji.gestures': 'Gestures', 'chat.emoji.symbols': 'Symbols', 'chat.emoji.custom': 'Space', 'chat.emoji.search': 'Search emoji', 'chat.emoji.searchClear': 'Clear search', // Voice surface. 'chat.voice.channelFallback': 'Voice channel', 'chat.voice.callAria': 'Call', 'chat.voice.barDragHint': 'Drag the empty area to move it; double-click to reset', 'chat.voice.mic': 'Microphone', 'chat.voice.camera': 'Camera', 'chat.voice.screenShare': 'Share screen', 'chat.voice.noPublish': 'You cannot speak right now', 'chat.voice.return': 'Back to the voice channel', 'chat.voice.hangUp': 'Leave the call', 'chat.voice.disabled': 'Voice is not enabled', 'chat.voice.joinFailed': 'Could not join the voice channel', 'chat.voice.handFailed': 'Raising your hand failed', 'chat.voice.handCancelFailed': 'Withdrawing your hand failed', 'chat.voice.handDecideFailed': 'The approval failed', 'chat.voice.sharing': '{name} is sharing their screen', 'chat.voice.stageHint': 'This is a stage channel: join to listen, raise your hand to speak, and the microphone opens once a host approves.', 'chat.voice.joinHint': 'Joining turns on your microphone; you can mute it or turn the camera off at any time.', 'chat.voice.handPending': 'Hand raised — waiting for a host to approve', 'chat.voice.cancelHand': 'Withdraw your hand', 'chat.voice.joining': 'Joining…', 'chat.voice.tilePlaced': 'Drag to park it, resize from the bottom-right, double-click to return to the grid', 'chat.voice.tileHint': 'Press and drag to any free spot', 'chat.voice.forceUnmute': 'Unmute', 'chat.voice.forceMute': 'Mute', 'chat.voice.kick': 'Remove from the call', 'chat.voice.tileSpeaking': '{name} is speaking', 'chat.voice.solo': 'Nobody is here with you yet — invite members to join.', 'chat.voice.hands': 'Speaking requests', 'chat.voice.canSpeak': 'You may speak now', 'chat.voice.raiseHand': 'Raise your hand to speak', 'chat.voice.pendingCount': '{count} pending', 'chat.voice.noHands': 'No pending requests', 'chat.voice.revoke': 'Revoke', 'chat.voice.speaking': '{name} · speaking', 'chat.voice.notice.micDenied': 'Microphone access was denied; joining in listen-only mode', 'chat.voice.notice.connectFailed': 'The voice connection failed', 'chat.voice.notice.kicked': 'A moderator removed you from the call', 'chat.voice.notice.duplicate': 'This account joined the call somewhere else', 'chat.voice.notice.dropped': 'The voice connection dropped — click to rejoin', 'chat.voice.notice.micUnavailable': 'The microphone is unavailable', 'chat.voice.notice.cameraUnavailable': 'The camera is unavailable', 'chat.voice.notice.screenUnavailable': 'Screen sharing is unavailable', 'chat.voice.notice.audioBlocked': 'The browser still blocks audio playback — check the sound permission for this site', 'chat.voice.notice.mediaUnreachable': 'The voice channel could not be established: the browser cannot reach the voice service. Rejoin; contact an administrator if it keeps failing.', 'chat.voice.notice.permissionDenied': 'The browser denied microphone/camera permission — restore it from the address bar and retry', 'chat.voice.notice.tokenInvalid': 'The voice token is invalid or expired — join again', 'chat.voice.notice.deviceMissing': 'No usable device found - check that a microphone/camera is connected.', 'chat.voice.notice.deviceInUse': 'The device is in use by another application.', 'chat.voice.notice.browserUnsupported': 'This browser cannot do voice calls - use Chrome or Edge.', 'chat.voice.mutedByHost': 'The host muted your microphone.', 'chat.voice.unmutedByHost': 'The host gave you the microphone back.', 'chat.voice.reconnecting': 'Voice connection dropped - reconnecting automatically...', 'chat.voice.reconnectFailed': 'Automatic reconnection failed. Select rejoin to try again.', 'chat.voice.rejoin': 'Rejoin', 'chat.voice.deviceSystemDefault': 'System default', 'chat.voice.deviceOff': 'Off', 'chat.voice.joinWithMic': 'Open the microphone when joining', 'chat.voice.deviceNoMic': 'Allow microphone access to list devices', 'chat.voice.deviceNoOutput': 'System default output', 'chat.voice.deviceNoCamera': 'Allow camera access to list devices', 'chat.voice.debugDetails': 'Connection details', 'chat.voice.deviceTitle': 'Devices & preview', 'chat.voice.deviceHint': 'Pick your devices, then join. The microphone follows your choice.', 'chat.voice.deviceJoin': 'Join channel', 'chat.voice.speaker': 'Speaker', 'chat.voice.micTest': 'Say something - the level bar below will move', 'chat.voice.micLevel': 'Microphone level', 'chat.voice.volume': 'Volume for {name}', 'chat.voice.focus': 'Focus {name}', 'chat.voice.clearFocus': 'Clear focus', 'chat.voice.shareAudio': 'Also share computer sound', 'chat.voice.shareCancelled': 'Screen share cancelled', 'chat.voice.autoLayout': 'Reset to automatic layout', 'chat.voice.prevPage': 'Previous page', 'chat.voice.nextPage': 'Next page', 'chat.voice.aria.joined': '{name} joined the call', 'chat.voice.aria.left': '{name} left the call', 'chat.voice.tileMenu': 'Actions for {name}', 'chat.voice.qualityHigh': 'Good connection', 'chat.voice.qualityMedium': 'Fair connection', 'chat.voice.qualityLow': 'Poor connection', 'chat.voice.qualityUnknown': 'Connection quality unknown', // Bullet comments (danmaku). 'chat.danmaku.title': 'Bullet comments', 'chat.danmaku.count': '{count} comments', 'chat.danmaku.loadOlder': 'Load earlier', 'chat.danmaku.empty': 'No bullet comments yet', 'chat.danmaku.flying': 'Fly across the screen', 'chat.danmaku.placeholder': 'Fire a bullet comment…', 'chat.danmaku.label': 'Bullet comment', // Composer leftovers. 'chat.composer.attachmentLimit': 'A message takes at most {max} attachments; the extra ones were not added', 'chat.composer.blockedUploading': 'An attachment is uploading; sending unlocks automatically when it finishes', 'chat.composer.blockedFailed': 'An attachment failed to upload — retry or remove it before sending', } as const