i18n: strings the desktop client needed, and its screenshots
The dictionaries here are the single source both clients read: the desktop
copies src/i18n/generated.js byte for byte, so a key added on either side is
available to the other.
* desktop.* — sentences only the desktop says. It has no QR display and no
browser to grant permissions, so its copy differs where the browser's would
mislead: "allow the microphone in system settings", not "for this site".
* msg.after5s and the rest of the disappearing-message timers, which this
client renders from hardcoded English today and can now translate too.
* secLevel.HIGH / MEDIUM / LOW, which the security panel needed and the
dictionary only had MAXIMUM for.
All of it translated into the full thirteen. Nothing here changes what this site
renders — the web client does not reference the new keys yet.
assets/screenshots/desktop-*.png are captures of the desktop client at 1.0.0,
for its Flathub listing. A reviewer opens each URL, so they have to be served
from this domain rather than from a code host.
This commit is contained in:
+76
-1
@@ -806,6 +806,81 @@
|
||||
"groupCall.speaking": "{name} говорить",
|
||||
"groupCall.pin": "Показати {name} великим",
|
||||
"groupCall.unpin": "Повернутися до всіх",
|
||||
"groupCall.showEveryone": "Усі"
|
||||
"groupCall.showEveryone": "Усі",
|
||||
"msg.after5s": "5 с після прочитання",
|
||||
"msg.after15s": "15 с після прочитання",
|
||||
"msg.after30s": "30 с після прочитання",
|
||||
"msg.after1m": "1 хв після прочитання",
|
||||
"msg.sec30": "30 секунд",
|
||||
"msg.min5": "5 хвилин",
|
||||
"msg.hour1": "1 година",
|
||||
"desktop.shareDesc": "Надішліть код співрозмовнику. Він одноразовий і швидко втрачає чинність.",
|
||||
"desktop.invitationCreated": "Захищене запрошення створено - надішліть його співрозмовнику.",
|
||||
"desktop.joinDesc": "Вставте код запрошення співрозмовника, щоб створити захищену відповідь.",
|
||||
"desktop.offerTag": "запрошення · копіювати текст",
|
||||
"desktop.answerTag": "відповідь · копіювати текст",
|
||||
"desktop.offerPlaceholder": "Тут з’явиться код запрошення…",
|
||||
"desktop.answerPlaceholder": "Тут з’явиться код відповіді…",
|
||||
"desktop.backToChats": "Назад до чатів",
|
||||
"desktop.sendFeedback": "Надіслати відгук",
|
||||
"desktop.callsNeedVerified": "Дзвінки потребують перевіреного захищеного каналу.",
|
||||
"desktop.noOpenChannel": "Немає відкритого захищеного каналу.",
|
||||
"desktop.chatCarriesCall": "Цей чат несе груповий дзвінок. Вийдіть із групового дзвінка, перш ніж телефонувати один на один.",
|
||||
"desktop.err.permission_denied": "Дзвінок не вдалося почати - доступ до мікрофона й камери заблоковано. Дозвольте його в системних налаштуваннях і спробуйте ще раз.",
|
||||
"desktop.language": "Мова",
|
||||
"desktop.languageHint": "Застосовується одразу. Уже надіслані повідомлення лишаються тією мовою, якою їх написали.",
|
||||
"desktop.compareCode": "Порівняйте код підтвердження зі співрозмовником і підтвердьте, якщо він збігається.",
|
||||
"desktop.verifyBeforeFiles": "Завершіть перевірку, перш ніж надсилати файли.",
|
||||
"desktop.verifyBeforeSending": "Завершіть перевірку, перш ніж надсилати повідомлення.",
|
||||
"desktop.disconnectedByBackend": "З’єднання безпечно розірвано.",
|
||||
"desktop.restoreFailed": "Не вдалося відновити з’єднання. Цей чат буде закрито.",
|
||||
"desktop.channelNotReady": "Канал даних ще недоступний. Зачекайте, доки з’єднання встановиться.",
|
||||
"desktop.enterCode": "Введіть код підтвердження.",
|
||||
"desktop.noOffer": "Запрошення не знайдено. Спершу створіть його.",
|
||||
"desktop.notInitiator": "Ви не створювали це з’єднання, тож застосовувати відповідь нічому.",
|
||||
"desktop.decryptFailed": "Повідомлення не вдалося розшифрувати, його відкинуто.",
|
||||
"desktop.badMessageFormat": "Надійшов пошкоджений кадр, його відкинуто.",
|
||||
"desktop.notSentNotReady": "Повідомлення не надіслано: захищений канал не готовий. Зачекайте завершення перевірки або перепідключіться.",
|
||||
"desktop.micDenied": "Доступ до мікрофона відхилено.",
|
||||
"desktop.noChannelWait": "Немає відкритого захищеного каналу - зачекайте, доки з’єднання встановиться.",
|
||||
"desktop.sasFailed": "Перевірку не пройдено. Можлива присутність посередника, тож з’єднання перервано.",
|
||||
"desktop.sasOk": "Перевірку пройдено. Цей канал автентифіковано наскрізно.",
|
||||
"desktop.iceForgotten": "Збережені сервери забуто. Використовуються публічні сервери ICE.",
|
||||
"desktop.icePublic": "Використовуються публічні сервери ICE.",
|
||||
"desktop.verificationInProgress": "Перевірка безпеки ще триває. Зачекайте на її завершення.",
|
||||
"desktop.fileGone": "Цей файл більше недоступний для завантаження.",
|
||||
"desktop.codeMismatch": "Коди підтвердження не збігаються. Роз’єднуємо задля безпеки.",
|
||||
"desktop.noLocalCode": "Перевірка не вдалася: немає локально обчисленого коду для порівняння. Роз’єднуємо задля безпеки.",
|
||||
"desktop.protocolViolation": "Співрозмовник заявив про підтвердження коду раніше, ніж ви його підтвердили. Роз’єднуємо задля безпеки.",
|
||||
"desktop.verificationRejected": "Перевірку відхилено. З’єднання перервано задля безпеки.",
|
||||
"secLevel.HIGH": "ВИСОКИЙ",
|
||||
"secLevel.MEDIUM": "СЕРЕДНІЙ",
|
||||
"secLevel.LOW": "НИЗЬКИЙ",
|
||||
"desktop.rerun": "Перевірити знову",
|
||||
"desktop.ice.customDesc": "До {max} серверів, по одній URL-адресі на рядок або JSON.",
|
||||
"desktop.ice.persistDesc": "Зберігається локально на цьому пристрої. Лишіть вимкненим, щоб використати лише в цьому сеансі.",
|
||||
"desktop.group.leaveNote": "Інші учасники дізнаються, що ви вийшли. Після цього на цьому пристрої не лишається нічого про цю групу - жоден сервер не тримає копії, з якої можна повернутися, тож знадобиться нове запрошення.",
|
||||
"desktop.sec.ecdsaOk": "Підпис пакета ключів співрозмовника перевірено під час рукостискання (ECDSA P-384 / SHA-384)",
|
||||
"desktop.sec.ecdsaNone": "Рукостискання не завершено",
|
||||
"desktop.sec.ecdhOk": "Ключі сеансу виведено з тимчасового обміну ECDH P-384 через HKDF-SHA-256",
|
||||
"desktop.sec.ecdhNone": "Ключі сеансу не виведено",
|
||||
"desktop.sec.encryptionOk": "Шифрування й розшифрування AES-GCM перевірено в ядрі",
|
||||
"desktop.sec.encryptionNa": "Самоперевірку AES-GCM виконати не вдалося",
|
||||
"desktop.sec.integrityOk": "Цілісність повідомлень перевірено (автентифікація AES-GCM)",
|
||||
"desktop.sec.integrityNa": "Самоперевірку цілісності виконати не вдалося",
|
||||
"desktop.sec.pfsOk": "Double Ratchet активний - кожне повідомлення має власний ключ",
|
||||
"desktop.sec.pfsNa": "Не виміряно",
|
||||
"desktop.sec.replayOk": "Ключі повідомлень ратчета знищуються після використання, тож перехоплений кадр не можна відтворити повторно",
|
||||
"desktop.sec.replayNa": "Не виміряно",
|
||||
"desktop.sec.dtlsPinned": "Відбиток DTLS співрозмовника закріплено: {fp}",
|
||||
"desktop.sec.dtlsNone": "Відбитка DTLS віддаленої сторони немає",
|
||||
"desktop.sec.sasBoth": "Обидві сторони підтвердили код безпеки поза каналом",
|
||||
"desktop.sec.sasIncomplete": "Код безпеки підтвердили не обидві сторони",
|
||||
"desktop.sec.metadataOk": "Виведено окремий ключ метаданих (HKDF metadata-protection-v4)",
|
||||
"desktop.sec.metadataNone": "Ключа метаданих немає",
|
||||
"desktop.sec.coverOn": "Прикриваючий трафік активний: випадкові фальшиві кадри (32-128 Б кожні 15-30 с) у каналі з ратчетом",
|
||||
"desktop.sec.coverOff": "Генератор прикриваючого трафіку не працює",
|
||||
"desktop.sec.coverUnsupported": "Прикриваючий трафік потребує сеансу Double Ratchet (у співрозмовника старіша версія)",
|
||||
"desktop.tagline": "Наскрізна свобода"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user