Merge tag '2.36.1.0'

pull/2/head
Michael Kirk 6 years ago
commit 5bd3cec6dc

@ -89,7 +89,9 @@ NS_ASSUME_NONNULL_BEGIN
OWSTableSection *loggingSection = [OWSTableSection new]; OWSTableSection *loggingSection = [OWSTableSection new];
loggingSection.headerTitle = NSLocalizedString(@"LOGGING_SECTION", nil); loggingSection.headerTitle = NSLocalizedString(@"LOGGING_SECTION", nil);
[loggingSection addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_ADVANCED_DEBUGLOG", @"") [loggingSection addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_ADVANCED_DEBUGLOG", @"")
isOn:[OWSPreferences isLoggingEnabled] isOnBlock:^{
return [OWSPreferences isLoggingEnabled];
}
target:weakSelf target:weakSelf
selector:@selector(didToggleEnableLogSwitch:)]]; selector:@selector(didToggleEnableLogSwitch:)]];
@ -160,21 +162,26 @@ NS_ASSUME_NONNULL_BEGIN
// * ...The internet is not reachable, since we don't want to let users to activate // * ...The internet is not reachable, since we don't want to let users to activate
// censorship circumvention unnecessarily, e.g. if they just don't have a valid // censorship circumvention unnecessarily, e.g. if they just don't have a valid
// internet connection. // internet connection.
BOOL isManualCensorshipCircumventionOnEnabled OWSTableSwitchBlock isCensorshipCircumventionOnBlock = ^{
= (OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyActivated if (OWSSignalService.sharedInstance.hasCensoredPhoneNumber) {
return YES;
} else {
return OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyActivated;
}
};
Reachability *reachability = self.reachability;
OWSTableSwitchBlock isManualCensorshipCircumventionOnEnabledBlock = ^{
BOOL isAnySocketOpen = TSSocketManager.shared.highestSocketState == OWSWebSocketStateOpen;
BOOL value = (OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyActivated
|| (!OWSSignalService.sharedInstance.hasCensoredPhoneNumber && !isAnySocketOpen || (!OWSSignalService.sharedInstance.hasCensoredPhoneNumber && !isAnySocketOpen
&& weakSelf.reachability.isReachable)); && reachability.isReachable));
BOOL isCensorshipCircumventionOn = NO; return value;
if (OWSSignalService.sharedInstance.hasCensoredPhoneNumber) { };
isCensorshipCircumventionOn = YES;
} else {
isCensorshipCircumventionOn = OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyActivated;
}
[censorshipSection [censorshipSection
addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION", addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION",
@"Label for the 'manual censorship circumvention' switch.") @"Label for the 'manual censorship circumvention' switch.")
isOn:isCensorshipCircumventionOn isOnBlock:isCensorshipCircumventionOnBlock
isEnabled:isManualCensorshipCircumventionOnEnabled isEnabledBlock:isManualCensorshipCircumventionOnEnabledBlock
target:weakSelf target:weakSelf
selector:@selector(didToggleEnableCensorshipCircumventionSwitch:)]]; selector:@selector(didToggleEnableCensorshipCircumventionSwitch:)]];

@ -1,5 +1,5 @@
// //
// Copyright (c) 2018 Open Whisper Systems. All rights reserved. // Copyright (c) 2019 Open Whisper Systems. All rights reserved.
// //
#import "BlockListViewController.h" #import "BlockListViewController.h"
@ -91,21 +91,23 @@ NS_ASSUME_NONNULL_BEGIN
@"BLOCK_LIST_BLOCKED_USERS_SECTION", @"Section header for users that have been blocked"); @"BLOCK_LIST_BLOCKED_USERS_SECTION", @"Section header for users that have been blocked");
for (NSString *phoneNumber in blockedPhoneNumbers) { for (NSString *phoneNumber in blockedPhoneNumbers) {
[blockedContactsSection [blockedContactsSection addItem:[OWSTableItem
addItem:[OWSTableItem itemWithCustomCellBlock:^{
itemWithCustomCellBlock:^{ ContactTableViewCell *cell = [ContactTableViewCell new];
ContactTableViewCell *cell = [ContactTableViewCell new]; [cell configureWithRecipientId:phoneNumber];
[cell configureWithRecipientId:phoneNumber]; return cell;
return cell; }
} customRowHeight:UITableViewAutomaticDimension
customRowHeight:UITableViewAutomaticDimension actionBlock:^{
actionBlock:^{ [BlockListUIUtils
[BlockListUIUtils showUnblockPhoneNumberActionSheet:phoneNumber showUnblockPhoneNumberActionSheet:phoneNumber
fromViewController:weakSelf fromViewController:weakSelf
blockingManager:helper.blockingManager blockingManager:helper.blockingManager
contactsManager:helper.contactsManager contactsManager:helper.contactsManager
completionBlock:nil]; completionBlock:^(BOOL isBlocked) {
}]]; [weakSelf updateTableContents];
}];
}]];
} }
[contents addSection:blockedContactsSection]; [contents addSection:blockedContactsSection];
} }
@ -142,7 +144,9 @@ NS_ASSUME_NONNULL_BEGIN
displayName:groupName displayName:groupName
fromViewController:weakSelf fromViewController:weakSelf
blockingManager:helper.blockingManager blockingManager:helper.blockingManager
completionBlock:nil]; completionBlock:^(BOOL isBlocked) {
[weakSelf updateTableContents];
}];
}]]; }]];
} }
[contents addSection:blockedGroupsSection]; [contents addSection:blockedGroupsSection];

@ -1,5 +1,5 @@
// //
// Copyright (c) 2018 Open Whisper Systems. All rights reserved. // Copyright (c) 2019 Open Whisper Systems. All rights reserved.
// //
#import "NotificationSettingsViewController.h" #import "NotificationSettingsViewController.h"
@ -56,7 +56,9 @@
@"Table cell switch label. When disabled, Signal will not play notification sounds while the app is in the " @"Table cell switch label. When disabled, Signal will not play notification sounds while the app is in the "
@"foreground."); @"foreground.");
[soundsSection addItem:[OWSTableItem switchItemWithText:inAppSoundsLabelText [soundsSection addItem:[OWSTableItem switchItemWithText:inAppSoundsLabelText
isOn:[prefs soundInForeground] isOnBlock:^{
return [prefs soundInForeground];
}
target:weakSelf target:weakSelf
selector:@selector(didToggleSoundNotificationsSwitch:)]]; selector:@selector(didToggleSoundNotificationsSwitch:)]];
[contents addSection:soundsSection]; [contents addSection:soundsSection];

