Compare commits

...

15 Commits
main ... 5.45.x

Author SHA1 Message Date
Fedor Indutnyy 4f4ee654e0 v5.45.1 2022-06-08 07:14:02 -07:00
Fedor Indutnyy 4a877cc2ff Update strings 2022-06-08 07:13:45 -07:00
automated-signal 29cdc0d3c2
Erased messages should not stall attachment jobs
Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
2022-06-07 15:38:02 -07:00
automated-signal a53c04645d
On Sender Key distribution message failure, don't update send status
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2022-06-03 09:31:47 -07:00
Scott Nonnenberg a78c0ce500 v5.45.0 2022-06-01 14:56:17 -07:00
Scott Nonnenberg 0574b8c4af Update strings 2022-06-01 14:45:54 -07:00
Scott Nonnenberg feb5e569f3
Ensure that untrusted conversations are always rendered in dialog 2022-06-01 14:32:40 -07:00
automated-signal 08360d150c
getMessagePropStatus: Move back to isOutgoing for in/out check
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2022-06-01 12:55:12 -07:00
Scott Nonnenberg b44dafe804
Send just sync message if we've already sent to all recipients 2022-06-01 11:40:52 -07:00
automated-signal 65f909dfd5
If group avatar is the same, but URL changed, capture that new URL
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2022-05-31 13:35:18 -07:00
automated-signal 3cc89eb6db
Sort groups you've left to the bottom of search
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2022-05-31 13:35:01 -07:00
automated-signal 110e596b38
Restore useful bubble for incoming messages with errors
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2022-05-31 10:34:10 -07:00
automated-signal 350f9019c2
Append 'password-store=basic' switch on startup
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2022-05-27 09:40:29 -07:00
automated-signal a79b1949e2
When floating loading spinner isn't visible, don't render it
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2022-05-26 13:28:19 -07:00
automated-signal 897fc509ee
Make that theme values are in the expected range
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2022-05-26 12:18:39 -07:00
55 changed files with 808 additions and 839 deletions

View File

