Merge tag '2.32.0.19'

pull/1/head
Michael Kirk 7 years ago
commit 92dd77779c

@ -561,6 +561,18 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType)
return;
}
// Check for quoted replies _before_ media album handling,
// since that logic may exit early.
if (message.quotedMessage) {
self.quotedReply =
[OWSQuotedReplyModel quotedReplyWithQuotedMessage:message.quotedMessage transaction:transaction];
if (self.quotedReply.body.length > 0) {
self.displayableQuotedText =
[self displayableQuotedTextForText:self.quotedReply.body interactionId:message.uniqueId];
}
}
NSArray<TSAttachment *> *attachments = [message attachmentsWithTransaction:transaction];
if ([message isMediaAlbumWithTransaction:transaction]) {
OWSAssertDebug(attachments.count > 0);
@ -642,16 +654,6 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType)
self.messageCellType = OWSMessageCellType_TextMessage;
self.displayableBodyText = [[DisplayableText alloc] initWithFullText:@"" displayText:@"" isTextTruncated:NO];
}
if (message.quotedMessage) {
self.quotedReply =
[OWSQuotedReplyModel quotedReplyWithQuotedMessage:message.quotedMessage transaction:transaction];
if (self.quotedReply.body.length > 0) {
self.displayableQuotedText =
[self displayableQuotedTextForText:self.quotedReply.body interactionId:message.uniqueId];
}
}
}
- (NSArray<ConversationMediaAlbumItem *> *)mediaAlbumItemsForAttachments:(NSArray<TSAttachment *> *)attachments

@ -3925,6 +3925,7 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[SSKEnvironment.shared.batchMessageProcessor enqueueEnvelopeData:envelopeData
plaintextData:plaintextData
wasReceivedByUD:NO
transaction:transaction];
}];
}