@ -1,5 +1,5 @@
// //
// Copyright (c) 2018 Open Whisper Systems. All rights reserved. // Copyright (c) 2019 Open Whisper Systems. All rights reserved.
// //
#import "OWSBackupSettingsViewController.h" #import "OWSBackupSettingsViewController.h"
@ -117,7 +117,9 @@ NS_ASSUME_NONNULL_BEGIN
addItem:[OWSTableItem switchItemWithText: addItem:[OWSTableItem switchItemWithText:
NSLocalizedString(@"SETTINGS_BACKUP_ENABLING_SWITCH", NSLocalizedString(@"SETTINGS_BACKUP_ENABLING_SWITCH",
@"Label for switch in settings that controls whether or not backup is enabled.") @"Label for switch in settings that controls whether or not backup is enabled.")
isOn:isBackupEnabled isOnBlock:^{
return [OWSBackup.sharedManager isBackupEnabled];
}
target:self target:self
selector:@selector(isBackupEnabledDidChange:)]]; selector:@selector(isBackupEnabledDidChange:)]];
[contents addSection:enableSection]; [contents addSection:enableSection];
@ -187,6 +189,8 @@ NS_ASSUME_NONNULL_BEGIN
- (void)isBackupEnabledDidChange:(UISwitch *)sender - (void)isBackupEnabledDidChange:(UISwitch *)sender
{ {
[OWSBackup.sharedManager setIsBackupEnabled:sender.isOn]; [OWSBackup.sharedManager setIsBackupEnabled:sender.isOn];
[self updateTableContents];
} }
#pragma mark - Events #pragma mark - Events

