i18n: strings the desktop client needed, and its screenshots
CodeQL Analysis / Analyze CodeQL (push) Canceled after 0s
Deploy Application / deploy (push) Canceled after 0s
Mirror to Codeberg / mirror (push) Canceled after 0s
Mirror to PrivacyGuides / mirror (push) Canceled after 0s

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:
lockbitchat
2026-09-01 21:05:47 -04:00
parent 8ad4b4558d
commit 46be54b59f
19 changed files with 1976 additions and 26 deletions
+76 -1
View File
@@ -801,7 +801,82 @@
"groupCall.speaking": "{name} parle",
"groupCall.pin": "Afficher {name} en grand",
"groupCall.unpin": "Revenir à tous",
"groupCall.showEveryone": "Tout le monde"
"groupCall.showEveryone": "Tout le monde",
"msg.after5s": "5 s après lecture",
"msg.after15s": "15 s après lecture",
"msg.after30s": "30 s après lecture",
"msg.after1m": "1 min après lecture",
"msg.sec30": "30 secondes",
"msg.min5": "5 minutes",
"msg.hour1": "1 heure",
"desktop.shareDesc": "Envoyez le code à votre pair. Il est à usage unique et expire rapidement.",
"desktop.invitationCreated": "Invitation sécurisée créée - envoyez-la à votre pair.",
"desktop.joinDesc": "Collez le code d'invitation de votre pair pour construire votre réponse sécurisée.",
"desktop.offerTag": "invitation · copier le texte",
"desktop.answerTag": "réponse · copier le texte",
"desktop.offerPlaceholder": "Le code d'invitation apparaîtra ici…",
"desktop.answerPlaceholder": "Le code de réponse apparaîtra ici…",
"desktop.backToChats": "Retour aux discussions",
"desktop.sendFeedback": "Envoyer un retour",
"desktop.callsNeedVerified": "Les appels nécessitent un canal sécurisé vérifié.",
"desktop.noOpenChannel": "Aucun canal sécurisé ouvert.",
"desktop.chatCarriesCall": "Cette discussion porte un appel de groupe. Quittez l'appel de groupe avant de lancer un appel à deux.",
"desktop.err.permission_denied": "L'appel n'a pas pu démarrer - l'accès au micro et à la caméra est bloqué. Autorisez-le dans les réglages système, puis réessayez.",
"desktop.language": "Langue",
"desktop.languageHint": "S'applique immédiatement. Les messages déjà envoyés gardent leurs mots.",
"desktop.compareCode": "Comparez le code de vérification avec votre pair et confirmez sil correspond.",
"desktop.verifyBeforeFiles": "Terminez la vérification avant denvoyer des fichiers.",
"desktop.verifyBeforeSending": "Terminez la vérification avant denvoyer des messages.",
"desktop.disconnectedByBackend": "Connexion fermée de façon sécurisée.",
"desktop.restoreFailed": "Impossible de rétablir la connexion. Fermeture de cette discussion.",
"desktop.channelNotReady": "Le canal de données nest pas encore disponible. Attendez que la connexion soit établie.",
"desktop.enterCode": "Saisissez le code de vérification pour confirmer.",
"desktop.noOffer": "Aucune invitation trouvée. Créez-en une dabord.",
"desktop.notInitiator": "Vous navez pas créé cette connexion, il ny a donc aucune réponse à appliquer.",
"desktop.decryptFailed": "Un message na pas pu être déchiffré et a été écarté.",
"desktop.badMessageFormat": "Une trame mal formée est arrivée et a été écartée.",
"desktop.notSentNotReady": "Message non envoyé : le canal sécurisé nest pas prêt. Attendez la fin de la vérification ou reconnectez-vous.",
"desktop.micDenied": "Laccès au micro a été refusé.",
"desktop.noChannelWait": "Aucun canal sécurisé ouvert - attendez que la connexion soit établie.",
"desktop.sasFailed": "Échec de la vérification. Un intermédiaire est peut-être présent : la connexion a été interrompue.",
"desktop.sasOk": "Vérification réussie. Ce canal est authentifié de bout en bout.",
"desktop.iceForgotten": "Serveurs enregistrés oubliés. Utilisation des serveurs ICE publics.",
"desktop.icePublic": "Utilisation des serveurs ICE publics.",
"desktop.verificationInProgress": "La vérification de sécurité est encore en cours. Attendez la fin.",
"desktop.fileGone": "Ce fichier nest plus disponible au téléchargement.",
"desktop.codeMismatch": "Les codes de vérification ne correspondent pas. Déconnexion par sécurité.",
"desktop.noLocalCode": "Échec de la vérification : aucun code dérivé localement à comparer. Déconnexion par sécurité.",
"desktop.protocolViolation": "Le pair a affirmé que le code était confirmé avant que vous ne le confirmiez. Déconnexion par sécurité.",
"desktop.verificationRejected": "Vérification rejetée. La connexion a été interrompue par sécurité.",
"secLevel.HIGH": "ÉLEVÉ",
"secLevel.MEDIUM": "MOYEN",
"secLevel.LOW": "FAIBLE",
"desktop.rerun": "Relancer",
"desktop.ice.customDesc": "Jusqu'à {max} serveurs, une URL par ligne ou du JSON.",
"desktop.ice.persistDesc": "Enregistré localement sur cet appareil. Laissez désactivé pour ne lutiliser que pendant cette session.",
"desktop.group.leaveNote": "Les autres membres sont informés de votre départ. Rien de ce groupe ne reste ensuite sur cet appareil - aucun serveur nen garde de copie, il vous faudrait donc une nouvelle invitation.",
"desktop.sec.ecdsaOk": "Signature du paquet de clés du pair vérifiée pendant la poignée de main (ECDSA P-384 / SHA-384)",
"desktop.sec.ecdsaNone": "Aucune poignée de main achevée",
"desktop.sec.ecdhOk": "Clés de session dérivées dun échange ECDH P-384 éphémère via HKDF-SHA-256",
"desktop.sec.ecdhNone": "Aucune clé de session dérivée",
"desktop.sec.encryptionOk": "Chiffrement et déchiffrement AES-GCM vérifiés dans le cœur",
"desktop.sec.encryptionNa": "Lautotest AES-GCM na pas pu être exécuté",
"desktop.sec.integrityOk": "Intégrité des messages vérifiée (authentification AES-GCM)",
"desktop.sec.integrityNa": "Lautotest dintégrité na pas pu être exécuté",
"desktop.sec.pfsOk": "Double Ratchet actif - chaque message a sa propre clé",
"desktop.sec.pfsNa": "Non mesuré",
"desktop.sec.replayOk": "Les clés de message du ratchet sont détruites après usage : une trame capturée ne peut pas être rejouée",
"desktop.sec.replayNa": "Non mesuré",
"desktop.sec.dtlsPinned": "Empreinte DTLS du pair épinglée : {fp}",
"desktop.sec.dtlsNone": "Aucune empreinte DTLS distante disponible",
"desktop.sec.sasBoth": "Les deux pairs ont confirmé le code de sécurité hors bande",
"desktop.sec.sasIncomplete": "Le code de sécurité na pas été confirmé par les deux pairs",
"desktop.sec.metadataOk": "Une clé de métadonnées dédiée a été dérivée (HKDF metadata-protection-v4)",
"desktop.sec.metadataNone": "Aucune clé de métadonnées",
"desktop.sec.coverOn": "Trafic de couverture actif : trames factices aléatoires (32-128 o toutes les 15-30 s) sur le canal à ratchet",
"desktop.sec.coverOff": "Le générateur de trafic de couverture ne tourne pas",
"desktop.sec.coverUnsupported": "Le trafic de couverture exige une session Double Ratchet (le pair utilise une version plus ancienne)",
"desktop.tagline": "La liberté de bout en bout"
},
"manifest": {
"name": "SecureBit.chat - Messagerie privée et chiffrée",