98e06cb
/** Space management: creation, members, roles, invites, settings. */
export const space = {
'space.create': 'New space',
'space.create.name': 'Space name',
'space.create.slug': 'URL slug',
'space.create.description': 'Space description',
'space.settings.title': 'Space settings',
'space.settings.general': 'General',
'space.settings.members': 'Members',
'space.settings.roles': 'Roles',
'space.settings.invites': 'Invites',
'space.settings.channelPermissions': 'Channel permissions',
'space.settings.name': 'Space name',
'space.settings.description': 'Space description',
'space.settings.avatar': 'Space avatar',
'space.settings.saved': 'Space settings saved.',
'space.settings.danger': 'Danger zone',
'space.settings.deleteSpace': 'Delete space',
'space.settings.deleteConfirm': 'Deletion cannot be undone. Type the space name to confirm: {name}',
'space.settings.deleted': 'Space deleted.',
'space.members.title': 'Members',
'space.members.sub': 'Browse and search the people in this community.',
'space.members.recent': 'Recently joined',
'space.members.shown': 'Showing {shown} of {total} members',
'space.members.sort': 'Sort',
'space.members.sortJoined': 'Recently joined',
'space.members.sortName': 'By name',
'space.members.rowsPerPage': 'Rows per page',
'space.members.col.name': 'Name',
'space.members.col.joined': 'Joined',
'space.members.col.method': 'Join method',
'space.members.col.status': 'Status',
'space.members.owner': 'Community owner',
'space.members.invitedBy': 'Invited by {name}',
'space.members.joinedSelf': 'Joined directly',
'space.members.noMatch': 'No members match',
'space.members.refresh': 'Refresh members',
'space.members.open': 'Open the member list',
'space.members.invite': 'Invite members',
'space.members.remove': 'Remove member',
'space.members.removed': 'Member removed.',
'space.members.empty': 'No members yet',
'space.members.role': 'Role',
'space.members.joinedAt': 'Joined',
'space.roles.title': 'Roles',
'space.roles.groupCaption': 'Roles',
'space.roles.back': 'Back',
'space.roles.editorSub': 'Configure this role and its permissions — saved changes apply right away.',
'space.roles.settingsGroup': 'Display',
'space.roles.editTitle': 'Edit "{name}"',
'space.roles.permissionSearch': 'Search permissions',
'space.roles.scopeCommunity': 'Community scope',
'space.roles.clearPermissions': 'Clear permissions',
'space.roles.colorHint': 'Free-form colour: hex, rgb, hsl or a colour name.',
'space.roles.emptyHint': 'No roles yet — create one with “Create role” above.',
'space.roles.cancel': 'Cancel',
'space.roles.noPermissionMatch': 'No permissions match',
'space.roles.create': 'New role',
'space.roles.name': 'Role name',
'space.roles.permissions': 'Permissions',
'space.roles.created': 'Role created.',
'space.roles.deleted': 'Role deleted.',
'space.invites.title': 'Invites',
'space.invites.create': 'Create invite link',
'space.invites.expiresAt': 'Expires at',
'space.invites.maxUses': 'Maximum uses',
'space.invites.created': 'Invite link created.',
'space.invites.revoked': 'Invite link revoked.',
'space.invites.empty': 'No invite links yet',
'space.invites.copyLink': 'Copy invite link',
'space.invites.used': 'Used {used}/{max}',
'space.channelPermissions.title': 'Channel permissions',
'space.channelPermissions.sub': 'Override channel-level read and write access per member or role.',
'space.channelPermissions.saved': 'Channel permissions saved.',
'space.leave': 'Leave space',
'space.leave.confirm': 'Leave the space {name}?',
'space.left': 'Left the space.',
'space.join': 'Join space',
'space.joined': 'Joined the space.',
'space.create.nameRequired': 'Space name · Required',
'space.create.nameHint': 'Lowercase letters, digits and hyphens, up to 64 characters',
'space.create.nameInvalid': 'The name may contain only lowercase letters, digits and hyphens, 1-64 characters.',
'space.create.failed': 'Could not create the space. Please try again later.',
'space.create.descriptionPlaceholder': 'What is this space for?',
'space.create.private': 'Private space',
'space.create.creating': 'Creating…',
'space.menu.invite': 'Invite friends',
'space.menu.createRepo': 'Create repository',
'space.menu.createBoard': 'Create issue board',
'space.menu.createRoom': 'Create channel',
'space.menu.createDir': 'Create folder',
'space.menu.settings': 'Space settings',
'space.menu.privacy': 'Privacy settings',
'space.menu.leave': 'Leave space',
'space.invite.title': 'Invite friends',
'space.invite.sub': 'Invite new members to {space}. They receive the selected roles once they accept.',
'space.invite.submit': 'Send invite',
'space.invite.email': 'Email',
'space.invite.emailHint': 'For people outside the platform — they receive an invite email',
'space.invite.username': 'Or username',
'space.invite.usernameHint': 'For registered users — they also get an in-app notification',
'space.invite.expires': 'Expires at',
'space.invite.expiresHint': 'Leave empty for no expiry',
'space.invite.groups': 'Grant roles on join',
'space.invite.groupsEmpty': 'This space has no roles yet. Create one under Space settings → Roles first.',
'space.invite.groupsHint': 'Pick at least one role',
'space.invite.missingTarget': 'Provide an email or a username.',
'space.invite.sent': 'Invite sent: {target} can join after accepting.',
'space.invite.accept.crumb': 'INVITE',
'space.invite.accept.hint': 'PRIVATE LINK FROM AN INVITE EMAIL',
'space.invite.accept.heading': 'Accept invitation',
'space.invite.accept.headingSpace': 'Join {space}',
'space.invite.accept.sub': 'Accepting makes you a member with the roles chosen for this invitation.',
'space.invite.accept.joining': 'Joining…',
'space.invite.accept.signInNote':
'This invitation was addressed to a specific account: sign in (or sign up) first, then open the link from the email again.',
'space.invite.accept.login': 'Sign in',
'space.invite.accept.signup': 'Create an account',
'space.invite.accept.invalid': 'The link is missing its invite code — reopen it from the email.',
'space.invite.accept.notFound': 'This invitation does not exist or was revoked.',
'space.invite.accept.mismatch':
'The signed-in account is not the invitee. Sign in as the invited address and try again.',
'space.invite.accept.used': 'This invitation was already used or has expired.',
'space.invite.accept.failed': 'Could not join. Try again in a moment.',
'space.invite.accept.retry': 'Retry',
'space.invite.accept.home': 'Back to home',
'space.repo.title': 'Create repository',
'space.repo.name': 'Repository name',
'space.repo.nameHint': 'Lowercase letters, digits and hyphens',
'space.repo.description': 'Description · Optional',
'space.repo.dir': 'Parent folder',
'space.repo.defaultBranch': 'Default branch · Optional',
'space.repo.license': 'License · Optional',
'space.repo.initMessage': 'Initial commit message · Optional',
'space.repo.enableLfs': 'Enable Git LFS',
'space.repo.private': 'Private repository',
'space.board.create.title': 'Create issue board',
'space.board.nameField': 'Name',
'space.board.description': 'Description · Optional',
'space.board.icon': 'Icon · Optional',
'space.board.dir': 'Parent folder',
'space.room.title': 'Create channel',
'space.room.name': 'Channel name',
'space.room.nameHint': 'Lowercase letters, digits and hyphens',
'space.room.kind': 'Type',
'space.room.kind.text': 'Text channel',
'space.room.kind.voice': 'Voice channel',
'space.room.kind.stage': 'Stage channel',
'space.room.dir': 'Parent folder',
'space.room.topic': 'Topic · Optional',
'space.room.userLimit': 'Voice user limit · Optional',
'space.room.rateLimit': 'Slowmode in seconds · Optional',
'space.room.noLimit': '0 = no limit',
'space.room.private': 'Private channel (invite only)',
'space.dir.title': 'Create folder',
'space.dir.description': 'Folders group repositories and issue boards in the space tree.',
'space.dir.name': 'Folder name',
'space.dir.parent': 'Parent folder',
'space.dir.root': 'Root',
'space.privacy.title': 'Privacy settings',
'space.privacy.description': 'Direct message and mention permissions for your account, across every space.',
'space.privacy.dms': 'Allow direct messages',
'space.privacy.dmsHint': 'Let others send you direct messages',
'space.privacy.mentions': 'Allow mentions',
'space.privacy.mentionsHint': 'Let others mention you in messages',
'space.privacy.online': 'Show online status',
'space.privacy.onlineHint': 'Show your online status in member lists',
'space.privacy.saved': 'Privacy settings saved.',
'space.leave.title': 'Leave space',
'space.leave.sub': 'You will need a new invite to come back to {space}.',
'space.userLabel': '{name} (@{username})',
'space.permission.viewSpace': 'View space',
'space.permission.read': 'Read content',
'space.permission.message': 'Send messages',
'space.permission.manageMembers': 'Manage members',
'space.permission.manageRoles': 'Manage roles',
'space.permission.manageInvites': 'Manage invites',
'space.permission.manageBans': 'Manage bans',
'space.permission.manageChannels': 'Manage channels',
'space.permission.manageOverwrites': 'Manage permission overrides',
'space.discover.title': 'Discover spaces',
'space.discover.sub': 'Browse public spaces, their intro and member count, then ask to join.',
'space.discover.search': 'Search space names or descriptions',
'space.discover.sort.members': 'Recommended',
'space.discover.sort.newest': 'Newest',
'space.discover.cardSize': 'Card size',
'space.discover.cardSize.large': 'Large',
'space.discover.cardSize.medium': 'Medium',
'space.discover.cardSize.small': 'Small',
'space.discover.resultCount': '{count} public spaces',
'space.discover.loading': 'Loading spaces…',
'space.discover.empty': 'No matching spaces',
'space.discover.emptyHint': 'Try another keyword, or come back later.',
'space.discover.loadFailed': 'Failed to load spaces',
'space.discover.loadMore': 'Load more',
'space.discover.members': '{count} members',
'space.discover.joinLevel': 'Join requirement: {level}',
'space.discover.joinLevel.none': 'No extra requirement',
'space.discover.enter': 'Enter space',
'space.discover.requested': 'Request submitted',
'space.discover.pending': 'Pending review',
'space.discover.withdraw': 'Withdraw request',
'space.discover.withdrawn': 'Request withdrawn.',
'space.discover.cooldown': 'Cooling down',
'space.discover.cooldownUntil': 'You can apply again {time}',
'space.discover.apply': 'Ask to join',
'space.discover.closed': 'Not accepting requests',
'space.discover.rejected': 'Last request was declined',
'space.discover.dialogTitle': 'Ask to join {space}',
'space.discover.note': 'Message (optional)',
'space.discover.noteHint': 'Briefly say why you want to join, up to 512 characters.',
'space.discover.notePlaceholder': 'I would like to join because…',
'space.discover.submit': 'Submit request',
'space.discover.submitted': 'Request submitted; an admin will review it.',
'space.discover.submitFailed': 'Failed to submit request',
'space.discover.withdrawFailed': 'Failed to withdraw request',
'space.discover.cooldownError': 'Your last request was just declined; try again later.',
'space.discover.requirementError': "You do not meet this space's join requirement yet.",
'space.discover.notAllowedError': 'This space is not accepting join requests.',
'space.discover.docTitle': 'Discover spaces · GitDataAI',
'space.joinRequests.title': 'Join requests',
'space.joinRequests.sub': 'Review people asking to join; approving adds them as members.',
'space.joinRequests.filter.pending': 'Pending',
'space.joinRequests.filter.approved': 'Approved',
'space.joinRequests.filter.rejected': 'Declined',
'space.joinRequests.filter.all': 'All',
'space.joinRequests.empty': 'No join requests yet',
'space.joinRequests.emptyHint': 'Requests appear here, with a notification, as soon as someone applies.',
'space.joinRequests.loadFailed': 'Failed to load join requests',
'space.joinRequests.note': 'Message',
'space.joinRequests.noNote': 'No message provided',
'space.joinRequests.approve': 'Approve',
'space.joinRequests.reject': 'Decline',
'space.joinRequests.approved': 'Approved {name}.',
'space.joinRequests.rejected': 'Declined {name}.',
'space.joinRequests.status.pending': 'Pending',
'space.joinRequests.status.approved': 'Approved',
'space.joinRequests.status.rejected': 'Declined',
'space.joinRequests.status.withdrawn': 'Withdrawn',
'space.joinRequests.decidedBy': 'Decided by {name}',
'space.joinRequests.requestedAt': 'Requested {time}',
'space.joinRequests.loadMore': 'Load more',
'space.joinRequests.count': '{count} total',
'space.joinLevel.none': 'No extra requirement',
'space.joinLevel.mail': 'Verified email required',
'space.joinLevel.mailDay': 'Verified email and one-day-old account required',
'space.joinLevel.mailHour': 'Verified email and one-hour-old account required',
'space.joinLevel.mailPhone': 'Verified email and phone required',
'space.notify.all': 'All messages',
'space.notify.mentions': 'Mentions only',
'space.notify.nothing': 'Nothing',
'space.memberStatus.active': 'Active',
'space.memberStatus.inactive': 'Inactive',
'space.memberStatus.left': 'Left',
'space.memberStatus.removed': 'Removed',
'space.joinTrigger.issueReaction': 'Issue reaction',
'space.joinTrigger.commentReaction': 'Comment reaction',
'space.image.avatar': 'Space icon',
'space.image.avatarHint': 'Square recommended, at least 128×128',
'space.image.banner': 'Space banner',
'space.image.bannerHint': 'Shown atop lists and the space page',
'space.image.inviteBanner': 'Invite card image',
'space.image.inviteBannerHint': 'Used as the preview when sharing an invite',
'space.image.embedSplash': 'Embed background',
'space.image.embedSplashHint': 'Used by external embed pages',
'space.settings.sections.mine': 'My membership',
'space.settings.group.community': 'Community',
'space.settings.group.members': 'Members & permissions',
'space.settings.sections.general': 'Space profile',
'space.settings.sections.images': 'Icons and banners',
'space.settings.sections.join': 'Join rules',
'space.settings.sections.joinRequests': 'Join requests',
'space.settings.sections.bans': 'Bans',
'space.settings.sections.cleanup': 'Object cleanup',
'space.cleanup.ownerSub': 'Bulk-clean directories and objects in the space. Space owners only.',
'space.cleanup.notOwner': 'Object cleanup is available to the space owner only.',
'space.cleanup.sub':
'Delete or adjust visibility quickly: repositories can toggle public/private and be archived, channels can toggle public/private or be deleted, boards can be deleted, empty directories can be deleted, and nodes with visibility overwrites can be reset to the default.',
'space.cleanup.filterPlaceholder': 'Filter by name / path / type',
'space.cleanup.empty': 'No matching objects.',
'space.cleanup.children': '{count} child node(s)',
'space.cleanup.overwrites': '{count} visibility overwrite(s)',
'space.cleanup.archived': 'Archived',
'space.cleanup.makePrivate': 'Make private',
'space.cleanup.makePublic': 'Make public',
'space.cleanup.archive': 'Archive',
'space.cleanup.unarchive': 'Unarchive',
'space.cleanup.clearOverwrites': 'Clear visibility overwrites',
'space.cleanup.deleteBlocked': 'This node still has children; empty it first.',
'space.cleanup.confirmDelete': 'Delete "{name}"? This cannot be undone.',
'space.cleanup.confirmClearOverwrites': 'Clear every visibility overwrite on "{name}" and restore the default?',
'space.cleanup.updated': 'Updated.',
'space.cleanup.deleted': 'Deleted.',
'space.cleanup.overwritesCleared': 'Visibility overwrites cleared.',
'space.cleanup.kind.dir': 'Directory',
'space.cleanup.kind.object': 'Object',
'space.cleanup.kind.repo': 'Repository',
'space.cleanup.kind.board': 'Board',
'space.cleanup.kind.text': 'Text channel',
'space.cleanup.kind.voice': 'Voice channel',
'space.cleanup.kind.stage': 'Stage channel',
'space.cleanup.kind.category': 'Category',
'space.cleanup.kind.news': 'News channel',
'space.cleanup.kind.guildRoom': 'Channel',
'space.cleanup.kind.thread': 'Thread',
'space.settings.fullLoadFailed':
'Could not load the full space record; these forms fall back to the cached list row and some fields may be stale.',
'space.general.title': 'Space profile',
'space.general.sub': 'Name, description and how people join.',
'space.general.ownerOnly': 'Only the space owner can change this; you have read-only access.',
'space.general.name': 'Space name',
'space.general.nameHint': 'Lowercase letters, digits and hyphens only, up to 64 characters',
'space.general.description': 'Description',
'space.general.descriptionHint': 'Shown on the space card and directory page, up to 512 characters',
'space.general.welcome': 'Welcome message',
'space.general.welcomeHint': 'A note posted in the channel when someone joins',
'space.general.welcomePlaceholder': 'Welcome back — please read the channel topic before posting.',
'space.general.access': 'Access and joining',
'space.general.private': 'Private space (members only)',
'space.general.allowJoin': 'Allow join requests',
'space.general.joinLevel': 'Join requirement',
'space.general.allowInvite': 'Allow members to send invites',
'space.general.require2fa': 'Require two-factor authentication',
'space.general.save': 'Save profile',
'space.general.saved': 'Space profile saved.',
'space.general.readonly': 'Read-only information',
'space.general.id': 'Space ID',
'space.general.owner': 'Owner',
'space.general.members': 'Members',
'space.general.status': 'Status',
'space.general.createdUpdated': 'Created / updated',
'space.general.active': 'Active',
'space.general.inactive': 'Disabled',
'space.danger.ownerSub': 'Irreversible operations such as deleting the space are owner-only.',
'space.danger.notOwner': 'You are not the owner of this space, so you cannot delete it.',
'space.danger.sub': 'The space disappears immediately; restoring it requires the platform administrators.',
'space.danger.deleteName': 'Delete {name}',
'space.danger.description': 'Repositories, issue boards and channels go offline with this address. Members: {count}.',
'space.danger.confirmLabel': 'Type the space name {name} to confirm',
'space.danger.deleting': 'Deleting…',
'space.danger.confirm': 'Delete space',
'space.images.sub': 'Images are uploaded as raw bytes straight to object storage; each file must stay under 5 MB.',
'space.images.loadFailed': 'Could not load the images — you may lack the manage-channels permission.',
'space.images.tooLarge': 'The image exceeds 5 MB. Compress it and try again.',
'space.images.updated': '{label} updated.',
'space.images.deleted': '{label} deleted.',
'space.images.loading': 'Loading',
'space.images.unset': 'Not set',
'space.images.replace': 'Replace',
'space.membership.sub': 'These settings only affect your experience in this space.',
'space.membership.subJoined': 'Joined {date}. These settings only affect your experience in this space.',
'space.membership.save': 'Save my settings',
'space.membership.saved': 'Your space settings were saved.',
'space.alias.label': 'Space nickname',
'space.alias.hint': 'Leave empty to use your global name, up to 64 characters',
'space.alerts.label': 'Message alerts',
'space.alerts.mobilePush': 'Receive mobile push',
'space.alerts.suppressEveryone': 'Ignore @everyone mentions',
'space.alerts.suppressRoles': 'Ignore role mentions',
'space.alerts.hideMuted': 'Hide muted channels',
'space.members.count': '{count} members. Nicknames and alerts apply in this space only.',
'space.members.searchPlaceholder': 'Search members…',
'space.members.searchAria': 'Search members',
'space.members.usernamePlaceholder': 'Username',
'space.members.usernameAria': 'Username to add',
'space.members.add': 'Add member',
'space.members.added': 'Member added.',
'space.members.loading': 'Loading members…',
'space.members.emptyFiltered': 'No members match.',
'space.members.muted': 'Muted',
'space.members.collapse': 'Collapse',
'space.members.expand': 'Edit',
'space.members.mute': 'Mute this member',
'space.members.muteUntil': 'Muted until',
'space.members.muteForever': 'Leave empty for permanent',
'space.members.allowPush': 'Allow mobile push',
'space.members.save': 'Save member settings',
'space.members.saved': 'Member settings saved.',
'space.members.missingUser': 'This member has no user id',
'space.roles.sub': 'Roles group members and grant permissions in bulk. Their order sets how members are listed.',
'space.roles.namePlaceholder': 'Role name',
'space.roles.nameAria': 'New role name',
'space.roles.color': 'Colour',
'space.roles.colorAria': 'New role colour',
'space.roles.colorAria2': 'Role colour',
'space.roles.emojiAria': 'New role emoji',
'space.roles.loading': 'Loading roles…',
'space.roles.empty': 'No roles yet. Create one, then tick its permissions on the member row to grant them.',
'space.roles.noPermissions': 'No permissions yet',
'space.roles.createdAt': 'Created {date}',
'space.roles.permissionCount': '{count} permissions',
'space.roles.emoji': 'Emoji',
'space.roles.emojiHint': 'Optional, shown before the role name',
'space.roles.position': 'Order',
'space.roles.positionHint': 'Lower numbers come first',
'space.roles.save': 'Save role',
'space.roles.saved': 'Role updated.',
'space.roles.dirty': 'Unsaved changes',
'space.roles.selectMember': 'Select a member',
'space.roles.selectMemberPlaceholder': 'Select a member…',
'space.roles.granted': 'Role granted.',
'space.roles.grant': 'Grant',
'space.roles.revoked': 'Role revoked.',
'space.roles.revoke': 'Revoke',
'space.roles.joined': 'You joined the role.',
'space.roles.join': 'Join',
'space.roles.left': 'You left the role.',
'space.roles.leave': 'Leave',
'space.roles.noReadback':
'The server only exposes role writes — there is no read endpoint for which roles a member holds, so granted members cannot be listed here.',
'space.roles.delete': 'Delete role',
'space.invites.sub': 'Accepting makes someone a member with the selected roles; at least one role is required.',
'space.invites.missingTarget': 'Provide an email or a username.',
'space.invites.missingRole': 'Pick at least one role to grant.',
'space.invites.mode': 'Invite method',
'space.invites.byEmail': 'By email',
'space.invites.byUsername': 'By username',
'space.invites.email': 'Email address',
'space.invites.username': 'Username',
'space.invites.oneOf': 'Fill in either one',
'space.invites.expiresHint': 'Leave empty for no expiry',
'space.invites.grantLabel': 'Roles granted on accept · Required',
'space.invites.send': 'Send invite',
'space.invites.activeTitle': 'Outstanding invites',
'space.invites.loading': 'Loading invites…',
'space.invites.historyTitle': 'Past invites',
'space.invites.noEmail': 'No email recorded',
'space.invites.expiresOn': 'expires {date}',
'space.invites.acceptedOn': 'accepted {date}',
'space.invites.revoke': 'Revoke',
'space.invites.redeemTitle': 'Redeem an invite code',
'space.invites.redeemNote':
'The accept code only appears in the invite email — the API never returns it. If the recipient has no verified email they cannot open the link; invite them by username instead and they will see it in their notifications.',
'space.invites.code': 'Invite code',
'space.invites.redeemed': 'Invite code redeemed.',
'space.invites.state.pending': 'Pending',
'space.invites.state.accepted': 'Accepted',
'space.invites.state.revoked': 'Revoked',
'space.invites.state.expired': 'Expired',
'space.invites.nonePending': 'No pending invites.',
'space.joinRules.sub':
'People who meet the condition gain a role automatically — a way to promote keen issue-board contributors to members.',
'space.joinRules.deletedRole': 'Deleted role',
'space.joinRules.needRole': 'Create a role under Roles before configuring a rule.',
'space.joinRules.grantRole': 'Grant role',
'space.joinRules.selectRole': 'Select a role…',
'space.joinRules.trigger': 'Trigger',
'space.joinRules.matcher': 'Match',
'space.joinRules.matcherHint': 'Emoji name, for example thumbs_up',
'space.joinRules.created': 'Rule created.',
'space.joinRules.create': 'New rule',
'space.joinRules.loading': 'Loading rules…',
'space.joinRules.empty': 'No join rules yet.',
'space.joinRules.enabled': 'Active',
'space.joinRules.disabled': 'Disabled',
'space.joinRules.enable': 'Enable this rule',
'space.joinRules.updated': 'Rule updated.',
'space.joinRules.save': 'Save rule',
'space.joinRules.deleted': 'Rule deleted.',
'space.invites.expires': 'Expires at',
'space.bans.sub': 'Banned users cannot join unless a rule re-allows an individual capability.',
'space.bans.expires': 'Expires at',
'space.bans.expiresHint': 'Leave empty to ban permanently',
'space.bans.reason': 'Reason',
'space.bans.reasonHint': 'Admins only; recorded on the ban row',
'space.bans.banned': 'User banned.',
'space.bans.banUser': 'Ban user',
'space.bans.loading': 'Loading bans…',
'space.bans.empty': 'No bans recorded.',
'space.bans.unbanAt': 'lifts {date}',
'space.bans.permanent': 'permanent',
'space.bans.by': 'by {by} on {date}',
'space.bans.unbanned': 'Ban lifted.',
'space.bans.unban': 'Lift ban',
'space.bans.missingUser': 'This ban row has no user id',
'space.bans.saved': 'Ban settings updated.',
'space.bans.saveExceptions': 'Save exceptions',
'space.bans.allowSpeak': 'Allow speaking in voice channels',
'space.bans.allowPushRepo': 'Allow pushing to repositories',
'space.bans.allowCommentAny': 'Allow commenting on any issue',
'space.bans.allowAgentJoin': 'Allow agents to join the space',
'space.channelPermissions.sub2': 'Hide a folder or channel from specific roles and members, or force it visible.',
'space.channelPermissions.stance.deny': 'Hidden',
'space.channelPermissions.stance.inherit': 'Inherit',
'space.channelPermissions.stance.allow': 'Visible',
'space.channelPermissions.selectNode': 'Select a node',
'space.channelPermissions.emptyTree': 'The tree is empty',
'space.channelPermissions.repaired': 'Directory checked: {scanned} nodes scanned, {fixed} fixed.',
'space.channelPermissions.repair': 'Repair directory tree',
'space.channelPermissions.emptyNote': 'This space has no folders or channels yet.',
'space.channelPermissions.folder': 'Folder',
'space.channelPermissions.entry': 'Entry',
'space.channelPermissions.position': 'Order {position}',
'space.channelPermissions.archived': 'Archived',
'space.channelPermissions.noTopic': 'No topic',
'space.channelPermissions.byRole': 'By role',
'space.channelPermissions.byMember': 'By member',
'space.channelPermissions.defaultAlias': 'Default nickname',
'space.channelPermissions.rename': 'Rename',
'space.channelPermissions.renameHint': 'The server only allows changing the name',
'space.channelPermissions.renamed': 'Node renamed.',
'space.channelPermissions.saveName': 'Save name',
'space.channelPermissions.visibility': '{title} visibility',
'space.channelPermissions.addByUsername': 'Add an exception by username',
'space.channelPermissions.addByUsernameHint': 'Type a username directly when the member list is unavailable',
'space.channelPermissions.alreadyExceptional': 'That member is already in the exception list.',
'space.channelPermissions.exceptionAdded': 'Member exception added.',
'space.channelPermissions.addVisible': 'Add as visible',
'space.roles.emptyShort': 'No roles yet.',
'space.members.count_one': '{count} member. Nicknames and alerts apply in this space only.',
'space.members.count_other': '{count} members. Nicknames and alerts apply in this space only.',
'space.roles.permissionCount_one': '{count} permission',
'space.roles.permissionCount_other': '{count} permissions',
} as const