@ -98,11 +98,14 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
= NSLocalizedString(@"SETTINGS_READ_RECEIPT", @"Label for the 'read receipts' setting."); = NSLocalizedString(@"SETTINGS_READ_RECEIPT", @"Label for the 'read receipts' setting.");
readReceiptsSection.footerTitle = NSLocalizedString( readReceiptsSection.footerTitle = NSLocalizedString(
@"SETTINGS_READ_RECEIPTS_SECTION_FOOTER", @"An explanation of the 'read receipts' setting."); @"SETTINGS_READ_RECEIPTS_SECTION_FOOTER", @"An explanation of the 'read receipts' setting.");
[readReceiptsSection addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_READ_RECEIPT", [readReceiptsSection
@"Label for the 'read receipts' setting.") addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_READ_RECEIPT",
isOn:[self.readReceiptManager areReadReceiptsEnabled] @"Label for the 'read receipts' setting.")
target:weakSelf isOnBlock:^{
selector:@selector(didToggleReadReceiptsSwitch:)]]; return [OWSReadReceiptManager.sharedManager areReadReceiptsEnabled];
}
target:weakSelf
selector:@selector(didToggleReadReceiptsSwitch:)]];
[contents addSection:readReceiptsSection]; [contents addSection:readReceiptsSection];
OWSTableSection *typingIndicatorsSection = [OWSTableSection new]; OWSTableSection *typingIndicatorsSection = [OWSTableSection new];
@ -110,11 +113,14 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
= NSLocalizedString(@"SETTINGS_TYPING_INDICATORS", @"Label for the 'typing indicators' setting."); = NSLocalizedString(@"SETTINGS_TYPING_INDICATORS", @"Label for the 'typing indicators' setting.");
typingIndicatorsSection.footerTitle = NSLocalizedString( typingIndicatorsSection.footerTitle = NSLocalizedString(
@"SETTINGS_TYPING_INDICATORS_FOOTER", @"An explanation of the 'typing indicators' setting."); @"SETTINGS_TYPING_INDICATORS_FOOTER", @"An explanation of the 'typing indicators' setting.");
[typingIndicatorsSection addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_TYPING_INDICATORS", [typingIndicatorsSection
@"Label for the 'typing indicators' setting.") addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_TYPING_INDICATORS",
isOn:[self.typingIndicators areTypingIndicatorsEnabled] @"Label for the 'typing indicators' setting.")
target:weakSelf isOnBlock:^{
selector:@selector(didToggleTypingIndicatorsSwitch:)]]; return [SSKEnvironment.shared.typingIndicators areTypingIndicatorsEnabled];
}
target:weakSelf
selector:@selector(didToggleTypingIndicatorsSwitch:)]];
[contents addSection:typingIndicatorsSection]; [contents addSection:typingIndicatorsSection];
OWSTableSection *screenLockSection = [OWSTableSection new]; OWSTableSection *screenLockSection = [OWSTableSection new];
@ -126,7 +132,9 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
addItem:[OWSTableItem addItem:[OWSTableItem
switchItemWithText:NSLocalizedString(@"SETTINGS_SCREEN_LOCK_SWITCH_LABEL", switchItemWithText:NSLocalizedString(@"SETTINGS_SCREEN_LOCK_SWITCH_LABEL",
@"Label for the 'enable screen lock' switch of the privacy settings.") @"Label for the 'enable screen lock' switch of the privacy settings.")
isOn:OWSScreenLock.sharedManager.isScreenLockEnabled isOnBlock:^{
return [OWSScreenLock.sharedManager isScreenLockEnabled];
}
target:self target:self
selector:@selector(isScreenLockEnabledDidChange:)]]; selector:@selector(isScreenLockEnabledDidChange:)]];
[contents addSection:screenLockSection]; [contents addSection:screenLockSection];
@ -150,10 +158,13 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
OWSTableSection *screenSecuritySection = [OWSTableSection new]; OWSTableSection *screenSecuritySection = [OWSTableSection new];
screenSecuritySection.headerTitle = NSLocalizedString(@"SETTINGS_SECURITY_TITLE", @"Section header"); screenSecuritySection.headerTitle = NSLocalizedString(@"SETTINGS_SECURITY_TITLE", @"Section header");
screenSecuritySection.footerTitle = NSLocalizedString(@"SETTINGS_SCREEN_SECURITY_DETAIL", nil); screenSecuritySection.footerTitle = NSLocalizedString(@"SETTINGS_SCREEN_SECURITY_DETAIL", nil);
[screenSecuritySection addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_SCREEN_SECURITY", @"") [screenSecuritySection
isOn:[self.preferences screenSecurityIsEnabled] addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_SCREEN_SECURITY", @"")
target:weakSelf isOnBlock:^{
selector:@selector(didToggleScreenSecuritySwitch:)]]; return [Environment.shared.preferences screenSecurityIsEnabled];
}
target:weakSelf
selector:@selector(didToggleScreenSecuritySwitch:)]];
[contents addSection:screenSecuritySection]; [contents addSection:screenSecuritySection];
// Allow calls to connect directly vs. using TURN exclusively // Allow calls to connect directly vs. using TURN exclusively
@ -165,7 +176,9 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
[callingSection addItem:[OWSTableItem switchItemWithText:NSLocalizedString( [callingSection addItem:[OWSTableItem switchItemWithText:NSLocalizedString(
@"SETTINGS_CALLING_HIDES_IP_ADDRESS_PREFERENCE_TITLE", @"SETTINGS_CALLING_HIDES_IP_ADDRESS_PREFERENCE_TITLE",
@"Table cell label") @"Table cell label")
isOn:[self.preferences doCallsHideIPAddress] isOnBlock:^{
return [Environment.shared.preferences doCallsHideIPAddress];
}
target:weakSelf target:weakSelf
selector:@selector(didToggleCallsHideIPAddressSwitch:)]]; selector:@selector(didToggleCallsHideIPAddressSwitch:)]];
[contents addSection:callingSection]; [contents addSection:callingSection];
@ -176,7 +189,9 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
addItem:[OWSTableItem switchItemWithText:NSLocalizedString( addItem:[OWSTableItem switchItemWithText:NSLocalizedString(
@"SETTINGS_PRIVACY_CALLKIT_SYSTEM_CALL_LOG_PREFERENCE_TITLE", @"SETTINGS_PRIVACY_CALLKIT_SYSTEM_CALL_LOG_PREFERENCE_TITLE",
@"Short table cell label") @"Short table cell label")
isOn:[self.preferences isSystemCallLogEnabled] isOnBlock:^{
return [Environment.shared.preferences isSystemCallLogEnabled];
}
target:weakSelf target:weakSelf
selector:@selector(didToggleEnableSystemCallLogSwitch:)]]; selector:@selector(didToggleEnableSystemCallLogSwitch:)]];
callKitSection.footerTitle = NSLocalizedString( callKitSection.footerTitle = NSLocalizedString(
@ -188,14 +203,19 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
= NSLocalizedString(@"SETTINGS_SECTION_CALL_KIT_DESCRIPTION", @"Settings table section footer."); = NSLocalizedString(@"SETTINGS_SECTION_CALL_KIT_DESCRIPTION", @"Settings table section footer.");
[callKitSection addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_PRIVACY_CALLKIT_TITLE", [callKitSection addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_PRIVACY_CALLKIT_TITLE",
@"Short table cell label") @"Short table cell label")
isOn:[self.preferences isCallKitEnabled] isOnBlock:^{
return [Environment.shared.preferences isCallKitEnabled];
}
target:weakSelf target:weakSelf
selector:@selector(didToggleEnableCallKitSwitch:)]]; selector:@selector(didToggleEnableCallKitSwitch:)]];
if (self.preferences.isCallKitEnabled) { if (self.preferences.isCallKitEnabled) {
[callKitSection [callKitSection
addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_PRIVACY_CALLKIT_PRIVACY_TITLE", addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_PRIVACY_CALLKIT_PRIVACY_TITLE",
@"Label for 'CallKit privacy' preference") @"Label for 'CallKit privacy' preference")
isOn:![self.preferences isCallKitPrivacyEnabled] isOnBlock:^{
return (BOOL) !
[Environment.shared.preferences isCallKitPrivacyEnabled];
}
target:weakSelf target:weakSelf
selector:@selector(didToggleEnableCallKitPrivacySwitch:)]]; selector:@selector(didToggleEnableCallKitPrivacySwitch:)]];
} }
@ -260,7 +280,7 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
UISwitch *cellSwitch = [UISwitch new]; UISwitch *cellSwitch = [UISwitch new];
cell.accessoryView = cellSwitch; cell.accessoryView = cellSwitch;
[cellSwitch setOn:weakSelf.preferences.shouldShowUnidentifiedDeliveryIndicators]; [cellSwitch setOn:Environment.shared.preferences.shouldShowUnidentifiedDeliveryIndicators];
[cellSwitch addTarget:weakSelf [cellSwitch addTarget:weakSelf
action:@selector(didToggleUDShowIndicatorsSwitch:) action:@selector(didToggleUDShowIndicatorsSwitch:)
forControlEvents:UIControlEventValueChanged]; forControlEvents:UIControlEventValueChanged];
@ -290,7 +310,9 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
OWSTableSection *unidentifiedDeliveryUnrestrictedSection = [OWSTableSection new]; OWSTableSection *unidentifiedDeliveryUnrestrictedSection = [OWSTableSection new];
OWSTableItem *unrestrictedAccessItem = [OWSTableItem OWSTableItem *unrestrictedAccessItem = [OWSTableItem
switchItemWithText:NSLocalizedString(@"SETTINGS_UNIDENTIFIED_DELIVERY_UNRESTRICTED_ACCESS", @"switch label") switchItemWithText:NSLocalizedString(@"SETTINGS_UNIDENTIFIED_DELIVERY_UNRESTRICTED_ACCESS", @"switch label")
isOn:weakSelf.udManager.shouldAllowUnrestrictedAccessLocal isOnBlock:^{
return [SSKEnvironment.shared.udManager shouldAllowUnrestrictedAccessLocal];
}
target:weakSelf target:weakSelf
selector:@selector(didToggleUDUnrestrictedAccessSwitch:)]; selector:@selector(didToggleUDUnrestrictedAccessSwitch:)];
[unidentifiedDeliveryUnrestrictedSection addItem:unrestrictedAccessItem]; [unidentifiedDeliveryUnrestrictedSection addItem:unrestrictedAccessItem];
@ -313,7 +335,9 @@ static NSString *const kSealedSenderInfoURL = @"https://signal.org/blog/sealed-s
[linkPreviewsSection [linkPreviewsSection
addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_LINK_PREVIEWS", addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_LINK_PREVIEWS",
@"Setting for enabling & disabling link previews.") @"Setting for enabling & disabling link previews.")
isOn:SSKPreferences.areLinkPreviewsEnabled isOnBlock:^{
return [SSKPreferences areLinkPreviewsEnabled];
}
target:weakSelf target:weakSelf
selector:@selector(didToggleLinkPreviewsEnabled:)]]; selector:@selector(didToggleLinkPreviewsEnabled:)]];
linkPreviewsSection.headerTitle = NSLocalizedString( linkPreviewsSection.headerTitle = NSLocalizedString(

@ -1122,6 +1122,7 @@ const CGFloat kIconViewLength = 24;
BOOL isCurrentlyBlocked = [self.blockingManager isThreadBlocked:self.thread]; BOOL isCurrentlyBlocked = [self.blockingManager isThreadBlocked:self.thread];
__weak OWSConversationSettingsViewController *weakSelf = self;
if (blockConversationSwitch.isOn) { if (blockConversationSwitch.isOn) {
OWSAssertDebug(!isCurrentlyBlocked); OWSAssertDebug(!isCurrentlyBlocked);
if (isCurrentlyBlocked) { if (isCurrentlyBlocked) {
@ -1135,6 +1136,8 @@ const CGFloat kIconViewLength = 24;
completionBlock:^(BOOL isBlocked) { completionBlock:^(BOOL isBlocked) {
// Update switch state if user cancels action. // Update switch state if user cancels action.
blockConversationSwitch.on = isBlocked; blockConversationSwitch.on = isBlocked;
[weakSelf updateTableContents];
}]; }];
} else { } else {
@ -1149,6 +1152,8 @@ const CGFloat kIconViewLength = 24;
completionBlock:^(BOOL isBlocked) { completionBlock:^(BOOL isBlocked) {
// Update switch state if user cancels action. // Update switch state if user cancels action.
blockConversationSwitch.on = isBlocked; blockConversationSwitch.on = isBlocked;
[weakSelf updateTableContents];
}]; }];
} }
} }

