Files
sepot/app/lib/l10n/app_ru.arb
T
Julius Joska e3a2378c34 fix(app): accept incoming calls, restore from recovery phrase, duress session isolation, message loss
Calls: `call` was missing from the known content types, so every offer was
acknowledged and dropped; the call screen column now fills the width (the
avatar jumped left after hang-up); a ring started from a push ends after
12 s when no offer arrives; STUN fallback when no TURN credentials.
Registration: X-Sepot-Identity-Proof lets a new device reclaim an existing
identity; retry backs off from 30 s to 10 min and exposes a conflict flag.
Prekeys: PrekeysLow triggers a batch of 50 one-time prekeys via POST
/v1/keys; the signed prekey rotates weekly, the Kyber prekey monthly.
Messaging: crypto operations run serially (concurrent encrypts derived the
same message key); stop() waits for in-flight deliveries (auto-lock between
decrypt and persist lost messages); disappearing-message cleanup no longer
overwrites fresh messages; a push wake-up reconnects stale connections; the
outbox carries polls and mentions; length limits on wire input.
Storage: a duress session never exposes the real identity or phrase, does
not start networking and cannot touch the keystore; deleting data in a
duress session leaves the real account alone; PIN guessing is throttled
(5 misses, then 30 s doubling up to 15 min); the duress blob shares the salt
so unlock time does not reveal which PIN was entered; iOS keychain items are
this-device only; biometrics are biometric-only; screen security defaults
to on and is applied after unlock; tapjacking filter in MainActivity.
Tests: content types, shared-salt unwrap, duress isolation.
2026-10-09 14:02:33 +02:00

