v4: a moderator's or an admin's @everyone in the chat notifies every user — there was no way to reach everyone at once. The new chat:everyone permission, held by moderators and admins, lets a chat message saying @everyone notify every user but its author and those reading the chat, through notifyEveryone, after notifyMentions, so a user also named is told once, by name; the notification is a user_mentioned with everyone set, which the notifications page and the digest word as "mentioned everyone in the chat". chat_messages.mentions_everyone, sent as ChatMessage.mentionsEveryone, is set from the author's role each time the body is written, so a user's @everyone reaches no one, a moderator's edit of a user's message can't make it reach everyone, and a demoted author's next edit loses it. Only an edit that adds @everyone notifies, so fixing an announcement's typo reaches no one new. The client highlights and chimes by the flag, never by the text; Markdown shows @everyone as a mention only in a flagged message, and never links it to a profile. The chat composer offers @everyone first to those who may say it. No account may be named everyone, in any case: migration 0023 adds the column, flags the moderators' and admins' past @everyone messages, renames a user named everyone to everyone_N and drops an alias everyone. 265 backend tests and 681 frontend tests pass, and deno check, tsc, eslint, doc:lint and i18n:compile --strict are clean; checked in screenshots of the chat at 1280 and 390px, with a moderator's and a user's @everyone and the suggestions open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
khannurien
2026-10-09 12:54:09 +00:00
parent 5f239a144d
commit 134d1a0b97
37 changed files with 806 additions and 263 deletions

View File