@ -2,20 +2,20 @@
"AB_PERMISSION_MISSING_ACTION_NOT_NOW" = "Ara no"; "AB_PERMISSION_MISSING_ACTION_NOT_NOW" = "Ara no";
/* Action sheet item */ /* Action sheet item */
"ACCEPT_NEW_IDENTITY_ACTION" = "Accepta el nou número de seguretat"; "ACCEPT_NEW_IDENTITY_ACTION" = "Accepta el número de seguretat nou";
/* Label for 'audio call' button in contact view. */ /* Label for 'audio call' button in contact view. */
"ACTION_AUDIO_CALL" = "Trucada d'audio"; "ACTION_AUDIO_CALL" = "Trucada Signal";
/* Label for 'invite' button in contact view. */ /* Label for 'invite' button in contact view. */
"ACTION_INVITE" = "Convida a Signal"; "ACTION_INVITE" = "Convida al Signal";
/* Label for 'send message' button in contact view. /* Label for 'send message' button in contact view.
Label for button that lets you send a message to a contact. */ Label for button that lets you send a message to a contact. */
"ACTION_SEND_MESSAGE" = "Envia missatge"; "ACTION_SEND_MESSAGE" = "Envia-li un missatge";
/* Label for 'share contact' button. */ /* Label for 'share contact' button. */
"ACTION_SHARE_CONTACT" = "Comparteix contacte"; "ACTION_SHARE_CONTACT" = "Comparteix el contacte";
/* Label for 'video call' button in contact view. */ /* Label for 'video call' button in contact view. */
"ACTION_VIDEO_CALL" = "Trucada de video"; "ACTION_VIDEO_CALL" = "Trucada de video";
@ -33,7 +33,7 @@
"ADD_GROUP_MEMBER_VIEW_TITLE" = "Afegeix un membre"; "ADD_GROUP_MEMBER_VIEW_TITLE" = "Afegeix un membre";
/* Message shown in conversation view that offers to share your profile with a group. */ /* Message shown in conversation view that offers to share your profile with a group. */
"ADD_GROUP_TO_PROFILE_WHITELIST_OFFER" = "Vols compartir el teu perfil amb aquest grup?"; "ADD_GROUP_TO_PROFILE_WHITELIST_OFFER" = "Voleu compartir el perfil amb aquest grup?";
/* Message shown in conversation view that offers to add an unknown user to your phone's contacts. */ /* Message shown in conversation view that offers to add an unknown user to your phone's contacts. */
"ADD_TO_CONTACTS_OFFER" = "Vols afegir aquest usuari als teus contactes?"; "ADD_TO_CONTACTS_OFFER" = "Vols afegir aquest usuari als teus contactes?";
@ -1479,7 +1479,7 @@
"NOTIFICATIONS_NONE" = "Sense nom ni contingut"; "NOTIFICATIONS_NONE" = "Sense nom ni contingut";
/* Table cell switch label. When disabled, Signal will not play notification sounds while the app is in the foreground. */ /* Table cell switch label. When disabled, Signal will not play notification sounds while the app is in the foreground. */
"NOTIFICATIONS_SECTION_INAPP" = "Jugueu mentre l'aplicació estigui oberta"; "NOTIFICATIONS_SECTION_INAPP" = "Sona si l'aplicació està oberta";
/* Label for settings UI that allows user to change the notification sound. */ /* Label for settings UI that allows user to change the notification sound. */
"NOTIFICATIONS_SECTION_SOUNDS" = "Sons"; "NOTIFICATIONS_SECTION_SOUNDS" = "Sons";
@ -1896,7 +1896,7 @@
"SEARCH_SECTION_MESSAGES" = "Missatges"; "SEARCH_SECTION_MESSAGES" = "Missatges";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"SECURE_SESSION_RESET" = "La sessió segura a estat reiniciada."; "SECURE_SESSION_RESET" = "La sessió segura ha estat reiniciada.";
/* Label for 'select GIF to attach' action sheet button */ /* Label for 'select GIF to attach' action sheet button */
"SELECT_GIF_BUTTON" = "GIF"; "SELECT_GIF_BUTTON" = "GIF";

