2026-09-19 18:20:59 +03:00
|
|
|
|
{
|
|
|
|
|
|
"app": {
|
|
|
|
|
|
"name": "glchat",
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"tagline": "Self-hosted communication: text, voice, video",
|
|
|
|
|
|
"skipToContent": "Skip to content"
|
2026-09-19 18:20:59 +03:00
|
|
|
|
},
|
|
|
|
|
|
"status": {
|
|
|
|
|
|
"title": "Foundation deployed",
|
|
|
|
|
|
"description": "The server responds, the database runs in WAL mode, migrations are applied. Chat features arrive in the next phases.",
|
|
|
|
|
|
"connecting": "Checking server status…",
|
|
|
|
|
|
"instance": "Instance",
|
|
|
|
|
|
"version": "Version",
|
|
|
|
|
|
"apiVersion": "API version",
|
|
|
|
|
|
"schemaReady": "Database",
|
|
|
|
|
|
"schemaOk": "ready",
|
|
|
|
|
|
"maxUpload": "Maximum upload size",
|
|
|
|
|
|
"checks": "Checks",
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"retry": "Retry",
|
|
|
|
|
|
"back": "Back",
|
|
|
|
|
|
"users": "Users",
|
|
|
|
|
|
"guilds": "Servers",
|
|
|
|
|
|
"registration": "Registration"
|
2026-09-19 18:20:59 +03:00
|
|
|
|
},
|
|
|
|
|
|
"health": {
|
|
|
|
|
|
"online": "Server is reachable",
|
|
|
|
|
|
"offline": "Server is unreachable"
|
|
|
|
|
|
},
|
|
|
|
|
|
"errors": {
|
|
|
|
|
|
"network.unreachable": "The server is not responding. Check your connection and try again.",
|
|
|
|
|
|
"network.aborted": "The request was aborted.",
|
|
|
|
|
|
"instance.not_ready": "The instance is still starting. Try again in a few seconds.",
|
|
|
|
|
|
"internal.error": "Internal server error.",
|
|
|
|
|
|
"not_found": "The requested resource was not found.",
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"unknown": "Unknown error ({{code}}).",
|
|
|
|
|
|
"auth.2fa_required": "Enter the two-factor code from your authenticator app.",
|
|
|
|
|
|
"auth.totp_invalid": "The two-factor code is incorrect.",
|
|
|
|
|
|
"auth.invalid_credentials": "Wrong email or password.",
|
|
|
|
|
|
"auth.step_up_required": "Confirm your identity: enter your password again.",
|
|
|
|
|
|
"auth.guild_limit_reached": "You have reached the server limit on this instance.",
|
|
|
|
|
|
"auth.session_invalid": "Your session has expired. Sign in again.",
|
|
|
|
|
|
"auth.unauthorized": "Sign-in is required.",
|
|
|
|
|
|
"auth.registration_disabled": "Registration is disabled on this instance.",
|
|
|
|
|
|
"auth.username_taken": "This username is already taken.",
|
|
|
|
|
|
"auth.email_taken": "This email is already registered.",
|
|
|
|
|
|
"auth.weak_password": "The password is too weak. Use at least 8 characters.",
|
|
|
|
|
|
"auth.too_many_attempts": "Too many attempts. Try again later.",
|
|
|
|
|
|
"permissions.denied": "You do not have permission for this action.",
|
|
|
|
|
|
"instance.admin_required": "This action is available to the instance admin only.",
|
|
|
|
|
|
"guild.not_found": "Server not found.",
|
|
|
|
|
|
"guild.member_limit_reached": "This server has reached its member limit.",
|
|
|
|
|
|
"channel.not_found": "Channel not found.",
|
|
|
|
|
|
"validation.failed": "Check the fields you filled in.",
|
2026-09-20 00:15:18 +03:00
|
|
|
|
"rate.limited": "Too many requests. Please wait a moment.",
|
|
|
|
|
|
"perm.denied": "You do not have permission to do that.",
|
|
|
|
|
|
"rate_limited": "Too many requests. Please wait a moment.",
|
|
|
|
|
|
"message.edit_window_expired": "This message can no longer be edited: more than 24 hours passed.",
|
|
|
|
|
|
"file.too_large": "The file exceeds the allowed size.",
|
|
|
|
|
|
"request.bad": "Malformed request.",
|
2026-09-20 01:39:04 +03:00
|
|
|
|
"file.not_found": "File not found.",
|
|
|
|
|
|
"invite.expired": "This invite has expired.",
|
|
|
|
|
|
"invite.exhausted": "This invite has no uses left.",
|
2026-09-20 18:13:04 +03:00
|
|
|
|
"user.not_found": "No user with that username was found.",
|
|
|
|
|
|
"emoji": {
|
|
|
|
|
|
"name_taken": "An emoji with that name already exists.",
|
|
|
|
|
|
"invalid_type": "PNG, JPEG, WebP and GIF are supported.",
|
|
|
|
|
|
"invalid_name": "Emoji name: 2–32 characters — latin letters, digits and “_”."
|
|
|
|
|
|
},
|
|
|
|
|
|
"emojis": {
|
|
|
|
|
|
"limit_reached": "The server has reached its emoji limit."
|
2026-09-20 18:38:54 +03:00
|
|
|
|
},
|
|
|
|
|
|
"voice.disabled": "Voice is not configured on this instance.",
|
|
|
|
|
|
"voice.channel_full": "No free slots in this room.",
|
2026-09-20 19:30:43 +03:00
|
|
|
|
"voice.token_refresh_failed": "Could not renew the voice session. Please join again.",
|
|
|
|
|
|
"sound": {
|
|
|
|
|
|
"invalid_type": "MP3, OGG, WAV, WebM and M4A are supported.",
|
|
|
|
|
|
"invalid_name": "Sound name: 2–32 characters, latin letters, digits and «_».",
|
|
|
|
|
|
"name_taken": "A sound with this name already exists."
|
|
|
|
|
|
},
|
|
|
|
|
|
"sounds": {
|
|
|
|
|
|
"limit_reached": "The limit of sounds of this kind is reached.",
|
|
|
|
|
|
"event_required": "Choose an event for a palette sound."
|
|
|
|
|
|
},
|
|
|
|
|
|
"voice.not_connected": "Join a voice channel first."
|
2026-09-19 18:20:59 +03:00
|
|
|
|
},
|
|
|
|
|
|
"theme": {
|
|
|
|
|
|
"switchToLight": "Light theme",
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"switchToDark": "Dark theme",
|
|
|
|
|
|
"label": "Theme",
|
|
|
|
|
|
"dark": "Dark",
|
|
|
|
|
|
"light": "Light"
|
2026-09-19 18:20:59 +03:00
|
|
|
|
},
|
|
|
|
|
|
"language": {
|
|
|
|
|
|
"label": "Language",
|
|
|
|
|
|
"ru": "Русский",
|
|
|
|
|
|
"en": "English"
|
|
|
|
|
|
},
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"common": {
|
|
|
|
|
|
"loading": "Loading…",
|
|
|
|
|
|
"retry": "Retry",
|
|
|
|
|
|
"cancel": "Cancel",
|
|
|
|
|
|
"close": "Close",
|
|
|
|
|
|
"save": "Save",
|
|
|
|
|
|
"saving": "Saving…",
|
|
|
|
|
|
"create": "Create",
|
|
|
|
|
|
"creating": "Creating…",
|
|
|
|
|
|
"join": "Join",
|
|
|
|
|
|
"leave": "Leave",
|
|
|
|
|
|
"back": "Back",
|
|
|
|
|
|
"copy": "Copy",
|
|
|
|
|
|
"copied": "Copied",
|
|
|
|
|
|
"yes": "Yes",
|
|
|
|
|
|
"no": "No",
|
|
|
|
|
|
"optional": "optional",
|
|
|
|
|
|
"dismiss": "Dismiss"
|
|
|
|
|
|
},
|
2026-09-19 18:20:59 +03:00
|
|
|
|
"footer": {
|
|
|
|
|
|
"source": "Source code",
|
|
|
|
|
|
"license": "AGPL-3.0"
|
2026-09-19 21:50:06 +03:00
|
|
|
|
},
|
|
|
|
|
|
"auth": {
|
|
|
|
|
|
"login": {
|
|
|
|
|
|
"title": "Sign in",
|
|
|
|
|
|
"subtitle": "Sign in to keep talking",
|
|
|
|
|
|
"email": "Email",
|
|
|
|
|
|
"emailPlaceholder": "you@example.com",
|
|
|
|
|
|
"password": "Password",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"totp": "2FA or recovery code",
|
|
|
|
|
|
"totpHint": "If 2FA is enabled; a recovery code like xxxx-xxxx-xxxx also works.",
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"submit": "Sign in",
|
|
|
|
|
|
"submitting": "Signing in…",
|
|
|
|
|
|
"noAccount": "No account yet?",
|
|
|
|
|
|
"registerLink": "Create one",
|
|
|
|
|
|
"forgot": "Forgot your password? Ask the instance admin.",
|
|
|
|
|
|
"instanceStatus": "Instance status",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"registrationDisabled": "Registration on this instance is disabled by the admin.",
|
|
|
|
|
|
"totpRequired": "Enter the 2FA or recovery code — sign-in needs it."
|
2026-09-19 21:50:06 +03:00
|
|
|
|
},
|
|
|
|
|
|
"register": {
|
|
|
|
|
|
"title": "Create account",
|
|
|
|
|
|
"subtitle": "Create an account on {{instance}}",
|
|
|
|
|
|
"username": "Username",
|
|
|
|
|
|
"usernameHint": "3–32 characters: latin letters, digits, “_” and “-”.",
|
|
|
|
|
|
"displayName": "Display name",
|
|
|
|
|
|
"email": "Email",
|
|
|
|
|
|
"password": "Password",
|
|
|
|
|
|
"passwordHint": "At least 8 characters.",
|
|
|
|
|
|
"requirements": "Password requirements: {{list}}",
|
|
|
|
|
|
"requirementLength": "at least 8 characters",
|
|
|
|
|
|
"requirementLetter": "at least one letter",
|
|
|
|
|
|
"requirementDigit": "at least one digit",
|
|
|
|
|
|
"submit": "Create account",
|
|
|
|
|
|
"submitting": "Creating account…",
|
|
|
|
|
|
"haveAccount": "Already have an account?",
|
|
|
|
|
|
"loginLink": "Sign in",
|
|
|
|
|
|
"disabledTitle": "Registration is closed",
|
|
|
|
|
|
"disabledBody": "The instance admin disabled self-service registration. Ask for an invite or contact the admin."
|
|
|
|
|
|
},
|
|
|
|
|
|
"validation": {
|
|
|
|
|
|
"usernameFormat": "Username: 3–32 characters, latin letters, digits, “_” or “-”.",
|
|
|
|
|
|
"usernameRequired": "Enter a username.",
|
|
|
|
|
|
"displayNameRequired": "Enter a display name.",
|
|
|
|
|
|
"emailInvalid": "Enter a valid email address.",
|
|
|
|
|
|
"passwordShort": "The password must be at least 8 characters long.",
|
|
|
|
|
|
"passwordLetter": "Add at least one letter to the password.",
|
|
|
|
|
|
"passwordDigit": "Add at least one digit to the password.",
|
|
|
|
|
|
"passwordMismatch": "The passwords do not match."
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
"onboarding": {
|
|
|
|
|
|
"title": "Welcome to glchat",
|
|
|
|
|
|
"greeting": "Hi, {{name}}!",
|
|
|
|
|
|
"subtitle": "A couple of steps and you are ready.",
|
|
|
|
|
|
"displayName": "How should we show you?",
|
|
|
|
|
|
"displayNameHint": "Other members see this name.",
|
|
|
|
|
|
"bio": "Tell us about yourself",
|
|
|
|
|
|
"bioPlaceholder": "What you do, what you like…",
|
|
|
|
|
|
"language": "Interface language",
|
|
|
|
|
|
"theme": "Theme",
|
|
|
|
|
|
"start": "Get started",
|
|
|
|
|
|
"starting": "Preparing your workspace…",
|
|
|
|
|
|
"skip": "Skip and start",
|
|
|
|
|
|
"note": "You can change all of this later in settings."
|
|
|
|
|
|
},
|
|
|
|
|
|
"guilds": {
|
|
|
|
|
|
"railLabel": "Servers",
|
|
|
|
|
|
"listLabel": "Server list",
|
|
|
|
|
|
"add": "Create a server",
|
|
|
|
|
|
"addShort": "Create a server",
|
|
|
|
|
|
"create": {
|
|
|
|
|
|
"title": "Create a server",
|
|
|
|
|
|
"name": "Server name",
|
|
|
|
|
|
"namePlaceholder": "For example, “Friends”",
|
|
|
|
|
|
"hint": "You can rename it later in the server settings.",
|
|
|
|
|
|
"submit": "Create",
|
2026-09-19 22:03:46 +03:00
|
|
|
|
"limit": "You can create at most {{count}} servers on this instance.",
|
|
|
|
|
|
"limitReached": "You have reached the server limit — remove one of your servers first."
|
2026-09-19 21:50:06 +03:00
|
|
|
|
},
|
|
|
|
|
|
"empty": {
|
2026-09-20 01:39:04 +03:00
|
|
|
|
"title": "You have no servers yet",
|
2026-09-20 01:52:27 +03:00
|
|
|
|
"body": "Create your own server or join one with an invite.",
|
|
|
|
|
|
"create": "Create your own server"
|
2026-09-19 21:50:06 +03:00
|
|
|
|
},
|
|
|
|
|
|
"leave": "Leave server",
|
|
|
|
|
|
"leaveConfirm": "Leave the server “{{name}}”?",
|
|
|
|
|
|
"switchTo": "Open server {{name}}"
|
|
|
|
|
|
},
|
|
|
|
|
|
"channels": {
|
|
|
|
|
|
"title": "Channels",
|
|
|
|
|
|
"text": "Text channels",
|
|
|
|
|
|
"voice": "Voice channels",
|
|
|
|
|
|
"category": "Category",
|
|
|
|
|
|
"empty": "This server has no visible channels yet.",
|
|
|
|
|
|
"select": "Open channel {{name}}",
|
|
|
|
|
|
"add": "Create a channel",
|
2026-09-19 23:33:59 +03:00
|
|
|
|
"settings": "Server settings",
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"create": {
|
|
|
|
|
|
"title": "New channel",
|
|
|
|
|
|
"name": "Channel name",
|
|
|
|
|
|
"namePlaceholder": "for example, general",
|
|
|
|
|
|
"type": "Channel type",
|
|
|
|
|
|
"typeText": "Text",
|
|
|
|
|
|
"typeVoice": "Voice",
|
|
|
|
|
|
"parent": "Category",
|
|
|
|
|
|
"noParent": "No category",
|
|
|
|
|
|
"submit": "Create"
|
|
|
|
|
|
},
|
|
|
|
|
|
"chatPlaceholder": {
|
|
|
|
|
|
"title": "Chat arrives in Phase 2",
|
|
|
|
|
|
"body": "The channel “{{name}}” is ready. Messages and voice arrive in the next phase."
|
|
|
|
|
|
},
|
|
|
|
|
|
"noSelection": {
|
|
|
|
|
|
"title": "Pick a channel",
|
|
|
|
|
|
"body": "The server and channel lists are on the left. Pick a channel to open it."
|
|
|
|
|
|
},
|
|
|
|
|
|
"notInGuild": {
|
|
|
|
|
|
"title": "Server unavailable",
|
|
|
|
|
|
"body": "Looks like you are not a member of this server."
|
2026-09-20 00:15:18 +03:00
|
|
|
|
},
|
|
|
|
|
|
"selectUnread": "Open channel {{name}}, {{count}} unread",
|
|
|
|
|
|
"selectMentions": "Open channel {{name}}, {{count}} mentions",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"slowmode": "slowmode {{seconds}}s",
|
|
|
|
|
|
"leaveHint": "You can leave the server in server settings → “Danger zone”."
|
2026-09-20 00:15:18 +03:00
|
|
|
|
},
|
2026-09-20 18:38:54 +03:00
|
|
|
|
"voice": {
|
|
|
|
|
|
"title": "Voice room",
|
|
|
|
|
|
"join": "Join",
|
|
|
|
|
|
"joining": "Connecting…",
|
|
|
|
|
|
"connected": "Connected",
|
|
|
|
|
|
"reconnecting": "Reconnecting…",
|
|
|
|
|
|
"refreshing": "Renewing session…",
|
|
|
|
|
|
"disconnect": "Disconnect",
|
|
|
|
|
|
"disabled": "Voice is not configured on this instance",
|
|
|
|
|
|
"empty": "Nobody is in the room yet",
|
|
|
|
|
|
"you": "You",
|
|
|
|
|
|
"speaking": "Speaking",
|
|
|
|
|
|
"muted": "Microphone is off",
|
|
|
|
|
|
"soundOn": "Sound is on",
|
|
|
|
|
|
"deafened": "Sound is off",
|
|
|
|
|
|
"cameraOn": "Camera is on",
|
|
|
|
|
|
"screenOn": "Screen sharing",
|
|
|
|
|
|
"serverMuted": "Microphone was muted by a moderator",
|
|
|
|
|
|
"serverDeafened": "Sound was muted by a moderator",
|
|
|
|
|
|
"speakingWhileMuted": "You are speaking while muted",
|
|
|
|
|
|
"volume": "Participant volume",
|
|
|
|
|
|
"controls": "Voice controls",
|
|
|
|
|
|
"channelParticipants": "Participants of “{{name}}”",
|
|
|
|
|
|
"mic": {
|
|
|
|
|
|
"on": "Unmute microphone",
|
|
|
|
|
|
"off": "Mute microphone"
|
|
|
|
|
|
},
|
|
|
|
|
|
"sound": {
|
|
|
|
|
|
"on": "Unmute sound",
|
|
|
|
|
|
"off": "Mute sound"
|
|
|
|
|
|
},
|
|
|
|
|
|
"camera": {
|
|
|
|
|
|
"on": "Turn camera on",
|
|
|
|
|
|
"off": "Turn camera off"
|
|
|
|
|
|
},
|
|
|
|
|
|
"screen": {
|
|
|
|
|
|
"on": "Start screen sharing",
|
2026-09-20 19:30:43 +03:00
|
|
|
|
"off": "Stop screen sharing",
|
|
|
|
|
|
"quality": "Screen share quality",
|
|
|
|
|
|
"presets": {
|
|
|
|
|
|
"1080p60": "1080p · 60 fps",
|
|
|
|
|
|
"1080p30": "1080p · 30 fps",
|
|
|
|
|
|
"720p30": "720p · 30 fps",
|
|
|
|
|
|
"480p30": "480p · 30 fps"
|
|
|
|
|
|
}
|
2026-09-20 18:38:54 +03:00
|
|
|
|
},
|
|
|
|
|
|
"quality": {
|
|
|
|
|
|
"excellent": "Excellent connection",
|
|
|
|
|
|
"good": "Good connection",
|
|
|
|
|
|
"poor": "Poor connection",
|
|
|
|
|
|
"lost": "Connection lost",
|
|
|
|
|
|
"unknown": "Connecting"
|
|
|
|
|
|
},
|
|
|
|
|
|
"menu": {
|
|
|
|
|
|
"label": "Participant {{name}}",
|
|
|
|
|
|
"moderation": "Moderation",
|
|
|
|
|
|
"mute": "Server mute",
|
|
|
|
|
|
"unmute": "Remove server mute",
|
|
|
|
|
|
"deafen": "Server deafen",
|
|
|
|
|
|
"undeafen": "Remove server deafen",
|
|
|
|
|
|
"move": "Move",
|
|
|
|
|
|
"moveTo": "Move to “{{name}}”"
|
|
|
|
|
|
},
|
|
|
|
|
|
"channelMenu": {
|
|
|
|
|
|
"label": "Voice room {{name}}"
|
2026-09-20 19:30:43 +03:00
|
|
|
|
},
|
|
|
|
|
|
"soundboard": {
|
|
|
|
|
|
"title": "Soundboard",
|
|
|
|
|
|
"open": "Open the soundboard",
|
|
|
|
|
|
"searchLabel": "Search sounds",
|
|
|
|
|
|
"searchPlaceholder": "Sound name",
|
|
|
|
|
|
"empty": "This server has no soundboard sounds yet.",
|
|
|
|
|
|
"noResults": "Nothing found.",
|
|
|
|
|
|
"playLabel": "Play the sound {{name}}",
|
|
|
|
|
|
"rateLimited": "Too fast: try again in {{seconds}} s.",
|
|
|
|
|
|
"notConnected": "Join a voice channel first.",
|
|
|
|
|
|
"playedBy": "{{name}} played «{{sound}}»"
|
|
|
|
|
|
},
|
|
|
|
|
|
"stats": {
|
|
|
|
|
|
"title": "Statistics",
|
|
|
|
|
|
"open": "Open connection statistics",
|
|
|
|
|
|
"resolution": "Resolution",
|
|
|
|
|
|
"frameRate": "Frame rate",
|
|
|
|
|
|
"codec": "Codec",
|
|
|
|
|
|
"bitrate": "Bitrate",
|
|
|
|
|
|
"kbps": "kbps",
|
|
|
|
|
|
"ms": "ms",
|
|
|
|
|
|
"rtt": "Round-trip time",
|
|
|
|
|
|
"packetLoss": "Packet loss",
|
|
|
|
|
|
"jitter": "Jitter"
|
|
|
|
|
|
},
|
|
|
|
|
|
"publishQuality": {
|
|
|
|
|
|
"label": "Video quality",
|
|
|
|
|
|
"short": {
|
|
|
|
|
|
"low": "Low",
|
|
|
|
|
|
"medium": "Medium",
|
|
|
|
|
|
"high": "High"
|
|
|
|
|
|
},
|
|
|
|
|
|
"level": {
|
|
|
|
|
|
"low": "Low quality",
|
|
|
|
|
|
"medium": "Medium quality",
|
|
|
|
|
|
"high": "High quality"
|
|
|
|
|
|
}
|
2026-09-20 22:10:17 +03:00
|
|
|
|
},
|
|
|
|
|
|
"latency": "{{ms}} ms",
|
|
|
|
|
|
"latencyHint": "Participant ping to the instance",
|
|
|
|
|
|
"latencyUnknown": "ping unknown"
|
2026-09-20 18:38:54 +03:00
|
|
|
|
},
|
2026-09-20 01:39:04 +03:00
|
|
|
|
"friends": {
|
|
|
|
|
|
"rail": "Friends",
|
|
|
|
|
|
"title": "Friends",
|
|
|
|
|
|
"sidebarLabel": "Friends and direct messages",
|
|
|
|
|
|
"sidebarHint": "Direct messages live here — they are not in the server rail.",
|
|
|
|
|
|
"dmSection": "Direct messages",
|
|
|
|
|
|
"dmEmpty": "No direct messages yet.",
|
|
|
|
|
|
"friendsSection": "Friends",
|
|
|
|
|
|
"friendsEmpty": "Your friend list is empty.",
|
|
|
|
|
|
"open": "Open a conversation with {{name}}",
|
|
|
|
|
|
"empty": {
|
|
|
|
|
|
"title": "Add friends to start talking",
|
|
|
|
|
|
"body": "Find someone by username and send a friend request — a direct conversation appears once it is accepted.",
|
|
|
|
|
|
"search": "Find friends"
|
|
|
|
|
|
},
|
|
|
|
|
|
"search": {
|
|
|
|
|
|
"title": "Friend search",
|
|
|
|
|
|
"close": "Close search",
|
|
|
|
|
|
"label": "Search by username",
|
|
|
|
|
|
"placeholder": "Enter a username",
|
|
|
|
|
|
"hint": "Type at least 2 characters.",
|
|
|
|
|
|
"empty": "Nobody found.",
|
|
|
|
|
|
"add": "Add friend",
|
|
|
|
|
|
"adding": "Sending…",
|
|
|
|
|
|
"requested": "Request sent",
|
|
|
|
|
|
"friend": "Already friends",
|
2026-09-20 01:52:27 +03:00
|
|
|
|
"message": "Message",
|
|
|
|
|
|
"open": "Search friends"
|
2026-09-20 01:39:04 +03:00
|
|
|
|
},
|
|
|
|
|
|
"requests": {
|
|
|
|
|
|
"incoming": "Incoming requests",
|
|
|
|
|
|
"outgoing": "Outgoing requests",
|
|
|
|
|
|
"accept": "Accept",
|
|
|
|
|
|
"decline": "Decline",
|
|
|
|
|
|
"cancel": "Cancel"
|
|
|
|
|
|
},
|
|
|
|
|
|
"list": {
|
|
|
|
|
|
"label": "Friend list",
|
|
|
|
|
|
"message": "Message",
|
|
|
|
|
|
"more": "Actions: {{name}}",
|
|
|
|
|
|
"menu": "Actions for {{name}}",
|
|
|
|
|
|
"remove": "Remove friend",
|
2026-09-20 11:24:09 +03:00
|
|
|
|
"block": "Block",
|
|
|
|
|
|
"toggle": "Friends ({{count}})"
|
2026-09-20 01:39:04 +03:00
|
|
|
|
},
|
|
|
|
|
|
"lastSeen": {
|
|
|
|
|
|
"label": "Last seen",
|
|
|
|
|
|
"online": "Online now",
|
|
|
|
|
|
"unknown": "Offline for a while",
|
|
|
|
|
|
"at": "Last seen: {{time}}"
|
|
|
|
|
|
},
|
|
|
|
|
|
"dm": {
|
|
|
|
|
|
"unknown": "Recipient",
|
|
|
|
|
|
"notFound": {
|
|
|
|
|
|
"title": "Conversation unavailable",
|
|
|
|
|
|
"body": "This direct conversation was not found: it may be deleted or closed to you."
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
"invites": {
|
|
|
|
|
|
"title": "Join with an invite",
|
|
|
|
|
|
"hint": "Paste a code or a link like https://<domain>/invite/<code>.",
|
|
|
|
|
|
"label": "Invite code or link",
|
|
|
|
|
|
"placeholder": "e.g. ab12cd or https://example.com/invite/ab12cd",
|
|
|
|
|
|
"invalid": "Could not recognise the invite code.",
|
|
|
|
|
|
"join": "Join",
|
|
|
|
|
|
"joining": "Joining…",
|
|
|
|
|
|
"members": "Members: {{count}}",
|
|
|
|
|
|
"alreadyMember": "You are already on this server"
|
|
|
|
|
|
},
|
2026-09-20 00:15:18 +03:00
|
|
|
|
"chat": {
|
|
|
|
|
|
"log": "Message log of {{name}}",
|
|
|
|
|
|
"loadMore": "Load more",
|
|
|
|
|
|
"loadingMore": "Loading…",
|
|
|
|
|
|
"today": "Today",
|
|
|
|
|
|
"yesterday": "Yesterday",
|
|
|
|
|
|
"edited": "(edited)",
|
|
|
|
|
|
"pending": "sending…",
|
|
|
|
|
|
"newMessages": "New messages",
|
|
|
|
|
|
"adminBadge": "admin",
|
2026-09-20 12:06:22 +03:00
|
|
|
|
"types": {
|
|
|
|
|
|
"whisper": "whisper",
|
|
|
|
|
|
"scream": "loud",
|
|
|
|
|
|
"private": "private",
|
|
|
|
|
|
"system": "System message"
|
|
|
|
|
|
},
|
2026-09-20 00:15:18 +03:00
|
|
|
|
"unknownAuthor": "unknown",
|
|
|
|
|
|
"start": {
|
|
|
|
|
|
"title": "This is the start of #{{name}}",
|
2026-09-20 01:39:04 +03:00
|
|
|
|
"body": "There are no messages here yet. Say something — everyone in the channel will see it.",
|
|
|
|
|
|
"directTitle": "This is the beginning of your conversation with {{name}}",
|
|
|
|
|
|
"directBody": "No messages here yet. Say hello first."
|
2026-09-20 00:15:18 +03:00
|
|
|
|
},
|
|
|
|
|
|
"message": {
|
|
|
|
|
|
"by": "Message from {{name}} in {{channel}}",
|
|
|
|
|
|
"sentAt": "Sent {{time}}"
|
|
|
|
|
|
},
|
|
|
|
|
|
"reply": {
|
|
|
|
|
|
"to": "reply to {{name}}",
|
|
|
|
|
|
"missing": "deleted message",
|
|
|
|
|
|
"composer": "Replying to {{name}}",
|
|
|
|
|
|
"cancel": "Cancel reply"
|
|
|
|
|
|
},
|
|
|
|
|
|
"actions": {
|
|
|
|
|
|
"menu": "Message actions",
|
|
|
|
|
|
"reply": "Reply",
|
|
|
|
|
|
"react": "Add reaction",
|
|
|
|
|
|
"pin": "Pin",
|
|
|
|
|
|
"unpin": "Unpin",
|
|
|
|
|
|
"edit": "Edit",
|
|
|
|
|
|
"delete": "Delete",
|
|
|
|
|
|
"deleteConfirm": "Delete this message?",
|
|
|
|
|
|
"copy": "Copy text"
|
|
|
|
|
|
},
|
|
|
|
|
|
"reactions": {
|
|
|
|
|
|
"title": "Reactions",
|
|
|
|
|
|
"add": "React with {{emoji}}",
|
|
|
|
|
|
"toggle": "Reaction {{emoji}}: {{count}}"
|
|
|
|
|
|
},
|
|
|
|
|
|
"emoji": {
|
|
|
|
|
|
"title": "Emoji picker",
|
|
|
|
|
|
"quick": "Quick reactions",
|
|
|
|
|
|
"popular": "Popular emoji",
|
2026-09-20 18:13:04 +03:00
|
|
|
|
"pick": "React with {{emoji}}",
|
|
|
|
|
|
"server": "Server emojis",
|
|
|
|
|
|
"search": "Search server emojis",
|
|
|
|
|
|
"searchPlaceholder": "Emoji name",
|
|
|
|
|
|
"notFound": "Nothing found.",
|
|
|
|
|
|
"pickServer": "Pick emoji {{name}}",
|
|
|
|
|
|
"animated": "animated"
|
2026-09-20 00:15:18 +03:00
|
|
|
|
},
|
|
|
|
|
|
"edit": {
|
|
|
|
|
|
"label": "Edit message",
|
|
|
|
|
|
"hint": "Enter to save, Escape to cancel",
|
|
|
|
|
|
"save": "Save",
|
|
|
|
|
|
"cancel": "Cancel"
|
|
|
|
|
|
},
|
|
|
|
|
|
"composer": {
|
|
|
|
|
|
"label": "Message to {{name}}",
|
|
|
|
|
|
"placeholder": "Message #{{name}}",
|
|
|
|
|
|
"send": "Send",
|
|
|
|
|
|
"hint": "Enter to send, Shift+Enter for a new line",
|
|
|
|
|
|
"attach": "Attach a file",
|
|
|
|
|
|
"fileInput": "Choose files",
|
|
|
|
|
|
"uploading": "Uploading attachments…",
|
|
|
|
|
|
"attachments": "Message attachments",
|
|
|
|
|
|
"removeAttachment": "Remove attachment {{name}}",
|
|
|
|
|
|
"counter": "{{count}}/{{max}}",
|
|
|
|
|
|
"tooLarge": "File “{{name}}” exceeds the {{limit}} limit",
|
|
|
|
|
|
"rateLimited": "Too many messages. You can send again in {{seconds}} s.",
|
|
|
|
|
|
"denied": "You are not allowed to send messages in this channel.",
|
2026-09-20 01:39:04 +03:00
|
|
|
|
"readOnly": "This channel is read-only for you.",
|
|
|
|
|
|
"directLabel": "Message to {{name}}",
|
2026-09-20 12:06:22 +03:00
|
|
|
|
"directPlaceholder": "Message {{name}}",
|
|
|
|
|
|
"autocomplete": {
|
|
|
|
|
|
"hint": "↑/↓ — select, Enter — insert, Escape — close",
|
|
|
|
|
|
"mentions": "Server members",
|
|
|
|
|
|
"channels": "Server channels",
|
|
|
|
|
|
"emoji": "Emoji",
|
|
|
|
|
|
"commands": "Commands"
|
|
|
|
|
|
},
|
|
|
|
|
|
"commands": {
|
|
|
|
|
|
"me": "action: name and italic text",
|
|
|
|
|
|
"whisper": "whisper: muted message",
|
|
|
|
|
|
"scream": "loud: large accented text",
|
|
|
|
|
|
"ls": "direct message: /ls username text"
|
2026-09-20 18:13:04 +03:00
|
|
|
|
},
|
|
|
|
|
|
"emoji": "Emoji"
|
2026-09-20 00:15:18 +03:00
|
|
|
|
},
|
|
|
|
|
|
"typing_one": "{{names}} is typing…",
|
|
|
|
|
|
"typing_few": "{{names}} are typing…",
|
|
|
|
|
|
"typing_many": "{{names}} are typing…",
|
|
|
|
|
|
"typing_other": "{{names}} are typing…",
|
|
|
|
|
|
"pins": {
|
|
|
|
|
|
"open": "Pinned messages",
|
|
|
|
|
|
"title": "Pinned in #{{name}}",
|
|
|
|
|
|
"empty": "No pinned messages in this channel yet.",
|
|
|
|
|
|
"jump": "Jump"
|
|
|
|
|
|
},
|
|
|
|
|
|
"search": {
|
|
|
|
|
|
"open": "Search this channel",
|
|
|
|
|
|
"title": "Message search",
|
|
|
|
|
|
"label": "Search field",
|
|
|
|
|
|
"placeholder": "Search messages",
|
|
|
|
|
|
"hint": "Type at least two characters.",
|
|
|
|
|
|
"empty": "Nothing found."
|
|
|
|
|
|
},
|
|
|
|
|
|
"unread": "Unread messages: {{count}}",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"mentions": "Mentions: {{count}}",
|
|
|
|
|
|
"spoiler": {
|
|
|
|
|
|
"show": "Reveal spoiler",
|
|
|
|
|
|
"hide": "Hide spoiler"
|
2026-09-20 01:39:04 +03:00
|
|
|
|
},
|
2026-09-20 18:13:04 +03:00
|
|
|
|
"logDirect": "Direct conversation with {{name}}",
|
|
|
|
|
|
"system": {
|
|
|
|
|
|
"member": "a member",
|
|
|
|
|
|
"memberJoin": "{{name}} joined the server",
|
|
|
|
|
|
"memberKick": "{{name}} left the server (kicked)",
|
|
|
|
|
|
"channelCreated": "Room #{{name}} created",
|
2026-09-20 19:30:43 +03:00
|
|
|
|
"voiceChannelCreated": "Voice room {{name}} created",
|
|
|
|
|
|
"memberLeave": "{{name}} left the server"
|
2026-09-20 18:13:04 +03:00
|
|
|
|
}
|
2026-09-19 21:50:06 +03:00
|
|
|
|
},
|
|
|
|
|
|
"user": {
|
|
|
|
|
|
"panelLabel": "User panel",
|
|
|
|
|
|
"settings": "User settings",
|
2026-09-19 23:33:59 +03:00
|
|
|
|
"menu": {
|
|
|
|
|
|
"label": "User menu",
|
|
|
|
|
|
"open": "Open the user menu",
|
|
|
|
|
|
"account": "Account settings",
|
|
|
|
|
|
"guilds": "Server settings",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"status": "Status",
|
|
|
|
|
|
"noBio": "No bio yet."
|
2026-09-19 23:33:59 +03:00
|
|
|
|
},
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"logout": "Sign out",
|
|
|
|
|
|
"loggingOut": "Signing out…",
|
|
|
|
|
|
"statusLabel": "Status: {{status}}",
|
|
|
|
|
|
"status": {
|
|
|
|
|
|
"online": "Online",
|
|
|
|
|
|
"idle": "Idle",
|
|
|
|
|
|
"dnd": "Do not disturb",
|
|
|
|
|
|
"invisible": "Invisible",
|
|
|
|
|
|
"offline": "Offline"
|
2026-09-20 01:32:11 +03:00
|
|
|
|
},
|
|
|
|
|
|
"voice": {
|
|
|
|
|
|
"input": "Input device",
|
|
|
|
|
|
"output": "Output device",
|
|
|
|
|
|
"camera": "Camera",
|
|
|
|
|
|
"micVolume": "Microphone volume",
|
|
|
|
|
|
"outputVolume": "Sound volume",
|
|
|
|
|
|
"micOn": "Unmute microphone",
|
|
|
|
|
|
"micOff": "Mute microphone",
|
|
|
|
|
|
"cameraOn": "Turn camera on",
|
|
|
|
|
|
"cameraOff": "Turn camera off",
|
|
|
|
|
|
"soundOn": "Undeafen",
|
|
|
|
|
|
"soundOff": "Deafen",
|
|
|
|
|
|
"micSettings": "Microphone settings",
|
|
|
|
|
|
"cameraSettings": "Camera settings",
|
|
|
|
|
|
"soundSettings": "Sound settings",
|
|
|
|
|
|
"audioSettings": "Audio & video settings"
|
|
|
|
|
|
},
|
|
|
|
|
|
"devices": {
|
|
|
|
|
|
"default": "Default device",
|
|
|
|
|
|
"unavailable": "Devices are unavailable",
|
|
|
|
|
|
"empty": "No devices found",
|
|
|
|
|
|
"unnamed": "Device {{index}}"
|
2026-09-19 21:50:06 +03:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
"gateway": {
|
|
|
|
|
|
"label": "Connection",
|
|
|
|
|
|
"status": {
|
|
|
|
|
|
"idle": "Not connected",
|
|
|
|
|
|
"connecting": "Connecting…",
|
|
|
|
|
|
"connected": "Connected",
|
|
|
|
|
|
"reconnecting": "Reconnecting…",
|
|
|
|
|
|
"disconnected": "Connection lost"
|
|
|
|
|
|
},
|
|
|
|
|
|
"invalidated": "The server closed the session. Sign in again."
|
|
|
|
|
|
},
|
|
|
|
|
|
"settings": {
|
|
|
|
|
|
"title": "Settings",
|
|
|
|
|
|
"back": "Back to app",
|
2026-09-19 23:33:59 +03:00
|
|
|
|
"switcher": {
|
|
|
|
|
|
"label": "Settings sections",
|
|
|
|
|
|
"account": "Server settings",
|
|
|
|
|
|
"servers": "My servers"
|
|
|
|
|
|
},
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"tabs": {
|
|
|
|
|
|
"label": "Settings sections",
|
|
|
|
|
|
"profile": "Profile",
|
|
|
|
|
|
"security": "Security",
|
|
|
|
|
|
"appearance": "Appearance",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"notifications": "Notifications",
|
2026-09-20 11:24:09 +03:00
|
|
|
|
"server": "Server",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"voice": "Audio & video",
|
|
|
|
|
|
"language": "Language & region",
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"instance": "Instance"
|
|
|
|
|
|
},
|
|
|
|
|
|
"profile": {
|
2026-09-20 11:24:09 +03:00
|
|
|
|
"avatar.change": "Change avatar",
|
|
|
|
|
|
"avatar.uploading": "Uploading…",
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"title": "Profile",
|
|
|
|
|
|
"description": "How other members see you.",
|
|
|
|
|
|
"displayName": "Display name",
|
|
|
|
|
|
"bio": "About me",
|
|
|
|
|
|
"bioPlaceholder": "A few words about you",
|
|
|
|
|
|
"customStatus": "Custom status",
|
|
|
|
|
|
"customStatusPlaceholder": "For example, “Writing code”",
|
|
|
|
|
|
"customStatusEmoji": "Status emoji",
|
|
|
|
|
|
"customStatusEmojiPlaceholder": "🚀",
|
|
|
|
|
|
"saved": "Profile saved.",
|
|
|
|
|
|
"username": "Username",
|
|
|
|
|
|
"badges": "Badges",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"noBadges": "none",
|
|
|
|
|
|
"tabsLabel": "Profile tabs",
|
|
|
|
|
|
"tabs": {
|
|
|
|
|
|
"main": "General",
|
|
|
|
|
|
"server": "Server"
|
|
|
|
|
|
},
|
|
|
|
|
|
"timezoneDefault": "default (MSK)",
|
|
|
|
|
|
"avatar": {
|
2026-09-20 11:24:09 +03:00
|
|
|
|
"change": "Change avatar",
|
|
|
|
|
|
"choose": "Choose avatar file",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"remove": "Remove avatar",
|
2026-09-20 11:24:09 +03:00
|
|
|
|
"formats": "JPEG, PNG, WebP, GIF",
|
|
|
|
|
|
"limit": "{{formats}} up to {{limit}}",
|
|
|
|
|
|
"tooLarge": "The file is larger than {{limit}} — pick a smaller image.",
|
|
|
|
|
|
"uploading": "Uploading…"
|
2026-09-20 01:32:11 +03:00
|
|
|
|
},
|
|
|
|
|
|
"decorations": {
|
|
|
|
|
|
"title": "Decorations",
|
|
|
|
|
|
"hint": "Profile badges and frames.",
|
|
|
|
|
|
"empty": "No decorations yet.",
|
|
|
|
|
|
"stub": "Badges, frames and profile effects are coming later."
|
|
|
|
|
|
}
|
2026-09-19 21:50:06 +03:00
|
|
|
|
},
|
|
|
|
|
|
"security": {
|
|
|
|
|
|
"title": "Security",
|
|
|
|
|
|
"description": "Password, active sessions and two-factor authentication.",
|
|
|
|
|
|
"passwordTitle": "Change password",
|
|
|
|
|
|
"currentPassword": "Current password",
|
|
|
|
|
|
"newPassword": "New password",
|
|
|
|
|
|
"confirmPassword": "Repeat the new password",
|
|
|
|
|
|
"submitPassword": "Change password",
|
|
|
|
|
|
"passwordChanged": "Password changed.",
|
|
|
|
|
|
"stepUpTitle": "Confirm your identity",
|
|
|
|
|
|
"stepUpBody": "The server requires your password again for this action{{totp}}.",
|
|
|
|
|
|
"stepUpTotp": " and a 2FA code",
|
|
|
|
|
|
"stepUpSubmit": "Confirm",
|
|
|
|
|
|
"stepUpSuccess": "Identity confirmed.",
|
|
|
|
|
|
"stepUpExpired": "The confirmation expired, enter your password again.",
|
|
|
|
|
|
"stepUpPassword": "Your password",
|
|
|
|
|
|
"sessionsTitle": "Active sessions",
|
|
|
|
|
|
"sessionsEmpty": "No active sessions.",
|
|
|
|
|
|
"sessionCurrent": "current",
|
|
|
|
|
|
"sessionCreated": "Created",
|
|
|
|
|
|
"sessionSeen": "Last seen",
|
|
|
|
|
|
"sessionIp": "IP",
|
|
|
|
|
|
"sessionAgent": "Device",
|
|
|
|
|
|
"unknownAgent": "Unknown device",
|
|
|
|
|
|
"logoutAll": "Sign out everywhere",
|
|
|
|
|
|
"logoutAllConfirm": "End all sessions, including this one?",
|
|
|
|
|
|
"logoutAllDone": "All sessions have been ended.",
|
|
|
|
|
|
"twoFactorTitle": "Two-factor authentication",
|
|
|
|
|
|
"twoFactorEnabled": "2FA is on",
|
|
|
|
|
|
"twoFactorDisabled": "2FA is off",
|
|
|
|
|
|
"twoFactorEnable": "Enable 2FA",
|
|
|
|
|
|
"twoFactorSetupHint": "Add the secret to your authenticator app, then enter the six-digit code.",
|
|
|
|
|
|
"twoFactorSecret": "Secret",
|
|
|
|
|
|
"twoFactorUri": "otpauth link",
|
|
|
|
|
|
"twoFactorQrAlt": "QR code for 2FA setup",
|
|
|
|
|
|
"twoFactorQrUnavailable": "The QR code is unavailable — add the secret manually.",
|
|
|
|
|
|
"twoFactorCode": "Code from the app",
|
|
|
|
|
|
"twoFactorConfirm": "Enable",
|
|
|
|
|
|
"twoFactorEnabledDone": "2FA is enabled. Save your recovery codes.",
|
|
|
|
|
|
"recoveryTitle": "Recovery codes",
|
|
|
|
|
|
"recoveryHint": "Every code works once. They are shown only once.",
|
|
|
|
|
|
"recoveryCopyAll": "Copy all codes"
|
|
|
|
|
|
},
|
|
|
|
|
|
"appearance": {
|
|
|
|
|
|
"title": "Appearance",
|
|
|
|
|
|
"description": "Interface theme and language. Stored locally in your browser.",
|
|
|
|
|
|
"theme": "Theme",
|
|
|
|
|
|
"themeHint": "The dark theme is on by default.",
|
|
|
|
|
|
"language": "Language",
|
|
|
|
|
|
"languageHint": "Russian is the primary interface language."
|
|
|
|
|
|
},
|
|
|
|
|
|
"instance": {
|
|
|
|
|
|
"title": "Instance",
|
|
|
|
|
|
"description": "Instance admin only. Read-only data.",
|
|
|
|
|
|
"notAdmin": "This section is available to the instance admin only.",
|
|
|
|
|
|
"settings": "Instance settings",
|
|
|
|
|
|
"settingsEmpty": "No settings configured.",
|
|
|
|
|
|
"guilds": "Servers ({{count}})",
|
|
|
|
|
|
"guildsEmpty": "No servers.",
|
2026-09-20 11:24:09 +03:00
|
|
|
|
"userId": "User ID",
|
2026-09-19 21:50:06 +03:00
|
|
|
|
"users": "Users ({{count}})",
|
|
|
|
|
|
"usersEmpty": "No users.",
|
|
|
|
|
|
"audit": "Audit log (last {{count}})",
|
|
|
|
|
|
"auditEmpty": "No entries.",
|
|
|
|
|
|
"memberCount": "{{count}} members",
|
|
|
|
|
|
"adminBadge": "admin",
|
2026-09-20 11:24:09 +03:00
|
|
|
|
"mainBadge": "main",
|
2026-09-20 21:26:25 +03:00
|
|
|
|
"usersIdHint": "User IDs are visible to the instance administrator only.",
|
|
|
|
|
|
"dashboard": {
|
|
|
|
|
|
"title": "Server dashboard",
|
|
|
|
|
|
"refreshHint": "updates every second",
|
|
|
|
|
|
"cpu": "CPU",
|
|
|
|
|
|
"cpuCaption_one": "{{count}} core",
|
|
|
|
|
|
"cpuCaption_few": "{{count}} cores",
|
|
|
|
|
|
"cpuCaption_many": "{{count}} cores",
|
|
|
|
|
|
"cpuCaption_other": "{{count}} cores",
|
|
|
|
|
|
"memory": "Memory",
|
|
|
|
|
|
"diskHint": "Disk: used / total. {{free}} free",
|
2026-09-20 22:10:17 +03:00
|
|
|
|
"databaseHint": "Database: main file and WAL ({{wal}})",
|
|
|
|
|
|
"containerRow": "Instance container",
|
|
|
|
|
|
"containerHint": "Profile limits",
|
|
|
|
|
|
"hostRow": "Whole server",
|
|
|
|
|
|
"hostHint": "Entire machine"
|
2026-09-20 21:26:25 +03:00
|
|
|
|
},
|
|
|
|
|
|
"health": {
|
|
|
|
|
|
"title": "Instance healthcheck",
|
|
|
|
|
|
"collecting": "Collecting data…",
|
|
|
|
|
|
"unavailable": "The instance does not answer dashboard requests.",
|
|
|
|
|
|
"ping": "Ping",
|
|
|
|
|
|
"pingValue": "{{ms}} ms",
|
|
|
|
|
|
"pingUnavailable": "—",
|
|
|
|
|
|
"pingHint": "Instance response time for a dashboard request",
|
|
|
|
|
|
"summary": {
|
|
|
|
|
|
"ok": "All good",
|
|
|
|
|
|
"warn": "Warnings",
|
|
|
|
|
|
"failed": "Errors"
|
|
|
|
|
|
},
|
|
|
|
|
|
"status": {
|
|
|
|
|
|
"ok": "running",
|
|
|
|
|
|
"warn": "warning",
|
|
|
|
|
|
"failed": "failed",
|
|
|
|
|
|
"off": "disabled"
|
|
|
|
|
|
},
|
|
|
|
|
|
"checks": {
|
|
|
|
|
|
"app": "Application",
|
|
|
|
|
|
"database": "Database",
|
|
|
|
|
|
"disk": "Disk",
|
|
|
|
|
|
"storage": "Data writes",
|
|
|
|
|
|
"voice": "Voice (SFU)",
|
|
|
|
|
|
"gateway": "Gateway",
|
|
|
|
|
|
"metrics": "Metrics"
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-09-19 23:33:59 +03:00
|
|
|
|
},
|
|
|
|
|
|
"servers": {
|
|
|
|
|
|
"pickerLabel": "My servers",
|
|
|
|
|
|
"empty": "You have no servers yet.",
|
|
|
|
|
|
"emptyTitle": "No servers yet",
|
|
|
|
|
|
"emptyHint": "Join the instance main server or create your own — its settings will show up here.",
|
|
|
|
|
|
"select": "Open settings of the server {{name}}",
|
|
|
|
|
|
"notFound": "The server was not found among the ones you can access.",
|
|
|
|
|
|
"readOnlyHint": "Only the owner and members with ADMINISTRATOR or MANAGE_GUILD can edit this.",
|
|
|
|
|
|
"general": {
|
|
|
|
|
|
"title": "General",
|
|
|
|
|
|
"description": "Every member sees the server name and description.",
|
|
|
|
|
|
"name": "Server name",
|
|
|
|
|
|
"guildDescription": "Description",
|
|
|
|
|
|
"descriptionPlaceholder": "What this server is about",
|
|
|
|
|
|
"saved": "Server settings saved."
|
|
|
|
|
|
},
|
|
|
|
|
|
"nickname": {
|
|
|
|
|
|
"title": "My profile on this server",
|
|
|
|
|
|
"description": "The nickname is visible on this server only.",
|
|
|
|
|
|
"label": "Nickname",
|
|
|
|
|
|
"placeholder": "Leave empty to reset the nickname",
|
|
|
|
|
|
"current": "Current nickname:",
|
|
|
|
|
|
"none": "not set",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"saved": "Nickname saved.",
|
|
|
|
|
|
"applyAll": "Apply to all servers",
|
|
|
|
|
|
"applyAllHint": "One nickname for every server you are in.",
|
|
|
|
|
|
"applyAllPending": "Applying…",
|
|
|
|
|
|
"applyAllProgress": "Servers updated: {{done}} of {{total}}",
|
|
|
|
|
|
"applyAllDone": "Nickname applied on all servers ({{total}}).",
|
|
|
|
|
|
"applyAllFailed": "Failed to update servers: {{failed}}."
|
2026-09-19 23:33:59 +03:00
|
|
|
|
},
|
|
|
|
|
|
"members": {
|
|
|
|
|
|
"title": "Members",
|
|
|
|
|
|
"description": "The first {{limit}} members of the server.",
|
|
|
|
|
|
"empty": "No members found.",
|
|
|
|
|
|
"roles": "Roles: {{roles}}",
|
|
|
|
|
|
"more": "The full member list with roles arrives in the next phases."
|
|
|
|
|
|
},
|
|
|
|
|
|
"roles": {
|
|
|
|
|
|
"title": "Roles",
|
|
|
|
|
|
"description": "Role colour and position. Role management arrives in the next phases.",
|
|
|
|
|
|
"empty": "This server has no roles yet.",
|
|
|
|
|
|
"position": "Position {{position}}",
|
|
|
|
|
|
"default": "default"
|
|
|
|
|
|
},
|
|
|
|
|
|
"danger": {
|
|
|
|
|
|
"title": "Danger zone",
|
|
|
|
|
|
"description": "These actions cannot be undone.",
|
|
|
|
|
|
"leaveOwnerHint": "The owner cannot leave their own server: transfer ownership or delete the server first.",
|
|
|
|
|
|
"leaveHint": "Leave the server and lose access to its channels.",
|
|
|
|
|
|
"leave": "Leave server",
|
|
|
|
|
|
"leaveConfirmTitle": "Leave the server?",
|
|
|
|
|
|
"leaveConfirmBody": "You will leave “{{name}}”. You can come back with an invite.",
|
|
|
|
|
|
"leaveConfirm": "Leave",
|
|
|
|
|
|
"deleteHint": "Delete the server together with its channels, roles and members.",
|
|
|
|
|
|
"delete": "Delete server",
|
|
|
|
|
|
"deleteConfirmTitle": "Delete the server?",
|
|
|
|
|
|
"deleteConfirmBody": "“{{name}}” will be deleted permanently.",
|
|
|
|
|
|
"deleteConfirm": "Delete"
|
2026-09-20 01:32:11 +03:00
|
|
|
|
},
|
2026-09-20 18:13:04 +03:00
|
|
|
|
"selectLabel": "Choose a server",
|
|
|
|
|
|
"emojis": {
|
|
|
|
|
|
"title": "Emojis",
|
|
|
|
|
|
"description": "Custom server emojis: up to {{limit}}, 512 KB each.",
|
|
|
|
|
|
"counter": "{{count}} of {{limit}}",
|
|
|
|
|
|
"empty": "The server has no emojis yet.",
|
|
|
|
|
|
"animated": "animated",
|
|
|
|
|
|
"rename": "Rename",
|
|
|
|
|
|
"renameLabel": "Rename emoji {{name}}",
|
|
|
|
|
|
"renameTitle": "Rename emoji",
|
|
|
|
|
|
"delete": "Delete",
|
|
|
|
|
|
"deleteLabel": "Delete emoji {{name}}",
|
|
|
|
|
|
"deleteConfirmTitle": "Delete emoji?",
|
|
|
|
|
|
"deleteConfirmBody": "Emoji {{name}} will be deleted permanently.",
|
|
|
|
|
|
"deleteConfirm": "Delete",
|
|
|
|
|
|
"uploadTitle": "Upload an emoji",
|
|
|
|
|
|
"uploadHint": "Drop a file below or pick one: PNG, JPEG, WebP or GIF up to {{limit}}.",
|
|
|
|
|
|
"name": "Emoji name",
|
|
|
|
|
|
"namePlaceholder": "for example, pepe_happy",
|
|
|
|
|
|
"nameHint": "2–32 characters: latin letters, digits and “_”.",
|
|
|
|
|
|
"dropHint": "Drop a file here",
|
|
|
|
|
|
"chooseFile": "Choose file",
|
|
|
|
|
|
"file": "Emoji file",
|
|
|
|
|
|
"fileSelected": "{{name}} · {{size}}",
|
|
|
|
|
|
"upload": "Upload",
|
|
|
|
|
|
"uploading": "Uploading…"
|
2026-09-20 19:30:43 +03:00
|
|
|
|
},
|
|
|
|
|
|
"sounds": {
|
|
|
|
|
|
"title": "Sounds",
|
|
|
|
|
|
"description": "Server soundboard and sound palette: up to {{limit}} sounds of each kind, 512 KB each.",
|
|
|
|
|
|
"counter": "{{count}} of {{limit}}",
|
|
|
|
|
|
"empty": "No sounds of this kind yet.",
|
|
|
|
|
|
"uploadTitle": "Upload a sound",
|
|
|
|
|
|
"uploadHint": "Drop a file below or choose it: MP3, OGG, WAV, WebM or M4A up to {{limit}}.",
|
|
|
|
|
|
"name": "Sound name",
|
|
|
|
|
|
"namePlaceholder": "for example, airhorn",
|
|
|
|
|
|
"nameHint": "2–32 characters: latin letters, digits and «_».",
|
|
|
|
|
|
"emoji": "Emoji",
|
|
|
|
|
|
"emojiPlaceholder": "for example, 📣",
|
|
|
|
|
|
"emojiHint": "Optional icon for the soundboard grid.",
|
|
|
|
|
|
"event": "Event",
|
|
|
|
|
|
"dropHint": "Drop the file here",
|
|
|
|
|
|
"file": "Sound file",
|
|
|
|
|
|
"chooseFile": "Choose a file",
|
|
|
|
|
|
"fileSelected": "{{name}} · {{size}}",
|
|
|
|
|
|
"upload": "Upload",
|
|
|
|
|
|
"uploading": "Uploading…",
|
|
|
|
|
|
"rename": "Rename",
|
|
|
|
|
|
"renameLabel": "Rename the sound {{name}}",
|
|
|
|
|
|
"renameTitle": "Rename the sound",
|
|
|
|
|
|
"delete": "Delete",
|
|
|
|
|
|
"deleteLabel": "Delete the sound {{name}}",
|
|
|
|
|
|
"deleteConfirmTitle": "Delete the sound?",
|
|
|
|
|
|
"deleteConfirmBody": "The sound {{name}} will be deleted permanently.",
|
|
|
|
|
|
"deleteConfirm": "Delete",
|
|
|
|
|
|
"kinds": {
|
|
|
|
|
|
"soundboard": "Soundboard",
|
|
|
|
|
|
"ui": "Sound palette"
|
|
|
|
|
|
},
|
|
|
|
|
|
"events": {
|
|
|
|
|
|
"member_join": "Member joined",
|
|
|
|
|
|
"member_leave": "Member left",
|
|
|
|
|
|
"mention": "Mention",
|
|
|
|
|
|
"message": "New message",
|
|
|
|
|
|
"message_send": "Message sent",
|
|
|
|
|
|
"voice_join": "Joined a voice channel",
|
|
|
|
|
|
"voice_leave": "Left a voice channel",
|
|
|
|
|
|
"mic_on": "Microphone on",
|
|
|
|
|
|
"mic_off": "Microphone off",
|
|
|
|
|
|
"camera_on": "Camera on",
|
|
|
|
|
|
"camera_off": "Camera off",
|
|
|
|
|
|
"screen_on": "Screen share started",
|
|
|
|
|
|
"screen_off": "Screen share stopped",
|
|
|
|
|
|
"kick": "Member kicked",
|
|
|
|
|
|
"ban": "Member banned",
|
|
|
|
|
|
"mute": "Member muted",
|
|
|
|
|
|
"role_grant": "Role granted",
|
|
|
|
|
|
"role_revoke": "Role revoked"
|
|
|
|
|
|
}
|
2026-09-20 18:13:04 +03:00
|
|
|
|
}
|
2026-09-20 01:32:11 +03:00
|
|
|
|
},
|
|
|
|
|
|
"navLabel": "Settings sections",
|
|
|
|
|
|
"notifications": {
|
|
|
|
|
|
"title": "Notifications",
|
|
|
|
|
|
"description": "Sounds, mentions and web push.",
|
|
|
|
|
|
"stub": "Notification settings are coming later."
|
|
|
|
|
|
},
|
|
|
|
|
|
"voice": {
|
|
|
|
|
|
"title": "Audio & video",
|
2026-09-20 18:51:31 +03:00
|
|
|
|
"description": "Input and output devices and volume. Changes apply to the current voice room immediately.",
|
2026-09-20 01:32:11 +03:00
|
|
|
|
"input": "Microphone",
|
|
|
|
|
|
"camera": "Camera",
|
|
|
|
|
|
"output": "Sound",
|
|
|
|
|
|
"micVolume": "Microphone volume",
|
|
|
|
|
|
"outputVolume": "Sound volume",
|
2026-09-20 19:30:43 +03:00
|
|
|
|
"stub": "Changes apply immediately and are stored on this device.",
|
|
|
|
|
|
"micMode": "Microphone activation",
|
|
|
|
|
|
"micModes": {
|
|
|
|
|
|
"voice": "Voice activity",
|
|
|
|
|
|
"push_to_talk": "Push-to-talk"
|
|
|
|
|
|
},
|
|
|
|
|
|
"pttKey": "Key",
|
|
|
|
|
|
"pttHint": "Hold the key to talk. Works while the window is focused and the cursor is not in a text field.",
|
|
|
|
|
|
"pttKeys": {
|
|
|
|
|
|
"space": "Space",
|
|
|
|
|
|
"v": "V",
|
|
|
|
|
|
"b": "B",
|
|
|
|
|
|
"n": "N",
|
|
|
|
|
|
"alt": "Alt",
|
|
|
|
|
|
"ctrl": "Ctrl"
|
|
|
|
|
|
},
|
|
|
|
|
|
"sounds": "Sounds",
|
|
|
|
|
|
"eventSounds": "Server event sounds",
|
|
|
|
|
|
"eventSoundsHint": "Play the server palette sounds: member joins, mentions and other events.",
|
|
|
|
|
|
"soundboard": "Soundboard",
|
2026-09-20 22:10:17 +03:00
|
|
|
|
"soundboardHint": "Play soundboard sounds in a voice channel.",
|
|
|
|
|
|
"latency": "Participant ping",
|
|
|
|
|
|
"latencySharing": "Show ping in the voice room",
|
|
|
|
|
|
"latencySharingHint": "Participant latency to the instance updates every second; your own ping is shared with the room."
|
2026-09-20 01:32:11 +03:00
|
|
|
|
},
|
|
|
|
|
|
"language": {
|
|
|
|
|
|
"title": "Language & region",
|
|
|
|
|
|
"description": "Time zone and interface language.",
|
|
|
|
|
|
"timezone": "Time zone",
|
|
|
|
|
|
"timezoneHint": "Used for message times.",
|
|
|
|
|
|
"locale": "Interface language",
|
|
|
|
|
|
"localeHint": "Applies immediately.",
|
|
|
|
|
|
"saved": "Region settings saved."
|
2026-09-19 21:50:06 +03:00
|
|
|
|
}
|
2026-09-19 18:20:59 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|