@@ -14,175 +14,180 @@ msgstr ""
"Language-Team: \n"
#. js-lingui-explicit-id
#: api/mail/digest.ts:129
#: api/mail/digest.ts:163
msgid "email.digest.hl.mentionEveryone"
msgstr "{who} a mentionné tout le monde dans {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:130
#: src/pages/Community.tsx:49
msgid "digest.count.upvotes"
msgstr "{n, plural, one {vote} other {votes}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:131
#: api/mail/digest.ts:132
msgid "email.digest.count.followers"
msgstr "{n, plural, one {nouvel abonné} other {nouveaux abonnés}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:133
#: api/mail/digest.ts:134
#: src/pages/Community.tsx:50
msgid "digest.count.comments"
msgstr "{n, plural, one {commentaire} other {commentaires}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:135
#: api/mail/digest.ts:136
msgid "email.digest.count.mentions"
msgstr "{n, plural, one {mention} other {mentions}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:137
#: api/mail/digest.ts:138
msgid "email.digest.count.likes"
msgstr "{n, plural, one {j'aime sur vos commentaires} other {j'aime sur vos commentaires}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:139
#: api/mail/digest.ts:140
msgid "email.digest.count.playlistFollows"
msgstr "{n, plural, one {abonnement à vos collections} other {abonnements à vos collections}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:155
#: api/mail/digest.ts:156
msgid "email.digest.hl.mentionComment"
msgstr "{who} vous a mentionné dans un commentaire sur {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:158
#: api/mail/digest.ts:159
msgid "email.digest.hl.mentionIn"
msgstr "{who} vous a mentionné dans {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:160
#: api/mail/digest.ts:161
msgid "email.digest.hl.mentionPlaylist"
msgstr "{who} vous a mentionné dans la collection {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:162
#: api/mail/digest.ts:165
msgid "email.digest.hl.comment"
msgstr "{who} a commenté votre reco {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:164
#: api/mail/digest.ts:167
msgid "email.digest.hl.playlistFollow"
msgstr "{who} a suivi votre collection {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:166
#: api/mail/digest.ts:169
msgid "email.digest.hl.userFollow"
msgstr "{who} vous suit désormais"
#. js-lingui-explicit-id
#: api/mail/digest.ts:168
#: api/mail/digest.ts:171
msgid "email.digest.hl.commentLike"
msgstr "{who} a aimé votre commentaire sur {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:172
#: api/mail/digest.ts:175
msgid "email.digest.by"
msgstr "par @{username}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:174
#: api/mail/digest.ts:177
msgid "email.digest.addedTo"
msgstr "ajoutée à {playlist}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:175
#: api/mail/digest.ts:178
msgid "email.digest.upload"
msgstr "fichier"
#. js-lingui-explicit-id
#: api/mail/digest.ts:178
#: api/mail/digest.ts:181
#: src/pages/Community.tsx:141
msgid "digest.invitedByYou"
msgstr "sur votre invitation"
#. js-lingui-explicit-id
#: api/mail/digest.ts:179
#: api/mail/digest.ts:182
#: src/pages/Community.tsx:143
msgid "digest.invitedBy"
msgstr "sur invitation de @{username}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:180
#: api/mail/digest.ts:183
msgid "email.digest.andMore"
msgstr "et {n} de plus"
#. js-lingui-explicit-id
#: api/mail/digest.ts:182
#: api/mail/digest.ts:185
msgid "email.digest.playlistMeta"
msgstr "par @{username} · {n, plural, one {# reco} other {# recos}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:205
#: api/mail/digest.ts:208
msgid "email.digest.yours"
msgstr "à vous"
#. js-lingui-explicit-id
#: api/mail/digest.ts:223
#: api/mail/digest.ts:226
#: src/pages/Settings.tsx:154
msgid "digest.monthly"
msgstr "Récap mensuel"
#. js-lingui-explicit-id
#: api/mail/digest.ts:223
#: api/mail/digest.ts:226
#: src/pages/Settings.tsx:145
msgid "digest.weekly"
msgstr "Résumé hebdomadaire"
#. js-lingui-explicit-id
#: api/mail/digest.ts:231
#: api/mail/digest.ts:234
msgid "email.digest.monthly.title"
msgstr "Le mois sur {site}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:232
#: api/mail/digest.ts:235
msgid "email.digest.weekly.title"
msgstr "Votre semaine, {username}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:240
#: api/mail/digest.ts:243
msgid "email.digest.forYou"
msgstr "Pour vous"
#. js-lingui-explicit-id
#: api/mail/digest.ts:249
#: api/mail/digest.ts:252
msgid "email.digest.theChat"
msgstr "la tribune"
#. js-lingui-explicit-id
#: api/mail/digest.ts:264
#: api/mail/digest.ts:267
msgid "email.digest.seeAll"
msgstr "{n, plural, one {Voir la notification} other {Voir les # notifications}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:273
#: api/mail/digest.ts:276
msgid "email.digest.network"
msgstr "De ceux que vous suivez"
#. js-lingui-explicit-id
#: api/mail/digest.ts:279
#: api/mail/digest.ts:282
msgid "email.digest.more"
msgstr "{n} de plus dans votre fil Suivi"
#. js-lingui-explicit-id
#: api/mail/digest.ts:291
#: api/mail/digest.ts:294
#: src/pages/Community.tsx:127
msgid "digest.topMonth"
msgstr "Les plus votées du mois"
#. js-lingui-explicit-id
#: api/mail/digest.ts:291
#: api/mail/digest.ts:294
#: src/pages/Community.tsx:126
msgid "digest.topWeek"
msgstr "Les plus votées de la semaine"
#. js-lingui-explicit-id
#: api/mail/digest.ts:307
#: api/mail/digest.ts:310
#: src/components/layout/UserMenu.tsx:94
#: src/pages/Community.tsx:73
#: src/pages/Community.tsx:100
@@ -190,113 +195,113 @@ msgid "digest.community"
msgstr "Communauté"
#. js-lingui-explicit-id
#: api/mail/digest.ts:314
#: api/mail/digest.ts:317
#: src/pages/Community.tsx:48
msgid "digest.stat.dumps"
msgstr "{n, plural, one {reco} other {recos}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:320
#: api/mail/digest.ts:323
#: src/pages/Community.tsx:53
msgid "digest.stat.chat"
msgstr "{n, plural, one {message dans la tribune} other {messages dans la tribune}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:329
#: api/mail/digest.ts:332
#: src/pages/Community.tsx:133
msgid "digest.newMembers"
msgstr "Nouveaux membres"
#. js-lingui-explicit-id
#: api/mail/digest.ts:348
#: api/mail/digest.ts:351
#: src/pages/Community.tsx:154
msgid "digest.newPlaylists"
msgstr "Nouvelles collections publiques"
#. js-lingui-explicit-id
#: api/mail/digest.ts:363
#: api/mail/digest.ts:366
msgid "email.digest.inChat"
msgstr "Dans la tribune"
#. js-lingui-explicit-id
#: api/mail/digest.ts:365
#: api/mail/digest.ts:368
msgid "email.digest.chatWeek"
msgstr "{n, plural, one {# message cette semaine} other {# messages cette semaine}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:368
#: api/mail/digest.ts:371
msgid "email.digest.openChat"
msgstr "Ouvrir la tribune"
#. js-lingui-explicit-id
#: api/mail/digest.ts:377
#: api/mail/digest.ts:380
msgid "email.digest.totals"
msgstr "{dumps, plural, one {# reco} other {# recos}}, {upvotes, plural, one {# vote} other {# votes}} et {comments, plural, one {# commentaire} other {# commentaires}}."
#. js-lingui-explicit-id
#: api/mail/digest.ts:383
#: api/mail/digest.ts:386
msgid "email.digest.communityPage"
msgstr "Tout voir sur la page de la communauté"
#. js-lingui-explicit-id
#: api/mail/digest.ts:393
#: api/mail/digest.ts:396
msgid "email.digest.monthly.reason"
msgstr "Vous recevez ce récap mensuel car il est activé dans vos paramètres."
#. js-lingui-explicit-id
#: api/mail/digest.ts:394
#: api/mail/digest.ts:397
msgid "email.digest.weekly.reason"
msgstr "Vous recevez ce résumé hebdomadaire car il est activé dans vos paramètres."
#. js-lingui-explicit-id
#: api/mail/digest.ts:398
#: api/mail/digest.ts:401
#: src/pages/Unsubscribe.tsx:118
msgid "digest.monthly.off"
msgstr "Ne plus recevoir le récap mensuel"
#. js-lingui-explicit-id
#: api/mail/digest.ts:398
#: api/mail/digest.ts:401
#: src/pages/Unsubscribe.tsx:117
msgid "digest.weekly.off"
msgstr "Ne plus recevoir le résumé hebdomadaire"
#. js-lingui-explicit-id
#: api/mail/digest.ts:403
#: api/mail/digest.ts:406
msgid "email.settings"
msgstr "Paramètres"
#. js-lingui-explicit-id
#: api/mail/digest.ts:411
#: api/mail/digest.ts:414
msgid "email.digest.monthly.subject"
msgstr "Le mois sur {site}, {range}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:415
#: api/mail/digest.ts:418
msgid "email.digest.weekly.subject"
msgstr "Votre semaine sur {site}, {range}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:438
#: api/mail/digest.ts:441
msgid "email.digest.pre.network"
msgstr "{n, plural, one {# nouvelle reco de ceux que vous suivez} other {# nouvelles recos de ceux que vous suivez}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:447
#: api/mail/digest.ts:450
msgid "email.digest.pre.topMonth"
msgstr "{n, plural, one {la reco la plus votée du mois} other {les # recos les plus votées du mois}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:451
#: api/mail/digest.ts:454
msgid "email.digest.pre.members"
msgstr "{n, plural, one {# nouveau membre} other {# nouveaux membres}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:454
#: api/mail/digest.ts:457
msgid "email.digest.pre.playlists"
msgstr "{n, plural, one {# nouvelle collection} other {# nouvelles collections}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:458
#: api/mail/digest.ts:461
msgid "email.digest.pre.topWeek"
msgstr "{n, plural, one {la reco la plus votée de la semaine} other {les # recos les plus votées de la semaine}}"
@@ -401,12 +406,12 @@ msgstr "{0, plural, one {et # reco plus ancienne} other {et # recos plus ancienn
#. placeholder {0}: typingNames[0]
#. placeholder {1}: typingNames[1]
#: src/components/chat/ChatModal.tsx:649
#: src/components/chat/ChatModal.tsx:650
msgid "{0} and {1} are typing…"
msgstr "{0} et {1} sont en train d'écrire…"
#. placeholder {0}: typingNames[0]
#: src/components/chat/ChatModal.tsx:647
#: src/components/chat/ChatModal.tsx:648
msgid "{0} is typing…"
msgstr "{0} est en train d'écrire…"
@@ -425,11 +430,11 @@ msgstr "{0}–{1} caractères : lettres, chiffres ou tirets bas"
msgid "{label} ({count})"
msgstr "{label} ({count})"
#: src/pages/Notifications.tsx:499
#: src/pages/Notifications.tsx:508
msgid "{totalUnread, plural, one {# new} other {# new}}"
msgstr "{totalUnread, plural, one {# nouvelle} other {# nouvelles}}"
#: src/components/chat/ChatModal.tsx:778
#: src/components/chat/ChatModal.tsx:779
msgid "{unseenCount} new messages"
msgstr "{unseenCount} nouveaux messages"
@@ -480,7 +485,12 @@ msgid "<0>{0}</0> liked your comment on <1>{1}</1>"
msgstr "<0>{0}</0> a aimé votre commentaire sur <1>{1}</1>"
#. placeholder {0}: d.mentionerUsername
#: src/pages/Notifications.tsx:265
#: src/pages/Notifications.tsx:266
msgid "<0>{0}</0> mentioned everyone in <1>{where}</1>"
msgstr "<0>{0}</0> a mentionné tout le monde dans <1>{where}</1>"
#. placeholder {0}: d.mentionerUsername
#: src/pages/Notifications.tsx:274
msgid "<0>{0}</0> mentioned you in <1>{where}</1>"
msgstr "<0>{0}</0> vous a mentionné dans <1>{where}</1>"
@@ -507,7 +517,7 @@ msgstr "<0>{0}</0> a voté pour <1>{1}</1>"
msgid "<0>{0}</0> was added to <1>{1}</1>"
msgstr "<0>{0}</0> a été ajouté à <1>{1}</1>"
#: src/components/chat/ChatModal.tsx:777
#: src/components/chat/ChatModal.tsx:778
msgid "1 new message"
msgstr "1 nouveau message"
@@ -597,7 +607,7 @@ msgid "Back to login"
msgstr "Retour à la connexion"
#: src/contexts/ws/WSProvider.tsx:395
#: src/contexts/ws/WSProvider.tsx:761
#: src/contexts/ws/WSProvider.tsx:764
msgid "Can't connect to the live updates server. Upvotes and notifications may not sync until it reconnects."
msgstr "Impossible de se connecter au serveur de mises à jour en direct. Les votes et les notifications pourraient ne pas se synchroniser avant la reconnexion."
@@ -620,8 +630,8 @@ msgstr "Annuler"
msgid "Cancel removal"
msgstr "Annuler la suppression"
#: src/components/chat/ChatModal.tsx:838
#: src/components/chat/ChatModal.tsx:839
#: src/components/chat/ChatModal.tsx:840
msgid "Cancel reply"
msgstr "Annuler la réponse"
@@ -659,7 +669,7 @@ msgstr "Changer le mot de passe…"
msgid "Change skin tone"
msgstr "Changer la couleur de peau"
#: src/components/chat/ChatModal.tsx:738
#: src/components/chat/ChatModal.tsx:739
#: src/components/layout/ChatButton.tsx:30
#: src/components/layout/ChatFab.tsx:54
#: src/components/layout/ChatFab.tsx:55
@@ -709,7 +719,7 @@ msgstr "Thème de couleur"
msgid "Confirm new password"
msgstr "Confirmer le nouveau mot de passe"
#: src/contexts/ws/WSProvider.tsx:754
#: src/contexts/ws/WSProvider.tsx:757
msgid "Connection lost — this message may not have been sent"
msgstr "Connexion perdue — ce message n'a peut-être pas été envoyé"
@@ -746,7 +756,7 @@ msgstr "Sauvegarde impossible"
msgid "Couldn't load a preview for this link — check it, or post it as-is and refresh the preview later."
msgstr "Impossible de charger un aperçu pour ce lien — vérifiez-le, ou publiez-le tel quel et actualisez l'aperçu plus tard."
#: src/components/chat/ChatModal.tsx:664
#: src/components/chat/ChatModal.tsx:665
msgid "Couldn't load the chat."
msgstr "Impossible de charger le chat."
@@ -788,9 +798,9 @@ msgstr "Onglet par défaut"
#: src/components/category/CategoryManager.tsx:236
#: src/components/category/CategoryManager.tsx:237
#: src/components/chat/ChatMessageItem.tsx:115
#: src/components/chat/ChatMessageItem.tsx:116
#: src/components/chat/ChatMessageItem.tsx:214
#: src/components/chat/ChatMessageItem.tsx:118
#: src/components/chat/ChatMessageItem.tsx:119
#: src/components/chat/ChatMessageItem.tsx:220
#: src/components/comment/CommentNode.tsx:265
#: src/components/comment/CommentNode.tsx:271
#: src/components/form/DeleteButton.tsx:36
@@ -832,7 +842,7 @@ msgstr "Supprimer ce commentaire ?"
msgid "Delete this dump? This cannot be undone."
msgstr "Supprimer cette reco ? Cette action est irréversible."
#: src/components/chat/ChatMessageItem.tsx:213
#: src/components/chat/ChatMessageItem.tsx:219
msgid "Delete this message?"
msgstr "Supprimer ce message ?"
@@ -857,12 +867,12 @@ msgstr "Description (facultatif)"
msgid "Discard"
msgstr "Abandonner"
#: src/components/chat/ChatModal.tsx:742
#: src/components/chat/ChatModal.tsx:743
msgid "Disconnected — reconnecting…"
msgstr "Déconnecté — reconnexion…"
#: src/components/chat/ChatModal.tsx:814
#: src/components/chat/ChatModal.tsx:815
#: src/components/chat/ChatModal.tsx:816
msgid "Dismiss"
msgstr "Fermer"
@@ -910,12 +920,12 @@ msgstr "Recos"
msgid "Dumps ({0})"
msgstr "Recos ({0})"
#: src/pages/Notifications.tsx:305
#: src/pages/Notifications.tsx:314
msgid "Earlier"
msgstr "Plus tôt"
#: src/components/chat/ChatMessageItem.tsx:104
#: src/components/chat/ChatMessageItem.tsx:105
#: src/components/chat/ChatMessageItem.tsx:107
#: src/components/chat/ChatMessageItem.tsx:108
#: src/components/chat/PendingItem.tsx:93
#: src/components/comment/CommentNode.tsx:256
#: src/components/playlist/PlaylistHeader.tsx:59
@@ -941,14 +951,14 @@ msgstr "Modifier l'e-mail"
msgid "Edit title"
msgstr "Modifier le titre"
#: src/components/chat/ChatMessageItem.tsx:128
#: src/components/chat/ChatMessageItem.tsx:131
msgid "edited"
msgstr "modifié"
#. placeholder {0}: relativeTime(comment.updatedAt)
#. placeholder {0}: relativeTime(dump.updatedAt)
#. placeholder {0}: relativeTime(message.updatedAt)
#: src/components/chat/ChatMessageItem.tsx:129
#: src/components/chat/ChatMessageItem.tsx:132
#: src/components/comment/CommentNode.tsx:205
#: src/components/playlist/PlaylistHeader.tsx:94
#: src/pages/Dump.tsx:505
@@ -958,7 +968,7 @@ msgstr "modifié {0}"
#. placeholder {0}: comment.updatedAt.toLocaleString()
#. placeholder {0}: dump.updatedAt.toLocaleString()
#. placeholder {0}: message.updatedAt.toLocaleString()
#: src/components/chat/ChatMessageItem.tsx:125
#: src/components/chat/ChatMessageItem.tsx:128
#: src/components/comment/CommentNode.tsx:203
#: src/components/playlist/PlaylistHeader.tsx:92
#: src/pages/Dump.tsx:503
@@ -1132,8 +1142,8 @@ msgstr "image"
msgid "In collections"
msgstr "Dans les collections"
#: src/components/editor/TextEditor.tsx:573
#: src/components/editor/TextEditor.tsx:575
#: src/components/editor/TextEditor.tsx:579
#: src/components/editor/TextEditor.tsx:581
msgid "Insert emoji"
msgstr "Insérer un emoji"
@@ -1190,7 +1200,7 @@ msgstr "Lien"
msgid "Link or file"
msgstr "Lien ou fichier"
#: src/contexts/ws/WSProvider.tsx:760
#: src/contexts/ws/WSProvider.tsx:763
msgid "Live updates are temporarily disconnected. Trying to reconnect…"
msgstr "Les mises à jour en direct sont temporairement interrompues. Tentative de reconnexion…"
@@ -1202,7 +1212,7 @@ msgstr "Mises à jour en direct indisponibles."
msgid "Load more"
msgstr "Charger plus"
#: src/components/chat/ChatModal.tsx:763
#: src/components/chat/ChatModal.tsx:764
msgid "Load older messages"
msgstr "Charger les messages plus anciens"
@@ -1211,7 +1221,7 @@ msgstr "Charger les messages plus anciens"
msgid "Loading dump…"
msgstr "Chargement de la reco…"
#: src/components/chat/ChatModal.tsx:656
#: src/components/chat/ChatModal.tsx:657
msgid "Loading messages…"
msgstr "Chargement des messages…"
@@ -1228,7 +1238,7 @@ msgid "Loading profile…"
msgstr "Chargement du profil…"
#: src/components/category/CategoryManager.tsx:60
#: src/components/chat/ChatModal.tsx:762
#: src/components/chat/ChatModal.tsx:763
#: src/components/editor/EmojiPickerPopup.tsx:125
#: src/components/playlist/PlaylistMembershipPanel.tsx:45
#: src/components/shared/ListState.tsx:38
@@ -1293,7 +1303,7 @@ msgstr "Couper le son"
msgid "Name"
msgstr "Nom"
#: src/components/chat/ChatModal.tsx:691
#: src/components/chat/ChatModal.tsx:692
#: src/components/feed/FeedTabBar.tsx:40
#: src/pages/Settings.tsx:52
msgid "New"
@@ -1349,7 +1359,7 @@ msgstr "Pas encore de collections suivies."
msgid "No invitees yet."
msgstr "Aucun invité pour le moment."
#: src/components/chat/ChatModal.tsx:675
#: src/components/chat/ChatModal.tsx:676
msgid "No messages yet. Say hello!"
msgstr "Aucun message pour l'instant. Dites bonjour !"
@@ -1366,7 +1376,7 @@ msgstr "Aucune collection ne correspond à « {q} »."
msgid "No playlists yet."
msgstr "Pas encore de collections."
#: src/contexts/ws/WSProvider.tsx:929
#: src/contexts/ws/WSProvider.tsx:932
msgid "No reply from the server — this message may not have been sent"
msgstr "Pas de réponse du serveur — ce message n'a peut-être pas été envoyé"
@@ -1388,13 +1398,13 @@ msgstr "Rien de neuf cette semaine."
#: src/components/profile/ProfileDumpsTab.tsx:53
#: src/components/profile/ProfileOverviewTab.tsx:47
#: src/pages/Notifications.tsx:513
#: src/pages/Notifications.tsx:522
msgid "Nothing here yet."
msgstr "Rien ici pour l'instant."
#: src/components/layout/NotificationBell.tsx:57
#: src/pages/Notifications.tsx:378
#: src/pages/Notifications.tsx:496
#: src/pages/Notifications.tsx:387
#: src/pages/Notifications.tsx:505
#: src/pages/Settings.tsx:128
msgid "Notifications"
msgstr "Notifications"
@@ -1411,7 +1421,7 @@ msgstr "Désactivés"
msgid "On"
msgstr "Activés"
#: src/components/editor/TextEditor.tsx:385
#: src/components/editor/TextEditor.tsx:391
msgid "Only images can be dropped here."
msgstr "Seules les images peuvent être déposées ici."
@@ -1594,13 +1604,13 @@ msgstr "Renommage…"
msgid "Replace file"
msgstr "Remplacer le fichier"
#: src/components/chat/ChatMessageItem.tsx:94
#: src/components/chat/ChatMessageItem.tsx:95
#: src/components/chat/ChatMessageItem.tsx:97
#: src/components/chat/ChatMessageItem.tsx:98
#: src/components/comment/CommentNode.tsx:244
msgid "Reply"
msgstr "Répondre"
#: src/components/chat/ChatModal.tsx:826
#: src/components/chat/ChatModal.tsx:827
msgid "Replying to"
msgstr "En réponse à"
@@ -1687,7 +1697,7 @@ msgstr "Recherche…"
msgid "Seek"
msgstr "Position"
#: src/components/chat/ChatModal.tsx:866
#: src/components/chat/ChatModal.tsx:868
msgid "Send"
msgstr "Envoyer"
@@ -1715,7 +1725,7 @@ msgstr "Définir un nouveau mot de passe"
msgid "Settings"
msgstr "Paramètres"
#: src/components/chat/ChatModal.tsx:650
#: src/components/chat/ChatModal.tsx:651
msgid "Several people are typing…"
msgstr "Plusieurs personnes écrivent…"
@@ -1727,13 +1737,13 @@ msgstr "Usage unique, valable 7 jours."
msgid "slug"
msgstr "identifiant"
#: src/components/editor/TextEditor.tsx:343
#: src/components/editor/TextEditor.tsx:349
msgid "Some images couldn't be uploaded."
msgstr "Certaines images n'ont pas pu être envoyées."
#: src/components/form/FormError.tsx:31
#: src/components/layout/PageError.tsx:29
#: src/contexts/ws/WSProvider.tsx:729
#: src/contexts/ws/WSProvider.tsx:732
#: src/pages/PlaylistDetail.tsx:124
msgid "Something went wrong"
msgstr "Une erreur est survenue"
@@ -1766,7 +1776,7 @@ msgstr "la tribune"
msgid "The dump couldn't be removed. Try again."
msgstr "Le dump n'a pas pu être retiré. Réessayez."
#: src/components/editor/TextEditor.tsx:344
#: src/components/editor/TextEditor.tsx:350
msgid "The image couldn't be uploaded."
msgstr "L'image n'a pas pu être envoyée."
@@ -1825,7 +1835,7 @@ msgstr "Titre"
msgid "Title is required."
msgstr "Un titre est requis."
#: src/pages/Notifications.tsx:303
#: src/pages/Notifications.tsx:312
#: src/utils/chat/time.ts:24
msgid "Today"
msgstr "Aujourd'hui"
@@ -1835,7 +1845,7 @@ msgstr "Aujourd'hui"
msgid "Track {0}"
msgstr "Piste {0}"
#: src/components/chat/ChatModal.tsx:667
#: src/components/chat/ChatModal.tsx:668
msgid "Try again"
msgstr "Réessayer"
@@ -1851,7 +1861,7 @@ msgstr "Ne plus recevoir le résumé hebdomadaire ?"
msgid "Turning off…"
msgstr "Désactivation…"
#: src/components/chat/ChatModal.tsx:851
#: src/components/chat/ChatModal.tsx:852
msgid "Type a message…"
msgstr "Écrivez un message…"
@@ -1892,7 +1902,7 @@ msgstr "Envoi échoué"
msgid "Uploading {0}%"
msgstr "Envoi {0} %"
#: src/components/editor/TextEditor.tsx:595
#: src/components/editor/TextEditor.tsx:601
msgid "Uploading image…"
msgstr "Envoi de l'image…"
@@ -1990,7 +2000,7 @@ msgstr "Pourquoi ?"
msgid "Write a reply…"
msgstr "Écrire une réponse…"
#: src/pages/Notifications.tsx:304
#: src/pages/Notifications.tsx:313
#: src/utils/chat/time.ts:27
msgid "Yesterday"
msgstr "Hier"
@@ -2007,11 +2017,11 @@ msgstr "Vous ne recevrez plus le récap mensuel. Vous pouvez le réactiver dans
msgid "You won't get the weekly digest any more. You can turn it back on in your settings."
msgstr "Vous ne recevrez plus le résumé hebdomadaire. Vous pouvez le réactiver dans vos paramètres."
#: src/pages/Notifications.tsx:516
#: src/pages/Notifications.tsx:525
msgid "You'll be notified when someone follows your playlists, upvotes your dumps, or posts new content."
msgstr "Vous serez notifié lorsque quelqu'un suit vos collections, vote pour vos recos ou publie du nouveau contenu."
#: src/contexts/ws/WSProvider.tsx:910
#: src/contexts/ws/WSProvider.tsx:913
msgid "You're offline — not sent"
msgstr "Hors ligne — message non envoyé"