@ -180,7 +180,7 @@
"BACKUP_EXPORT_ERROR_COULD_NOT_EXPORT" = "Sicherungsdaten konnten nicht exportiert werden."; "BACKUP_EXPORT_ERROR_COULD_NOT_EXPORT" = "Sicherungsdaten konnten nicht exportiert werden.";
/* Error indicating that the app received an invalid response from CloudKit. */ /* Error indicating that the app received an invalid response from CloudKit. */
"BACKUP_EXPORT_ERROR_INVALID_CLOUDKIT_RESPONSE" = "Ungültige Serverantwort"; "BACKUP_EXPORT_ERROR_INVALID_CLOUDKIT_RESPONSE" = "Ungültige Dienstantwort";
/* Indicates that the cloud is being cleaned up. */ /* Indicates that the cloud is being cleaned up. */
"BACKUP_EXPORT_PHASE_CLEAN_UP" = "Sicherung wird bereinigt"; "BACKUP_EXPORT_PHASE_CLEAN_UP" = "Sicherung wird bereinigt";
@ -447,7 +447,7 @@
"COMPOSE_SCREEN_MISSING_CONTACTS_PERMISSION" = "Du kannst den Zugriff auf deine Kontakte in der iOS-App »Einstellungen« aktivieren, um zu sehen, welche deiner Kontakte Signal verwenden."; "COMPOSE_SCREEN_MISSING_CONTACTS_PERMISSION" = "Du kannst den Zugriff auf deine Kontakte in der iOS-App »Einstellungen« aktivieren, um zu sehen, welche deiner Kontakte Signal verwenden.";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"CONFIRM_ACCOUNT_DESTRUCTION_TEXT" = "Dies setzt die App in ihren Ursprungszustand zurück. Dabei werden alle deine Nachrichten und dein Benutzerkonto auf dem Server gelöscht. Nach Abschluss des Vorgangs beendet sich die App automatisch."; "CONFIRM_ACCOUNT_DESTRUCTION_TEXT" = "Dies setzt die App in ihren Ursprungszustand zurück. Dabei werden alle deine Nachrichten und dein Benutzerkonto vom Server gelöscht. Nach Abschluss des Vorgangs beendet sich die App automatisch.";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"CONFIRM_ACCOUNT_DESTRUCTION_TITLE" = "Möchtest du dein Benutzerkonto wirklich löschen?"; "CONFIRM_ACCOUNT_DESTRUCTION_TITLE" = "Möchtest du dein Benutzerkonto wirklich löschen?";
@ -480,7 +480,7 @@
"CONTACT_CELL_IS_NO_LONGER_VERIFIED" = "Nicht verifiziert"; "CONTACT_CELL_IS_NO_LONGER_VERIFIED" = "Nicht verifiziert";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"CONTACT_DETAIL_COMM_TYPE_INSECURE" = "Nicht registrierte Rufnummer"; "CONTACT_DETAIL_COMM_TYPE_INSECURE" = "Unregistrierte Rufnummer";
/* Label for the 'edit name' button in the contact share approval view. */ /* Label for the 'edit name' button in the contact share approval view. */
"CONTACT_EDIT_NAME_BUTTON" = "Bearbeiten"; "CONTACT_EDIT_NAME_BUTTON" = "Bearbeiten";
@ -627,7 +627,7 @@
"CONVERSATION_SETTINGS_VIEW_PROFILE_IS_SHARED_WITH_GROUP" = "Diese Gruppe kann dein Profil sehen."; "CONVERSATION_SETTINGS_VIEW_PROFILE_IS_SHARED_WITH_GROUP" = "Diese Gruppe kann dein Profil sehen.";
/* Indicates that user's profile has been shared with a user. */ /* Indicates that user's profile has been shared with a user. */
"CONVERSATION_SETTINGS_VIEW_PROFILE_IS_SHARED_WITH_USER" = "Dieser Benutzer kann dein Profil sehen."; "CONVERSATION_SETTINGS_VIEW_PROFILE_IS_SHARED_WITH_USER" = "Benutzer kann dein Profil sehen.";
/* Button to confirm that user wants to share their profile with a user or group. */ /* Button to confirm that user wants to share their profile with a user or group. */
"CONVERSATION_SETTINGS_VIEW_SHARE_PROFILE" = "Profil teilen"; "CONVERSATION_SETTINGS_VIEW_SHARE_PROFILE" = "Profil teilen";
@ -1240,7 +1240,7 @@
"MESSAGE_ACTION_DELETE_MESSAGE" = "Diese Nachricht löschen"; "MESSAGE_ACTION_DELETE_MESSAGE" = "Diese Nachricht löschen";
/* Action sheet button subtitle */ /* Action sheet button subtitle */
"MESSAGE_ACTION_DELETE_MESSAGE_SUBTITLE" = "Sie wird nur auf diesem Gerät gelöscht"; "MESSAGE_ACTION_DELETE_MESSAGE_SUBTITLE" = "Wird nur auf diesem Gerät gelöscht.";
/* Action sheet button title */ /* Action sheet button title */
"MESSAGE_ACTION_DETAILS" = "Mehr Details"; "MESSAGE_ACTION_DETAILS" = "Mehr Details";
@ -1288,7 +1288,7 @@
"MESSAGE_METADATA_VIEW_MESSAGE_STATUS_UPLOADING" = "Wird hochgeladen"; "MESSAGE_METADATA_VIEW_MESSAGE_STATUS_UPLOADING" = "Wird hochgeladen";
/* Label for messages without a body or attachment in the 'message metadata' view. */ /* Label for messages without a body or attachment in the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_NO_ATTACHMENT_OR_BODY" = "Nachricht hat keinen Inhalt oder Anhang."; "MESSAGE_METADATA_VIEW_NO_ATTACHMENT_OR_BODY" = "Nachricht hat weder Inhalt noch Anhang.";
/* Label for the 'received date & time' field of the 'message metadata' view. */ /* Label for the 'received date & time' field of the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_RECEIVED_DATE_TIME" = "Empfangen"; "MESSAGE_METADATA_VIEW_RECEIVED_DATE_TIME" = "Empfangen";
@ -2340,7 +2340,7 @@
"UNNAMED_DEVICE" = "Unbenanntes Gerät"; "UNNAMED_DEVICE" = "Unbenanntes Gerät";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"UNREGISTER_SIGNAL_FAIL" = "Löschen des Benutzerkontos gescheitert."; "UNREGISTER_SIGNAL_FAIL" = "Deregistrieren gescheitert.";
/* No comment provided by engineer. */ /* No comment provided by engineer. */
"UNSUPPORTED_ATTACHMENT" = "Nicht unterstützten Anhangstyp erhalten."; "UNSUPPORTED_ATTACHMENT" = "Nicht unterstützten Anhangstyp erhalten.";

