Šepot — end-to-end encrypted messenger

Initial public release. Anonymous on-device identity (no phone number,
e-mail, or password), Signal-protocol cryptography (X3DH + PQXDH, Double
Ratchet, sealed sender) via libsignal, a metadata-minimizing relay,
group chats, disappearing messages, encrypted local storage, optional
Tor transport, and a UI localized into Czech, English, German, Russian,
and Italian.

Monorepo: Flutter client (app/), Rust relay + wire types (rust/),
protobuf definitions (proto/), self-host deploy (deploy/).

Licensed under AGPL-3.0 with an app-store distribution exception (§7).
This commit is contained in:
Julius Joska
2026-07-11 17:06:39 +02:00
commit 8081d98c67
309 changed files with 44102 additions and 0 deletions
+352
View File
@@ -0,0 +1,352 @@
{
"@@locale": "ru",
"appTitle": "Šepot",
"settingsLanguage": "Язык приложения",
"languageSystem": "Как в системе",
"commonUnknownContact": "Неизвестный",
"verifyVerified": "Подтверждён",
"verifyUnverified": "Не подтверждён",
"chatMenuVerifyContact": "Подтвердить контакт",
"chatDisappearingMessages": "Исчезающие сообщения",
"chatMenuUnblockContact": "Разблокировать контакт",
"chatMenuBlockContact": "Заблокировать контакт",
"reportAndBlock": "Пожаловаться и заблокировать",
"errorGeneric": "Ошибка: {error}",
"groupsYouLeftGroup": "Вы больше не в группе",
"groupsMemberCount": "{count, plural, one{{count} участник} few{{count} участника} many{{count} участников} other{{count} участника}}",
"groupsMembers": "Участники",
"groupsRename": "Переименовать группу",
"groupsLeave": "Покинуть группу",
"groupsLeftBanner": "Вы больше не в группе. История сохранится, но новые сообщения приходить не будут.",
"groupsMembersWithCount": "Участники ({count})",
"groupsYou": "Вы",
"groupsFounder": "Создатель",
"groupsNameHint": "Название группы",
"commonCancel": "Отмена",
"commonSave": "Сохранить",
"groupsRenameFailed": "Не удалось переименовать группу: {error}",
"groupsLeaveConfirmTitle": "Покинуть группу?",
"groupsLeaveConfirmBody": "Остальные увидят, что вы больше не в группе. История у вас сохранится, но новые сообщения приходить не будут, а вернуться можно только по новому приглашению.",
"groupsLeaveAction": "Покинуть",
"groupsLeaveFailed": "Не удалось покинуть группу: {error}",
"chatBlockedBanner": "Контакт заблокирован. Вы не получаете от него сообщения и не можете ему писать.",
"chatUnblock": "Разблокировать",
"chatContactBlocked": "Контакт {name} заблокирован",
"chatContactUnblocked": "Контакт {name} разблокирован",
"reportAndBlockBody": "Мы заблокируем контакт {name}, и вы перестанете получать от него сообщения. Затем мы предложим форму, в которой вы опишете, что произошло, — мы не видим содержимое сообщений, поэтому без вашего описания ничего об этом не знаем.",
"chatEmptyEncrypted": "Сообщения защищены сквозным шифрованием.",
"chatEmptyNoOneElse": "Никто другой не может их прочитать.",
"commonToday": "Сегодня",
"commonYesterday": "Вчера",
"chatMessageHint": "Напишите сообщение…",
"chatDiscardRecording": "Удалить запись",
"chatRecording": "Идёт запись…",
"chatMicPermissionMissing": "Нет доступа к микрофону",
"chatRecordingFailed": "Не удалось начать запись: {error}",
"chatVoiceSendFailed": "Не удалось отправить голосовое сообщение: {error}",
"chatDeletedMessagePreview": "Удалённое сообщение",
"chatVoiceMessagePreview": "🎤 Голосовое сообщение",
"chatPhotoPreview": "📷 Фото",
"chatAttachmentPreview": "📎 Вложение",
"chatEditingMessage": "Редактирование сообщения",
"chatReply": "Ответ",
"chatActionReply": "Ответить",
"commonCopy": "Копировать",
"commonEdit": "Изменить",
"chatDeleteForMe": "Удалить у меня",
"chatDeleteForEveryone": "Удалить у всех",
"commonOff": "Выключено",
"chatDisappearing30s": "30 секунд",
"chatDisappearing5m": "5 минут",
"chatDisappearing1h": "1 час",
"chatDisappearing1d": "1 день",
"chatDisappearing1w": "1 неделя",
"chatDisappearingDescription": "Новые сообщения будут удаляться по истечении заданного срока и у вас, и у собеседника.",
"chatDisappearingDisabled": "Исчезающие сообщения выключены",
"chatDisappearingEnabled": "Новые сообщения исчезнут через: {duration}",
"attachmentGallery": "Фото из галереи",
"attachmentTakePhoto": "Сделать фото",
"attachmentDocument": "Документ",
"attachmentTooLarge": "Файл слишком большой (макс. {maxMb} МБ)",
"attachmentPickFailed": "Не удалось выбрать вложение: {error}",
"attachmentSendFailed": "Не удалось отправить вложение: {error}",
"chatSendFailed": "Не удалось отправить: {error}",
"chatMessageDeleted": "Сообщение удалено",
"chatEdited": "изменено",
"errorTrustRootChanged": "Trust root релея изменился! Соединение отклонено.",
"errorRelayUnavailable": "Релей недоступен (sender certificate)",
"errorAttachmentTooLarge": "Вложение слишком большое (макс. {maxMb} МБ)",
"errorGroupNeedsMember": "В группе должен быть хотя бы 1 участник",
"errorGroupMaxMembers": "Максимальное число участников группы — {maxMembers}",
"errorMemberNoDeliveryAddress": "У контакта {displayName} нет адреса доставки — запросите новую ссылку",
"errorContactNoDeliveryAddress": "У контакта нет адреса доставки — попросите у него новую ссылку sepot://",
"errorIdentityKeyMismatch": "Ключ идентификации с релея НЕ СОВПАДАЕТ с контактом — возможен MITM! Сообщение не отправлено.",
"settingsTitle": "Настройки",
"settingsSectionGeneral": "Общие",
"settingsSectionSecurity": "Безопасность",
"settingsChangePinTitle": "Изменить PIN",
"settingsChangePinSubtitle": "6-значный PIN для разблокировки",
"settingsAutoLockTitle": "Автоблокировка",
"settingsAutoLock5min": "Через 5 минут",
"settingsDecoyPinTitle": "PIN принуждения",
"settingsDecoyPinSetSubtitle": "Установлен — откроет пустое приложение",
"settingsDecoyPinUnsetSubtitle": "Второй PIN, открывающий пустое приложение",
"settingsSectionNotifications": "Уведомления",
"settingsSectionConnection": "Подключение",
"settingsSectionPrivacy": "Конфиденциальность",
"settingsReadReceiptsTitle": "Отчёты о прочтении",
"settingsReadReceiptsSubtitle": "Показывать собеседнику, что сообщения прочитаны (по умолчанию выключено)",
"settingsScreenSecurityTitle": "Защита экрана",
"settingsScreenSecuritySubtitle": "Блокировать скриншоты и скрывать содержимое в списке недавних приложений",
"settingsSectionBackup": "Резервная копия ключей",
"settingsSeedPhraseTitle": "Фраза восстановления",
"settingsSeedPhraseSubtitle": "24 слова для восстановления идентичности",
"settingsBackupExportTitle": "Резервная копия истории",
"settingsBackupExportSubtitle": "Зашифрованный файл с контактами и сообщениями",
"settingsBackupImportTitle": "Восстановить из копии",
"settingsBackupImportSubtitle": "Загрузить резервную копию (только вашей идентичности)",
"settingsSectionSafety": "Защита от злоупотреблений",
"settingsReportAbuseTitle": "Сообщить о нарушении",
"settingsReportAbuseSubtitle": "Домогательства, мошенничество, угроза ребёнку",
"settingsChildSafetyTitle": "Стандарты защиты детей",
"settingsChildSafetySubtitle": "Как мы противодействуем насилию над детьми",
"settingsSectionAbout": "О приложении",
"commonAppName": "Šepot",
"settingsVersion": "Версия {version}",
"settingsLicenseTitle": "Лицензия",
"settingsLicenseSubtitle": "AGPL-3.0",
"settingsPrivacyPolicyTitle": "Политика конфиденциальности",
"settingsPrivacyPolicySubtitle": "Что мы о вас знаем (и чего не знаем)",
"settingsTermsTitle": "Условия использования",
"settingsTermsSubtitle": "sepot.cz/podminky",
"settingsDataDeletionTitle": "Удаление данных",
"settingsDataDeletionSubtitle": "Как запросить удаление данных",
"settingsDeleteAllDataButton": "Удалить все данные",
"settingsLicenseBody": "Šepot распространяется по лицензии GNU Affero General Public License версии 3 (AGPL-3.0). Приложение использует библиотеку libsignal, также под AGPL-3.0.\n\nЧтобы получить исходный код этой версии, напишите на {supportEmail}, и мы вам его отправим.",
"commonClose": "Закрыть",
"settingsIdCopied": "ID скопирован",
"settingsFingerprint": "Отпечаток: {fingerprint}",
"backupShareSubject": "Šepot — зашифрованная резервная копия",
"backupExportFailed": "Не удалось создать резервную копию: {error}",
"backupRestoredCount": "{count, plural, one{Из резервной копии восстановлен {count} чат} few{Из резервной копии восстановлены {count} чата} many{Из резервной копии восстановлено {count} чатов} other{Из резервной копии восстановлено {count} чата}}",
"backupImportFailed": "Не удалось восстановить из копии: {error}",
"settingsDecoyPinExplain": "При вводе этого PIN приложение откроется пустым — без ваших контактов и сообщений. Он должен отличаться от обычного PIN.",
"commonConfirm": "Подтвердить",
"commonSet": "Установить",
"settingsDecoyPinEnabled": "PIN принуждения установлен",
"settingsDecoyPinConflict": "PIN принуждения должен отличаться от обычного",
"settingsDecoyPinDisabled": "PIN принуждения отключён",
"settingsSeedPhraseNotFound": "Фраза восстановления не найдена",
"settingsSeedPhraseWarning": "Эти слова — единственная резервная копия вашей идентичности. Никому их не показывайте!",
"settingsSeedWordChip": "{index}. {word}",
"settingsAboutTagline": "Šepot — приватный мессенджер",
"settingsAboutBody": "E2E-шифрованный мессенджер с открытым исходным кодом.\n\nКриптография:\n• X25519 (обмен ключами)\n• XChaCha20-Poly1305 (шифрование)\n• Ed25519 (подписи)\n\n© 2026 ajtak.it",
"settingsDeleteAccountTitle": "Удалить аккаунт и все данные?",
"settingsDeleteAccountBody": "Это действие необратимо. Все сообщения, контакты и ключи будут удалены с этого устройства, а аккаунт будет снят с регистрации на сервере. Без фразы восстановления вы потеряете свою идентичность навсегда.",
"settingsDeleteAccountServerOffline": "Сервер сейчас недоступен — данные на устройстве удалены, но регистрация на сервере осталась. Остальное удалим по запросу на podpora@sepot.cz.",
"settingsDeleteAllConfirm": "Удалить всё",
"groupsCreateFailed": "Не удалось создать группу: {error}",
"groupsNewGroupTitle": "Новая группа",
"groupsCreateAction": "Создать",
"groupsMembersCounter": "Участники ({selectedCount}/{maxMembers})",
"groupsEmptyContactsHint": "Сначала добавьте контакты — группа состоит из людей, с которыми вы уже можете переписываться.",
"groupsMemberMissingAddress": "Нет адреса доставки — запросите новую ссылку",
"attachmentSizeBytes": "{bytes} Б",
"attachmentSizeKb": "{kilobytes} КБ",
"attachmentSizeMb": "{megabytes} МБ",
"attachmentDownloadFailedTapToRetry": "Не удалось скачать — нажмите, чтобы повторить",
"attachmentDownloadFailed": "Не удалось скачать",
"attachmentDownloading": "Скачивание…",
"attachmentSharedFileFallbackName": "файл",
"attachmentOpenFailed": "Не удалось открыть вложение: {error}",
"commonFile": "Файл",
"chatListNewConversation": "Новый чат",
"chatListPhotoWithCaptionPreview": "📷 {caption}",
"chatListFilePreview": "📎 {fileName}",
"chatListReadReceiptPreview": "Прочитано",
"chatListTimeNow": "сейчас",
"chatListTimeMinutes": "{minutes} мин",
"qrScanTitle": "Сканировать QR-код",
"qrScanInstruction": "Наведите камеру на QR-код контакта",
"qrScanHint": "QR-код содержит открытый ключ контакта",
"qrNewContactTitle": "Новый контакт",
"qrContactAdded": "Контакт {name} добавлен",
"commonAdd": "Добавить",
"onboardingWelcomeTitle": "Добро пожаловать в Šepot",
"onboardingWelcomeSubtitle": "Приватный мессенджер со сквозным шифрованием.\nБез номера телефона. Без электронной почты.\nТолько ваши ключи.",
"onboardingStart": "Начать",
"onboardingRestoreExisting": "У меня уже есть аккаунт — восстановить из фразы",
"onboardingEncryptionTitle": "Ваши сообщения, ваши ключи",
"onboardingFeatureSignalTitle": "Протокол Signal",
"onboardingFeatureSignalSubtitle": "X3DH + Double Ratchet, forward secrecy",
"onboardingFeaturePqTitle": "Постквантовая защита",
"onboardingFeaturePqSubtitle": "Kyber (PQXDH) с первого сообщения",
"onboardingFeatureLocalKeysTitle": "Ключи только на вашем устройстве",
"onboardingFeatureLocalKeysSubtitle": "Ни у одного сервера их нет",
"onboardingFeatureDisappearingSubtitle": "Удаляются автоматически",
"commonContinue": "Продолжить",
"onboardingIdentityTitle": "Создайте свою идентичность",
"onboardingIdentitySubtitle": "Без почты и телефона. Только имя и криптографические ключи.",
"onboardingDisplayNameLabel": "Отображаемое имя",
"onboardingDisplayNameHint": "Например, Иван",
"onboardingSeedPhraseWarning": "Запишите {count, plural, one{это {count} слово} few{эти {count} слова} many{эти {count} слов} other{эти {count} слова}}. Это единственная резервная копия ваших ключей!",
"onboardingSeedSavedConfirm": "Подтверждаю: фраза надёжно сохранена",
"onboardingGenerateKeys": "Сгенерировать ключи",
"verifyMismatchTitle": "Номера НЕ СОВПАДАЮТ",
"verifyMatchBody": "Ключи совпадают. {contactName} — подтверждённый контакт.",
"verifyMismatchBody": "Номера безопасности не совпадают. Возможно, кто-то перехватывает соединение (MITM), либо вы сканируете код другого контакта. НЕ отправляйте конфиденциальные сообщения и повторите сверку по другому каналу.",
"commonUnderstood": "Понятно",
"verifyManualConfirmTitle": "Отметить как подтверждённый?",
"verifyManualConfirmBody": "Подтверждайте только в том случае, если вы сверили цифры с собеседником по другому надёжному каналу (лично, по звонку…) и они совпадают.",
"verifyManualConfirmAction": "Совпадают, подтвердить",
"verifyTitle": "Подтверждение контакта",
"verifyContactVerifiedBanner": "Контакт подтверждён",
"verifyIntro": "Сравните этот номер с тем, который видит {contactName}. Если номера совпадают, ваше шифрование никто не прослушивает. Быстрее всего — взаимно отсканировать QR-коды.",
"verifyScanButton": "Сканировать код собеседника",
"verifyManualButton": "Цифры совпадают — отметить вручную",
"verifyUnverifyButton": "Отменить подтверждение",
"verifyScanScreenTitle": "Отсканируйте QR для сверки",
"reportTitle": "Пожаловаться",
"reportSubmitted": "Жалоба отправлена",
"reportSubmittedChildSafety": "Такие жалобы мы рассматриваем в первую очередь. Если ребёнок в непосредственной опасности, немедленно обратитесь в местную полицию или на телефон доверия.",
"reportSubmittedThanks": "Спасибо. Мы рассмотрим её как можно скорее.",
"commonDone": "Готово",
"reportPanelE2eNotice": "Сообщения защищены сквозным шифрованием, поэтому их содержимое нам не видно даже сейчас. Пожалуйста, опишите своими словами, что произошло. Не вставляйте сюда содержимое сообщений или ссылки на него — мы не имеем права его хранить, и для рассмотрения оно нам не нужно.",
"reportPanelCsamWarning": "НЕ ОТПРАВЛЯЙТЕ нам материалы, изображающие сексуальное насилие над детьми. Их хранение уголовно наказуемо в том числе для нас, и для жалобы они не нужны. Такие материалы следует передавать напрямую в местную полицию или на официальную горячую линию по борьбе с CSAM. Нам напишите только то, что произошло, — мы заблокируем аккаунт и передадим дело дальше.",
"reportPanelIpNotice": "Жалоба отправляется не через релей, а на наш веб-сервер. При отправке он узнает ваш IP-адрес.",
"reportCategoryHeading": "О чём жалоба",
"reportDescriptionHeading": "Что произошло",
"reportAttachContactId": "Приложить ID нарушителя",
"reportAttachContactIdNamed": "Приложить ID контакта {contactName}",
"reportReplyToHeading": "Как с вами связаться (необязательно)",
"reportReplyToHint": "e-mail на случай уточняющих вопросов",
"reportSubmitButton": "Отправить жалобу",
"contactsTitle": "Контакты",
"contactsAddContact": "Добавить контакт",
"contactsSearchHint": "Поиск контактов...",
"contactsEmpty": "Пока нет контактов",
"contactsNoResults": "Ничего не найдено",
"contactsShareCardTitle": "Поделитесь своим Šepot ID",
"contactsShareCardSubtitle": "Покажите QR-код или отправьте ссылку",
"contactsAddDialogPrompt": "Вставьте строку обмена (share string) контакта:",
"contactsShareStringHint": "Вставить share string...",
"contactsInvalidShareString": "Недействительный share string",
"contactsAdded": "Контакт {name} добавлен",
"verifyContactSubtitle": "Сверка номера безопасности",
"contactsDeleteContact": "Удалить контакт",
"pinConfirmTitle": "Подтвердите PIN",
"pinSetupTitle": "Задайте PIN",
"pinConfirmSubtitle": "Введите PIN ещё раз для подтверждения",
"pinSetupSubtitle": "6-значный PIN для разблокировки приложения",
"pinSetupFailed": "Не удалось установить PIN. Попробуйте ещё раз.",
"pinMismatchRetry": "PIN-коды не совпадают. Попробуйте ещё раз.",
"pinChangeCurrentTitle": "Введите текущий PIN",
"pinChangeCurrentSubtitle": "Мы проверим его, разблокировав ключ",
"pinChangeNewTitle": "Введите новый PIN",
"pinChangeNewSubtitle": "6 цифр",
"pinChangeConfirmTitle": "Подтвердите новый PIN",
"pinChangeConfirmSubtitle": "Введите его ещё раз",
"pinWrong": "Неверный PIN.",
"pinChangeMustDiffer": "Новый PIN должен отличаться от текущего.",
"pinMismatch": "PIN-коды не совпадают.",
"pinDecoyConflict": "Этот PIN уже используется режимом принуждения. Выберите другой.",
"pinChangeFailed": "Не удалось изменить PIN. Попробуйте ещё раз.",
"pinChanged": "PIN изменён",
"errorCryptoInitTitle": "Криптографическое ядро не запустилось",
"errorStartupTitle": "Šepot не запустился",
"errorScreenNotRenderedTitle": "Этот экран не отрисовался",
"errorStartupBody": "Что-то пошло не так прямо при запуске. Пожалуйста, отправьте мне этот текст (удерживайте палец и скопируйте) — это поможет найти ошибку.",
"errorContactFooter": "sepot.cz · напишите мне через контакты на сайте",
"pinUnlockTitle": "Разблокируйте Šepot",
"pinEnterPin": "Введите PIN",
"pinUnlockWithBiometrics": "Разблокировать биометрией",
"pinWrong2": "Неверный PIN",
"pinUnlockError": "Ошибка разблокировки",
"pushTitle": "Push-уведомления",
"pushModeOffDesc": "Сообщения загрузятся только после открытия приложения.",
"pushModeUp": "UnifiedPush (рекомендуется)",
"pushModeUpDesc": "Без сервисов Google — требуется приложение ntfy (F-Droid/Play).",
"pushModeFcm": "Google (FCM)",
"pushModeFcmDesc": "Надёжно и без дополнительных приложений. Push-токен устройства передаётся Google; содержимое сообщений — никогда.",
"pushSetupFailed": "Не удалось настроить push: {error}",
"pushNoDistributorTitle": "Нет дистрибьютора",
"pushNoDistributorBody": "Для уведомлений без сервисов Google установите дистрибьютор UnifiedPush, например ntfy (F-Droid или Play). Затем включите push снова.",
"commonOk": "OK",
"pushPickDistributorTitle": "Выберите дистрибьютора",
"pushSubtitleUnifiedPush": "UnifiedPush · {distributor}",
"pushNoDistributorFallback": "без дистрибьютора",
"pushSubtitleFcm": "Google (FCM) — быстро, только по вашему выбору",
"restoreErrorNameRequired": "Введите отображаемое имя.",
"restoreErrorWordCount": "{wordCount, plural, one{Во фразе {wordCount} слово, а нужно {requiredWords}.} few{Во фразе {wordCount} слова, а нужно {requiredWords}.} many{Во фразе {wordCount} слов, а нужно {requiredWords}.} other{Во фразе {wordCount} слова, а нужно {requiredWords}.}}",
"restoreErrorInvalidPhrase": "Фраза недействительна — проверьте слова и их порядок.",
"restoreErrorFailed": "Не удалось восстановить: {error}",
"restoreTitle": "Восстановить аккаунт",
"restoreHeading": "Введите свою фразу восстановления",
"restoreIntro": "{wordCount, plural, one{{wordCount} слово} few{{wordCount} слова} many{{wordCount} слов} other{{wordCount} слова}} из резервной копии, сделанной при создании аккаунта. Фраза восстановит вашу идентичность (тот же код SEP, контакты по-прежнему вас узнают).",
"restoreHistoryWarning": "История сообщений не восстановится — она хранится только на исходном устройстве.",
"restorePhraseHint": "слово1 слово2 слово3 …",
"restoreWordCountHelper": "{wordCount} / {requiredWords} слов",
"chatListArchivedCount": "Архив ({count})",
"chatListEmptyTitle": "Пока нет чатов",
"chatListEmptySubtitle": "Добавьте контакт и начните шептаться!",
"chatListUnmute": "Включить звук",
"chatListMute": "Отключить звук",
"chatListArchive": "Архивировать",
"qrShareTitle": "Мой Šepot ID",
"qrIdentityNotFound": "Идентичность не найдена",
"commonCopiedToClipboard": "Скопировано в буфер обмена",
"qrShareInviteMessage": "Добавьте меня в Šepot!\n\n{shareString}",
"commonShare": "Поделиться",
"qrShareInfo": "Контакт отсканирует ваш QR-код или вставит строку обмена в приложение.",
"reportCategoryChildSafety": "Угроза ребёнку",
"reportCategoryChildSafetyHint": "Опишите ситуацию своими словами. Не вставляйте содержимое сообщений или ссылки на материалы.",
"reportCategoryHarassment": "Домогательства или угрозы",
"reportCategoryHarassmentHint": "Кто-то запугивает вас, угрожает или домогается.",
"reportCategorySpam": "Спам",
"reportCategorySpamHint": "Нежелательные сообщения, массовые рассылки.",
"reportCategoryFraud": "Мошенничество",
"reportCategoryFraudHint": "Попытка выманить деньги, ключи или личные данные.",
"reportCategoryOther": "Другое",
"reportCategoryOtherHint": "Что-то ещё, о чём нам стоит знать.",
"reportErrorEmptyDescription": "Пожалуйста, напишите, что произошло.",
"reportErrorConnection": "Не удалось связаться с сервером. Попробуйте ещё раз или напишите на {supportEmail}.",
"reportErrorRateLimited": "Из вашей сети поступило слишком много жалоб. Попробуйте через час или напишите на {supportEmail}.",
"reportErrorServer": "Не удалось отправить (код {statusCode}). Пожалуйста, напишите на {supportEmail}.",
"settingsAutoLockNever": "Никогда",
"settingsAutoLock1min": "Через 1 минуту",
"settingsAutoLock15min": "Через 15 минут",
"torToggleFailed": "Не удалось переключить Tor: {error}",
"torConnectionTitle": "Подключение через Tor",
"torDialogBody": "Трафик на сервер пойдёт через сеть Tor (это скроет ваш IP-адрес). Требуется установленное и запущенное приложение Orbot с активным SOCKS-прокси на порту 9050.\n\nБез работающего Orbot сообщения не будут ни отправляться, ни приниматься. Соединение обычно медленнее.",
"commonTurnOn": "Включить",
"torSubtitleOff": "Прямое зашифрованное соединение (WSS). Включите, чтобы скрыть IP через Tor.",
"torStatusConnected": "Подключено через Tor (.onion).",
"torStatusConnecting": "Подключение через Tor… (Orbot запущен?)",
"torStatusWaiting": "Через Tor — ожидание Orbot (SOCKS 9050).",
"biometricsPinRequiredFirst": "Сначала задайте PIN — биометрия лишь дополняет его.",
"biometricsStorageLocked": "Хранилище заблокировано — разблокируйте приложение PIN-кодом.",
"biometricsNotAvailable": "На устройстве не настроена биометрия.",
"biometricsEnrollPromptReason": "Подтвердите включение биометрической разблокировки",
"biometricsSetupFailed": "Не удалось настроить биометрию: {error}",
"biometricsTileTitle": "Биометрия",
"biometricsTileSubtitle": "Разблокировка отпечатком пальца / лицом (PIN остаётся запасным способом)",
"backupErrorCorruptedFile": "Файл резервной копии повреждён",
"backupErrorUnknownFormat": "Нераспознанный формат резервной копии",
"backupErrorWrongIdentity": "Не удалось расшифровать копию — она принадлежит другой идентичности?",
"attachmentSharedImageFilename": "sepot-image.{ext}",
"attachmentDecryptFailed": "Не удалось расшифровать вложение",
"pushActionOpen": "Открыть",
"pushChannelMessagesName": "Сообщения",
"pushChannelMessagesDescription": "Уведомления о новых сообщениях (без содержимого)",
"pushNewMessageFrom": "Новое сообщение от {senderName}",
"pushNewMessages": "У вас новые сообщения",
"archiveTitle": "Архив",
"archiveEmpty": "Нет архивированных чатов",
"archiveUnarchive": "Вернуть из архива",
"restoreErrorMnemonicWordCount": "{count, plural, one{Во фразе {count} слово, ожидается {expected}} few{Во фразе {count} слова, ожидается {expected}} many{Во фразе {count} слов, ожидается {expected}} other{Во фразе {count} слова, ожидается {expected}}}",
"restoreErrorInvalidMnemonic": "Недействительная фраза: {message}",
"contactsErrorAlreadyExists": "Контакт уже существует",
"commonAppTagline": "Приватный мессенджер",
"commonE2eBadgeCompact": "E2E",
"commonE2eBadgeFull": "Сквозное шифрование"
}