@ -929,6 +929,10 @@
"message": "يجري التنزيل", "message": "يجري التنزيل",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Download Full Message",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "تنزيل المرفقات", "message": "تنزيل المرفقات",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "يحتوي هذا الإصدار على عدد من التعديلات الصغيرة وإصلاحات الأخطاء للحفاظ على تشغيل Signal بسلاسة.", "message": "يحتوي هذا الإصدار على عدد من التعديلات الصغيرة وإصلاحات الأخطاء للحفاظ على تشغيل Signal بسلاسة.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "‫إن إصلاح العلل يتضمن تصحيح مشكلة كانت تجعل أحيانا الضغط على القوائم عسيرا.", "message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "‫نخص ببالغ الامتنان المساهمين في البرامج مفتوحة المصدر كلا من $dsanders11$ و $yusufsahinhamza$ على مساهمتهما في هذه التحسينات.", "message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Endirilir", "message": "Endirilir",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Tam mesajı endir",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Qoşmanı endir", "message": "Qoşmanı endir",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Bu versiya, Signal-ın problemsiz işləməsini təmin etmək üçün kiçik düzəltmələr və xəta düzəltmələri ehtiva edir.", "message": "Bu versiya, Signal-ın problemsiz işləməsini təmin etmək üçün kiçik düzəltmələr və xəta düzəltmələri ehtiva edir.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Bəzən menyuya klikləməni çətinləşdirən problemin həlli də daxil olmaqla bir çox xətalar aradan qaldırılıb.", "message": "Qrup zənglərindəki dinamik səs göstəriciləri fısıldamanı, qışqırmanı görməyinizə kömək edir.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Bu təkmilləşdirməyə töhfə verən açıq mənbə töhfəçilərimiz $dsanders11$ və $yusufsahinhamza$-ya təşəkkürlər.", "message": "Telefonunuzdan (dəvət bağlantısı vasitəsilə) qoşulmaq üçün göndərdiyiniz tələblər artıq Masaüstündə görünəcək.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Wi-Fi bağlantınız zəifdir? Problem deyil, artıq qoşmaları yenidən endirməyə çalışa bilərsiniz.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Es baixa", "message": "Es baixa",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Descarrega el missatge complet",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Baixa l'adjunt", "message": "Baixa l'adjunt",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Aquesta versió conté una sèrie de petites modificacions i correccions d'errors per tal que el Signal funcioni sense problemes.", "message": "Aquesta versió conté una sèrie de petites modificacions i correccions d'errors per tal que el Signal funcioni sense problemes.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Correccions d'errors, inclosa una solució a un problema que de vegades dificultava fer clic als menús.", "message": "Els indicadors d'àudio dinàmics de les trucades de grup us ajuden a veure si esteu xiuxiuejant, cridant o esteu bé.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Gràcies als nostres col·laboradors de codi obert $dsanders11$ i $yusufsahinhamza$ per contribuir a aquestes millores.", "message": "Els grups als quals heu sol·licitat afegir-vos des del telèfon (a través d'un enllaç d'invitació) es mostraran ara a l'escriptori.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Teniu una connexió Wi-Fi irregular? No és cap problema, ara podeu tornar a provar de baixar els fitxers adjunts.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Stahování", "message": "Stahování",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Stáhnout celou zprávu",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Stáhnout přílohu", "message": "Stáhnout přílohu",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Tato verze obsahuje řadu drobných úprav a oprav chyb, aby Signal fungoval hladce.", "message": "Tato verze obsahuje řadu drobných úprav a oprav chyb, aby Signal fungoval hladce.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Opravy chyb včetně opravy problému, který někdy ztěžoval klikání na položky menu.", "message": "Dynamické indikátory zvuku ve skupinových hovorech vám pomohou zjistit, zda šeptáte, křičíte nebo mluvíte tak akorát.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Díky našim open source přispěvatelům $dsanders11$ a $yusufsahinhamza$ za příspěvky do těchto vylepšení.", "message": "Skupiny, ke kterým jste se chtěli připojit z telefonu (prostřednictvím odkazu s pozvánkou), se nyní zobrazí v aplikaci pro počítače.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Máte poruchové připojení Wi-Fi? Žádný problém, nyní můžete stahování příloh zkusit znovu.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Yn Llwytho i Lawr", "message": "Yn Llwytho i Lawr",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Llwytho'r Neges Lawn i Lawr",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Llwytho Atodiad i Lawr", "message": "Llwytho Atodiad i Lawr",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Mae'r fersiwn hon yn cynnwys nifer o drydariadau bach a chywiriadau gwallau i gadw Signal yn rhedeg yn llyfn.", "message": "Mae'r fersiwn hon yn cynnwys nifer o drydariadau bach a chywiriadau gwallau i gadw Signal yn rhedeg yn llyfn.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Mae'r gwelliannau'n cynnwys datrysiad i broblem a fyddai weithiau'n ei gwneud hi'n anodd clicio ar ddewislenni.", "message": "Mae dangosyddion sain deinamig mewn grŵp yn eich cynorthwyo i weld os ydych yn sibrwd, gwaedu neu'n iawn.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Diolch i'n cyfranwyr cod agored $dsanders11$ ac $yusufsahinhamza$ am gyfrannu at y gwelliannau hyn.", "message": "Bydd grwpiau rydych wedi gofyn i gael ymuno â nhw drwy eich ffôn (drwy ddolen gwahoddiad) nawr yn cael eu dangos yn Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Cysylltiad Wi-Fi gwan? Dim problem, gallwch nawr geisio llwytho i lawr atodiadau eto.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Henter", "message": "Henter",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Hent hele beskeden",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Hent vedhæftet fil", "message": "Hent vedhæftet fil",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Denne version indeholder en række småjusteringer og fejlrettelser som sikrer, at Signal kører problemfrit.", "message": "Denne version indeholder en række småjusteringer og fejlrettelser som sikrer, at Signal kører problemfrit.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Fejlrettelser, herunder en rettelse af et problem, som nogle gange gjorde det svært at klikke på menuer. ", "message": "Dynamiske lydindikatorer i gruppeopkald hjælper dig med at se, om du hvisker, råber eller er lige tilpas.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Tak til vores open source-bidragsydere $dsanders11$ og $yusufsahinhamza$ for at bidrage med disse forbedringer.", "message": "Grupper, som du har anmodet om at deltage i fra din telefon (via et invitationslink), vises nu på Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Har du en ustabil Wi-Fi-forbindelse? Det er ikke noget problem, da du nu kan prøve at hente vedhæftede filer igen.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -218,7 +218,7 @@
"description": "Shown as a header for non-pinned conversations in the left pane" "description": "Shown as a header for non-pinned conversations in the left pane"
}, },
"archiveHelperText": { "archiveHelperText": {
"message": "Diese Unterhaltungen sind archiviert und erscheinen nur dann im Eingang, wenn neue Nachrichten eingehen.", "message": "Diese Unterhaltungen sind archiviert und erscheinen nur dann wieder im Eingang, wenn für sie neue Nachrichten eingehen.",
"description": "Shown at the top of the archived conversations list in the left pane" "description": "Shown at the top of the archived conversations list in the left pane"
}, },
"noArchivedConversations": { "noArchivedConversations": {
@ -234,7 +234,7 @@
"description": "Shown in menu for conversation, and marks conversation as unread" "description": "Shown in menu for conversation, and marks conversation as unread"
}, },
"moveConversationToInbox": { "moveConversationToInbox": {
"message": "Rückgängig", "message": "Dearchivieren",
"description": "Undoes Archive Conversation action, and moves archived conversation back to the main conversation list" "description": "Undoes Archive Conversation action, and moves archived conversation back to the main conversation list"
}, },
"pinConversation": { "pinConversation": {
@ -929,6 +929,10 @@
"message": "Wird heruntergeladen", "message": "Wird heruntergeladen",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Ganze Nachricht herunterladen",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Anhang herunterladen", "message": "Anhang herunterladen",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -1534,7 +1538,7 @@
"description": "Button tooltip label for turning on the camera" "description": "Button tooltip label for turning on the camera"
}, },
"calling__button--audio__label": { "calling__button--audio__label": {
"message": "Stummschalten", "message": "Stumm­schalten",
"description": "Label under the audio button" "description": "Label under the audio button"
}, },
"calling__button--audio-disabled": { "calling__button--audio-disabled": {
@ -2758,7 +2762,7 @@
"description": "Shown in a message's bubble when the message has been deleted for everyone." "description": "Shown in a message's bubble when the message has been deleted for everyone."
}, },
"message--giftBadge--unopened": { "message--giftBadge--unopened": {
"message": "Schaue dir diese Nachricht auf deinem Mobilgerät an, um diese zu öffnen", "message": "Schau dir diese Nachricht auf deinem Mobilgerät an, um sie zu öffnen",
"description": "Shown in a message's bubble when you've received a gift badge from a contact" "description": "Shown in a message's bubble when you've received a gift badge from a contact"
}, },
"message--giftBadge--unopened--label": { "message--giftBadge--unopened--label": {
@ -2770,7 +2774,7 @@
"description": "Shown when you've clicked on an incoming gift badge you haven't yet redeemed" "description": "Shown when you've clicked on an incoming gift badge you haven't yet redeemed"
}, },
"message--giftBadge--unopened--toast--outgoing": { "message--giftBadge--unopened--toast--outgoing": {
"message": "Nutze dein Mobilgerät, um dieses Geschenk anzusehen", "message": "Nutze dein Mobilgerät, um dein Geschenk anzusehen",
"description": "Shown when you've clicked on an outgoing gift badge" "description": "Shown when you've clicked on an outgoing gift badge"
}, },
"message--giftBadge--preview--unopened": { "message--giftBadge--preview--unopened": {
@ -3124,7 +3128,7 @@
"description": "Shown in the shortcuts guide" "description": "Shown in the shortcuts guide"
}, },
"Keyboard--unarchive-conversation": { "Keyboard--unarchive-conversation": {
"message": "Unterhaltung in Eingang verschieben", "message": "Unterhaltung dearchivieren",
"description": "Shown in the shortcuts guide" "description": "Shown in the shortcuts guide"
}, },
"Keyboard--search": { "Keyboard--search": {
@ -3296,7 +3300,7 @@
"description": "Shown in the calling keyboard shortcuts guide" "description": "Shown in the calling keyboard shortcuts guide"
}, },
"Keyboard--hang-up": { "Keyboard--hang-up": {
"message": "Auflegen", "message": "Anruf beenden",
"description": "Shown in the calling keyboard shortcuts guide" "description": "Shown in the calling keyboard shortcuts guide"
}, },
"close-popup": { "close-popup": {
@ -7265,22 +7269,16 @@
"message": "Diese Version enthält eine Reihe kleinerer Optimierungen und Fehlerbehebungen, damit Signal weiterhin reibungslos funktioniert.", "message": "Diese Version enthält eine Reihe kleinerer Optimierungen und Fehlerbehebungen, damit Signal weiterhin reibungslos funktioniert.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Fehlerkorrekturen einschließlich der Behebung eines Problems, das es manchmal schwierig machte, auf Menüs zu klicken.", "message": "Dynamische Audioindikatoren in Gruppenanrufen helfen dir dabei festzustellen, ob du gerade flüsterst, schreist oder genau richtig bist.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Vielen Dank an unsere Mitwirkenden am Open-Source-Projekt $dsanders11$ und $yusufsahinhamza$, die zu diesen Verbesserungen beigetragen haben.", "message": "Gruppen, für die du eine Beitrittsanfrage von deinem Telefon (via eines Einladungslinks) gestellt hast, werden nun auch auf dem PC angezeigt.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Du hast eine lückenhafte WLAN-Verbindung? Kein Problem, du kannst ab jetzt versuchen, Anhänge erneut herunterzuladen.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Κατεβαίνει", "message": "Κατεβαίνει",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Λήψη ολόκληρου του μηνύματος",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Λήψη συνημμένου", "message": "Λήψη συνημμένου",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -2758,7 +2762,7 @@
"description": "Shown in a message's bubble when the message has been deleted for everyone." "description": "Shown in a message's bubble when the message has been deleted for everyone."
}, },
"message--giftBadge--unopened": { "message--giftBadge--unopened": {
"message": "View this message on mobile to open it", "message": "Δες αυτό το μήνυμα στο κινητό για να το ανοίξεις",
"description": "Shown in a message's bubble when you've received a gift badge from a contact" "description": "Shown in a message's bubble when you've received a gift badge from a contact"
}, },
"message--giftBadge--unopened--label": { "message--giftBadge--unopened--label": {
@ -2766,11 +2770,11 @@
"description": "Shown in a message's bubble when you've received a gift badge from a contact" "description": "Shown in a message's bubble when you've received a gift badge from a contact"
}, },
"message--giftBadge--unopened--toast--incoming": { "message--giftBadge--unopened--toast--incoming": {
"message": "Check your phone to open gift", "message": "Δες το τηλέφωνό σου για να ανοίξεις το δώρο",
"description": "Shown when you've clicked on an incoming gift badge you haven't yet redeemed" "description": "Shown when you've clicked on an incoming gift badge you haven't yet redeemed"
}, },
"message--giftBadge--unopened--toast--outgoing": { "message--giftBadge--unopened--toast--outgoing": {
"message": "Check your phone to view your gift", "message": "Δες το τηλέφωνό σου για να δεις το δώρο",
"description": "Shown when you've clicked on an outgoing gift badge" "description": "Shown when you've clicked on an outgoing gift badge"
}, },
"message--giftBadge--preview--unopened": { "message--giftBadge--preview--unopened": {
@ -2778,15 +2782,15 @@
"description": "Shown to label the gift badge in notifications and the left pane" "description": "Shown to label the gift badge in notifications and the left pane"
}, },
"message--giftBadge--preview--redeemed": { "message--giftBadge--preview--redeemed": {
"message": "Εξαργύρωσες ένα δώρο έμβλημα", "message": "Εξαργύρωσες ένα έμβλημα δώρο",
"description": "Shown to label the redeemed gift badge in notifications and the left pane" "description": "Shown to label the redeemed gift badge in notifications and the left pane"
}, },
"message--giftBadge--preview--sent": { "message--giftBadge--preview--sent": {
"message": "You sent a gift badge", "message": "Έστειλες ένα έμβλημα δώρο",
"description": "Shown to label a gift badge you've sent in notifications and the left pane" "description": "Shown to label a gift badge you've sent in notifications and the left pane"
}, },
"message--giftBadge": { "message--giftBadge": {
"message": "Gift Badge", "message": "Έμβλημα δώρο",
"description": "Shown to label the gift badge you've redeemed on another device" "description": "Shown to label the gift badge you've redeemed on another device"
}, },
"quote--giftBadge": { "quote--giftBadge": {
@ -2794,7 +2798,7 @@
"description": "Shown to label a gift badge you've replied to" "description": "Shown to label a gift badge you've replied to"
}, },
"message--giftBadge--remaining--days": { "message--giftBadge--remaining--days": {
"message": "$days$ days remaining", "message": "Απομένουν $days$ ημέρες",
"description": "Describes how long remains for the gift badge you've redeemed on another device (only rendered for days > 1)", "description": "Describes how long remains for the gift badge you've redeemed on another device (only rendered for days > 1)",
"placeholders": { "placeholders": {
"days": { "days": {
@ -2804,7 +2808,7 @@
} }
}, },
"message--giftBadge--remaining--hours": { "message--giftBadge--remaining--hours": {
"message": "$hours$ hours remaining", "message": "Απομένουν $hours$ ώρες",
"description": "Describes how long remains for the gift badge you've redeemed on another device (only rendered for hours > 1)", "description": "Describes how long remains for the gift badge you've redeemed on another device (only rendered for hours > 1)",
"placeholders": { "placeholders": {
"hours": { "hours": {
@ -2814,7 +2818,7 @@
} }
}, },
"message--giftBadge--remaining--minutes": { "message--giftBadge--remaining--minutes": {
"message": "$minutes$ minutes remaining", "message": "Απομένουν $minutes$ λεπτά",
"description": "Describes how long remains for the gift badge you've redeemed on another device (only rendered for minutes > 1)", "description": "Describes how long remains for the gift badge you've redeemed on another device (only rendered for minutes > 1)",
"placeholders": { "placeholders": {
"minutes": { "minutes": {
@ -2824,11 +2828,11 @@
} }
}, },
"message--giftBadge--remaining--one-minute": { "message--giftBadge--remaining--one-minute": {
"message": "1 minute remaining", "message": "Απομένει 1 λεπτό",
"description": "Describes how long remains for the gift badge you've redeemed on another device" "description": "Describes how long remains for the gift badge you've redeemed on another device"
}, },
"message--giftBadge--expired": { "message--giftBadge--expired": {
"message": "Expired", "message": "Έληξε",
"description": "Shows that a gift badge is expired" "description": "Shows that a gift badge is expired"
}, },
"message--giftBadge--view": { "message--giftBadge--view": {
@ -2844,7 +2848,7 @@
"description": "The title of the outgoing gift badge detail dialog" "description": "The title of the outgoing gift badge detail dialog"
}, },
"modal--giftBadge--description": { "modal--giftBadge--description": {
"message": "You've gifted a badge to $name$. When they accept, they'll be given a choice to show or hide their badge.", "message": "Έκανες δώρο ένα έμβλημα στον/στην $name$. Όταν το αποδεχτεί, θα έχει την επιλογή να το εμφανίσει ή να το αποκρύψει.",
"description": "The description of the outgoing gift badge detail dialog", "description": "The description of the outgoing gift badge detail dialog",
"placeholders": { "placeholders": {
"name": { "name": {
@ -3276,11 +3280,11 @@
"description": "Shown in the shortcuts guide" "description": "Shown in the shortcuts guide"
}, },
"Keyboard--accept-video-call": { "Keyboard--accept-video-call": {
"message": "Accept call with video", "message": "Αποδοχή κλήσης με βίντεο",
"description": "Shown in the calling keyboard shortcuts guide" "description": "Shown in the calling keyboard shortcuts guide"
}, },
"Keyboard--accept-audio-call": { "Keyboard--accept-audio-call": {
"message": "Accept call with audio", "message": "Αποδοχή κλήσης με ήχο",
"description": "Shown in the calling keyboard shortcuts guide" "description": "Shown in the calling keyboard shortcuts guide"
}, },
"Keyboard--start-audio-call": { "Keyboard--start-audio-call": {
@ -7168,7 +7172,7 @@
"description": "Button label to reply to a story" "description": "Button label to reply to a story"
}, },
"StoryViewer__reply-group": { "StoryViewer__reply-group": {
"message": "Reply to Group", "message": "Απάντηση στην ομάδα",
"description": "Button label to reply to a group story" "description": "Button label to reply to a group story"
}, },
"StoryViewer__mute": { "StoryViewer__mute": {
@ -7236,7 +7240,7 @@
"description": "Title for replies to stories" "description": "Title for replies to stories"
}, },
"Quote__story-reaction": { "Quote__story-reaction": {
"message": "Reacted to a story from $name$", "message": "Αντέδρασε σε ιστορία του/της $name$",
"description": "Label for when a person reacts to a story", "description": "Label for when a person reacts to a story",
"placeholders": { "placeholders": {
"name": { "name": {
@ -7265,22 +7269,16 @@
"message": "Αυτή η έκδοση περιλαμβάνει διάφορες μικρές βελτιώσεις και αποσφαλματώσεις για να συνεχίσει το Signal να λειτουργεί ομαλά.", "message": "Αυτή η έκδοση περιλαμβάνει διάφορες μικρές βελτιώσεις και αποσφαλματώσεις για να συνεχίσει το Signal να λειτουργεί ομαλά.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Διορθώσεις σφαλμάτων, συμπεριλαμβανομένης της διόρθωσης ενός προβλήματος που έκανε δύσκολο το κλικ στα μενού.", "message": "Οι δυναμικές ενδείξεις ήχου στις ομαδικές κλήσεις βοηθούν να δεις αν μιλάς πολύ χαμηλόφωνα, φωνάζοντας, ή σε καλή στάθμη.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Ευχαριστούμε τους συνεισφέροντες στον ανοιχτού κώδικα, $dsanders11$ και $yusufsahinhamza$, για τη συνεισφορά τους στις βελτιώσεις αυτές.", "message": "Οι ομάδες στις οποίες ζήτησες να μπεις από το τηλέφωνό σου (μέσω ενός συνδέσμου πρόσκλησης) θα εμφανίζονται πλέον στο Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Ασταθής σύνδεση Wi-Fi; Κανένα πρόβλημα, μπορείς πλέον να ξαναδοκιμάσεις τη λήψη συνημμένων.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Elŝutado", "message": "Elŝutado",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Elŝuti la tutan mesaĝon",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Elŝuti kunsendaĵon", "message": "Elŝuti kunsendaĵon",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Tiu versio enhavas kelkajn optimumaĵojn kaj riparetojn, por ke Signal plu funkciu bone.", "message": "Tiu versio enhavas kelkajn optimumaĵojn kaj riparetojn, por ke Signal plu funkciu bone.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Riparoj korektas problemon kun menuoj malfacile alklakeblaj.", "message": "Aŭd-indikiloj en grupalvoko helpas al vi vidi, se vi murmuras, krias aŭ parolas normale.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Dankon al niaj malfermit-kodaj kontribuantoj $dsanders11$ kaj $yusufsahinhamza$ pro tiuj plibonigoj.", "message": "La grupoj, kiujn vi petis anigi ĉe via telefono (pere de invitoligilo), montriĝos en Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Ĉu vi havas nestabilan retkonekton? Tio ne plus estas problemo, vin povas nun reprovi elŝuti la kunsendaĵojn.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Descargando", "message": "Descargando",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Descargar mensaje completo",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Descargar archivo adjunto", "message": "Descargar archivo adjunto",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Esta versión contiene un par de pequeñas mejoras para que Signal funcione sin problemas.", "message": "Esta versión contiene un par de pequeñas mejoras para que Signal funcione sin problemas.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Reparación de fallos incluyendo uno que hacía casi imposible hacer clic en menús.", "message": "Indicador dinámico de audio en llamadas de grupo para comprobar quién susurra, grita o habla normalmente.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Gracias a nuestr@s colaborador@s $dsanders11$ y $yusufsahinhamza$ por contribuir con estas mejoras.", "message": "Ahora, los grupos a los que has solicitado unirte desde tu celular/móvil (vía enlace) se mostrarán en la aplicación de escritorio.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "¿Usas una conexión Wifi con problemas? No te preocupes: Ahora puedes reintentar la descarga de adjuntos.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Ladataan", "message": "Ladataan",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Lataa koko viesti",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Lataa liite", "message": "Lataa liite",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Tämä versio sisältää useita pieniä parannuksia ja virhekorjauksia, jotka pitävät Signalin toiminnan sujuvana.", "message": "Tämä versio sisältää useita pieniä parannuksia ja virhekorjauksia, jotka pitävät Signalin toiminnan sujuvana.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Virheenkorjauksia, mukaan lukien sen virheen korjaaminen joka teki joskus valikoiden klikkaamisesta hankalaa.", "message": "Dynaamiset ääni-indikaattorit ryhmäpuheluissa auttavat nyt sinua näkemään kuiskaatko, huudatko vai puhutko sopivalla äänenvoimakkuudella.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Kiitos vapaaehtoisille osallistujillemme $dsanders11$ ja $yusufsahinhamza$ heidän panoksestaan näihin parannuksiin.", "message": "Näet nyt myös työpöytäversiossa ryhmät, joihin olet pyytänyt liittymistä puhelimellasi.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Onko sinulla pykivä verkkoyhteys? Ei hätää, voit nyt käskyttää Signalin yrittämään liitteiden lataamista uudelleen.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Téléchargement", "message": "Téléchargement",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Download Full Message",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Télécharger le fichier joint", "message": "Télécharger le fichier joint",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7168,7 +7172,7 @@
"description": "Button label to reply to a story" "description": "Button label to reply to a story"
}, },
"StoryViewer__reply-group": { "StoryViewer__reply-group": {
"message": "Reply to Group", "message": "Répondre au groupe",
"description": "Button label to reply to a group story" "description": "Button label to reply to a group story"
}, },
"StoryViewer__mute": { "StoryViewer__mute": {
@ -7236,7 +7240,7 @@
"description": "Title for replies to stories" "description": "Title for replies to stories"
}, },
"Quote__story-reaction": { "Quote__story-reaction": {
"message": "Reacted to a story from $name$", "message": "A réagi à une histoire de $name$",
"description": "Label for when a person reacts to a story", "description": "Label for when a person reacts to a story",
"placeholders": { "placeholders": {
"name": { "name": {
@ -7250,7 +7254,7 @@
"description": "Label for when a person reacts to your story" "description": "Label for when a person reacts to your story"
}, },
"Quote__story-reaction--single": { "Quote__story-reaction--single": {
"message": "A réagi à une histoire", "message": "A réagi à une histoire",
"description": "Used whenever we can't find a user's first name" "description": "Used whenever we can't find a user's first name"
}, },
"Quote__story-unavailable": { "Quote__story-unavailable": {
@ -7265,22 +7269,16 @@
"message": "Cette version contient un certain nombre de petits ajustements et de corrections de bogues pour assurer le bon fonctionnement de Signal.", "message": "Cette version contient un certain nombre de petits ajustements et de corrections de bogues pour assurer le bon fonctionnement de Signal.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Correction de bogues, notamment dun problème rendant parfois difficile de cliquer sur les menus.", "message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Thanks to our open source contributors $dsanders11$ and $yusufsahinhamza$ for contributing to these improvements.", "message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "מוריד", "message": "מוריד",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "הורד הודעה מלאה",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "הורד צרופה", "message": "הורד צרופה",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "גרסה זו מכילה מספר של שפצורים קטנים ותיקוני תקלים כדי לשמור על Signal שירוץ באופן חלק.", "message": "גרסה זו מכילה מספר של שפצורים קטנים ותיקוני תקלים כדי לשמור על Signal שירוץ באופן חלק.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "תיקוני תקלים כולל תיקון אל סוגייה שהקשתה לפעמים ללחוץ על תפריטים.", "message": "מחווני שמע דינאמיים בשיחות קבוצתיות עוזרות לך לראות אם אתה לוחש, צורח, או פשוט צודק.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "תודה אל תורמי הקוד הפתוח שלנו $dsanders11$ וכן $yusufsahinhamza$ על תרומה אל השיפורים האלו.", "message": "קבוצות שביקשת להצטרף אליהן מהטלפון שלך (באמצעות קישור הזמנה) יופיעו על שולחן עבודה.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "יש לך חיבור Wi-Fi בלתי יציב? אין בעיה, אתה יכול לנסות מחדש עכשיו להוריד צרופות.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Letöltés", "message": "Letöltés",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Teljes üzenet letöltése",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Csatolmány letöltése", "message": "Csatolmány letöltése",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Ebbe a verzióba néhány kisebb újítás és hibajavítás került annak érdekében, hogy a Signal továbbra is gond nélkül fusson.", "message": "Ebbe a verzióba néhány kisebb újítás és hibajavítás került annak érdekében, hogy a Signal továbbra is gond nélkül fusson.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Orvosoltunk egy problémát, amikor a menüelemekre kattintás nem minden esetben működött.", "message": "A csoporthívásokban megjelenő dinamikus hangerő indikátorok segítenek megállapítani, hogy épp suttogsz, üvöltesz, vagy pont jó a hangerőd.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Köszönjük a nyílt forrású hozzájárulásokat $dsanders11$ és $yusufsahinhamza$ felhasználóknak, akik közreműködtek számos hiba javításában.", "message": "Azok a csoportok, ahová telefonról kérted felvételedet (csoporthivatkozás használatával) mostantól megjelennek a Desktopban is.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Szakadozik a Wi-Fi? Nem gond, mostantól újraindíthatod a csatolmányok letöltését.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Mengunduh", "message": "Mengunduh",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Download Full Message",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Unduh Lampiran", "message": "Unduh Lampiran",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -2828,7 +2832,7 @@
"description": "Describes how long remains for the gift badge you've redeemed on another device" "description": "Describes how long remains for the gift badge you've redeemed on another device"
}, },
"message--giftBadge--expired": { "message--giftBadge--expired": {
"message": "Expired", "message": "Kadaluwarsa",
"description": "Shows that a gift badge is expired" "description": "Shows that a gift badge is expired"
}, },
"message--giftBadge--view": { "message--giftBadge--view": {
@ -7246,11 +7250,11 @@
} }
}, },
"Quote__story-reaction--yours": { "Quote__story-reaction--yours": {
"message": "Reacted to your story", "message": "Bereaksi terhadap cerita Anda",
"description": "Label for when a person reacts to your story" "description": "Label for when a person reacts to your story"
}, },
"Quote__story-reaction--single": { "Quote__story-reaction--single": {
"message": "Reacted to a story", "message": "Bereaksi terhadap sebuah cerita",
"description": "Used whenever we can't find a user's first name" "description": "Used whenever we can't find a user's first name"
}, },
"Quote__story-unavailable": { "Quote__story-unavailable": {
@ -7265,22 +7269,16 @@
"message": "Versi ini mengandung sejumlah perubahan kecil dan perbaikan bug agar Signal tetap berjalan lancar.", "message": "Versi ini mengandung sejumlah perubahan kecil dan perbaikan bug agar Signal tetap berjalan lancar.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Bug fixes including a fix to an issue that would sometimes make it difficult to click on menus. ", "message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Thanks to our open source contributors $dsanders11$ and $yusufsahinhamza$ for contributing to these improvements.", "message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Sæki gögn", "message": "Sæki gögn",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Sækja öll skilaboðin",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Sækja viðhengi", "message": "Sækja viðhengi",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -2758,7 +2762,7 @@
"description": "Shown in a message's bubble when the message has been deleted for everyone." "description": "Shown in a message's bubble when the message has been deleted for everyone."
}, },
"message--giftBadge--unopened": { "message--giftBadge--unopened": {
"message": "View this message on mobile to open it", "message": "Skoðaðu þessi skilaboð á farsíma til að opna þau",
"description": "Shown in a message's bubble when you've received a gift badge from a contact" "description": "Shown in a message's bubble when you've received a gift badge from a contact"
}, },
"message--giftBadge--unopened--label": { "message--giftBadge--unopened--label": {
@ -2766,11 +2770,11 @@
"description": "Shown in a message's bubble when you've received a gift badge from a contact" "description": "Shown in a message's bubble when you've received a gift badge from a contact"
}, },
"message--giftBadge--unopened--toast--incoming": { "message--giftBadge--unopened--toast--incoming": {
"message": "Check your phone to open gift", "message": "Athugaðu farsímann þinn til að opna gjöf",
"description": "Shown when you've clicked on an incoming gift badge you haven't yet redeemed" "description": "Shown when you've clicked on an incoming gift badge you haven't yet redeemed"
}, },
"message--giftBadge--unopened--toast--outgoing": { "message--giftBadge--unopened--toast--outgoing": {
"message": "Check your phone to view your gift", "message": "Athugaðu farsímann þinn til að skoða gjöfina þína",
"description": "Shown when you've clicked on an outgoing gift badge" "description": "Shown when you've clicked on an outgoing gift badge"
}, },
"message--giftBadge--preview--unopened": { "message--giftBadge--preview--unopened": {
@ -3276,11 +3280,11 @@
"description": "Shown in the shortcuts guide" "description": "Shown in the shortcuts guide"
}, },
"Keyboard--accept-video-call": { "Keyboard--accept-video-call": {
"message": "Accept call with video", "message": "Samþykkja símtal með myndmerki",
"description": "Shown in the calling keyboard shortcuts guide" "description": "Shown in the calling keyboard shortcuts guide"
}, },
"Keyboard--accept-audio-call": { "Keyboard--accept-audio-call": {
"message": "Accept call with audio", "message": "Samþykkja símtal með hljóði",
"description": "Shown in the calling keyboard shortcuts guide" "description": "Shown in the calling keyboard shortcuts guide"
}, },
"Keyboard--start-audio-call": { "Keyboard--start-audio-call": {
@ -7265,22 +7269,16 @@
"message": "Þessi útgáfa inniheldur nokkrar villuleiðréttingar og fínstillingar til að Signal keyri sem áreiðanlegast.", "message": "Þessi útgáfa inniheldur nokkrar villuleiðréttingar og fínstillingar til að Signal keyri sem áreiðanlegast.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Villulagfæringar, meðal annars á vandamáli við að smella á valmyndir.", "message": "Gagnvirkir vísar í hópsamtölum gera þér kleift að sja hvort þú sért að hvísla, kalla eða tala eðlilega.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Þökk sé sjálfboðaliðunum $dsanders11$ og $yusufsahinhamza$ sem áttu stóran hlut í þessum endurbótum.", "message": "Hópar sem þú hefur beðið um inngöngu í á símanum þínum (með boðstengli) virtast núna í borðtölvuforritinu.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Caricamento in corso", "message": "Caricamento in corso",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Scarica messaggio completo",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Scarica allegato", "message": "Scarica allegato",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Questa versione contiene una serie di piccole modifiche e correzioni di bug per far funzionare Signal senza problemi.", "message": "Questa versione contiene una serie di piccole modifiche e correzioni di bug per far funzionare Signal senza problemi.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Correzioni di bug, inclusa la correzione di un problema che a volte rendeva difficile cliccare sui menu. ", "message": "Gli indicatori audio dinamici nelle chiamate di gruppo aiutano a capire se si sta sussurrando, urlando o se va tutto bene.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Grazie ai nostri collaboratori open source $dsanders11$ e $yusufsahinhamza$ per aver contribuito a questi miglioramenti.", "message": "I gruppi a cui si è chiesto di partecipare dal telefono (tramite un link di invito) vengono ora visualizzati su Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "La connessione Wi-Fi è irregolare? Non è un problema, ora è possibile riprovare a scaricare gli allegati.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "ダウンロードしています", "message": "ダウンロードしています",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "全文をダウンロード",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "添付ファイルをダウンロード", "message": "添付ファイルをダウンロード",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -1074,7 +1078,7 @@
} }
}, },
"cannotUpdateRequireManualDetail": { "cannotUpdateRequireManualDetail": {
"message": "Signal couldn't update. Visit $url$ to install it manually. Then, $support$ about this problem", "message": "Signalをアップデートできませんでした。$url$から手動でインストールしてください。またこの問題を、$support$までお知らせください。",
"description": "Shown if a general error happened while trying to install update package and manual update is required", "description": "Shown if a general error happened while trying to install update package and manual update is required",
"placeholders": { "placeholders": {
"url": { "url": {
@ -7265,22 +7269,16 @@
"message": "Signalをスムーズに動作させるための微調整とバグ修正を行いました。", "message": "Signalをスムーズに動作させるための微調整とバグ修正を行いました。",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "メニューがクリックしにくくなることがあるバグを修正しました。", "message": "グループ通話時のダイナミックオーディオインジケーターが登場!自分の声の大きさを確認できます。",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "コントリビューターである、$dsanders11$ と、 $yusufsahinhamza$、ありがとうございます!", "message": "自分が招待リンクを使ってスマートフォンから参加申請したグループが、デスクトップアプリにも表示されるようになりました。",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "添付ファイルのダウンロードを再試行できるようになりました。",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Atsisiunčiama", "message": "Atsisiunčiama",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Atsisiųsti visą žinutę",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Atsisiųsti priedą", "message": "Atsisiųsti priedą",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Šioje versijoje yra daug smulkių patobulinimų ir klaidų ištaisymų, kurie padės Signal sklandžiai veikti.", "message": "Šioje versijoje yra daug smulkių patobulinimų ir klaidų ištaisymų, kurie padės Signal sklandžiai veikti.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Klaidų pataisymas, skirtas išspręsti problemą, dėl kurios, kartais, būdavo sunku spustelėti ant meniu.", "message": "Dinaminiai garso indikatoriai grupės skambučiuose padeda jums matyti, ar šnabždate, šaukiate, ar kalbate įprastai.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Dėkojame mūsų atvirojo kodo talkininkams $dsanders11$ ir $yusufsahinhamza$ už šių patobulinimų pateikimą.", "message": "Dabar, grupės, prie kurių pateikėte prašymą prisijungti naudodamiesi telefonu (per pakvietimo nuorodą), bus rodomos darbalaukio programoje.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Naudojatės prastu belaidžiu ryšiu? Ne problema, dabar, galite pakartotinai bandyti atsisiųsti priedus.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Преземам", "message": "Преземам",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Download Full Message",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Преземи прилог", "message": "Преземи прилог",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -2836,7 +2840,7 @@
"description": "Shown when you've sent a gift badge to someone then opened it" "description": "Shown when you've sent a gift badge to someone then opened it"
}, },
"message--giftBadge--redeemed": { "message--giftBadge--redeemed": {
"message": "Redeemed", "message": "Прифатено",
"description": "Shown when you've redeemed the gift badge on another device" "description": "Shown when you've redeemed the gift badge on another device"
}, },
"modal--giftBadge--title": { "modal--giftBadge--title": {
@ -7265,22 +7269,16 @@
"message": "This version contains a number of small tweaks and bug fixes to keep Signal running smoothly.", "message": "This version contains a number of small tweaks and bug fixes to keep Signal running smoothly.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Bug fixes including a fix to an issue that would sometimes make it difficult to click on menus. ", "message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Thanks to our open source contributors $dsanders11$ and $yusufsahinhamza$ for contributing to these improvements.", "message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -564,7 +564,7 @@
"description": "Message shown to user in the media gallery when there are no messages with media attachments (images or video)" "description": "Message shown to user in the media gallery when there are no messages with media attachments (images or video)"
}, },
"allMedia": { "allMedia": {
"message": "Alle media", "message": "Alle media uit dit gesprek",
"description": "Header for the media gallery" "description": "Header for the media gallery"
}, },
"documents": { "documents": {
@ -876,7 +876,7 @@
"description": "" "description": ""
}, },
"typingAlt": { "typingAlt": {
"message": "Typ-animatie voor dit gesprek", "message": "Animatie welke aangeeft dat iemand in dit gesprek aan het typen is",
"description": "Used as the 'title' attribute for the typing animation" "description": "Used as the 'title' attribute for the typing animation"
}, },
"contactInAddressBook": { "contactInAddressBook": {
@ -929,6 +929,10 @@
"message": "Wordt gedownload", "message": "Wordt gedownload",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Volledig bericht downloaden",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Bijlage downloaden", "message": "Bijlage downloaden",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -1126,7 +1130,7 @@
"description": "" "description": ""
}, },
"delete": { "delete": {
"message": "Afwijzen", "message": "Wissen",
"description": "" "description": ""
}, },
"accept": { "accept": {
@ -1586,11 +1590,11 @@
"description": "Label in the calling lobby indicating that your camera is off" "description": "Label in the calling lobby indicating that your camera is off"
}, },
"calling__pre-call-info--empty-group": { "calling__pre-call-info--empty-group": {
"message": "Er is niemand behalve jij in dit gesprek", "message": "Er is niemand in de groepsoproep. Klik op Oproep beginnen om een oproep te beginnen.",
"description": "Shown in the calling lobby to describe who is in the call" "description": "Shown in the calling lobby to describe who is in the call"
}, },
"calling__pre-call-info--1-person-in-call": { "calling__pre-call-info--1-person-in-call": {
"message": "$first$ is aanwezig in deze oproep", "message": "$first$ is aanwezig in de oproep. Klik op Aan oproep deelnemen om zelf deel te nemen.",
"description": "Shown in the calling lobby to describe who is in the call", "description": "Shown in the calling lobby to describe who is in the call",
"placeholders": { "placeholders": {
"first": { "first": {
@ -1600,11 +1604,11 @@
} }
}, },
"calling__pre-call-info--another-device-in-call": { "calling__pre-call-info--another-device-in-call": {
"message": "Een van je andere apparaten neemt deel aan deze oproep", "message": "Een van je andere apparaten neemt deel aan deze oproep. Klik op Aan oproep deelnemen om ook vanaf dit apparaat deel te nemen.",
"description": "Shown in the calling lobby to describe when it is just you" "description": "Shown in the calling lobby to describe when it is just you"
}, },
"calling__pre-call-info--2-people-in-call": { "calling__pre-call-info--2-people-in-call": {
"message": "$first$ en $second$ zijn aanwezig in deze oproep", "message": "$first$ en $second$ zijn aanwezig in deze oproep. Klik op Aan oproep deelnemen om zelf deel te nemen.",
"description": "Shown in the calling lobby to describe who is in the call", "description": "Shown in the calling lobby to describe who is in the call",
"placeholders": { "placeholders": {
"first": { "first": {
@ -1618,7 +1622,7 @@
} }
}, },
"calling__pre-call-info--3-people-in-call": { "calling__pre-call-info--3-people-in-call": {
"message": "$first$, $second$ en $third$ zijn aanwezig in deze oproep", "message": "$first$, $second$ en $third$ zijn aanwezig in deze oproep. Klik op Aan oproep deelnemen om zelf deel te nemen.",
"description": "Shown in the calling lobby to describe who is in the call", "description": "Shown in the calling lobby to describe who is in the call",
"placeholders": { "placeholders": {
"first": { "first": {
@ -1636,7 +1640,7 @@
} }
}, },
"calling__pre-call-info--many-people-in-call": { "calling__pre-call-info--many-people-in-call": {
"message": ",$first$ $second$ en $others$ anderen zijn aanwezig in deze oproep", "message": "$first$, $second$ en $others$ anderen zijn aanwezig in deze oproep. Klik op Aan oproep deelnemen om zelf deel te nemen.",
"description": "Shown in the calling lobby to describe who is in the call", "description": "Shown in the calling lobby to describe who is in the call",
"placeholders": { "placeholders": {
"first": { "first": {
@ -1664,7 +1668,7 @@
} }
}, },
"calling__pre-call-info--will-ring-2": { "calling__pre-call-info--will-ring-2": {
"message": "Signal belt $first$ en $second$", "message": "Als je doorgaat zul je $first$ en $second$ bellen",
"description": "Shown in the calling lobby to describe who will be rang", "description": "Shown in the calling lobby to describe who will be rang",
"placeholders": { "placeholders": {
"first": { "first": {
@ -1678,7 +1682,7 @@
} }
}, },
"calling__pre-call-info--will-ring-3": { "calling__pre-call-info--will-ring-3": {
"message": "Signal belt $first$, $second$ en $third$", "message": "Als je doorgaat zul je $first$, $second$ en $third$ bellen",
"description": "Shown in the calling lobby to describe who will be rang", "description": "Shown in the calling lobby to describe who will be rang",
"placeholders": { "placeholders": {
"first": { "first": {
@ -1696,7 +1700,7 @@
} }
}, },
"calling__pre-call-info--will-ring-many": { "calling__pre-call-info--will-ring-many": {
"message": "Signal belt $first$, $second$ en nog $others$ anderen", "message": "Als je doorgaat zul je $first$, $second$ en nog $others$ anderen bellen",
"description": "Shown in the calling lobby to describe who will be rang", "description": "Shown in the calling lobby to describe who will be rang",
"placeholders": { "placeholders": {
"person": { "person": {
@ -1714,7 +1718,7 @@
} }
}, },
"calling__pre-call-info--will-notify-1": { "calling__pre-call-info--will-notify-1": {
"message": "$person$ zal een melding krijgen", "message": "Als je doorgaat zal $person$ een melding krijgen",
"description": "Shown in the calling lobby to describe who will be notified", "description": "Shown in the calling lobby to describe who will be notified",
"placeholders": { "placeholders": {
"person": { "person": {
@ -1724,7 +1728,7 @@
} }
}, },
"calling__pre-call-info--will-notify-2": { "calling__pre-call-info--will-notify-2": {
"message": "$first$ en $second$ zullen een melding krijgen", "message": "Als je doorgaat zullen $first$ en $second$ een melding krijgen",
"description": "Shown in the calling lobby to describe who will be notified", "description": "Shown in the calling lobby to describe who will be notified",
"placeholders": { "placeholders": {
"first": { "first": {
@ -1738,7 +1742,7 @@
} }
}, },
"calling__pre-call-info--will-notify-3": { "calling__pre-call-info--will-notify-3": {
"message": "$first$, $second$ en $third$ zullen een melding krijgen", "message": "Als je doorgaat zullen $first$, $second$ en $third$ een melding krijgen",
"description": "Shown in the calling lobby to describe who will be notified", "description": "Shown in the calling lobby to describe who will be notified",
"placeholders": { "placeholders": {
"first": { "first": {
@ -1756,7 +1760,7 @@
} }
}, },
"calling__pre-call-info--will-notify-many": { "calling__pre-call-info--will-notify-many": {
"message": "$first$, $second$ en $others$ anderen zullen een melding krijgen", "message": "Als je doorgaat zullen $first$, $second$ en $others$ anderen een melding krijgen",
"description": "Shown in the calling lobby to describe who will be notified", "description": "Shown in the calling lobby to describe who will be notified",
"placeholders": { "placeholders": {
"person": { "person": {
@ -1774,7 +1778,7 @@
} }
}, },
"calling__in-this-call--zero": { "calling__in-this-call--zero": {
"message": "Er is niemand behalve jij in dit gesprek", "message": "Er is niemand behalve jij in deze oproep",
"description": "Shown in the participants list to describe how many people are in the call" "description": "Shown in the participants list to describe how many people are in the call"
}, },
"calling__in-this-call--one": { "calling__in-this-call--one": {
@ -1900,11 +1904,11 @@
"description": "Header for permissions section of settings" "description": "Header for permissions section of settings"
}, },
"mediaPermissionsDescription": { "mediaPermissionsDescription": {
"message": "Toestemming geven om de microfoon te gebruiken", "message": "Ik geef Signal toestemming om mijn microfoon te gebruiken",
"description": "Description of the media permission description" "description": "Description of the media permission description"
}, },
"mediaCameraPermissionsDescription": { "mediaCameraPermissionsDescription": {
"message": "Toestemming geven om de camera te gebruiken", "message": "Ik geef Signal toestemming om mijn camera te gebruiken",
"description": "Description of the media permission description" "description": "Description of the media permission description"
}, },
"general": { "general": {
@ -1924,11 +1928,11 @@
"description": "Shown when the user disables spellcheck to indicate that they must restart Signal." "description": "Shown when the user disables spellcheck to indicate that they must restart Signal."
}, },
"SystemTraySetting__minimize-to-system-tray": { "SystemTraySetting__minimize-to-system-tray": {
"message": "Minimaliseer naar systeemvak in plaats van taakbalk", "message": "Minimaliseer naar het systeemvak in plaats van de taakbalk",
"description": "In the settings, shown next to the checkbox option for minimizing to the system tray" "description": "In the settings, shown next to the checkbox option for minimizing to the system tray"
}, },
"SystemTraySetting__minimize-to-and-start-in-system-tray": { "SystemTraySetting__minimize-to-and-start-in-system-tray": {
"message": "Houd Signal geminimaliseerd naar systeemvak wanneer het wordt gestart", "message": "Houd Signal geminimaliseerd naar het systeemvak wanneer het wordt gestart",
"description": "In the settings, shown next to the checkbox option for starting in the system tray" "description": "In the settings, shown next to the checkbox option for starting in the system tray"
}, },
"autoLaunchDescription": { "autoLaunchDescription": {
@ -1960,7 +1964,7 @@
"description": "Text of the button that deletes all data" "description": "Text of the button that deletes all data"
}, },
"deleteAllDataProgress": { "deleteAllDataProgress": {
"message": "Verbinding wordt verbroken en alle gegevens worden gewist", "message": "Aan het ontkoppelen en alle gegevens aan het wissen",
"description": "Message shown to user when app is disconnected and data deleted" "description": "Message shown to user when app is disconnected and data deleted"
}, },
"deleteOldIndexedDBData": { "deleteOldIndexedDBData": {
@ -2262,7 +2266,7 @@
} }
}, },
"audioNotificationDescription": { "audioNotificationDescription": {
"message": "Meldingsgeluid afspelen", "message": "Bij nieuwe meldingen geluid afspelen",
"description": "Description for audio notification setting" "description": "Description for audio notification setting"
}, },
"callRingtoneNotificationDescription": { "callRingtoneNotificationDescription": {
@ -3140,7 +3144,7 @@
"description": "Shown in the shortcuts guide" "description": "Shown in the shortcuts guide"
}, },
"Keyboard--open-all-media-view": { "Keyboard--open-all-media-view": {
"message": "Alle media-scherm weergeven", "message": "Alle media uit dit gesprek weergeven",
"description": "Shown in the shortcuts guide" "description": "Shown in the shortcuts guide"
}, },
"Keyboard--open-emoji-chooser": { "Keyboard--open-emoji-chooser": {
@ -5554,7 +5558,7 @@
"description": "Shown in timeline when a group is upgraded and you were invited instead of added" "description": "Shown in timeline when a group is upgraded and you were invited instead of added"
}, },
"GroupV1--Migration--invited--one": { "GroupV1--Migration--invited--one": {
"message": "$contact$ niet toegevoegd worden aan de nieuwe-stijl groep en je hebt daarom een uitnodiging gekregen om opnieuw lid te worden.", "message": "$contact$ kon niet toegevoegd worden aan de nieuwe-stijl groep en heeft daarom een uitnodiging gekregen om opnieuw lid te worden.",
"description": "Shown in timeline when a group is upgraded and one person was invited, instead of added", "description": "Shown in timeline when a group is upgraded and one person was invited, instead of added",
"placeholders": { "placeholders": {
"contact": { "contact": {
@ -5650,7 +5654,7 @@
"description": "Displayed while checking if the contact is SMS-only" "description": "Displayed while checking if the contact is SMS-only"
}, },
"countMutedConversationsDescription": { "countMutedConversationsDescription": {
"message": "Gedempte gesprekken meetellen in badge-getal", "message": "Berichten in gedempte gesprekken meetellen in het aantal ongelezen berichten",
"description": "Description for counting muted conversations in badge setting" "description": "Description for counting muted conversations in badge setting"
}, },
"ContactModal--message": { "ContactModal--message": {
@ -5758,7 +5762,7 @@
"description": "This is a button to leave a group" "description": "This is a button to leave a group"
}, },
"ConversationDetailsActions--block-group": { "ConversationDetailsActions--block-group": {
"message": "Groep blokkeren en verlaten", "message": "Groep blokkeren",
"description": "This is a button to block a group" "description": "This is a button to block a group"
}, },
"ConversationDetailsActions--leave-group-must-choose-new-admin": { "ConversationDetailsActions--leave-group-must-choose-new-admin": {
@ -7172,7 +7176,7 @@
"description": "Button label to reply to a group story" "description": "Button label to reply to a group story"
}, },
"StoryViewer__mute": { "StoryViewer__mute": {
"message": "Micro­foon dempen", "message": "Meldingen dempen",
"description": "Aria label for muting stories" "description": "Aria label for muting stories"
}, },
"StoryViewer__unmute": { "StoryViewer__unmute": {
@ -7265,22 +7269,16 @@
"message": "Deze versie bevat een aantal kleine foutoplossingen waardoor Signal voor nog meer mensen goed werkt.", "message": "Deze versie bevat een aantal kleine foutoplossingen waardoor Signal voor nog meer mensen goed werkt.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Foutoplossingen, waaronder een oplossing voor een fout waarbij het soms moeilijk was op op menuknoppen te klikken.", "message": "Door audioniveau-indicatoren in groepsoproepen kun je zien wie degene is die fluistert en wie er schreeuwt.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Dank aan $dsanders11$ en $yusufsahinhamza$ voor hun hulp bij het schrijven van code voor deze verbeteringen.", "message": "Vanaf nu kun je de ook op Signal-desktop de groepen zien waarvoor je vanaf je telefoon hebt verzocht om lid te worden (via een groepsverwijzing). ",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Heb je een slechte wifi-verbinding? Geen probleem, want vanaf nu kun je het downloaden van bijlagen opnieuw proberen.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Pobieranie", "message": "Pobieranie",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Pobierz pełną wiadomość.",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Pobierz załącznik", "message": "Pobierz załącznik",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Ta wersja zawiera wiele drobnych ulepszeń i poprawek błędów, zapewniających płynne działanie aplikacji Signal.", "message": "Ta wersja zawiera wiele drobnych ulepszeń i poprawek błędów, zapewniających płynne działanie aplikacji Signal.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Poprawki błędów, w tym problemu powodującego czasem trudności z kliknięciem menu.", "message": "Dynamiczne wskaźniki audio w rozmowach grupowych pomogą Ci sprawdzić czy szepczesz, krzyczysz, czy mówisz odpowiednio głośno.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Dziękujemy $dsanders11$ i $yusufsahinhamza$ za przyczynienie się do powstania tych poprawek.", "message": "Teraz w aplikacji Desktop będą widoczne grupy, o dołączenie do których poprosiłeś z telefonu (przez link do grupy).",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Kiepskie połączenie Wi-Fi? Nie ma problemu! Teraz możesz ponowić pobieranie załączników.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Baixando", "message": "Baixando",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Baixar mensagem completa",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Baixar anexo", "message": "Baixar anexo",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Essa versão contém pequenos retoques e consertos no Signal para ele continuar funcionando confortavelmente.", "message": "Essa versão contém pequenos retoques e consertos no Signal para ele continuar funcionando confortavelmente.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Correção de erros, incluindo correção da falha que às vezes tornava difícil clicar em menus. ", "message": "Os indicadores dinâmicos de áudio em chamadas de grupo ajudam a você perceber se está sussurrando, gritando ou em sintonia perfeita.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Agradecimentos para nossos colaboradores de código aberto $dsanders11$ e $yusufsahinhamza$ por contribuir para essas melhorias.", "message": "Os grupos nos quais você solicitou participação via seu telefone (através de um link de convite) agora aparecerão no Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Tem uma conexão Wi-Fi anormal? Não há problema, agora você pode baixar os anexos outra vez.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "A descarregar", "message": "A descarregar",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Download da mensagem inteira",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Descarregar anexo", "message": "Descarregar anexo",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Esta versão contém um número de pequenas funcionalidades e correções de erros de forma a manter o Signal a correr suavemente.", "message": "Esta versão contém um número de pequenas funcionalidades e correções de erros de forma a manter o Signal a correr suavemente.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Correção de erros incluindo uma correção para um problema que algumas vezes tornava difícil clicar em menus.", "message": "Os indicadores de áudio dinâmicos em chamadas em grupo ajudam-no a ver se você está a sussurrar, a gritar ou apenas correto.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Agradecemos aos nossos colaboradores de código aberto $dsanders11$ e $yusufsahinhamza$ por contribuírem para estas melhorias.", "message": "Os grupos que solicitou entrar a partir do seu telemóvel (através de um link de convite) agora aparecerão na área de trabalho.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Tem uma ligação Wi-Fi irregular? Não há problema, agora você pode tentar novamente fazer o download dos anexos.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Se descarcă", "message": "Se descarcă",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Descarcă mesajul complet",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Descarcă atașamentul", "message": "Descarcă atașamentul",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Această versiune conține o serie de mici modificări și remedieri ale unor erori pentru ca Signal să funcționeze fără probleme.", "message": "Această versiune conține o serie de mici modificări și remedieri ale unor erori pentru ca Signal să funcționeze fără probleme.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Remedieri de erori, printre care și o eroare ce făcea dificilă uneori folosirea meniurilor.", "message": "Am adăugat indicatori audio în apelurile de grup pentru a te ajuta să vezi dacă vorbești prea încet, prea tare sau perfect.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Mulțumim contribuitorilor noștri open-source $dsanders11$ și $yusufsahinhamza$ pentru aportul lor la aceste îmbunătățiri.", "message": "Grupurile către care ai trimis cerere de înscriere de pe telefon (folosind linkul grupului) vor apărea acum și în Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Ai o conexiune Wi-Fi instabilă? Acum nu mai este o problemă, deoarece acum vei putea încerca din nou descărcarea atașamentelor.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Скачивание", "message": "Скачивание",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Скачать полное сообщение",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Загрузить вложение", "message": "Загрузить вложение",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Эта версия содержит несколько небольших изменений и исправлений ошибок.", "message": "Эта версия содержит несколько небольших изменений и исправлений ошибок.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Исправления ошибок, включающие исправление проблемы, из-за которой было иногда сложно нажимать на меню.", "message": "Динамические индикаторы аудио в групповых звонках помогают вам понять, шепчите вы, кричите или говорите в самый раз.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Благодарим наших разработчиков открытого исходного кода $dsanders11$ и $yusufsahinhamza$ за помощь в этих улучшениях.", "message": "Группы, в которых вы отправили запрос на присоединение со своего телефона (с помощью ссылки на группу) теперь показываются в Signal Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Плохое соединение Wi-Fi? Не проблема, теперь вы можете заново пробовать скачивать вложения.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Sťahujem", "message": "Sťahujem",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Stiahnite si celú správu",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Stiahnuť prílohu", "message": "Stiahnuť prílohu",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Táto verzia obsahuje množstvo drobných vylepšení a opráv chýb, ktoré zaisťujú bezproblémový chod systému Signal.", "message": "Táto verzia obsahuje množstvo drobných vylepšení a opráv chýb, ktoré zaisťujú bezproblémový chod systému Signal.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Opravy chýb vrátane opravy problému, ktorý niekedy sťažoval klikanie na ponuky.", "message": "Dynamické zvukové indikátory v skupinových hovoroch vám pomôžu zistiť, či šepkáte, kričíte alebo je akurát.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Ďakujeme našim open source prispievateľom $dsanders11$ a $yusufsahinhamza$ za to, že prispeli k týmto zlepšeniam.", "message": "Skupiny, o ktoré ste požiadali zo svojho telefónu (prostredníctvom odkazu na pozvánku), sa teraz zobrazia na pracovnej ploche.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Máte poruchové pripojenie Wi-Fi? Nie je problém, teraz môžete znova skúsiť stiahnuť prílohy.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Prenašam", "message": "Prenašam",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Prenos celotnega sporočila",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Prenesi priponko", "message": "Prenesi priponko",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Ta različica vsebuje majhne spremembe in popravke, ki omogočajo, da Signal teče brez težav.", "message": "Ta različica vsebuje majhne spremembe in popravke, ki omogočajo, da Signal teče brez težav.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Bug fixes including a fix to an issue that would sometimes make it difficult to click on menus. ", "message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Thanks to our open source contributors $dsanders11$ and $yusufsahinhamza$ for contributing to these improvements.", "message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Po shkarkohet", "message": "Po shkarkohet",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Download Full Message",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Shkarko Bashkëngjitjen", "message": "Shkarko Bashkëngjitjen",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Ky version përmban një numër përimtimesh të vockla dhe ndreqje të metash për ta mbajtur të rrjedhshme punën e Signal-it.", "message": "Ky version përmban një numër përimtimesh të vockla dhe ndreqje të metash për ta mbajtur të rrjedhshme punën e Signal-it.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Ndreqje të metash, përfshi një ndreqje për një problem që ndonjëherë e bënte të vështirë të klikohej te menutë ", "message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Falënderime për kontribuesit tanë në burimin e hapët$dsanders11$ dhe $yusufsahinhamza$, për sjelljen e këtyre përmirësimeve.", "message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Преузимам", "message": "Преузимам",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Преузети целу поруку",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Преузми прилог", "message": "Преузми прилог",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -2794,7 +2798,7 @@
"description": "Shown to label a gift badge you've replied to" "description": "Shown to label a gift badge you've replied to"
}, },
"message--giftBadge--remaining--days": { "message--giftBadge--remaining--days": {
"message": "$days$ days remaining", "message": "Остало $days$ дана",
"description": "Describes how long remains for the gift badge you've redeemed on another device (only rendered for days > 1)", "description": "Describes how long remains for the gift badge you've redeemed on another device (only rendered for days > 1)",
"placeholders": { "placeholders": {
"days": { "days": {
@ -7265,22 +7269,16 @@
"message": "This version contains a number of small tweaks and bug fixes to keep Signal running smoothly.", "message": "This version contains a number of small tweaks and bug fixes to keep Signal running smoothly.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Bug fixes including a fix to an issue that would sometimes make it difficult to click on menus. ", "message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Хвала нашим сарадницима отвореног кода $dsanders11$ и $yusufsahinhamza$ за допринос овим побољшањима.", "message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Hämtar", "message": "Hämtar",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Download Full Message",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Hämta bilaga", "message": "Hämta bilaga",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Den här versionen innehåller ett antal små justeringar och felrättningar för att Signal ska fungera smidigt.", "message": "Den här versionen innehåller ett antal små justeringar och felrättningar för att Signal ska fungera smidigt.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Felrättningar inklusive en korrigering av ett problem som ibland skulle göra det svårt att klicka på menyer.", "message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Tack till våra bidragsgivare $dsanders11$ och $yusufsahinhamza$ för att de har bidragit till dessa förbättringar med öppen källkod.", "message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "İndiriliyor", "message": "İndiriliyor",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Tüm İletiyi İndir",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Eklentiyi İndir", "message": "Eklentiyi İndir",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Bu sürüm Signal'in sorunsuz çalışması için gereken bir takım küçük düzeltme ve hata gidermelerini içerir.", "message": "Bu sürüm Signal'in sorunsuz çalışması için gereken bir takım küçük düzeltme ve hata gidermelerini içerir.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Bazen menülere tıklamayı zorlaştıran bir soruna yönelik düzeltme de dahil olmak üzere hata düzeltmeleri içerir.", "message": "Grup aramalarındaki dinamik sesli göstergeler, fısıldaşıp konuşmadığınızı, bağırıp çağırmadığınızı veya tam olarak haklı olup olmadığınızı görmenize yardımcı olur.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Bu iyileştirmelere katkıda bulundukları için açık kaynak katılımcılarımız $dsanders11$ ve $yusufsahinhamza$'ya teşekkür ederiz.", "message": "Telefonunuzdan (davet bağlantısı aracılığıyla) katılmayı talep ettiğiniz gruplar artık Masaüstünde gösterilecek.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Kesintili bir Wi-Fi bağlantınız mı var? Sorun değil, artık ekleri indirmeyi yeniden deneyebilirsiniz.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "Завантаження", "message": "Завантаження",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "Завантажити повідомлення повністю",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "Завантажити вкладення", "message": "Завантажити вкладення",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "Ця версія містить ряд невеликих налаштувань і виправлень помилок для забезпечення безперебійної роботи Signal.", "message": "Ця версія містить ряд невеликих налаштувань і виправлень помилок для забезпечення безперебійної роботи Signal.",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "Виправлення помилок, зокрема помилки, яка інколи призводила до важкостей з клацанням на меню.", "message": "Динамічні індикатори у групових викликах допоможуть вам зрозуміти коли ви шепочете, галасуєте або нормально розмовляєте.",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "Дякуємо нашим внескодавцям спільноти відкритого вихідного коду — $dsanders11$ та $yusufsahinhamza$ — за їхній внесок у ці покращення. ", "message": "Групи, запит до яких ви надіслали з телефону (використав посилання-запрошення), відтепер показуватимуться у версії для комп'ютера.",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "Користуєтесь мінливим Wi-Fi підключенням? Жодних проблем, відтепер ви можете перезапускати завантаження додатків.",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -929,6 +929,10 @@
"message": "下載中…", "message": "下載中…",
"description": "Shown in the message bubble while a long message attachment is being downloaded" "description": "Shown in the message bubble while a long message attachment is being downloaded"
}, },
"downloadFullMessage": {
"message": "下載完整的訊息",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": { "downloadAttachment": {
"message": "下載附件", "message": "下載附件",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button" "description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "此版本包含許多小調整和錯誤修復,以維持 Signal 穩定運作。", "message": "此版本包含許多小調整和錯誤修復,以維持 Signal 穩定運作。",
"description": "Release notes for releases that only include bug fixes" "description": "Release notes for releases that only include bug fixes"
}, },
"WhatsNew__v5.40--1": { "WhatsNew__v5.45--1": {
"message": "錯誤修復,包括修復有時難以點擊選單的問題。", "message": "群組通話中的動態音訊指示器可幫助你查看你是在竊竊私語、大喊大叫還是恰到好處。",
"description": "Release notes for v5.40" "description": "Release notes for v5.45"
}, },
"WhatsNew__v5.40--2": { "WhatsNew__v5.45--2": {
"message": "感謝我們的開源貢獻者$dsanders11$ 及 $yusufsahinhamza$為這些改進做出了貢獻。", "message": "你透過手機請求加入的群組(透過邀請連結)現在將顯示在電腦上。",
"description": "Release notes for v5.40", "description": "Release notes for v5.45"
"placeholders": { },
"dsanders11": { "WhatsNew__v5.45--3": {
"content": "$1", "message": "有個不穩定的 Wi-Fi 訊號連接? 這不是問題,你現在可以重試下載附件。",
"example": "dsanders11" "description": "Release notes for v5.45"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
} }
} }

View File

@ -253,8 +253,12 @@ async function getThemeSetting({
const json = await sql.sqlCall('getItemById', ['theme-setting']); const json = await sql.sqlCall('getItemById', ['theme-setting']);
// Default to `system` if setting doesn't exist yet // Default to `system` if setting doesn't exist or is invalid
const slowValue = json ? json.value : 'system'; const setting: unknown = json?.value;
const slowValue =
setting === 'light' || setting === 'dark' || setting === 'system'
? setting
: 'system';
ephemeralConfig.set('theme-setting', slowValue); ephemeralConfig.set('theme-setting', slowValue);
@ -1462,6 +1466,9 @@ function getAppLocale(): string {
// Signal doesn't really use media keys so we set this switch here to unblock // Signal doesn't really use media keys so we set this switch here to unblock
// them so that other apps can use them if they need to. // them so that other apps can use them if they need to.
app.commandLine.appendSwitch('disable-features', 'HardwareMediaKeyHandling'); app.commandLine.appendSwitch('disable-features', 'HardwareMediaKeyHandling');
if (OS.isLinux()) {
app.commandLine.appendSwitch('password-store', 'basic');
}
// This method will be called when Electron has finished // This method will be called when Electron has finished
// initialization and is ready to create browser windows. // initialization and is ready to create browser windows.

View File

@ -4,7 +4,7 @@
"description": "Private messaging from your desktop", "description": "Private messaging from your desktop",
"desktopName": "signal.desktop", "desktopName": "signal.desktop",
"repository": "https://github.com/signalapp/Signal-Desktop.git", "repository": "https://github.com/signalapp/Signal-Desktop.git",
"version": "5.45.0-beta.1", "version": "5.45.1",
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"author": { "author": {
"name": "Signal Messenger, LLC", "name": "Signal Messenger, LLC",

View File

@ -25,14 +25,5 @@
@include timeline-floating-header-node; @include timeline-floating-header-node;
margin-top: 12px; margin-top: 12px;
padding: 6px; padding: 6px;
&--visible {
opacity: 1;
}
&--hidden {
opacity: 0;
transition: opacity 0.25s ease-out 0.3s;
}
} }
} }

View File

@ -7,12 +7,12 @@ import { noop } from 'lodash';
import classNames from 'classnames'; import classNames from 'classnames';
import type { VideoFrameSource } from 'ringrtc'; import type { VideoFrameSource } from 'ringrtc';
import type { import type {
ActiveCallStateType,
SetLocalAudioType, SetLocalAudioType,
SetLocalPreviewType, SetLocalPreviewType,
SetLocalVideoType, SetLocalVideoType,
SetRendererCanvasType, SetRendererCanvasType,
} from '../state/ducks/calling'; } from '../state/ducks/calling';
import { isInSpeakerView } from '../state/selectors/calling';
import { Avatar } from './Avatar'; import { Avatar } from './Avatar';
import { CallingHeader } from './CallingHeader'; import { CallingHeader } from './CallingHeader';
import { CallingPreCallInfo, RingMode } from './CallingPreCallInfo'; import { CallingPreCallInfo, RingMode } from './CallingPreCallInfo';
@ -25,6 +25,7 @@ import type {
} from '../types/Calling'; } from '../types/Calling';
import { import {
CallMode, CallMode,
CallViewMode,
CallState, CallState,
GroupCallConnectionState, GroupCallConnectionState,
GroupCallJoinState, GroupCallJoinState,
@ -77,6 +78,15 @@ type DirectCallHeaderMessagePropsType = {
joinedAt?: number; joinedAt?: number;
}; };
export const isInSpeakerView = (
call: Pick<ActiveCallStateType, 'viewMode'> | undefined
): boolean => {
return Boolean(
call?.viewMode === CallViewMode.Presentation ||
call?.viewMode === CallViewMode.Speaker
);
};
function DirectCallHeaderMessage({ function DirectCallHeaderMessage({
callState, callState,
i18n, i18n,

View File

@ -0,0 +1,41 @@
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import * as React from 'react';
import { storiesOf } from '@storybook/react';
import { isBoolean } from 'lodash';
import { boolean } from '@storybook/addon-knobs';
import { setupI18n } from '../../util/setupI18n';
import enMessages from '../../../_locales/en/messages.json';
import type { PropsType } from './TimelineFloatingHeader';
import { TimelineFloatingHeader } from './TimelineFloatingHeader';
const i18n = setupI18n('en', enMessages);
function booleanOr(value: boolean | undefined, defaultValue: boolean): boolean {
return isBoolean(value) ? value : defaultValue;
}
const createProps = (overrideProps: Partial<PropsType> = {}): PropsType => ({
isLoading: boolean('isLoading', booleanOr(overrideProps.isLoading, false)),
style: overrideProps.style,
visible: boolean('visible', booleanOr(overrideProps.visible, false)),
i18n,
timestamp: overrideProps.timestamp || Date.now(),
});
const stories = storiesOf('Components/TimelineFloatingHeader', module);
stories.add('Visible', () => {
return <TimelineFloatingHeader {...createProps({ visible: true })} />;
});
stories.add('Loading', () => {
return (
<TimelineFloatingHeader
{...createProps({ visible: true, isLoading: true })}
/>
);
});

View File

@ -4,29 +4,67 @@
import classNames from 'classnames'; import classNames from 'classnames';
import type { CSSProperties, ReactElement } from 'react'; import type { CSSProperties, ReactElement } from 'react';
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { animated, useSpring } from '@react-spring/web';
import type { LocalizerType } from '../../types/Util'; import type { LocalizerType } from '../../types/Util';
import { TimelineDateHeader } from './TimelineDateHeader'; import { TimelineDateHeader } from './TimelineDateHeader';
import { Spinner } from '../Spinner'; import { Spinner } from '../Spinner';
export type PropsType = Readonly<{
i18n: LocalizerType;
isLoading: boolean;
style?: CSSProperties;
timestamp: number;
visible: boolean;
}>;
export const TimelineFloatingHeader = ({ export const TimelineFloatingHeader = ({
i18n, i18n,
isLoading, isLoading,
style, style,
timestamp, timestamp,
visible, visible,
}: Readonly<{ }: PropsType): ReactElement => {
i18n: LocalizerType;
isLoading: boolean;
style?: CSSProperties;
timestamp: number;
visible: boolean;
}>): ReactElement => {
const [hasRendered, setHasRendered] = useState(false); const [hasRendered, setHasRendered] = useState(false);
const [showSpinner, setShowSpinner] = useState(isLoading);
useEffect(() => { useEffect(() => {
setHasRendered(true); setHasRendered(true);
}, []); }, []);
const [spinnerStyles, spinnerSpringRef] = useSpring(
() => ({
delay: 300,
duration: 250,
from: { opacity: 1 },
to: { opacity: 0 },
onRest: {
opacity: ({ value }) => {
if (value === 0) {
setShowSpinner(false);
}
},
},
}),
[isLoading]
);
useEffect(() => {
if (isLoading) {
spinnerSpringRef.stop();
spinnerSpringRef.set({ opacity: 1 });
setShowSpinner(true);
}
if (!isLoading && showSpinner) {
spinnerSpringRef.start();
}
if (!isLoading && !showSpinner) {
spinnerSpringRef.stop();
}
}, [isLoading, showSpinner, spinnerSpringRef]);
return ( return (
<div <div
className={classNames( className={classNames(
@ -38,16 +76,14 @@ export const TimelineFloatingHeader = ({
style={style} style={style}
> >
<TimelineDateHeader floating i18n={i18n} timestamp={timestamp} /> <TimelineDateHeader floating i18n={i18n} timestamp={timestamp} />
<div {showSpinner && (
className={classNames( <animated.div
'TimelineFloatingHeader__spinner-container', className="TimelineFloatingHeader__spinner-container"
`TimelineFloatingHeader__spinner-container--${ style={spinnerStyles}
isLoading ? 'visible' : 'hidden' >
}` <Spinner direction="on-background" size="20px" svgSize="small" />
)} </animated.div>
> )}
<Spinner direction="on-background" size="20px" svgSize="small" />
</div>
</div> </div>
); );
}; };

View File

@ -20,7 +20,7 @@ import { useRestoreFocus } from '../../../../hooks/useRestoreFocus';
import { missingCaseError } from '../../../../util/missingCaseError'; import { missingCaseError } from '../../../../util/missingCaseError';
import type { LookupConversationWithoutUuidActionsType } from '../../../../util/lookupConversationWithoutUuid'; import type { LookupConversationWithoutUuidActionsType } from '../../../../util/lookupConversationWithoutUuid';
import { parseAndFormatPhoneNumber } from '../../../../util/libphonenumberInstance'; import { parseAndFormatPhoneNumber } from '../../../../util/libphonenumberInstance';
import { filterAndSortConversationsByTitle } from '../../../../util/filterAndSortConversations'; import { filterAndSortConversationsByRecent } from '../../../../util/filterAndSortConversations';
import type { ConversationType } from '../../../../state/ducks/conversations'; import type { ConversationType } from '../../../../state/ducks/conversations';
import type { PreferredBadgeSelectorType } from '../../../../state/selectors/badges'; import type { PreferredBadgeSelectorType } from '../../../../state/selectors/badges';
import type { import type {
@ -114,13 +114,13 @@ export const ChooseGroupMembersModal: FunctionComponent<PropsType> = ({
const canContinue = Boolean(selectedContacts.length); const canContinue = Boolean(selectedContacts.length);
const [filteredContacts, setFilteredContacts] = useState( const [filteredContacts, setFilteredContacts] = useState(
filterAndSortConversationsByTitle(candidateContacts, '', regionCode) filterAndSortConversationsByRecent(candidateContacts, '', regionCode)
); );
const normalizedSearchTerm = searchTerm.trim(); const normalizedSearchTerm = searchTerm.trim();
useEffect(() => { useEffect(() => {
const timeout = setTimeout(() => { const timeout = setTimeout(() => {
setFilteredContacts( setFilteredContacts(
filterAndSortConversationsByTitle( filterAndSortConversationsByRecent(
candidateContacts, candidateContacts,
normalizedSearchTerm, normalizedSearchTerm,
regionCode regionCode

View File

@ -5065,21 +5065,27 @@ export async function applyNewAvatar(
const data = await decryptGroupAvatar(newAvatar, result.secretParams); const data = await decryptGroupAvatar(newAvatar, result.secretParams);
const hash = computeHash(data); const hash = computeHash(data);
if (result.avatar && result.avatar.path && result.avatar.hash !== hash) { if (result.avatar?.hash === hash) {
await window.Signal.Migrations.deleteAttachmentData(result.avatar.path); log.info(
result.avatar = undefined; `applyNewAvatar/${logId}: Hash is the same, but url was different. Saving new url.`
}
if (!result.avatar) {
const path = await window.Signal.Migrations.writeNewAttachmentData(
data
); );
result.avatar = { result.avatar = {
...result.avatar,
url: newAvatar, url: newAvatar,
path,
hash,
}; };
return;
} }
if (result.avatar) {
await window.Signal.Migrations.deleteAttachmentData(result.avatar.path);
}
const path = await window.Signal.Migrations.writeNewAttachmentData(data);
result.avatar = {
url: newAvatar,
path,
hash,
};
} }
} catch (error) { } catch (error) {
log.warn( log.warn(

View File

@ -108,6 +108,7 @@ export async function sendNormalMessage(
const { const {
allRecipientIdentifiers, allRecipientIdentifiers,
recipientIdentifiersWithoutMe, recipientIdentifiersWithoutMe,
sentRecipientIdentifiers,
untrustedConversationIds, untrustedConversationIds,
} = getMessageRecipients({ } = getMessageRecipients({
message, message,
@ -150,9 +151,13 @@ export async function sendNormalMessage(
let messageSendPromise: Promise<CallbackResultType | void>; let messageSendPromise: Promise<CallbackResultType | void>;
if (recipientIdentifiersWithoutMe.length === 0) { if (recipientIdentifiersWithoutMe.length === 0) {
if (!isMe(conversation.attributes) && !isGroup(conversation.attributes)) { if (
!isMe(conversation.attributes) &&
!isGroup(conversation.attributes) &&
sentRecipientIdentifiers.length === 0
) {
log.info( log.info(
'No recipients, but we are not sending to ourselves or to group. Failing job.' 'No recipients; not sending to ourselves or to group, and no successful sends. Failing job.'
); );
markMessageFailed(message, [new Error('No valid recipients')]); markMessageFailed(message, [new Error('No valid recipients')]);
return; return;
@ -334,20 +339,18 @@ function getMessageRecipients({
}>): { }>): {
allRecipientIdentifiers: Array<string>; allRecipientIdentifiers: Array<string>;
recipientIdentifiersWithoutMe: Array<string>; recipientIdentifiersWithoutMe: Array<string>;
sentRecipientIdentifiers: Array<string>;
untrustedConversationIds: Array<string>; untrustedConversationIds: Array<string>;
} { } {
const allRecipientIdentifiers: Array<string> = []; const allRecipientIdentifiers: Array<string> = [];
const recipientIdentifiersWithoutMe: Array<string> = []; const recipientIdentifiersWithoutMe: Array<string> = [];
const untrustedConversationIds: Array<string> = []; const untrustedConversationIds: Array<string> = [];
const sentRecipientIdentifiers: Array<string> = [];
const currentConversationRecipients = conversation.getMemberConversationIds(); const currentConversationRecipients = conversation.getMemberConversationIds();
Object.entries(message.get('sendStateByConversationId') || {}).forEach( Object.entries(message.get('sendStateByConversationId') || {}).forEach(
([recipientConversationId, sendState]) => { ([recipientConversationId, sendState]) => {
if (isSent(sendState.status)) {
return;
}
const recipient = window.ConversationController.get( const recipient = window.ConversationController.get(
recipientConversationId recipientConversationId
); );
@ -377,6 +380,11 @@ function getMessageRecipients({
return; return;
} }
if (isSent(sendState.status)) {
sentRecipientIdentifiers.push(recipientIdentifier);
return;
}
allRecipientIdentifiers.push(recipientIdentifier); allRecipientIdentifiers.push(recipientIdentifier);
if (!isRecipientMe) { if (!isRecipientMe) {
recipientIdentifiersWithoutMe.push(recipientIdentifier); recipientIdentifiersWithoutMe.push(recipientIdentifier);
@ -387,6 +395,7 @@ function getMessageRecipients({
return { return {
allRecipientIdentifiers, allRecipientIdentifiers,
recipientIdentifiersWithoutMe, recipientIdentifiersWithoutMe,
sentRecipientIdentifiers,
untrustedConversationIds, untrustedConversationIds,
}; };
} }

View File

@ -286,12 +286,15 @@ async function _runJob(job?: AttachmentDownloadJobType): Promise<void> {
Errors.toLogFormat(error) Errors.toLogFormat(error)
); );
await _addAttachmentToMessage( try {
message, await _addAttachmentToMessage(
_markAttachmentAsTransientError(attachment), message,
{ type, index } _markAttachmentAsTransientError(attachment),
); { type, index }
await _finishJob(message, id); );
} finally {
await _finishJob(message, id);
}
return; return;
} }
@ -302,32 +305,35 @@ async function _runJob(job?: AttachmentDownloadJobType): Promise<void> {
Errors.toLogFormat(error) Errors.toLogFormat(error)
); );
// Remove `pending` flag from the attachment. try {
await _addAttachmentToMessage( // Remove `pending` flag from the attachment.
message, await _addAttachmentToMessage(
{ message,
...attachment, {
downloadJobId: id, ...attachment,
}, downloadJobId: id,
{ type, index } },
); { type, index }
if (message) { );
await saveMessage(message.attributes, { if (message) {
ourUuid: window.textsecure.storage.user.getCheckedUuid().toString(), await saveMessage(message.attributes, {
}); ourUuid: window.textsecure.storage.user.getCheckedUuid().toString(),
});
}
const failedJob = {
...job,
pending: 0,
attempts: currentAttempt,
timestamp:
Date.now() + (RETRY_BACKOFF[currentAttempt] || RETRY_BACKOFF[3]),
};
await saveAttachmentDownloadJob(failedJob);
} finally {
delete _activeAttachmentDownloadJobs[id];
_maybeStartJob();
} }
const failedJob = {
...job,
pending: 0,
attempts: currentAttempt,
timestamp:
Date.now() + (RETRY_BACKOFF[currentAttempt] || RETRY_BACKOFF[3]),
};
await saveAttachmentDownloadJob(failedJob);
delete _activeAttachmentDownloadJobs[id];
_maybeStartJob();
} }
} }

View File

@ -1401,7 +1401,13 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
...(this.get('sendStateByConversationId') || {}), ...(this.get('sendStateByConversationId') || {}),
}; };
const sendIsNotFinal =
'sendIsNotFinal' in result.value && result.value.sendIsNotFinal;
const sendIsFinal = !sendIsNotFinal;
// Capture successful sends
const successfulIdentifiers: Array<string> = const successfulIdentifiers: Array<string> =
sendIsFinal &&
'successfulIdentifiers' in result.value && 'successfulIdentifiers' in result.value &&
Array.isArray(result.value.successfulIdentifiers) Array.isArray(result.value.successfulIdentifiers)
? result.value.successfulIdentifiers ? result.value.successfulIdentifiers
@ -1435,9 +1441,11 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
} }
}); });
// Integrate sends via sealed sender
const previousUnidentifiedDeliveries = const previousUnidentifiedDeliveries =
this.get('unidentifiedDeliveries') || []; this.get('unidentifiedDeliveries') || [];
const newUnidentifiedDeliveries = const newUnidentifiedDeliveries =
sendIsFinal &&
'unidentifiedDeliveries' in result.value && 'unidentifiedDeliveries' in result.value &&
Array.isArray(result.value.unidentifiedDeliveries) Array.isArray(result.value.unidentifiedDeliveries)
? result.value.unidentifiedDeliveries ? result.value.unidentifiedDeliveries
@ -1445,6 +1453,7 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
const promises: Array<Promise<unknown>> = []; const promises: Array<Promise<unknown>> = [];
// Process errors
let errors: Array<CustomError>; let errors: Array<CustomError>;
if (result.value instanceof SendMessageProtoError && result.value.errors) { if (result.value instanceof SendMessageProtoError && result.value.errors) {
({ errors } = result.value); ({ errors } = result.value);
@ -1467,7 +1476,7 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
window.ConversationController.get(error.identifier) || window.ConversationController.get(error.identifier) ||
window.ConversationController.get(error.number); window.ConversationController.get(error.number);
if (conversation && !saveErrors) { if (conversation && !saveErrors && sendIsFinal) {
const previousSendState = getOwn( const previousSendState = getOwn(
sendStateByConversationId, sendStateByConversationId,
conversation.id conversation.id
@ -1581,6 +1590,7 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
this.set({ this.set({
// This is the same as a normal send() // This is the same as a normal send()
expirationStartTimestamp: Date.now(), expirationStartTimestamp: Date.now(),
errors: [],
}); });
const result = await this.sendSyncMessage(); const result = await this.sendSyncMessage();
this.set({ this.set({

View File

@ -1293,6 +1293,9 @@ function verifyConversationsStoppingSend(): ThunkAction<
conversationIdsStoppingSend.forEach(async conversationId => { conversationIdsStoppingSend.forEach(async conversationId => {
const conversation = window.ConversationController.get(conversationId); const conversation = window.ConversationController.get(conversationId);
if (!conversation) { if (!conversation) {
log.warn(
`verifyConversationsStoppingSend: Cannot verify missing conversation for conversationId ${conversationId}`
);
return; return;
} }

View File

@ -31,7 +31,7 @@ import type { PropsDataType as TimelinePropsType } from '../../components/conver
import type { TimelineItemType } from '../../components/conversation/TimelineItem'; import type { TimelineItemType } from '../../components/conversation/TimelineItem';
import { assert } from '../../util/assert'; import { assert } from '../../util/assert';
import { isConversationUnregistered } from '../../util/isConversationUnregistered'; import { isConversationUnregistered } from '../../util/isConversationUnregistered';
import { filterAndSortConversationsByTitle } from '../../util/filterAndSortConversations'; import { filterAndSortConversationsByRecent } from '../../util/filterAndSortConversations';
import type { ContactNameColorType } from '../../types/Colors'; import type { ContactNameColorType } from '../../types/Colors';
import { ContactNameColors } from '../../types/Colors'; import { ContactNameColors } from '../../types/Colors';
import type { AvatarDataType } from '../../types/Avatar'; import type { AvatarDataType } from '../../types/Avatar';
@ -523,7 +523,7 @@ export const getFilteredComposeContacts = createSelector(
contacts: Array<ConversationType>, contacts: Array<ConversationType>,
regionCode: string | undefined regionCode: string | undefined
): Array<ConversationType> => { ): Array<ConversationType> => {
return filterAndSortConversationsByTitle(contacts, searchTerm, regionCode); return filterAndSortConversationsByRecent(contacts, searchTerm, regionCode);
} }
); );
@ -536,7 +536,7 @@ export const getFilteredComposeGroups = createSelector(
groups: Array<ConversationType>, groups: Array<ConversationType>,
regionCode: string | undefined regionCode: string | undefined
): Array<ConversationType> => { ): Array<ConversationType> => {
return filterAndSortConversationsByTitle(groups, searchTerm, regionCode); return filterAndSortConversationsByRecent(groups, searchTerm, regionCode);
} }
); );
@ -544,7 +544,7 @@ export const getFilteredCandidateContactsForNewGroup = createSelector(
getCandidateContactsForNewGroup, getCandidateContactsForNewGroup,
getNormalizedComposerConversationSearchTerm, getNormalizedComposerConversationSearchTerm,
getRegionCode, getRegionCode,
filterAndSortConversationsByTitle filterAndSortConversationsByRecent
); );
const getGroupCreationComposerState = createSelector( const getGroupCreationComposerState = createSelector(
@ -1027,20 +1027,15 @@ export const getConversationIdsStoppingSend = createSelector(
); );
export const getConversationsStoppingSend = createSelector( export const getConversationsStoppingSend = createSelector(
getConversationByIdSelector, getConversationSelector,
getConversationIdsStoppingSend, getConversationIdsStoppingSend,
( (
conversationSelector: (id: string) => undefined | ConversationType, conversationSelector: GetConversationByIdType,
conversationIds: ReadonlyArray<string> conversationIds: ReadonlyArray<string>
): Array<ConversationType> => { ): Array<ConversationType> => {
const conversations = conversationIds const conversations = conversationIds.map(conversationId =>
.map(conversationId => conversationSelector(conversationId)) conversationSelector(conversationId)
.filter(isNotNil); );
if (conversationIds.length !== conversations.length) {
log.warn(
`getConversationsStoppingSend: Started with ${conversationIds.length} items, ended up with ${conversations.length}.`
);
}
return sortByTitle(conversations); return sortByTitle(conversations);
} }
); );

View File

@ -1372,7 +1372,7 @@ export function getMessagePropStatus(
ourConversationId: string | undefined ourConversationId: string | undefined
): LastMessageStatus | undefined { ): LastMessageStatus | undefined {
if (!isOutgoing(message)) { if (!isOutgoing(message)) {
return undefined; return hasErrors(message) ? 'error' : undefined;
} }
if (getLastChallengeError(message)) { if (getLastChallengeError(message)) {

View File

@ -965,10 +965,10 @@ describe('both/state/selectors/conversations', () => {
const ids = result.map(contact => contact.id); const ids = result.map(contact => contact.id);
assert.deepEqual(ids, [ assert.deepEqual(ids, [
'our-conversation-id',
'convo-1', 'convo-1',
'convo-5', 'convo-5',
'convo-6', 'convo-6',
'our-conversation-id',
]); ]);
}); });

View File

@ -4,90 +4,7 @@
import { assert } from 'chai'; import { assert } from 'chai';
import { getDefaultConversation } from '../helpers/getDefaultConversation'; import { getDefaultConversation } from '../helpers/getDefaultConversation';
import { import { filterAndSortConversationsByRecent } from '../../util/filterAndSortConversations';
filterAndSortConversationsByTitle,
filterAndSortConversationsByRecent,
} from '../../util/filterAndSortConversations';
describe('filterAndSortConversationsByTitle', () => {
const conversations = [
getDefaultConversation({
title: '+16505551234',
e164: '+16505551234',
name: undefined,
profileName: undefined,
}),
getDefaultConversation({
name: 'Carlos Santana',
title: 'Carlos Santana',
e164: '+16505559876',
username: 'thisismyusername',
}),
getDefaultConversation({
name: 'Aaron Aardvark',
title: 'Aaron Aardvark',
}),
getDefaultConversation({
name: 'Belinda Beetle',
title: 'Belinda Beetle',
}),
getDefaultConversation({
name: 'Belinda Zephyr',
title: 'Belinda Zephyr',
}),
];
it('without a search term, sorts conversations by title (but puts no-name contacts at the bottom)', () => {
const titles = filterAndSortConversationsByTitle(
conversations,
'',
'US'
).map(contact => contact.title);
assert.deepEqual(titles, [
'Aaron Aardvark',
'Belinda Beetle',
'Belinda Zephyr',
'Carlos Santana',
'+16505551234',
]);
});
it('can search for contacts by title', () => {
const titles = filterAndSortConversationsByTitle(
conversations,
'belind',
'US'
).map(contact => contact.title);
assert.sameMembers(titles, ['Belinda Beetle', 'Belinda Zephyr']);
});
it('can search for contacts by phone number (and puts no-name contacts at the bottom)', () => {
const titles = filterAndSortConversationsByTitle(
conversations,
'650555',
'US'
).map(contact => contact.title);
assert.sameMembers(titles, ['Carlos Santana', '+16505551234']);
});
it('can search for contacts by formatted phone number (and puts no-name contacts at the bottom)', () => {
const titles = filterAndSortConversationsByTitle(
conversations,
'(650)555 12-34',
'US'
).map(contact => contact.title);
assert.sameMembers(titles, ['+16505551234']);
});
it('can search for contacts by username', () => {
const titles = filterAndSortConversationsByTitle(
conversations,
'thisis',
'US'
).map(contact => contact.title);
assert.sameMembers(titles, ['Carlos Santana']);
});
});
describe('filterAndSortConversationsByRecent', () => { describe('filterAndSortConversationsByRecent', () => {
const conversations = [ const conversations = [

View File

@ -351,12 +351,24 @@ describe('state/selectors/messages', () => {
...overrides, ...overrides,
}); });
it('returns undefined for incoming messages', () => { it('returns undefined for incoming messages with no errors', () => {
const message = createMessage({ type: 'incoming' }); const message = createMessage({ type: 'incoming' });
assert.isUndefined(getMessagePropStatus(message, ourConversationId)); assert.isUndefined(getMessagePropStatus(message, ourConversationId));
}); });
it('returns "error" for incoming messages with errors', () => {
const message = createMessage({
type: 'incoming',
errors: [new Error('something went wrong')],
});
assert.strictEqual(
getMessagePropStatus(message, ourConversationId),
'error'
);
});
it('returns "paused" for messages with challenges', () => { it('returns "paused" for messages with challenges', () => {
const challengeError: ShallowChallengeError = Object.assign( const challengeError: ShallowChallengeError = Object.assign(
new Error('a challenge'), new Error('a challenge'),

View File

@ -204,6 +204,8 @@ export class SendMessageProtoError extends Error implements CallbackResultType {
public readonly recipients?: Record<string, Array<number>>; public readonly recipients?: Record<string, Array<number>>;
public readonly sendIsNotFinal?: boolean;
constructor({ constructor({
successfulIdentifiers, successfulIdentifiers,
failoverIdentifiers, failoverIdentifiers,
@ -214,6 +216,7 @@ export class SendMessageProtoError extends Error implements CallbackResultType {
contentProto, contentProto,
timestamp, timestamp,
recipients, recipients,
sendIsNotFinal,
}: CallbackResultType) { }: CallbackResultType) {
super(`SendMessageProtoError: ${SendMessageProtoError.getMessage(errors)}`); super(`SendMessageProtoError: ${SendMessageProtoError.getMessage(errors)}`);
@ -226,6 +229,7 @@ export class SendMessageProtoError extends Error implements CallbackResultType {
this.contentProto = contentProto; this.contentProto = contentProto;
this.timestamp = timestamp; this.timestamp = timestamp;
this.recipients = recipients; this.recipients = recipients;
this.sendIsNotFinal = sendIsNotFinal;
} }
protected static getMessage(errors: CallbackResultType['errors']): string { protected static getMessage(errors: CallbackResultType['errors']): string {

View File

@ -251,6 +251,10 @@ export interface CallbackResultType {
unidentifiedDeliveries?: Array<string>; unidentifiedDeliveries?: Array<string>;
dataMessage?: Uint8Array; dataMessage?: Uint8Array;
// If this send is not the final step in a multi-step send, we shouldn't treat its
// results we would treat a one-step send.
sendIsNotFinal?: boolean;
// Fields necessary for send log save // Fields necessary for send log save
contentHint?: number; contentHint?: number;
contentProto?: Uint8Array; contentProto?: Uint8Array;

View File

@ -9,6 +9,7 @@ import { WEEK } from './durations';
// Fuse.js scores have order of 0.01 // Fuse.js scores have order of 0.01
const ACTIVE_AT_SCORE_FACTOR = (1 / WEEK) * 0.01; const ACTIVE_AT_SCORE_FACTOR = (1 / WEEK) * 0.01;
const LEFT_GROUP_PENALTY = 1;
const FUSE_OPTIONS: Fuse.IFuseOptions<ConversationType> = { const FUSE_OPTIONS: Fuse.IFuseOptions<ConversationType> = {
// A small-but-nonzero threshold lets us match parts of E164s better, and makes the // A small-but-nonzero threshold lets us match parts of E164s better, and makes the
@ -42,8 +43,6 @@ const FUSE_OPTIONS: Fuse.IFuseOptions<ConversationType> = {
], ],
}; };
const collator = new Intl.Collator();
const cachedIndices = new WeakMap< const cachedIndices = new WeakMap<
ReadonlyArray<ConversationType>, ReadonlyArray<ConversationType>,
Fuse<ConversationType> Fuse<ConversationType>
@ -119,15 +118,19 @@ export function filterAndSortConversationsByRecent(
return searchConversations(conversations, searchTerm, regionCode) return searchConversations(conversations, searchTerm, regionCode)
.slice() .slice()
.sort((a, b) => { .sort((a, b) => {
const { activeAt: aActiveAt = 0 } = a.item; const { activeAt: aActiveAt = 0, left: aLeft = false } = a.item;
const { activeAt: bActiveAt = 0 } = b.item; const { activeAt: bActiveAt = 0, left: bLeft = false } = b.item;
// See: https://fusejs.io/api/options.html#includescore // See: https://fusejs.io/api/options.html#includescore
// 0 score is a perfect match, 1 - complete mismatch // 0 score is a perfect match, 1 - complete mismatch
const aScore = const aScore =
(now - aActiveAt) * ACTIVE_AT_SCORE_FACTOR + (a.score ?? 0); (now - aActiveAt) * ACTIVE_AT_SCORE_FACTOR +
(a.score ?? 0) +
(aLeft ? LEFT_GROUP_PENALTY : 0);
const bScore = const bScore =
(now - bActiveAt) * ACTIVE_AT_SCORE_FACTOR + (b.score ?? 0); (now - bActiveAt) * ACTIVE_AT_SCORE_FACTOR +
(b.score ?? 0) +
(bLeft ? LEFT_GROUP_PENALTY : 0);
return aScore - bScore; return aScore - bScore;
}) })
@ -142,33 +145,3 @@ export function filterAndSortConversationsByRecent(
return a.activeAt && !b.activeAt ? -1 : 1; return a.activeAt && !b.activeAt ? -1 : 1;
}); });
} }
export function filterAndSortConversationsByTitle(
conversations: ReadonlyArray<ConversationType>,
searchTerm: string,
regionCode: string | undefined
): Array<ConversationType> {
if (searchTerm.length) {
return searchConversations(conversations, searchTerm, regionCode)
.slice()
.sort((a, b) => {
return (a.score ?? 0) - (b.score ?? 0);
})
.map(result => result.item);
}
return conversations.concat().sort((a, b) => {
const aHasName = hasName(a);
const bHasName = hasName(b);
if (aHasName === bHasName) {
return collator.compare(a.title, b.title);
}
return aHasName && !bHasName ? -1 : 1;
});
}
function hasName(contact: Readonly<ConversationType>): boolean {
return Boolean(contact.name || contact.profileName);
}

View File

@ -412,18 +412,31 @@ export async function sendToGroupViaSenderKey(options: {
newToMemberUuids.length newToMemberUuids.length
} members: ${JSON.stringify(newToMemberUuids)}` } members: ${JSON.stringify(newToMemberUuids)}`
); );
await handleMessageSend( try {
window.textsecure.messaging.sendSenderKeyDistributionMessage( await handleMessageSend(
{ window.textsecure.messaging.sendSenderKeyDistributionMessage(
contentHint: ContentHint.RESENDABLE, {
distributionId, contentHint: ContentHint.RESENDABLE,
groupId, distributionId,
identifiers: newToMemberUuids, groupId,
}, identifiers: newToMemberUuids,
sendOptions ? { ...sendOptions, online: false } : undefined },
), sendOptions ? { ...sendOptions, online: false } : undefined
{ messageIds: [], sendType: 'senderKeyDistributionMessage' } ),
); { messageIds: [], sendType: 'senderKeyDistributionMessage' }
);
} catch (error) {
// If we partially fail to send the sender key distribution message (SKDM), we don't
// want the successful SKDM sends to be considered an overall success.
if (error instanceof SendMessageProtoError) {
throw new SendMessageProtoError({
...error,
sendIsNotFinal: true,
});
}
throw error;
}
// Update memberDevices with new devices // Update memberDevices with new devices
const updatedMemberDevices = [...memberDevices, ...newToMemberDevices]; const updatedMemberDevices = [...memberDevices, ...newToMemberDevices];