@ -321,16 +321,16 @@
"CALL_AUDIO_PERMISSION_TITLE" = "Ligipääs mikrofonile on vajalik"; "CALL_AUDIO_PERMISSION_TITLE" = "Ligipääs mikrofonile on vajalik";
/* notification body */ /* notification body */
"CALL_INCOMING_NOTIFICATION_BODY" = "☎️ Incoming Call"; "CALL_INCOMING_NOTIFICATION_BODY" = "Sissetulev kõne";
/* Accessibility label for placing call button */ /* Accessibility label for placing call button */
"CALL_LABEL" = "Helista"; "CALL_LABEL" = "Helista";
/* notification body */ /* notification body */
"CALL_MISSED_BECAUSE_OF_IDENTITY_CHANGE_NOTIFICATION_BODY" = "☎️ Missed call because the caller's safety number changed."; "CALL_MISSED_BECAUSE_OF_IDENTITY_CHANGE_NOTIFICATION_BODY" = "Vastamata kõne, sest helistaja turvanumber on muutunud.";
/* notification body */ /* notification body */
"CALL_MISSED_NOTIFICATION_BODY" = "☎️ Missed Call"; "CALL_MISSED_NOTIFICATION_BODY" = "Vastamata kõne";
/* Call setup status label after outgoing call times out */ /* Call setup status label after outgoing call times out */
"CALL_SCREEN_STATUS_NO_ANSWER" = "Vastust pole"; "CALL_SCREEN_STATUS_NO_ANSWER" = "Vastust pole";
@ -1081,16 +1081,16 @@
"HOME_VIEW_TITLE_INBOX" = "Signal"; "HOME_VIEW_TITLE_INBOX" = "Signal";
/* Label for brush button in image editor. */ /* Label for brush button in image editor. */
"IMAGE_EDITOR_BRUSH_BUTTON" = "Brush"; "IMAGE_EDITOR_BRUSH_BUTTON" = "Pihusti";
/* Label for crop button in image editor. */ /* Label for crop button in image editor. */
"IMAGE_EDITOR_CROP_BUTTON" = "Crop"; "IMAGE_EDITOR_CROP_BUTTON" = "Kärbi";
/* Momentarily shown to the user when attempting to select more images than is allowed. Embeds {{max number of items}} that can be shared. */ /* Momentarily shown to the user when attempting to select more images than is allowed. Embeds {{max number of items}} that can be shared. */
"IMAGE_PICKER_CAN_SELECT_NO_MORE_TOAST_FORMAT" = "You can't share more than %@ items."; "IMAGE_PICKER_CAN_SELECT_NO_MORE_TOAST_FORMAT" = "Sa ei saa jagada rohkem kui %@ üksust.";
/* alert title */ /* alert title */
"IMAGE_PICKER_FAILED_TO_PROCESS_ATTACHMENTS" = "Failed to select attachment."; "IMAGE_PICKER_FAILED_TO_PROCESS_ATTACHMENTS" = "Manuse laadimine ei õnnestunud.";
/* Call setup status label */ /* Call setup status label */
"IN_CALL_CONNECTING" = "Ühendumine..."; "IN_CALL_CONNECTING" = "Ühendumine...";
@ -1183,7 +1183,7 @@
"LINK_NEW_DEVICE_TITLE" = "Ühenda uus seade"; "LINK_NEW_DEVICE_TITLE" = "Ühenda uus seade";
/* Label for link previews with an unknown host. */ /* Label for link previews with an unknown host. */
"LINK_PREVIEW_UNKNOWN_DOMAIN" = "Link Preview"; "LINK_PREVIEW_UNKNOWN_DOMAIN" = "Lingi eelvaade";
/* Menu item and navbar title for the device manager */ /* Menu item and navbar title for the device manager */
"LINKED_DEVICES_TITLE" = "Ühendatud seadmed"; "LINKED_DEVICES_TITLE" = "Ühendatud seadmed";
@ -1440,7 +1440,7 @@
"NEW_GROUP_MEMBER_LABEL" = "Liige"; "NEW_GROUP_MEMBER_LABEL" = "Liige";
/* notification title. Embeds {{author name}} and {{group name}} */ /* notification title. Embeds {{author name}} and {{group name}} */
"NEW_GROUP_MESSAGE_NOTIFICATION_TITLE" = "%@ to %@"; "NEW_GROUP_MESSAGE_NOTIFICATION_TITLE" = "%@ grupile %@";
/* Placeholder text for group name field */ /* Placeholder text for group name field */
"NEW_GROUP_NAMEGROUP_REQUEST_DEFAULT" = "Lisa grupivestlusele nimi"; "NEW_GROUP_NAMEGROUP_REQUEST_DEFAULT" = "Lisa grupivestlusele nimi";
@ -1467,7 +1467,7 @@
"NO_CONTACTS_SEARCH_BY_PHONE_NUMBER" = "Leia kontaktid numbri järgi"; "NO_CONTACTS_SEARCH_BY_PHONE_NUMBER" = "Leia kontaktid numbri järgi";
/* Label for 1:1 conversation with yourself. */ /* Label for 1:1 conversation with yourself. */
"NOTE_TO_SELF" = "Note to Self"; "NOTE_TO_SELF" = "Märkus endale";
/* Lock screen notification text presented after user powers on their device without unlocking. Embeds {{device model}} (either 'iPad' or 'iPhone') */ /* Lock screen notification text presented after user powers on their device without unlocking. Embeds {{device model}} (either 'iPad' or 'iPhone') */
"NOTIFICATION_BODY_PHONE_LOCKED_FORMAT" = "Sa võisid %@'i taaskäivitamise ajal saada sõnumeid."; "NOTIFICATION_BODY_PHONE_LOCKED_FORMAT" = "Sa võisid %@'i taaskäivitamise ajal saada sõnumeid.";
@ -1914,7 +1914,7 @@
"SEND_BUTTON_TITLE" = "Saada"; "SEND_BUTTON_TITLE" = "Saada";
/* notification body */ /* notification body */
"SEND_FAILED_NOTIFICATION_BODY" = "Your message failed to send."; "SEND_FAILED_NOTIFICATION_BODY" = "Sinu sõnumi saatmine ei õnnestunud.";
/* Alert body after invite failed */ /* Alert body after invite failed */
"SEND_INVITE_FAILURE" = "Kutse saatmine ei õnnestunud, palun proovi hiljem uuesti."; "SEND_INVITE_FAILURE" = "Kutse saatmine ei õnnestunud, palun proovi hiljem uuesti.";
@ -2082,13 +2082,13 @@
"SETTINGS_LEGAL_TERMS_CELL" = "Tingimused ja privaatsuspoliitika"; "SETTINGS_LEGAL_TERMS_CELL" = "Tingimused ja privaatsuspoliitika";
/* Setting for enabling & disabling link previews. */ /* Setting for enabling & disabling link previews. */
"SETTINGS_LINK_PREVIEWS" = "Send Link Previews"; "SETTINGS_LINK_PREVIEWS" = "Saada linkide eelvaateid";
/* Footer for setting for enabling & disabling link previews. */ /* Footer for setting for enabling & disabling link previews. */
"SETTINGS_LINK_PREVIEWS_FOOTER" = "Previews are supported for Imgur, Instagram, Reddit, and YouTube links."; "SETTINGS_LINK_PREVIEWS_FOOTER" = "Eelvaated on toetatud Imgur, Instagram, Reddit ja YouTube linkide puhul";
/* Header for setting for enabling & disabling link previews. */ /* Header for setting for enabling & disabling link previews. */
"SETTINGS_LINK_PREVIEWS_HEADER" = "Link Previews"; "SETTINGS_LINK_PREVIEWS_HEADER" = "Linkide eelvaated";
/* Title for settings activity */ /* Title for settings activity */
"SETTINGS_NAV_BAR_TITLE" = "Sätted"; "SETTINGS_NAV_BAR_TITLE" = "Sätted";
@ -2370,10 +2370,10 @@
"UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_DESCRIPTION" = "Valikulised linkide eelvaated on nüüd toetatud populaarseimate saitide puhul."; "UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_DESCRIPTION" = "Valikulised linkide eelvaated on nüüd toetatud populaarseimate saitide puhul.";
/* Subtitle for upgrading users */ /* Subtitle for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_SUBTITLE" = "You can disable or enable this feature anytime in your Signal settings (Privacy > Send link previews)."; "UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_SUBTITLE" = "Seda funktsiooni on võimalik igal ajal keelata või lubada Signali sätetes (Privaatsus > Saada linkide eelvaateid).";
/* Header for upgrading users */ /* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_TITLE" = "Link Previews"; "UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_TITLE" = "Linkide eelvaated";
/* Description for notification audio customization */ /* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Nüüd saad valida nii vaikimisi helina kui ka igale vestlusele eraldi. Kõned kasutavad seda helinat, mille oled valinud kontaktide jaoks telefonis."; "UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "Nüüd saad valida nii vaikimisi helina kui ka igale vestlusele eraldi. Kõned kasutavad seda helinat, mille oled valinud kontaktide jaoks telefonis.";

@ -1605,7 +1605,7 @@
"PRIVACY_VERIFICATION_FAILURE_INVALID_QRCODE" = "Le code balayé ne semble pas être un numéro de sécurité. Utilisez-vous tous les deux une version à jour de Signal?"; "PRIVACY_VERIFICATION_FAILURE_INVALID_QRCODE" = "Le code balayé ne semble pas être un numéro de sécurité. Utilisez-vous tous les deux une version à jour de Signal?";
/* Paragraph(s) shown alongside the safety number when verifying privacy with {{contact name}} */ /* Paragraph(s) shown alongside the safety number when verifying privacy with {{contact name}} */
"PRIVACY_VERIFICATION_INSTRUCTIONS" = "Si vous souhaitez vérifier la sécurité du chiffrement de bout en bout avec %@, comparez les numéros ci-dessus avec ceux sur son appareil.\n\nVous pouvez aussi balayé le code sur son appareil ou lui demander de balayer le vôtre."; "PRIVACY_VERIFICATION_INSTRUCTIONS" = "Si vous souhaitez vérifier la sécurité du chiffrement de bout en bout avec %@, comparez les numéros ci-dessus avec ceux sur son appareil.\n\nVous pouvez aussi balayer le code sur son appareil ou lui demander de balayer le vôtre.";
/* Navbar title */ /* Navbar title */
"PRIVACY_VERIFICATION_TITLE" = "Vérifier le numéro de sécurité"; "PRIVACY_VERIFICATION_TITLE" = "Vérifier le numéro de sécurité";