@ -7,7 +7,7 @@ import SignalMessaging
private class IntroducingCustomNotificationAudioExperienceUpgradeViewController: ExperienceUpgradeViewController {
var buttonAction: ((UIButton) -> Void)?
var primaryButtonAction: ((UIButton) -> Void)?
override func loadView() {
self.view = UIView.container()
@ -41,7 +41,7 @@ private class IntroducingCustomNotificationAudioExperienceUpgradeViewController:
imageView.contentMode = .scaleAspectFit
let buttonTitle = NSLocalizedString("UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_SETTINGS_BUTTON", comment: "button label shown one time, after upgrade")
let button = addButton(title: buttonTitle) { _ in
let button = addPrimaryButton(title: buttonTitle) { _ in
// dismiss the modally presented view controller, then proceed.
self.experienceUpgradesPageViewController.dismiss(animated: true) {
guard let fromViewController = UIApplication.shared.frontmostViewController else {
@ -89,8 +89,8 @@ private class IntroducingCustomNotificationAudioExperienceUpgradeViewController:
// MARK: - Actions
func addButton(title: String, action: @escaping (UIButton) -> Void) -> UIButton {
self.buttonAction = action
func addPrimaryButton(title: String, action: @escaping (UIButton) -> Void) -> UIButton {
self.primaryButtonAction = action
let button = MultiLineButton()
view.addSubview(button)
button.setTitle(title, for: .normal)
@ -106,18 +106,18 @@ private class IntroducingCustomNotificationAudioExperienceUpgradeViewController:
@objc func didTapButton(sender: UIButton) {
Logger.debug("")
guard let buttonAction = self.buttonAction else {
guard let primaryButtonAction = self.primaryButtonAction else {
owsFailDebug("button action was nil")
return
}
buttonAction(sender)
primaryButtonAction(sender)
}
}
private class IntroductingReadReceiptsExperienceUpgradeViewController: ExperienceUpgradeViewController {
var buttonAction: ((UIButton) -> Void)?
var primaryButtonAction: ((UIButton) -> Void)?
override func loadView() {
self.view = UIView.container()
@ -151,7 +151,7 @@ private class IntroductingReadReceiptsExperienceUpgradeViewController: Experienc
imageView.contentMode = .scaleAspectFit
let buttonTitle = NSLocalizedString("UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_PRIVACY_SETTINGS", comment: "button label shown one time, after upgrade")
let button = addButton(title: buttonTitle) { _ in
let button = addPrimaryButton(title: buttonTitle) { _ in
// dismiss the modally presented view controller, then proceed.
self.experienceUpgradesPageViewController.dismiss(animated: true) {
guard let fromViewController = UIApplication.shared.frontmostViewController as? HomeViewController else {
@ -199,8 +199,8 @@ private class IntroductingReadReceiptsExperienceUpgradeViewController: Experienc
// MARK: - Actions
func addButton(title: String, action: @escaping (UIButton) -> Void) -> UIButton {
self.buttonAction = action
func addPrimaryButton(title: String, action: @escaping (UIButton) -> Void) -> UIButton {
self.primaryButtonAction = action
let button = MultiLineButton()
view.addSubview(button)
button.setTitle(title, for: .normal)
@ -216,18 +216,22 @@ private class IntroductingReadReceiptsExperienceUpgradeViewController: Experienc
@objc func didTapButton(sender: UIButton) {
Logger.debug("")
guard let buttonAction = self.buttonAction else {
guard let primaryButtonAction = self.primaryButtonAction else {
owsFailDebug("button action was nil")
return
}
buttonAction(sender)
primaryButtonAction(sender)
}
}
private class IntroductingTypingIndicatorsExperienceUpgradeViewController: ExperienceUpgradeViewController {
var buttonAction: ((UIButton) -> Void)?
var primaryButtonAction: ((UIButton) -> Void)?
var typingIndicators: TypingIndicators {
return SSKEnvironment.shared.typingIndicators
}
override func loadView() {
self.view = UIView.container()
@ -270,21 +274,10 @@ private class IntroductingTypingIndicatorsExperienceUpgradeViewController: Exper
view.addSubview(imageView)
imageView.contentMode = .scaleAspectFit
let buttonTitle = NSLocalizedString("UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS", comment: "button label shown one time, after upgrade")
let button = addButton(title: buttonTitle) { _ in
// dismiss the modally presented view controller, then proceed.
self.experienceUpgradesPageViewController.dismiss(animated: true) {
guard let fromViewController = UIApplication.shared.frontmostViewController as? HomeViewController else {
owsFailDebug("unexpected frontmostViewController: \(String(describing: UIApplication.shared.frontmostViewController))")
return
}
// Construct the "settings" view & push the "privacy settings" view.
let navigationController = AppSettingsViewController.inModalNavigationController()
navigationController.pushViewController(PrivacySettingsTableViewController(), animated: false)
fromViewController.present(navigationController, animated: true)
}
let buttonTitle = NSLocalizedString("UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON", comment: "button label shown one time, after upgrade")
let button = addPrimaryButton(title: buttonTitle) { _ in
self.typingIndicators.setTypingIndicatorsEnabled(value: true)
self.experienceUpgradesPageViewController.dismiss(animated: true)
}
let bottomSpacer = UIView()
@ -319,8 +312,8 @@ private class IntroductingTypingIndicatorsExperienceUpgradeViewController: Exper
// MARK: - Actions
func addButton(title: String, action: @escaping (UIButton) -> Void) -> UIButton {
self.buttonAction = action
func addPrimaryButton(title: String, action: @escaping (UIButton) -> Void) -> UIButton {
self.primaryButtonAction = action
let button = MultiLineButton()
view.addSubview(button)
button.setTitle(title, for: .normal)
@ -336,12 +329,12 @@ private class IntroductingTypingIndicatorsExperienceUpgradeViewController: Exper
@objc func didTapButton(sender: UIButton) {
Logger.debug("")
guard let buttonAction = self.buttonAction else {
guard let primaryButtonAction = self.primaryButtonAction else {
owsFailDebug("button action was nil")
return
}
buttonAction(sender)
primaryButtonAction(sender)
}
}
@ -665,7 +658,7 @@ public class ExperienceUpgradesPageViewController: OWSViewController, UIPageView
// Dismiss button
let dismissButton = UIButton()
view.addSubview(dismissButton)
dismissButton.setTitle(CommonStrings.dismissButton, for: .normal)
dismissButton.setTitle(NSLocalizedString("EXPERIENCE_UPGRADE_DISMISS_BUTTON", comment: "Button to dismiss/ignore the one time splash screen that appears after upgrading"), for: .normal)
dismissButton.setTitleColor(UIColor.ows_signalBrandBlue, for: .normal)
dismissButton.isUserInteractionEnabled = true
dismissButton.addTarget(self, action: #selector(didTapDismissButton), for: .touchUpInside)

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "ليس الآن";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "تصفح بسلاسة لتعرف الإجابة ببساطة";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Not Now";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Just Swipe to Answer";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Нерегистриран потребител: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Не Сега";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Просто Плъзни за Отговор";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Вече можете да избирате звуци за известия по подразбиране и за известия за разговори, а обажданията ще зачитат тона на звънене, който сте избрали за всеки системен контакт.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Представяме - Прочетени Разписки";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Ne sada";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Samo povucite prstom za odgovor";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Ara no";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Llisqueu per respondre";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,11 +2360,8 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Ara, opcionalment, podeu veure i compartir quan s'escriuen els missatges.";
/* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_TITLE" = "Introducing Typing Indicators";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Neregistrovaný uživatel: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Nyní ne";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Pro přijetí stačí přejet";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Nyní můžete zvolit výchozí zvuky chatů, či zvuky pro každou konverzaci zvlášť. Zvuky u hovorů budou stejné, jako byly zvoleny u každého systémového kontaktu zvlášť.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Představujeme potvrzení o přečtení";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Ikke Nu";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Just Swipe to Answer";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistrierter Benutzer: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Nicht jetzt";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Zu viele Fehler mit diesem Kontakt. Bitte später erneut versuchen.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Zum Annehmen wischen";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Tipp-Indikatoren anschalten";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Du kannst nun sowohl Standardmitteilungstöne, als auch Mitteilungstöne je Unterhaltung auswählen. Für Anrufe werden jene Klingeltöne verwendet, die du für deine Systemkontakte jeweils ausgewählt hast.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Neu: Lesebestätigungen";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Tipp-Indikatoren in deinen Datenschutzeinstellungen aktivieren.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Du kannst jetzt optional sehen und teilen, wann Nachrichten eingetippt werden.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Μη Εγγεγραμμένος Χρήστης: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Όχι Τώρα";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Πάρα πολλές αποτυχίες με αυτή την επαφή. Παρακαλώ δοκιμάστε ξανά αργότερα.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Σύρετε για Απάντηση";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Μπορείτε τώρα να επιλέξετε προεπιλεγμένους και ανά-συνομιλία ήχους ειδοποίησης, και οι κλήσεις θα σεβαστούν το ringtone που έχετε επιλέξει για κάθε επαφή του συστήματος.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Ήρθαν τα αποδεικτικά ανάγνωσης";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Not Now";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2330,6 +2333,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Just Swipe to Answer";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2357,9 +2363,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -411,13 +411,13 @@
"CHECK_FOR_BACKUP_RESTORE" = "Restaurar";
/* Error indicating that the app could not determine that user's CloudKit account status */
"CLOUDKIT_STATUS_COULD_NOT_DETERMINE" = "Fallo al establecer comunicación con el servidor de iCloud para la copia de seguridad.";
"CLOUDKIT_STATUS_COULD_NOT_DETERMINE" = "Fallo al establecer comunicación con el servidor de iCloud para comprobar las copias de seguridad.";
/* Error indicating that user does not have an iCloud account. */
"CLOUDKIT_STATUS_NO_ACCOUNT" = "No tienes una cuenta en iCloud para almacenar las copias de seguridad.";
/* Error indicating that the app was prevented from accessing the user's CloudKit account. */
"CLOUDKIT_STATUS_RESTRICTED" = "Signal no puede acceder a tu cuenta de iCloud para manejar las copias de seguridad.";
"CLOUDKIT_STATUS_RESTRICTED" = "Signal no puede acceder a tu cuenta de iCloud para gestionar las copias de seguridad.";
/* The first of two messages demonstrating the chosen conversation color, by rendering this message in an outgoing message bubble. */
"COLOR_PICKER_DEMO_MESSAGE_1" = "Selecciona el color de tus mensajes en este chat.";
@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Contacto no registrado: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Ahora no";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Demasiados fallos con este contacto. Vuelve a intentarlo más tarde.";
@ -1962,7 +1965,7 @@
"SETTINGS_BACKUP_CANCEL_BACKUP" = "Cancelar copia";
/* Label for switch in settings that controls whether or not backup is enabled. */
"SETTINGS_BACKUP_ENABLING_SWITCH" = "Activar copia";
"SETTINGS_BACKUP_ENABLING_SWITCH" = "Activar copia de seguridad";
/* Indicates that the last backup restore failed. */
"SETTINGS_BACKUP_IMPORT_STATUS_FAILED" = "Backup Restore Failed";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Desliza para responder";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Activar indicador de tecleo";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Ahora puedes asignar diferentes sonidos de notificaciones a cada chat. Además, las llamadas respetan el tono de llamada personalizado de iOS.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Nuevo: Notificaciones de lectura";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Activa los indicadores de tecleo en los ajustes de privacidad.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Ahora puedes visualizar de manera opcional cuando tus contactos están escribiendo un mensaje y tus contactos pueden saber cuando estás escribiendo en su chat.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "کاربر ثبت نشده: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "الان نه";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "برای پاسخ دادن، بکشید.";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "شما میتوانید صداهای پیشفرض و برای هر مکالمه را انتخاب کنید، و تماس ها با رینگتون هایی که شما برای هر مخاطب انتخاب کردید مطابقت خواهد داشت.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "معرفی رسید خوانده‌شدن";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Rekisteröimätön käyttäjä: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Ei nyt";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Lähetys tälle yhteystiedolle on epäonnistunut liian monta kertaa. Yritä myöhemmin uudelleen.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Pyyhkäise vastataksesi";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Ota käyttöön kirjoitustilaindikaattori";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Nyt voit valita oletus ja keskustelukohtaiset ilmoitusäänet. Myös puhelut noudattavat niitä soittoääniä, jotka olet valinnut puhelimesi asetuksissa kullekin yhteystiedollesi.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Esittelemme lukukuittaukset";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Ota kirjoitustilaindikaattori käyttöön yksityisyysasetuksissasi.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Voit nyt vaihtoehtoisesti nähdä ja jakaa milloin viestejä kirjoitetaan.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Not Now";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Just Swipe to Answer";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Utilisateur non inscrit : %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Pas maintenant";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Trop déchecs avec ce contact. Veuillez ressayer ultérieurement.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Balayez juste pour répondre";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Activer les indicateurs de saisie";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Vous pouvez maintenant choisir des sons de notification par défaut ou par conversation, et les appels utiliseront la sonnerie que vous avez choisie pour chaque contact du système.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Les accusés de lecture sont arrivés";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Activez lindicateur de saisie dans vos paramètres de confidentialité.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Vous pouvez maintenant voir et faire savoir que des messages sont en cours de saisie.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Agora non";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Só desliza para responder";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "משתמש בלתי רשום: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "לא עכשיו";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "יותר מדי כישלונות עם איש קשר זה. אנא נסה שוב מאוחר יותר.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "פשוט החלק כדי לענות";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "הפעל מחווני הקלדה";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "אתה יכול כעת לבחור צלילי התראה של ברירת מחדל ולפי שיחה, ושיחות יכבדו את הצלצול שבחרת עבור כל איש קשר.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "היכרות עם אישורי קריאה";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "אפשר מדדי הקלדה בהגדרות הפְּרָטִיוּת שלך.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "כעת אתה יכול לראות ולשתף באופן רשותי מתי הודעות מוקלדות.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Ne most";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Just Swipe to Answer";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,11 +2360,8 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Mostantól lehetőséged van megtekinteni és megosztani azt, hogy éppen gépelsz.";
/* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_TITLE" = "Introducing Typing Indicators";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Pengguna tidak terdaftar: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Tidak Sekarang";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Geser untuk menjawab";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Anda sekarang dapat memilih bunyi pemberitahuan untuk umum maupun untuk tiap percakapan, serta panggilan akan mengikuti nada dering yang telah Anda pilih untuk setiap kontak.";
@ -2354,11 +2360,8 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Perkenalkan pesan terbaca";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Sekarang Anda dapat secara opsional melihat dan berbagi saat pesan sedang diketik.";
/* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_TITLE" = "Introducing Typing Indicators";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Utente non registrato: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Non ora";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Troppi tentativi falliti con questo contatto. Riprovare più tardi.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Scorri per rispondere";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Ora puoi scegliere i suoni di notifica predefiniti e per conversazione, le chiamate rispetteranno la suoneria di sistema scelta per ogni contatto. ";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introduzione delle ricevute di lettura";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Abilità gli indicatori di scrittura nelle impostazioni di privacy.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Ora puoi facoltativamente vedere e condividere quando i messaggi vengono digitati.";

@ -555,7 +555,7 @@
"CONTACT_VIEW_OPEN_EMAIL_IN_EMAIL_APP" = "メールを送る";
/* Indicates that a contact has no name. */
"CONTACT_WITHOUT_NAME" = "名ない連絡先";
"CONTACT_WITHOUT_NAME" = "名の連絡先";
/* title for conversation settings screen */
"CONVERSATION_SETTINGS" = "会話設定";
@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "未登録ユーザー:%@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "あとで";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "多数のエラーが起きました。あとで再送信してください。";
@ -1114,7 +1117,7 @@
"INVITE_FLOW_REQUIRES_CONTACT_ACCESS_TITLE" = "連絡先へのアクセスを許可する";
/* Label for the cell that presents the 'invite contacts' workflow. */
"INVITE_FRIENDS_CONTACT_TABLE_BUTTON" = "友だちをSignalに招待する";
"INVITE_FRIENDS_CONTACT_TABLE_BUTTON" = "友だちをSignalに招待";
/* Search */
"INVITE_FRIENDS_PICKER_SEARCHBAR_PLACEHOLDER" = "検索";
@ -2301,7 +2304,7 @@
"UNLINKING_FAILED_ALERT_TITLE" = "端末の追加を解除できませんでした";
/* Label text in device manager for a device with no name */
"UNNAMED_DEVICE" = "名無しの端末";
"UNNAMED_DEVICE" = "無名のデバイス";
/* No comment provided by engineer. */
"UNREGISTER_SIGNAL_FAIL" = "登録解除に失敗しました";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "スワイプで電話に出る";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "入力インジケーターを表示する";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "通知音を相手ごとに設定できるようになりました。";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "既読確認を導入";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "入力中アイコンを有効化";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "メッセージが入力中であることを表示します。";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "អ្នកប្រើប្រាស់មិនបានចុះឈ្មោះ: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "លើកក្រោយ";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "គ្រាន់តែអូស ដើម្បីឆ្លើយ";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "អ្នកអាចជ្រើសរើស សំឡេងលំនាំដើម និងការជូនដំណឹងសន្ទនា, និងការហៅ នឹងត្រូវប្រើសំឡេងរោទិ៍ ដែលអ្នកបានកំណត់ក្នុងបញ្ជីទំនាក់ទំនងនីមួយៗ។";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "សូមណែនាំ ការទទួលអាន";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Not Now";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Just Swipe to Answer";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Neregistruotas naudotojas: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Ne dabar";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Tiesiog perbraukite, norėdami atsiliepti";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Dabar, galite pasirinkti numatytuosius bei kiekvieno atskiro pokalbio pranešimų garsus, o skambučiai taikys kiekvienam jūsų sistemos kontaktui pasirinktą skambučio melodiją.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Pristatome pranešimus apie žinučių skaitymą";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Not Now";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Just Swipe to Answer";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Не Сега";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Лизнете со прстот за да Одговорете ";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducing Read Receipts";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "မှတ်ပုံတင်ထားခြင်းမရှိသော အသုံးပြုသူ %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "မအားသေးပါ";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "ဖြေဖို့အတွက် ဆွဲပဲဆွဲလိုက်ပါ";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "မူလပုံစံနှင့် စကားဝိုင်းတစ်ခုချင်းစီအတွက် သတိပေးသံများကို ရွေးချယ်နိုင်ပါသည်။ ဖုန်းအဝင်အသံများသည် အဆက်အသွယ်တစ်ခုချင်းစီကို သတ်မှတ်ထားသည့် အသံဖြင့်သာဝင်ပါလိမ့်မည်။";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "ဖတ်ပြီးကြောင်းပြသည့် သင်္ကေတ ကိုမိတ်ဆက်ခြင်း";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Uregistrert bruker: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Ikke nå";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Skyv for å besvare";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Du kan nå velge standard varslingslyd og per samtale. Ringetoner vil følge det du har valgt for kontakten på systemet ellers.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Vi introduserer lesebekreftelser";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,11 +945,14 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Niezarejestrowany użytkownik: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Nie teraz";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Zbyt dużo nieudanych prób dla tego kontaktu. Spróbuj ponownie później.";
/* action sheet header when re-sending message which failed because of untrusted identity keys */
"FAILED_SENDING_BECAUSE_UNTRUSTED_IDENTITY_KEY" = "Your safety number with %@ has recently changed. You may wish to verify before sending this message again.";
"FAILED_SENDING_BECAUSE_UNTRUSTED_IDENTITY_KEY" = "Twój numer bezpieczeństwa z %@ zmienił się. Możesz go zweryfikować przed ponownym wysłaniem wiadomości.";
/* alert title */
"FAILED_VERIFICATION_TITLE" = "Nie udało się zweryfikować kodu zabezpieczenia.";
@ -1099,7 +1102,7 @@
"INCOMING_DECLINED_CALL" = "Odrzuciłeś(aś) połączenie";
/* No comment provided by engineer. */
"INCOMING_INCOMPLETE_CALL" = "Nadchodzące połączenie";
"INCOMING_INCOMPLETE_CALL" = "Połączenie przychodzące";
/* info message text shown in conversation view */
"INFO_MESSAGE_MISSED_CALL_DUE_TO_CHANGED_IDENITY" = "Nieodebrane połączenie ponieważ ich kod zabezpieczenia się zmienił.";
@ -1977,7 +1980,7 @@
"SETTINGS_BACKUP_IMPORT_STATUS_SUCCEEDED" = "Backup Restore Succeeded";
/* Label for phase row in the in the backup settings view. */
"SETTINGS_BACKUP_PHASE" = "Phase";
"SETTINGS_BACKUP_PHASE" = "Okres";
/* Label for phase row in the in the backup settings view. */
"SETTINGS_BACKUP_PROGRESS" = "Postęp";
@ -2151,16 +2154,16 @@
"SETTINGS_UNIDENTIFIED_DELIVERY_SECTION_TITLE" = "Zapieczętowany Nadawca";
/* switch label */
"SETTINGS_UNIDENTIFIED_DELIVERY_SHOW_INDICATORS" = "Display Indicators";
"SETTINGS_UNIDENTIFIED_DELIVERY_SHOW_INDICATORS" = "Wyświetl wskaźniki";
/* table section footer */
"SETTINGS_UNIDENTIFIED_DELIVERY_SHOW_INDICATORS_FOOTER" = "Show a status icon when you select \"More Info\" on messages that were delivered using sealed sender.";
"SETTINGS_UNIDENTIFIED_DELIVERY_SHOW_INDICATORS_FOOTER" = "Pokaż ikonę stanu po wybraniu \"Więcej informacji\" w wiadomościach dostarczonych za pomocą zapieczętowanego nadawcy.";
/* switch label */
"SETTINGS_UNIDENTIFIED_DELIVERY_UNRESTRICTED_ACCESS" = "Zezwól wszystkim";
/* table section footer */
"SETTINGS_UNIDENTIFIED_DELIVERY_UNRESTRICTED_ACCESS_FOOTER" = "Enable sealed sender for incoming messages from non-contacts and people with whom you have not shared your profile.";
"SETTINGS_UNIDENTIFIED_DELIVERY_UNRESTRICTED_ACCESS_FOOTER" = "Włącz zapieczętowanego nadawcę dla wiadomości przychodzących od osób niebędących w Twoich kontaktach oraz od osób, którym nie udostępniono Twojego profilu.";
/* No comment provided by engineer. */
"SETTINGS_VERSION" = "Wersja";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Przesuń by odebrać";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Włącz wskaźniki pisania";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Możesz wybrać pomiędzy dźwiękami domyślnymi, bądź przypisanymi do konkretnych konwersacji, a połączenia wykorzystują dzwonki przypisane do kontaktów.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Przedstawiamy potwierdzenia odczytania";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Włącz wskaźnik pisania w ustawieniach prywatności.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Możesz teraz opcjonalnie wyświetlać i udostępniać informację, gdy wiadomości są wpisywane.";
@ -2388,13 +2391,13 @@
"VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Zadzwoń do mnie";
/* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Pobierz kod ponownie";
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Wyślij ponownie kod przez SMS";
/* button text during registration to submit your SMS verification code. */
"VERIFICATION_CHALLENGE_SUBMIT_CODE" = "Wyślij";
/* Label indicating the phone number currently being verified. */
"VERIFICATION_PHONE_NUMBER_FORMAT" = "Wprowadź kod weryfikacyjny który wysłaliśmy do %@.";
"VERIFICATION_PHONE_NUMBER_FORMAT" = "Wprowadź kod weryfikacyjny, który wysłaliśmy na %@.";
/* Format for info message indicating that the verification state was unverified on this device. Embeds {{user's name or phone number}}. */
"VERIFICATION_STATE_CHANGE_FORMAT_NOT_VERIFIED_LOCAL" = "%@ oznaczony jako niezweryfikowany.";

@ -69,7 +69,7 @@
"APN_MESSAGE_IN_GROUP_DETAILED" = "%@ no grupo %@: %@";
/* Message for the 'app launch failed' alert. */
"APP_LAUNCH_FAILURE_ALERT_MESSAGE" = "Signal can't launch. Please send a debug log to support@signal.org so that we can troubleshoot this issue.";
"APP_LAUNCH_FAILURE_ALERT_MESSAGE" = "Signal não pode iniciar. Favor enviar um registro de debug para support@signal.org para que possamos verificar este problema.";
/* Title for the 'app launch failed' alert. */
"APP_LAUNCH_FAILURE_ALERT_TITLE" = "Erro";
@ -84,7 +84,7 @@
"APP_UPDATE_NAG_ALERT_MESSAGE_FORMAT" = "A versão %@ está disponível na App Store.";
/* Title for the 'new app version available' alert. */
"APP_UPDATE_NAG_ALERT_TITLE" = "A New Version of Signal Is Available";
"APP_UPDATE_NAG_ALERT_TITLE" = "Uma Nova Versão do Signal Está Disponível";
/* Label for the 'update' button in the 'new app version available' alert. */
"APP_UPDATE_NAG_ALERT_UPDATE_BUTTON" = "Atualizar";
@ -120,7 +120,7 @@
"ATTACHMENT_DEFAULT_FILENAME" = "Anexo";
/* Status label when an attachment download has failed. */
"ATTACHMENT_DOWNLOADING_STATUS_FAILED" = "Download failed. Tap to retry.";
"ATTACHMENT_DOWNLOADING_STATUS_FAILED" = "Falha ao baixar. Toque para tentar novamente.";
/* Status label when an attachment is currently downloading */
"ATTACHMENT_DOWNLOADING_STATUS_IN_PROGRESS" = "Baixando...";
@ -132,7 +132,7 @@
"ATTACHMENT_ERROR_ALERT_TITLE" = "Erro ao Enviar Anexo";
/* Attachment error message for image attachments which could not be converted to JPEG */
"ATTACHMENT_ERROR_COULD_NOT_CONVERT_TO_JPEG" = "Unable to convert image.";
"ATTACHMENT_ERROR_COULD_NOT_CONVERT_TO_JPEG" = "Impossível converter imagem.";
/* Attachment error message for video attachments which could not be converted to MP4 */
"ATTACHMENT_ERROR_COULD_NOT_CONVERT_TO_MP4" = "Não foi possível processar o vídeo.";
@ -144,16 +144,16 @@
"ATTACHMENT_ERROR_COULD_NOT_REMOVE_METADATA" = "Não foi possível remover os metadados da imagem.";
/* Attachment error message for image attachments which could not be resized */
"ATTACHMENT_ERROR_COULD_NOT_RESIZE_IMAGE" = "Unable to resize image.";
"ATTACHMENT_ERROR_COULD_NOT_RESIZE_IMAGE" = "Impossível redimensionar imagem.";
/* Attachment error message for attachments whose data exceed file size limits */
"ATTACHMENT_ERROR_FILE_SIZE_TOO_LARGE" = "Anexo excede o tamanho possível.";
/* Attachment error message for attachments with invalid data */
"ATTACHMENT_ERROR_INVALID_DATA" = "Attachment includes invalid content.";
"ATTACHMENT_ERROR_INVALID_DATA" = "Anexo inclui conteúdo inválido.";
/* Attachment error message for attachments with an invalid file format */
"ATTACHMENT_ERROR_INVALID_FILE_FORMAT" = "Attachment has an invalid file format.";
"ATTACHMENT_ERROR_INVALID_FILE_FORMAT" = "Anexo tem um formato de arquivo inválido.";
/* Attachment error message for attachments without any data */
"ATTACHMENT_ERROR_MISSING_DATA" = "Anexo vazio.";
@ -171,7 +171,7 @@
"ATTACHMENT_PICKER_DOCUMENTS_FAILED_ALERT_TITLE" = "Falha ao selecionar o documento.";
/* Alert body when picking a document fails because user picked a directory/bundle */
"ATTACHMENT_PICKER_DOCUMENTS_PICKED_DIRECTORY_FAILED_ALERT_BODY" = "Please create a compressed archive of this file or directory and try sending that instead.";
"ATTACHMENT_PICKER_DOCUMENTS_PICKED_DIRECTORY_FAILED_ALERT_BODY" = "Por favor, crie um arquivo comprimido deste arquivo ou diretório e tente novamente o envio.";
/* Alert title when picking a document fails because user picked a directory/bundle */
"ATTACHMENT_PICKER_DOCUMENTS_PICKED_DIRECTORY_FAILED_ALERT_TITLE" = "Arquivo Incompatível";
@ -279,7 +279,7 @@
"BLOCK_LIST_VIEW_BLOCK_BUTTON" = "Bloquear";
/* The message format of the 'conversation blocked' alert. Embeds the {{conversation title}}. */
"BLOCK_LIST_VIEW_BLOCKED_ALERT_MESSAGE_FORMAT" = "%@ has been blocked.";
"BLOCK_LIST_VIEW_BLOCKED_ALERT_MESSAGE_FORMAT" = "Ctrl+Alt+1%@ foi bloqueado.";
/* The title of the 'user blocked' alert. */
"BLOCK_LIST_VIEW_BLOCKED_ALERT_TITLE" = "Pessoa sob Bloqueio";
@ -297,7 +297,7 @@
"BLOCK_LIST_VIEW_UNBLOCKED_ALERT_TITLE_FORMAT" = "Você desbloqueou %@.";
/* Alert body after unblocking a group. */
"BLOCK_LIST_VIEW_UNBLOCKED_GROUP_ALERT_BODY" = "Existing members can now add you to the group again.";
"BLOCK_LIST_VIEW_UNBLOCKED_GROUP_ALERT_BODY" = "Membros existentes podem te adicionar ap grupo novamente.";
/* Action sheet that will block an unknown user. */
"BLOCK_OFFER_ACTIONSHEET_BLOCK_ACTION" = "Bloquear";
@ -321,7 +321,7 @@
"CALL_AGAIN_BUTTON_TITLE" = "Ligar novamente";
/* Alert message when calling and permissions for microphone are missing */
"CALL_AUDIO_PERMISSION_MESSAGE" = "You can enable microphone access in the iOS Settings app to make calls and record voice messages in Signal.";
"CALL_AUDIO_PERMISSION_MESSAGE" = "Você pode permitir o acesso ao microfone no app Ajustes do iOS e assim fazer ligações e gravar mensagems de voz no Signal.";
/* Alert title when calling and permissions for microphone are missing */
"CALL_AUDIO_PERMISSION_TITLE" = "Necessário acesso ao microfone";
@ -330,7 +330,7 @@
"CALL_LABEL" = "Chamar";
/* Call setup status label after outgoing call times out */
"CALL_SCREEN_STATUS_NO_ANSWER" = "No Answer";
"CALL_SCREEN_STATUS_NO_ANSWER" = "Sem Resposta.";
/* embeds {{Call Status}} in call screen label. For ongoing calls, {{Call Status}} is a seconds timer like 01:23, otherwise {{Call Status}} is a short text like 'Ringing', 'Busy', or 'Failed Call' */
"CALL_STATUS_FORMAT" = "Signal %@";
@ -360,10 +360,10 @@
"CALL_VIEW_MUTE_LABEL" = "Mudo";
/* Reminder to the user of the benefits of enabling CallKit and disabling CallKit privacy. */
"CALL_VIEW_SETTINGS_NAG_DESCRIPTION_ALL" = "You can enable iOS Call Integration in your Signal privacy settings to answer incoming calls from your lock screen.";
"CALL_VIEW_SETTINGS_NAG_DESCRIPTION_ALL" = "Você pode habilitar a Integração de Chamadas do iOS nos ajustes de privacidade do Signal para responder a chamadas recebidas a partir da tela bloqueada.";
/* Reminder to the user of the benefits of disabling CallKit privacy. */
"CALL_VIEW_SETTINGS_NAG_DESCRIPTION_PRIVACY" = "You can enable iOS Call Integration in your Signal privacy settings to see the name and phone number for incoming calls.";
"CALL_VIEW_SETTINGS_NAG_DESCRIPTION_PRIVACY" = "Você pode habilitar a Integração de Chamadas do iOS nos ajustes de privacidade do Signal para ver o nome e número de telefone de chamadas recebidas.";
/* Label for button that dismiss the call view's settings nag. */
"CALL_VIEW_SETTINGS_NAG_NOT_NOW_BUTTON" = "Agora não";
@ -420,13 +420,13 @@
"CLOUDKIT_STATUS_RESTRICTED" = "O Signal não tem permissão para acessar sua conta iCloud e guardar cópias de segurança.";
/* The first of two messages demonstrating the chosen conversation color, by rendering this message in an outgoing message bubble. */
"COLOR_PICKER_DEMO_MESSAGE_1" = "Choose the color of outgoing messages in this conversation.";
"COLOR_PICKER_DEMO_MESSAGE_1" = "Escolha a cor das mensagens enviadas nesta conversa.";
/* The second of two messages demonstrating the chosen conversation color, by rendering this message in an incoming message bubble. */
"COLOR_PICKER_DEMO_MESSAGE_2" = "Only you will see the color you choose.";
"COLOR_PICKER_DEMO_MESSAGE_2" = "Somente você verá a cor escolhida.";
/* Modal Sheet title when picking a conversation color. */
"COLOR_PICKER_SHEET_TITLE" = "Conversation Color";
"COLOR_PICKER_SHEET_TITLE" = "Cor da conversa";
/* Activity Sheet label */
"COMPARE_SAFETY_NUMBER_ACTION" = "Comparar com Área de Transferência";
@ -441,10 +441,10 @@
"COMPOSE_MESSAGE_INVITE_SECTION_TITLE" = "Convide";
/* Multi-line label explaining why compose-screen contact picker is empty. */
"COMPOSE_SCREEN_MISSING_CONTACTS_PERMISSION" = "You can enable contacts access in the iOS Settings app to see which of your contacts are Signal users.";
"COMPOSE_SCREEN_MISSING_CONTACTS_PERMISSION" = "Você pode permitir o acesso aos contatos no app Ajustes para ver quais dos seus contatos estão usando Signal.";
/* No comment provided by engineer. */
"CONFIRM_ACCOUNT_DESTRUCTION_TEXT" = "This will reset the application by deleting your messages and unregistering you with the server. The app will close after this process is complete.";
"CONFIRM_ACCOUNT_DESTRUCTION_TEXT" = "Isto irá restabelecer as configurações originais do aplicativo removendo suas mensagens e desregistrando você do servidor. O app irá fechar após o final deste processo.";
/* No comment provided by engineer. */
"CONFIRM_ACCOUNT_DESTRUCTION_TITLE" = "Tem certeza de que deseja excluir sua conta?";
@ -573,7 +573,7 @@
"CONVERSATION_SETTINGS_CONTACT_INFO_TITLE" = "Informações do contato";
/* Label for table cell which leads to picking a new conversation color */
"CONVERSATION_SETTINGS_CONVERSATION_COLOR" = "Conversation Color";
"CONVERSATION_SETTINGS_CONVERSATION_COLOR" = "Cor da conversa";
/* Navbar title when viewing settings for a group thread */
"CONVERSATION_SETTINGS_GROUP_INFO_TITLE" = "Informações do grupo";
@ -633,13 +633,13 @@
"CONVERSATION_VIEW_ADD_TO_CONTACTS_OFFER" = "Adicionar aos Contatos";
/* Message shown in conversation view that offers to share your profile with a user. */
"CONVERSATION_VIEW_ADD_USER_TO_PROFILE_WHITELIST_OFFER" = "Share Your Profile with This User";
"CONVERSATION_VIEW_ADD_USER_TO_PROFILE_WHITELIST_OFFER" = "Compartilhar seu Perfil com este usuário";
/* Title for the group of buttons show for unknown contacts offering to add them to contacts, etc. */
"CONVERSATION_VIEW_CONTACTS_OFFER_TITLE" = "Este usuário não se encontra em seus contatos.";
/* Indicates that the app is loading more messages in this conversation. */
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Loading More Messages…";
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Carrengando Mais Mensagens...";
/* Indicator on truncated text messages that they can be tapped to see the entire text message. */
"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE" = "Tap for More";
@ -718,7 +718,7 @@
"DEBUG_LOG_ALERT_TITLE" = "Falta pouco";
/* Error indicating that the app could not launch the Email app. */
"DEBUG_LOG_COULD_NOT_EMAIL" = "Could not open Email app.";
"DEBUG_LOG_COULD_NOT_EMAIL" = "Não pôde abrir o aplicativo Mail.";
/* Message of the alert before redirecting to GitHub Issues. */
"DEBUG_LOG_GITHUB_ISSUE_ALERT_MESSAGE" = "O link do gist foi copiado para a área de transferência. A lista de problemas no GitHub será exibida agora.";
@ -763,7 +763,7 @@
"DOMAIN_FRONTING_COUNTRY_VIEW_SECTION_HEADER" = "Localização para Driblagem de Censura";
/* Alert body for when the user has just tried to edit a contacts after declining to give Signal contacts permissions */
"EDIT_CONTACT_WITHOUT_CONTACTS_PERMISSION_ALERT_BODY" = "You can enable access in the iOS Settings app.";
"EDIT_CONTACT_WITHOUT_CONTACTS_PERMISSION_ALERT_BODY" = "Você pode conceder essa permissão no aplicativo Ajustes do iOS.";
/* Alert title for when the user has just tried to edit a contacts after declining to give Signal contacts permissions */
"EDIT_CONTACT_WITHOUT_CONTACTS_PERMISSION_ALERT_TITLE" = "O Signal precisa de acesso aos contatos para editar informações de contato";
@ -790,7 +790,7 @@
"EDIT_GROUP_UPDATE_BUTTON" = "Atualizar";
/* The alert message if user tries to exit update group view without saving changes. */
"EDIT_GROUP_VIEW_UNSAVED_CHANGES_MESSAGE" = "Would you like to save the changes that you made to this group?";
"EDIT_GROUP_VIEW_UNSAVED_CHANGES_MESSAGE" = "Você gostaria de salvar as mudanças feitas a este grupo?";
/* The alert title if user tries to exit update group view without saving changes. */
"EDIT_GROUP_VIEW_UNSAVED_CHANGES_TITLE" = "Mudanças não salvas";
@ -808,10 +808,10 @@
"EMAIL_INVITE_SUBJECT" = "Vamos trocar para o Signal!";
/* Body text an existing user sees when viewing an empty archive */
"EMPTY_ARCHIVE_TEXT" = "You can archive inactive conversations from your Inbox.";
"EMPTY_ARCHIVE_TEXT" = "Você pode arquivar conversas inativas da sua Caixa de Entrada.";
/* Header text an existing user sees when viewing an empty archive */
"EMPTY_ARCHIVE_TITLE" = "Clean Up Your Conversation List";
"EMPTY_ARCHIVE_TITLE" = "Limpar Sua Lista de Conversas.";
/* Full width label displayed when attempting to compose message */
"EMPTY_CONTACTS_LABEL_LINE1" = "Nenhum dos seus contatos possui Signal.";
@ -826,7 +826,7 @@
"EMPTY_INBOX_NEW_USER_TITLE" = "Comece a conversar no Signal!";
/* Body text an existing user sees when viewing an empty inbox */
"EMPTY_INBOX_TEXT" = "None. Zip. Zilch. Nada.";
"EMPTY_INBOX_TEXT" = "Nada por aqui. Aproveite para respirar.";
/* Header text an existing user sees when viewing an empty inbox */
"EMPTY_INBOX_TITLE" = "Inbox Zero";
@ -883,10 +883,10 @@
"ERROR_DESCRIPTION_MESSAGE_SEND_FAILED_DUE_TO_BLOCK_LIST" = "Mensagem não enviada pois o usuário está bloqueado.";
/* Error message indicating that message send failed due to failed attachment write */
"ERROR_DESCRIPTION_MESSAGE_SEND_FAILED_DUE_TO_FAILED_ATTACHMENT_WRITE" = "Failed to write and send attachment.";
"ERROR_DESCRIPTION_MESSAGE_SEND_FAILED_DUE_TO_FAILED_ATTACHMENT_WRITE" = "Falha ao gravar e enviar anexo.";
/* Generic error used whenever Signal can't contact the server */
"ERROR_DESCRIPTION_NO_INTERNET" = "Signal was unable to connect to the internet. Please try again.";
"ERROR_DESCRIPTION_NO_INTERNET" = "O Signal não pôde se conectar à internet. Por favor tente novamente.";
/* Error indicating that an outgoing message had no valid recipients. */
"ERROR_DESCRIPTION_NO_VALID_RECIPIENTS" = "O envio da mensagem falhou devido à falta de destinatários válidos.";
@ -901,7 +901,7 @@
"ERROR_DESCRIPTION_RESPONSE_FAILED" = "Resposta inválida do serviço.";
/* Error message when attempting to send message */
"ERROR_DESCRIPTION_SENDING_UNAUTHORIZED" = "This device is no longer registered with your phone number. Please reinstall Signal.";
"ERROR_DESCRIPTION_SENDING_UNAUTHORIZED" = "O seu dispositivo não está mais cadastrado para o seu número de telefone. Você precisa remover e reinstalar o Signal.";
/* Generic server error */
"ERROR_DESCRIPTION_SERVER_FAILURE" = "Erro no servidor. Por favor, tente novamente mais tarde.";
@ -913,10 +913,10 @@
"ERROR_DESCRIPTION_UNREGISTERED_RECIPIENT" = "O contato não é usuário do Signal.";
/* Error message when unable to receive an attachment because the sending client is too old. */
"ERROR_MESSAGE_ATTACHMENT_FROM_OLD_CLIENT" = "Attachment failure: Ask this contact to send their message again after updating to the latest version of Signal.";
"ERROR_MESSAGE_ATTACHMENT_FROM_OLD_CLIENT" = "Falha no anexo: peça a este contato que envie a mensagem novamente após fazer a atualização para a versão mais recente do Signal.";
/* No comment provided by engineer. */
"ERROR_MESSAGE_DUPLICATE_MESSAGE" = "Received a duplicate message.";
"ERROR_MESSAGE_DUPLICATE_MESSAGE" = "Mensagem duplicada recebida.";
/* No comment provided by engineer. */
"ERROR_MESSAGE_INVALID_KEY_EXCEPTION" = "A chave do recipiente não é válida.";
@ -925,7 +925,7 @@
"ERROR_MESSAGE_INVALID_MESSAGE" = "Mensagem recebida não sincronizada.";
/* No comment provided by engineer. */
"ERROR_MESSAGE_INVALID_VERSION" = "Received a message that is not compatible with this version.";
"ERROR_MESSAGE_INVALID_VERSION" = "Recebida uma mensagem incompatível com esta versão.";
/* No comment provided by engineer. */
"ERROR_MESSAGE_NO_SESSION" = "Sem sessão disponível para contato.";
@ -945,8 +945,11 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Usuário não registrado: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Agora Não";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Falhas de mais com este contato. Por favor, tente novamente mais tarde.";
/* action sheet header when re-sending message which failed because of untrusted identity keys */
"FAILED_SENDING_BECAUSE_UNTRUSTED_IDENTITY_KEY" = "Your safety number with %@ has recently changed. You may wish to verify before sending this message again.";
@ -967,10 +970,10 @@
"GALLERY_TILES_EMPTY_GALLERY" = "Você não tem mídia desta conversa.";
/* Label indicating loading is in progress */
"GALLERY_TILES_LOADING_MORE_RECENT_LABEL" = "Loading Newer Media…";
"GALLERY_TILES_LOADING_MORE_RECENT_LABEL" = "Carregando Novas Mídias...";
/* Label indicating loading is in progress */
"GALLERY_TILES_LOADING_OLDER_LABEL" = "Loading Older Media…";
"GALLERY_TILES_LOADING_OLDER_LABEL" = "Carregando Mídias Antigas...";
/* A label for generic attachments. */
"GENERIC_ATTACHMENT_LABEL" = "Anexo";
@ -1024,7 +1027,7 @@
"GROUP_MEMBERS_CALL" = "Chamar";
/* Label for the button that clears all verification errors in the 'group members' view. */
"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED" = "Clear Verification for All";
"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED" = "Apagar Verificação Para Todos os Contatos";
/* Label for the 'reset all no-longer-verified group members' confirmation alert. */
"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED_ALERT_MESSAGE" = "Esta opção apagará a verificação de todos os membros do grupo cujos números de segurança tiverem mudado desde a última vez em que eles foram verificados. ";
@ -1084,7 +1087,7 @@
"IN_CALL_TERMINATED" = "Chamada encerrada.";
/* Label reminding the user that they are in archive mode. */
"INBOX_VIEW_ARCHIVE_MODE_REMINDER" = "These conversations are archived and will only appear in the Inbox if new messages are received.";
"INBOX_VIEW_ARCHIVE_MODE_REMINDER" = "Estas conversas estão arquivadas. Elas aparecerão na caixa de entrada somente se novas mensagens forem recebidas.";
/* Multi-line label explaining how to show names instead of phone numbers in your inbox */
"INBOX_VIEW_MISSING_CONTACTS_PERMISSION" = "You can enable contacts access in the iOS Settings app to see contact names in your Signal conversation list.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Deslize para atender";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Agora, você pode escolher sons de notificação padrão e específicos de conversas, e chamadas se adequarão aos toques que você escolheu para cada contato do sistema.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introdução às Notificações de Leitura";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Desregistar Utilizador: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Agora Não";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Estão a ocorrer demasiadas falhas com este contacto. Por favor, volte a tentar mais tarde.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Arrastar para Atender";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Pode escolher notificações personalizadas por conversa. Chamadas irão ter o mesmo toque que o contacto no sistema.";
@ -2354,11 +2360,8 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Apresentando Notificações de Leitura";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Agora pode opcionalmente ver e partilhar quando as mensagens estão a ser escritas.";
/* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_TITLE" = "Introducing Typing Indicators";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Utilizator neînregistrat: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Nu acum";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Prea multe erori pentru acest contact. Te rog încearcă din nou mai târziu.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Glisează pentru a răspunde";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Activați indicatorii de tastare";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Acum poți alege sunete prestabilite și notificări per conversație, iar apelurile vor respecta tonul de apel pe care l-ai ales pentru fiecare contact de sistem.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Vă prezentăm confirmările de citire";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Activează indicatorii de tastare în setările de confidențialitate.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Acum poți vedea și partaja opțional atunci când mesajele sunt tastate.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Незарегистрированный пользователь: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Не сейчас";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Просто перетащите на Ответ";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Теперь вы можете выбирать звуки уведомлений по умолчанию и для разговора, а сигнал вызова будет воспроизводить ту мелодию звонка, которую вы выбрали для каждого системного контакта.";
@ -2354,11 +2360,8 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Введение в отчеты о прочтении";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Теперь вы можете видеть и показывать другим, когда вы набираете сообщения.";
/* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_TITLE" = "Introducing Typing Indicators";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Neregistriran uporabnik: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Ne zdaj";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Za prevzem klica podrsajte";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Odslej lahko določite privzete zvoke za obvestila, tudi za vsak pogovor posebej. Zvonjenje ob klicih bo prilagojeno stikom iz vašega imenika.";
@ -2354,11 +2360,8 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Predstavljamo vam Potrdila o ogledu";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Odlsej lahko vidite kdaj vaš partner tipka svoje sporočilo, vaše tipkanje pa bo vidno njemu.";
/* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_TITLE" = "Introducing Typing Indicators";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Mushandisi asina kunyoreswa:%@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Kwete izvezvi";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Chingo zvuva kuti upindure";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "You can now choose default and per-conversation notification sounds, and calls will respect the ringtone you've chosen for each system contact.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Kuchingamidza zvitaridza kuverengwa";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Përdorues i Paregjistruar: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Jo Tani";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Shumë dështime me këtë kontakt. Ju lutemi, riprovoni pas pak.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Për Përgjigje, Thjesht Fërkojeni";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Tani mund të zgjidhni tinguj parazgjedhje dhe me bazë bisede për njoftimet, dhe thirrjet do të respektojnë zilen që keni zgjedhur për çdo kontakt sistemi.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Ju Paraqesim Fatura Leximi";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Oregistrerad kontakt: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Inte nu";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Får för många fel med den här kontakten. Försök igen senare.";
@ -2139,7 +2142,7 @@
"SETTINGS_TWO_FACTOR_AUTH_TITLE" = "Registreringslås";
/* Label for the 'typing indicators' setting. */
"SETTINGS_TYPING_INDICATORS" = "Skrivindikatorer";
"SETTINGS_TYPING_INDICATORS" = "Skriv-indikatorer";
/* An explanation of the 'typing indicators' setting. */
"SETTINGS_TYPING_INDICATORS_FOOTER" = "Visa och dela när meddelanden skrivs. Inställningen är valfri och påverkar alla konversationer.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Svep för att svara";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Sätt på skriv-indikatorer";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Nu kan du välja standard-notisljud men också sätta per konversation. Samtal kommer respektera ringtoner du valt för varje kontakt i systemet.";
@ -2354,14 +2360,11 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Introducerar läskvittenser";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Aktivera skrivindikatorer i inställningarna för integritetsskydd.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Nu kan du valfritt visa och dela när meddelanden skrivs.";
/* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_TITLE" = "Introducerar skrivindikatorer";
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_TITLE" = "Introducerar skriv-indikatorer";
/* Description of video calling to upgrading (existing) users */
"UPGRADE_EXPERIENCE_VIDEO_DESCRIPTION" = "Signal har nu stöd för säkra videosamtal. Påbörja ett samtal som vanligt, tryck på kameraknappen och vinka hej.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "ไม่ใช่ตอนนี้";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "ปัดเพื่อตอบ";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "คุณสามารถเลือกเสียงแจ้งเตือนเริ่มต้นและสำหรับแต่ละการสนทนาได้ สำหรับการโทรจะใช้เสียงเรียกเข้าที่คุณตั้งไว้สำหรับแต่ละผู้ติดต่อในระบบของโทรศัพท์";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "ขอแนะนำการตอบรับเมื่ออ่าน";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "Kayıtlı Olmayan Kullanıcı: %@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "Şimdi Değil";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Bu kullanıcıya çok fazla hatalı deneme yaptınız. Lütfen daha sonra tekrar deneyin.";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "Cevaplamak için Sadece Kaydırın";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Yazıyor Göstergelerini Aç";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Artık varsayılan ve sohbet başına bildirim seslerini seçebilirsiniz ve aramalar her sistem kişisi için seçtiğiniz zil sesine uygun olacaktır.";
@ -2354,9 +2360,6 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "Okundu İletileriyle Tanışın";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Gizlilik ayarlarınızdan 'Yazıyor' göstergelerini etkinleştirin.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Artık mesajların yazıldığını görme ve paylaşma seçeneğine sahipsiniz.";

File diff suppressed because it is too large Load Diff

@ -945,6 +945,9 @@
/* Format string for 'unregistered user' error. Embeds {{the unregistered user's name or signal id}}. */
"ERROR_UNREGISTERED_USER_FORMAT" = "用户未注册:%@";
/* Button to dismiss/ignore the one time splash screen that appears after upgrading */
"EXPERIENCE_UPGRADE_DISMISS_BUTTON" = "以后再说";
/* action sheet header when re-sending message which failed because of too many attempts */
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "与此联系人通信时发生大量错误,请稍后再试。";
@ -2327,6 +2330,9 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_CALLKIT_TITLE" = "滑动即可应答";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_ENABLE_TYPING_INDICATOR_BUTTON" = "Turn On Typing Indicators";
/* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "现在,您既可以为所有对话设置一个默认提示音,也可以为每一个对话选择单独的提示音。您的来电铃声将与 iOS 联系人中所设置的铃声一致。";
@ -2354,11 +2360,8 @@
/* Header for upgrade experience */
"UPGRADE_EXPERIENCE_INTRODUCING_READ_RECEIPTS_TITLE" = "加入已读回执功能";
/* button label shown one time, after upgrade */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATOR_PRIVACY_SETTINGS" = "Enable typing indicators in your privacy settings.";
/* Body text for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "Now you can optionally see and share when messages are being typed.";
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_DESCRIPTION" = "现在,你可以选择分享你在撰写消息时的打字状态提示了。";
/* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_TYPING_INDICATORS_TITLE" = "Introducing Typing Indicators";

@ -22,6 +22,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)enqueueEnvelopeData:(NSData *)envelopeData
plaintextData:(NSData *_Nullable)plaintextData
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction;
@end

@ -34,9 +34,11 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly) NSDate *createdAt;
@property (nonatomic, readonly) NSData *envelopeData;
@property (nonatomic, readonly, nullable) NSData *plaintextData;
@property (nonatomic, readonly) BOOL wasReceivedByUD;
- (instancetype)initWithEnvelopeData:(NSData *)envelopeData
plaintextData:(NSData *_Nullable)plaintextData NS_DESIGNATED_INITIALIZER;
plaintextData:(NSData *_Nullable)plaintextData
wasReceivedByUD:(BOOL)wasReceivedByUD NS_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithUniqueId:(NSString *_Nullable)uniqueId NS_UNAVAILABLE;
@ -53,7 +55,9 @@ NS_ASSUME_NONNULL_BEGIN
return @"OWSBatchMessageProcessingJob";
}
- (instancetype)initWithEnvelopeData:(NSData *)envelopeData plaintextData:(NSData *_Nullable)plaintextData
- (instancetype)initWithEnvelopeData:(NSData *)envelopeData
plaintextData:(NSData *_Nullable)plaintextData
wasReceivedByUD:(BOOL)wasReceivedByUD
{
OWSAssertDebug(envelopeData);
@ -64,6 +68,7 @@ NS_ASSUME_NONNULL_BEGIN
_envelopeData = envelopeData;
_plaintextData = plaintextData;
_wasReceivedByUD = wasReceivedByUD;
_createdAt = [NSDate new];
return self;
@ -149,13 +154,15 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
- (void)addJobWithEnvelopeData:(NSData *)envelopeData
plaintextData:(NSData *_Nullable)plaintextData
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
OWSAssertDebug(envelopeData);
OWSAssertDebug(transaction);
OWSMessageContentJob *job =
[[OWSMessageContentJob alloc] initWithEnvelopeData:envelopeData plaintextData:plaintextData];
OWSMessageContentJob *job = [[OWSMessageContentJob alloc] initWithEnvelopeData:envelopeData
plaintextData:plaintextData
wasReceivedByUD:wasReceivedByUD];
[job saveWithTransaction:transaction];
}
@ -341,13 +348,17 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
- (void)enqueueEnvelopeData:(NSData *)envelopeData
plaintextData:(NSData *_Nullable)plaintextData
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
OWSAssertDebug(envelopeData);
OWSAssertDebug(transaction);
// We need to persist the decrypted envelope data ASAP to prevent data loss.
[self.finder addJobWithEnvelopeData:envelopeData plaintextData:plaintextData transaction:transaction];
[self.finder addJobWithEnvelopeData:envelopeData
plaintextData:plaintextData
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
}
- (void)drainQueue
@ -433,6 +444,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
} else {
[self.messageManager throws_processEnvelope:envelope
plaintextData:job.plaintextData
wasReceivedByUD:job.wasReceivedByUD
transaction:transaction];
}
} @catch (NSException *exception) {
@ -511,6 +523,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
- (void)enqueueEnvelopeData:(NSData *)envelopeData
plaintextData:(NSData *_Nullable)plaintextData
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
if (envelopeData.length < 1) {
@ -520,7 +533,10 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
OWSAssert(transaction);
// We need to persist the decrypted envelope data ASAP to prevent data loss.
[self.processingQueue enqueueEnvelopeData:envelopeData plaintextData:plaintextData transaction:transaction];
[self.processingQueue enqueueEnvelopeData:envelopeData
plaintextData:plaintextData
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
// The new envelope won't be visible to the finder until this transaction commits,
// so drainQueue in the transaction completion.

@ -21,6 +21,7 @@ NS_ASSUME_NONNULL_BEGIN
// processEnvelope: can be called from any thread.
- (void)throws_processEnvelope:(SSKProtoEnvelope *)envelope
plaintextData:(NSData *_Nullable)plaintextData
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction;
// This should be invoked by the main app when the app is ready.

@ -226,6 +226,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)throws_processEnvelope:(SSKProtoEnvelope *)envelope
plaintextData:(NSData *_Nullable)plaintextData
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
if (!envelope) {
@ -268,7 +269,10 @@ NS_ASSUME_NONNULL_BEGIN
OWSFailDebug(@"missing decrypted data for envelope: %@", [self descriptionForEnvelope:envelope]);
return;
}
[self throws_handleEnvelope:envelope plaintextData:plaintextData transaction:transaction];
[self throws_handleEnvelope:envelope
plaintextData:plaintextData
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
break;
case SSKProtoEnvelopeTypeReceipt:
OWSAssertDebug(!plaintextData);
@ -359,6 +363,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)throws_handleEnvelope:(SSKProtoEnvelope *)envelope
plaintextData:(NSData *)plaintextData
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
if (!envelope) {
@ -413,7 +418,10 @@ NS_ASSUME_NONNULL_BEGIN
[[OWSDeviceManager sharedManager] setHasReceivedSyncMessage];
} else if (contentProto.dataMessage) {
[self handleIncomingEnvelope:envelope withDataMessage:contentProto.dataMessage transaction:transaction];
[self handleIncomingEnvelope:envelope
withDataMessage:contentProto.dataMessage
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
} else if (contentProto.callMessage) {
[self handleIncomingEnvelope:envelope withCallMessage:contentProto.callMessage];
} else if (contentProto.typingMessage) {
@ -436,7 +444,10 @@ NS_ASSUME_NONNULL_BEGIN
}
OWSLogInfo(@"handling message: <DataMessage: %@ />", [self descriptionForDataMessage:dataMessageProto]);
[self handleIncomingEnvelope:envelope withDataMessage:dataMessageProto transaction:transaction];
[self handleIncomingEnvelope:envelope
withDataMessage:dataMessageProto
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
} else {
OWSProdInfoWEnvelope([OWSAnalyticsEvents messageManagerErrorEnvelopeNoActionablePayload], envelope);
}
@ -444,6 +455,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)handleIncomingEnvelope:(SSKProtoEnvelope *)envelope
withDataMessage:(SSKProtoDataMessage *)dataMessage
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
if (!envelope) {
@ -526,9 +538,15 @@ NS_ASSUME_NONNULL_BEGIN
} else if ((dataMessage.flags & SSKProtoDataMessageFlagsProfileKeyUpdate) != 0) {
[self handleProfileKeyMessageWithEnvelope:envelope dataMessage:dataMessage];
} else if (dataMessage.attachments.count > 0) {
[self handleReceivedMediaWithEnvelope:envelope dataMessage:dataMessage transaction:transaction];
[self handleReceivedMediaWithEnvelope:envelope
dataMessage:dataMessage
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
} else {
[self handleReceivedTextMessageWithEnvelope:envelope dataMessage:dataMessage transaction:transaction];
[self handleReceivedTextMessageWithEnvelope:envelope
dataMessage:dataMessage
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
if ([self isDataMessageGroupAvatarUpdate:dataMessage]) {
OWSLogVerbose(@"Data message had group avatar attachment");
@ -537,18 +555,11 @@ NS_ASSUME_NONNULL_BEGIN
}
// Send delivery receipts for "valid data" messages received via UD.
BOOL wasReceivedByUD = [self wasReceivedByUD:envelope];
if (wasReceivedByUD) {
[self.outgoingReceiptManager enqueueDeliveryReceiptForEnvelope:envelope];
}
}
- (BOOL)wasReceivedByUD:(SSKProtoEnvelope *)envelope
{
return (
envelope.type == SSKProtoEnvelopeTypeUnidentifiedSender && (!envelope.hasSource || envelope.source.length < 1));
}
- (void)sendGroupInfoRequest:(NSData *)groupId
envelope:(SSKProtoEnvelope *)envelope
transaction:(YapDatabaseReadWriteTransaction *)transaction
@ -761,6 +772,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)handleReceivedMediaWithEnvelope:(SSKProtoEnvelope *)envelope
dataMessage:(SSKProtoDataMessage *)dataMessage
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
if (!envelope) {
@ -782,8 +794,10 @@ NS_ASSUME_NONNULL_BEGIN
return;
}
TSIncomingMessage *_Nullable message =
[self handleReceivedEnvelope:envelope withDataMessage:dataMessage transaction:transaction];
TSIncomingMessage *_Nullable message = [self handleReceivedEnvelope:envelope
withDataMessage:dataMessage
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
if (!message) {
return;
@ -1037,6 +1051,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)handleReceivedTextMessageWithEnvelope:(SSKProtoEnvelope *)envelope
dataMessage:(SSKProtoDataMessage *)dataMessage
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
if (!envelope) {
@ -1052,7 +1067,10 @@ NS_ASSUME_NONNULL_BEGIN
return;
}
[self handleReceivedEnvelope:envelope withDataMessage:dataMessage transaction:transaction];
[self handleReceivedEnvelope:envelope
withDataMessage:dataMessage
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
}
- (void)handleGroupInfoRequest:(SSKProtoEnvelope *)envelope
@ -1135,6 +1153,7 @@ NS_ASSUME_NONNULL_BEGIN
- (TSIncomingMessage *_Nullable)handleReceivedEnvelope:(SSKProtoEnvelope *)envelope
withDataMessage:(SSKProtoDataMessage *)dataMessage
wasReceivedByUD:(BOOL)wasReceivedByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
if (!envelope) {
@ -1155,7 +1174,6 @@ NS_ASSUME_NONNULL_BEGIN
NSData *groupId = dataMessage.group ? dataMessage.group.id : nil;
OWSContact *_Nullable contact = [OWSContacts contactForDataMessage:dataMessage transaction:transaction];
NSNumber *_Nullable serverTimestamp = (envelope.hasServerTimestamp ? @(envelope.serverTimestamp) : nil);
BOOL wasReceivedByUD = [self wasReceivedByUD:envelope];
if (dataMessage.group.type == SSKProtoGroupContextTypeRequestInfo) {
[self handleGroupInfoRequest:envelope dataMessage:dataMessage transaction:transaction];

@ -364,6 +364,12 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
}];
}
- (BOOL)wasReceivedByUD:(SSKProtoEnvelope *)envelope
{
return (
envelope.type == SSKProtoEnvelopeTypeUnidentifiedSender && (!envelope.hasSource || envelope.source.length < 1));
}
- (void)processJob:(OWSMessageDecryptJob *)job completion:(void (^)(BOOL))completion
{
AssertOnDispatchQueue(self.serialQueue);
@ -387,6 +393,10 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
return;
}
// We use the original envelope for this check;
// the decryption process might rewrite the envelope.
BOOL wasReceivedByUD = [self wasReceivedByUD:envelope];
[self.messageDecrypter decryptEnvelope:envelope
envelopeData:job.envelopeData
successBlock:^(OWSMessageDecryptResult *result, YapDatabaseReadWriteTransaction *transaction) {
@ -400,6 +410,7 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
// since the envelope may be altered by the decryption process in the UD case.
[self.batchMessageProcessor enqueueEnvelopeData:result.envelopeData
plaintextData:result.plaintextData
wasReceivedByUD:wasReceivedByUD
transaction:transaction];
dispatch_async(self.serialQueue, ^{

@ -82,7 +82,7 @@ public class TypingIndicatorsImpl: NSObject, TypingIndicators {
@objc
public func setTypingIndicatorsEnabled(value: Bool) {
AssertIsOnMainThread()
Logger.info("\(_areTypingIndicatorsEnabled) -> \(value)")
_areTypingIndicatorsEnabled = value
primaryStorage.dbReadWriteConnection.setBool(value, forKey: kDatabaseKey_TypingIndicatorsEnabled, inCollection: kDatabaseCollection)

Loading…
Cancel
Save