90a1390716
Fixes reported by testers and found in an app review: - First message right after install no longer fails. Before the app finished registering with the relay, the outgoing message could crash on a null delivery address. The profile field is now optional and the send path throws a clear "still connecting, try again shortly" error while registration completes in the background. - The QR code and share link now appear only once the delivery address is ready. Previously a link generated before the first connection lacked routing, so the other side could not send the first message. The screen now shows a connecting state and reactively swaps in the QR when ready. - Incomplete contact links are rejected on import instead of failing at first send, with a clear prompt to ask for a fresh link. - Auto-lock no longer silences the app: after locking and unlocking, messaging is restarted (it previously stayed dead until app restart). - Group messages are marked failed on a non-per-member send error instead of hanging in the "sending" state forever. - Hardened the relay client against a rare duplicate connection when toggling Tor or locking mid-connect, and fromShareString now rejects a delivery address of the wrong length. - Pin unifiedpush below 6.2.0 to drop the webcrypto dependency (its native framework lacks LC_ENCRYPTION_INFO and blocked the iOS upload). - Skip Android release lint (network dependency check hangs on the build host and adds no value for a Flutter app).
366 lines
34 KiB
Plaintext
366 lines
34 KiB
Plaintext
{
|
||
"@@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)",
|
||
"errorNotYetRegistered": "Šepot ещё подключается к релею — попробуйте отправить сообщение через пару секунд.",
|
||
"errorContactLinkIncomplete": "Ссылка неполная — собеседник создал её до подключения. Попросите у него новую ссылку sepot://.",
|
||
"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": "Идентичность не найдена",
|
||
"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": "Не удалось загрузить фото"
|
||
}
|