@ -1467,7 +1467,7 @@
"NO_CONTACTS_SEARCH_BY_PHONE_NUMBER" = "Atopar contactos por número de teléfono"; "NO_CONTACTS_SEARCH_BY_PHONE_NUMBER" = "Atopar contactos por número de teléfono";
/* Label for 1:1 conversation with yourself. */ /* Label for 1:1 conversation with yourself. */
"NOTE_TO_SELF" = "Note to Self"; "NOTE_TO_SELF" = "Notificarmo";
/* Lock screen notification text presented after user powers on their device without unlocking. Embeds {{device model}} (either 'iPad' or 'iPhone') */ /* Lock screen notification text presented after user powers on their device without unlocking. Embeds {{device model}} (either 'iPad' or 'iPhone') */
"NOTIFICATION_BODY_PHONE_LOCKED_FORMAT" = "You may have received messages while your %@ was restarting."; "NOTIFICATION_BODY_PHONE_LOCKED_FORMAT" = "You may have received messages while your %@ was restarting.";

@ -1183,7 +1183,7 @@
"LINK_NEW_DEVICE_TITLE" = "新しい端末を追加"; "LINK_NEW_DEVICE_TITLE" = "新しい端末を追加";
/* Label for link previews with an unknown host. */ /* Label for link previews with an unknown host. */
"LINK_PREVIEW_UNKNOWN_DOMAIN" = "リンクプレビュー"; "LINK_PREVIEW_UNKNOWN_DOMAIN" = "リンクプレビュー";
/* Menu item and navbar title for the device manager */ /* Menu item and navbar title for the device manager */
"LINKED_DEVICES_TITLE" = "追加される端末"; "LINKED_DEVICES_TITLE" = "追加される端末";
@ -2088,7 +2088,7 @@
"SETTINGS_LINK_PREVIEWS_FOOTER" = "リンクプレビューは、次のサービスに対応しています: Imgur, Instagram, Reddit, YouTube"; "SETTINGS_LINK_PREVIEWS_FOOTER" = "リンクプレビューは、次のサービスに対応しています: Imgur, Instagram, Reddit, YouTube";
/* Header for setting for enabling & disabling link previews. */ /* Header for setting for enabling & disabling link previews. */
"SETTINGS_LINK_PREVIEWS_HEADER" = "リンクプレビュー"; "SETTINGS_LINK_PREVIEWS_HEADER" = "リンクプレビュー";
/* Title for settings activity */ /* Title for settings activity */
"SETTINGS_NAV_BAR_TITLE" = "設定"; "SETTINGS_NAV_BAR_TITLE" = "設定";
@ -2373,7 +2373,7 @@
"UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_SUBTITLE" = "この機能は、Signalの設定プライバシー > リンクプレビューを送る)で有効化できます。"; "UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_SUBTITLE" = "この機能は、Signalの設定プライバシー > リンクプレビューを送る)で有効化できます。";
/* Header for upgrading users */ /* Header for upgrading users */
"UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_TITLE" = "リンクプレビュー"; "UPGRADE_EXPERIENCE_INTRODUCING_LINK_PREVIEWS_TITLE" = "リンクプレビュー";
/* Description for notification audio customization */ /* Description for notification audio customization */
"UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "通知音を相手ごとに設定できるようになりました。"; "UPGRADE_EXPERIENCE_INTRODUCING_NOTIFICATION_AUDIO_DESCRIPTION" = "通知音を相手ごとに設定できるようになりました。";

@ -1467,7 +1467,7 @@
"NO_CONTACTS_SEARCH_BY_PHONE_NUMBER" = "Odszukaj kontakty po numerze telefonu"; "NO_CONTACTS_SEARCH_BY_PHONE_NUMBER" = "Odszukaj kontakty po numerze telefonu";
/* Label for 1:1 conversation with yourself. */ /* Label for 1:1 conversation with yourself. */
"NOTE_TO_SELF" = "Uwaga dla siebie"; "NOTE_TO_SELF" = "Moje notatki";
/* Lock screen notification text presented after user powers on their device without unlocking. Embeds {{device model}} (either 'iPad' or 'iPhone') */ /* Lock screen notification text presented after user powers on their device without unlocking. Embeds {{device model}} (either 'iPad' or 'iPhone') */
"NOTIFICATION_BODY_PHONE_LOCKED_FORMAT" = "Możliwe, że otrzymałeś wiadomości podczas restartowania %@."; "NOTIFICATION_BODY_PHONE_LOCKED_FORMAT" = "Możliwe, że otrzymałeś wiadomości podczas restartowania %@.";

File diff suppressed because it is too large Load Diff