491 lines
42 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"@@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": "Вы больше не в группе. История сохранится, но новые сообщения приходить не будут.",
"groupsYou": "Вы",
"groupsFounder": "Создатель",
"groupsAdmin": "Администратор",
"groupsMakeAdmin": "Сделать администратором",
"groupsDismissAdmin": "Снять роль администратора",
"groupsRemoveMember": "Удалить из группы",
"groupsRemoveMemberConfirmTitle": "Удалить {name} из группы?",
"groupsRemoveMemberConfirmBody": "Новые сообщения группы перестанут приходить. Прежняя история сохранится.",
"groupsRemoveAction": "Удалить",
"groupsViewContact": "Открыть контакт",
"groupsAdminOnlyHint": "Название, участников и администраторов группы меняют только администраторы.",
"groupsAdminOnlyCompatHint": "Переименовать группу и менять администраторов могут только администраторы. Добавлять людей пока может любой, потому что у кого-то в группе старая версия Šepot.",
"groupsAdminActionFailed": "Не удалось внести изменение: {error}",
"groupsResyncNotice": "Группа сверяется с администратором. Изменения состава могут появиться с задержкой.",
"groupsRejectedChangeNotice": "Кто-то без прав попытался изменить группу. Изменение не применено.",
"errorGroupNotAdmin": "Это может сделать только администратор группы.",
"errorGroupLastAdmin": "Вы единственный администратор. Сначала назначьте администратором кого-то ещё.",
"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": "Ответить",
"chatActionForward": "Переслать",
"forwardTitle": "Переслать в…",
"forwardSearchHint": "Найти контакт или группу",
"forwardEmpty": "Ничего не найдено",
"forwardDone": "Переслано: {name}",
"forwardFailed": "Не удалось переслать: {error}",
"commonCopy": "Копировать",
"commonEdit": "Изменить",
"chatDeleteForMe": "Удалить у меня",
"chatDeleteForEveryone": "Удалить у всех",
"commonOff": "Выключено",
"chatDisappearing30s": "30 секунд",
"chatDisappearing5m": "5 минут",
"chatDisappearing1h": "1 час",
"chatDisappearing1d": "1 день",
"chatDisappearing1w": "1 неделя",
"chatDisappearingDescription": "Новые сообщения будут удаляться по истечении заданного срока и у вас, и у собеседника.",
"chatDisappearingDisabled": "Исчезающие сообщения выключены",
"chatDisappearingEnabled": "Новые сообщения исчезнут через: {duration}",
"attachmentGallery": "Фото из галереи",
"attachmentTakePhoto": "Сделать фото",
"attachmentDocument": "Документ",
"attachmentTooLarge": "Файл слишком большой (макс. {maxMb} МБ)",
"attachmentKeepsMetadataTitle": "Фото будет с геолокацией",
"attachmentKeepsMetadataBody": "Из этого формата фото (например, HEIC) я не могу удалить метаданные. Оно будет отправлено в оригинале, включая место съёмки и данные о телефоне. Безопаснее отправить его через Галерею — там метаданные удаляются.",
"attachmentSendOriginal": "Отправить оригинал",
"attachmentPickFailed": "Не удалось выбрать вложение: {error}",
"attachmentSendFailed": "Не удалось отправить вложение: {error}",
"chatSendFailed": "Не удалось отправить: {error}",
"chatMessageDeleted": "Сообщение удалено",
"chatEdited": "изменено",
"errorTrustRootChanged": "Trust root релея изменился! Соединение отклонено.",
"errorRelayUnavailable": "Релей недоступен (sender certificate)",
"errorNotYetRegistered": "Šepot ещё подключается к релею — попробуйте отправить сообщение через пару секунд.",
"errorContactLinkIncomplete": "Ссылка неполная — собеседник создал её до подключения. Попросите у него новую ссылку sepot://.",
"errorAttachmentTooLarge": "Вложение слишком большое (макс. {maxMb} МБ)",
"errorGroupNeedsMember": "В группе должен быть хотя бы 1 участник",
"errorAttachmentUnavailable": "Вложения больше нет на этом телефоне",
"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": "Новый чат",
"chatListReadReceiptPreview": "Прочитано",
"chatListDraft": "Черновик",
"notesTitle": "Заметки для себя",
"notesSubtitle": "Только на этом телефоне, в зашифрованном виде",
"callVoice": "Позвонить",
"callVideo": "Видеозвонок",
"callStatusRinging": "Вызов…",
"callIncomingVoice": "Входящий звонок",
"callIncomingVideo": "Входящий видеозвонок",
"callStatusConnecting": "Соединение…",
"callEnded": "Звонок завершён",
"callEndedBusy": "Занято",
"callEndedRejected": "Звонок отклонён",
"callEndedUnanswered": "Нет ответа",
"callEndedFailed": "Не удалось соединиться",
"callEncrypted": "Сквозное шифрование",
"callAccept": "Принять",
"callReject": "Отклонить",
"callMute": "Выключить микрофон",
"callSpeaker": "Динамик",
"callCamera": "Выключить камеру",
"callSwitchCamera": "Сменить камеру",
"callHangUp": "Завершить",
"callLogMissed": "Пропущенный звонок",
"callLogUnanswered": "Звонок без ответа",
"callLogRejected": "Отклонённый звонок",
"callLogBusy": "Занято",
"callLogFailed": "Звонок не удался",
"callLogVoice": "Звонок · {duration}",
"callLogVideo": "Видеозвонок · {duration}",
"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": "Ошибка разблокировки",
"pinLockedFor": "Слишком много попыток. Повторите через {seconds} с.",
"pushTitle": "Push-уведомления",
"pushModeOffDesc": "Сообщения загрузятся только после открытия приложения.",
"pushModeUp": "UnifiedPush (без Google)",
"pushModeUpDesc": "Без сервисов Google — требуется приложение ntfy (F-Droid/Play).",
"pushModeFcm": "Google (FCM, по умолчанию)",
"pushModeFcmDesc": "Надёжно и без дополнительных приложений. Push-токен устройства передаётся Google; содержимое сообщений — никогда.",
"pushSetupFailed": "Не удалось настроить push: {error}",
"pushHintOff": "Сообщения придут, только когда откроешь Šepot — сигналы не настроены.",
"pushHintFailed": "Сигналы не работают: сообщения увидишь только после открытия Šepot.",
"pushRegistrationFailed": "Сигналы не приходят — дистрибьютор отклонил регистрацию. Попробуй выключить и снова включить push.",
"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": "Идентичность не найдена",
"qrShareConnectingTitle": "Подключение к релею…",
"qrShareConnectingBody": "Ваш QR-код и ссылка появятся, как только Šepot подключится в первый раз. Подождите пару секунд.",
"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": "Сквозное шифрование",
"photoPreviewCaptionHint": "Добавить подпись…",
"photoPreviewDraw": "Рисовать",
"photoPreviewAddText": "Добавить текст",
"photoPreviewRotate": "Повернуть",
"photoPreviewUndo": "Отменить",
"photoPreviewSend": "Отправить",
"photoPreviewTextDialogTitle": "Текст на фото",
"photoPreviewRemoveText": "Удалить",
"photoPreviewDecodeFailed": "Не удалось загрузить фото",
"chatActionInfo": "Сведения о сообщении",
"messageInfoSent": "Отправлено",
"messageInfoDelivered": "Доставлено",
"messageInfoRead": "Прочитано",
"messageInfoPending": "ещё нет",
"messageInfoReadReceiptsOff": "Время прочтения видно, только если вы сами делитесь отчётами о прочтении (Настройки).",
"chatStatusReadAt": "Прочитано {time}",
"chatStatusDeliveredAt": "Доставлено {time}",
"groupsAddMembers": "Добавить участников",
"groupsAddMembersAction": "Добавить",
"groupsAddMembersFailed": "Не удалось добавить: {error}",
"groupsNoContactsToAdd": "Все ваши контакты уже в группе. Сначала добавьте нового человека в контакты по QR-коду.",
"navChats": "Чаты",
"chatListNewChat": "Новый чат",
"chatListSearchHint": "Поиск по чатам и сообщениям",
"chatFilterAll": "Все",
"chatFilterUnread": "Непрочитанные",
"chatFilterGroups": "Группы",
"chatFilterArchive": "Архив",
"chatListNoResults": "Ничего не найдено.",
"chatListFilterEmpty": "Здесь пока ничего нет.",
"chatListPin": "Закрепить",
"chatListUnpin": "Открепить",
"chatOpenProfile": "Открыть профиль",
"groupsProfile": "Информация о группе",
"chatSearchHint": "Поиск в чате",
"chatSearchNoMatches": "Нет",
"chatSearchCounter": "{current} из {total}",
"chatSearchOlder": "Предыдущее совпадение",
"chatSearchNewer": "Следующее совпадение",
"chatUnreadDivider": "{count, plural, one{{count} новое сообщение} few{{count} новых сообщения} other{{count} новых сообщений}}",
"chatJumpToLatest": "К последним сообщениям",
"chatAttach": "Прикрепить",
"chatSend": "Отправить",
"chatRecordVoice": "Записать голосовое",
"profileSharedMedia": "Общие медиа",
"profileMessage": "Написать",
"profileSearch": "Поиск",
"profileUnmute": "Включить звук",
"profileDisappearing": "Исчезание",
"profileCommonGroups": "Общие группы",
"profileSafetyNumber": "Код безопасности",
"profileSafetyNumberHint": "Сравните лично или по QR-коду",
"profileVerifiedInPerson": "Проверено лично",
"profileVerifyNow": "Проверить контакт",
"profileAdd": "Добавить",
"profileGroupSubtitle": "Группа · {members} · создана {date}",
"profileMembersOfMax": "{count} из {max}",
"chatTyping": "печатает…",
"chatTypingNamed": "{name} печатает…",
"chatTypingSeveral": "Несколько человек печатают…",
"settingsTypingTitle": "Индикатор набора",
"settingsTypingSubtitle": "Взаимно — не делитесь, не видите (по умолчанию выкл.)",
"pollAttach": "Опрос",
"pollCreateTitle": "Новый опрос",
"pollQuestion": "Вопрос",
"pollOptionHint": "Вариант {number}",
"pollAddOption": "Добавить вариант",
"pollRemoveOption": "Удалить вариант",
"pollAllowMultiple": "Разрешить несколько ответов",
"pollSingle": "Опрос",
"pollMulti": "Опрос, несколько ответов",
"pollVoters": "{count, plural, =0{пока нет голосов} one{{count} голос} few{{count} голоса} other{{count} голосов}}",
"pollFallback": "Опрос: {question}",
"pollFallbackUpdate": "Обновите Šepot, чтобы голосовать.",
"profilePhotoEdit": "Изменить фото профиля",
"profilePhotoPick": "Выбрать фото",
"profilePhotoRemove": "Удалить фото",
"profilePhotoHint": "Фото увидят только ваши собеседники — зашифровано, как и сообщения. Геоданные и метаданные не отправляются.",
"profilePhotoFailed": "Не удалось установить фото: {error}"
}