@ -321,16 +321,16 @@
"CALL_AUDIO_PERMISSION_TITLE" = "Accesul la microfon este necesar"; "CALL_AUDIO_PERMISSION_TITLE" = "Accesul la microfon este necesar";
/* notification body */ /* notification body */
"CALL_INCOMING_NOTIFICATION_BODY" = "☎️ Incoming Call"; "CALL_INCOMING_NOTIFICATION_BODY" = "☎️ Apel de intrare";
/* Accessibility label for placing call button */ /* Accessibility label for placing call button */
"CALL_LABEL" = "Sună"; "CALL_LABEL" = "Sună";
/* notification body */ /* notification body */
"CALL_MISSED_BECAUSE_OF_IDENTITY_CHANGE_NOTIFICATION_BODY" = "☎️ Missed call because the caller's safety number changed."; "CALL_MISSED_BECAUSE_OF_IDENTITY_CHANGE_NOTIFICATION_BODY" = "☎️ Apel ratat deoarece numărul de siguranță al apelantului s-a schimbat.";
/* notification body */ /* notification body */
"CALL_MISSED_NOTIFICATION_BODY" = "☎️ Missed Call"; "CALL_MISSED_NOTIFICATION_BODY" = "☎️ Apel pierdut";
/* Call setup status label after outgoing call times out */ /* Call setup status label after outgoing call times out */
"CALL_SCREEN_STATUS_NO_ANSWER" = "Nici un răspuns"; "CALL_SCREEN_STATUS_NO_ANSWER" = "Nici un răspuns";
@ -1440,7 +1440,7 @@
"NEW_GROUP_MEMBER_LABEL" = "Membru"; "NEW_GROUP_MEMBER_LABEL" = "Membru";
/* notification title. Embeds {{author name}} and {{group name}} */ /* notification title. Embeds {{author name}} and {{group name}} */
"NEW_GROUP_MESSAGE_NOTIFICATION_TITLE" = "%@ to %@"; "NEW_GROUP_MESSAGE_NOTIFICATION_TITLE" = "%@ către %@";
/* Placeholder text for group name field */ /* Placeholder text for group name field */
"NEW_GROUP_NAMEGROUP_REQUEST_DEFAULT" = "Denumește această conversație de grup"; "NEW_GROUP_NAMEGROUP_REQUEST_DEFAULT" = "Denumește această conversație de grup";
@ -1914,7 +1914,7 @@
"SEND_BUTTON_TITLE" = "Trimite"; "SEND_BUTTON_TITLE" = "Trimite";
/* notification body */ /* notification body */
"SEND_FAILED_NOTIFICATION_BODY" = "Your message failed to send."; "SEND_FAILED_NOTIFICATION_BODY" = "Mesajul tău nu a putut fi transmis.";
/* Alert body after invite failed */ /* Alert body after invite failed */
"SEND_INVITE_FAILURE" = "Invitația trimisă a eșuat, te rog încearcă din nou mai târziu."; "SEND_INVITE_FAILURE" = "Invitația trimisă a eșuat, te rog încearcă din nou mai târziu.";

@ -1,5 +1,5 @@
// //
// Copyright (c) 2018 Open Whisper Systems. All rights reserved. // Copyright (c) 2019 Open Whisper Systems. All rights reserved.
// //
#import <SignalMessaging/OWSViewController.h> #import <SignalMessaging/OWSViewController.h>
@ -47,6 +47,7 @@ extern const CGFloat kOWSTable_DefaultCellHeight;
typedef void (^OWSTableActionBlock)(void); typedef void (^OWSTableActionBlock)(void);
typedef void (^OWSTableSubPageBlock)(UIViewController *viewController); typedef void (^OWSTableSubPageBlock)(UIViewController *viewController);
typedef UITableViewCell *_Nonnull (^OWSTableCustomCellBlock)(void); typedef UITableViewCell *_Nonnull (^OWSTableCustomCellBlock)(void);
typedef BOOL (^OWSTableSwitchBlock)(void);
@interface OWSTableItem : NSObject @interface OWSTableItem : NSObject
@ -103,11 +104,14 @@ typedef UITableViewCell *_Nonnull (^OWSTableCustomCellBlock)(void);
+ (OWSTableItem *)longDisclosureItemWithText:(NSString *)text actionBlock:(nullable OWSTableActionBlock)actionBlock; + (OWSTableItem *)longDisclosureItemWithText:(NSString *)text actionBlock:(nullable OWSTableActionBlock)actionBlock;
+ (OWSTableItem *)switchItemWithText:(NSString *)text isOn:(BOOL)isOn target:(id)target selector:(SEL)selector; + (OWSTableItem *)switchItemWithText:(NSString *)text
isOnBlock:(OWSTableSwitchBlock)isOnBlock
target:(id)target
selector:(SEL)selector;
+ (OWSTableItem *)switchItemWithText:(NSString *)text + (OWSTableItem *)switchItemWithText:(NSString *)text
isOn:(BOOL)isOn isOnBlock:(OWSTableSwitchBlock)isOnBlock
isEnabled:(BOOL)isEnabled isEnabledBlock:(OWSTableSwitchBlock)isEnabledBlock
target:(id)target target:(id)target
selector:(SEL)selector; selector:(SEL)selector;

@ -366,14 +366,23 @@ const CGFloat kOWSTable_DefaultCellHeight = 45.f;
return item; return item;
} }
+ (OWSTableItem *)switchItemWithText:(NSString *)text isOn:(BOOL)isOn target:(id)target selector:(SEL)selector + (OWSTableItem *)switchItemWithText:(NSString *)text
isOnBlock:(OWSTableSwitchBlock)isOnBlock
target:(id)target
selector:(SEL)selector
{ {
return [self switchItemWithText:text isOn:isOn isEnabled:YES target:target selector:selector]; return [self switchItemWithText:text
isOnBlock:(OWSTableSwitchBlock)isOnBlock
isEnabledBlock:^{
return YES;
}
target:target
selector:selector];
} }
+ (OWSTableItem *)switchItemWithText:(NSString *)text + (OWSTableItem *)switchItemWithText:(NSString *)text
isOn:(BOOL)isOn isOnBlock:(OWSTableSwitchBlock)isOnBlock
isEnabled:(BOOL)isEnabled isEnabledBlock:(OWSTableSwitchBlock)isEnabledBlock
target:(id)target target:(id)target
selector:(SEL)selector selector:(SEL)selector
{ {
@ -389,9 +398,9 @@ const CGFloat kOWSTable_DefaultCellHeight = 45.f;
UISwitch *cellSwitch = [UISwitch new]; UISwitch *cellSwitch = [UISwitch new];
cell.accessoryView = cellSwitch; cell.accessoryView = cellSwitch;
[cellSwitch setOn:isOn]; [cellSwitch setOn:isOnBlock()];
[cellSwitch addTarget:weakTarget action:selector forControlEvents:UIControlEventValueChanged]; [cellSwitch addTarget:weakTarget action:selector forControlEvents:UIControlEventValueChanged];
cellSwitch.enabled = isEnabled; cellSwitch.enabled = isEnabledBlock();
cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.selectionStyle = UITableViewCellSelectionStyleNone;

Loading…
Cancel
Save