diff --git a/Signal/src/ViewControllers/CallViewController.swift b/Signal/src/ViewControllers/CallViewController.swift index c9ca747f8..816aadd92 100644 --- a/Signal/src/ViewControllers/CallViewController.swift +++ b/Signal/src/ViewControllers/CallViewController.swift @@ -395,7 +395,7 @@ class CallViewController: OWSViewController, CallObserver, CallServiceObserver, videoModeFlipCameraButton = createButton(image: #imageLiteral(resourceName: "video-switch-camera-unselected"), action: #selector(didPressFlipCamera)) - videoModeFlipCameraButton.accessibilityLabel = NSLocalizedString("CALL_VIEW_SWITCH_CAMERA_DIRECTION", comment: "Accessibility label to toggle front vs. rear facing camera") + videoModeFlipCameraButton.accessibilityLabel = NSLocalizedString("CALL_VIEW_SWITCH_CAMERA_DIRECTION", comment: "Accessibility label to toggle front- vs. rear-facing camera") videoModeFlipCameraButton.alpha = 0.9 videoModeVideoButton = createButton(image: #imageLiteral(resourceName: "video-video-unselected"), diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m index 6ca3fa67b..ea1cb80a1 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m @@ -424,7 +424,7 @@ const CGFloat kRemotelySourcedContentRowSpacing = 3; self.quoteContentSourceLabel.font = UIFont.ows_dynamicTypeFootnoteFont; self.quoteContentSourceLabel.textColor = Theme.primaryColor; self.quoteContentSourceLabel.text = NSLocalizedString(@"QUOTED_REPLY_CONTENT_FROM_REMOTE_SOURCE", - @"Footer label that appears below quoted messages when the quoted content was note derived locally. When the " + @"Footer label that appears below quoted messages when the quoted content was not derived locally. When the " @"local user doesn't have a copy of the message being quoted, e.g. if it had since been deleted, we instead " @"show the content specified by the sender."); diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index a0c52b8b4..0267986af 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -69,7 +69,7 @@ "APN_MESSAGE_IN_GROUP_DETAILED" = "%@ in group %@: %@"; /* Message for the 'app launch failed' alert. */ -"APP_LAUNCH_FAILURE_ALERT_MESSAGE" = "Signal can't launch. Please send your debug logs to our team so that we can try to resolve this issue."; +"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."; /* Title for the 'app launch failed' alert. */ "APP_LAUNCH_FAILURE_ALERT_TITLE" = "Error"; @@ -84,7 +84,7 @@ "APP_UPDATE_NAG_ALERT_MESSAGE_FORMAT" = "Version %@ is now available in the 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" = "A New Version of Signal Is Available"; /* Label for the 'update' button in the 'new app version available' alert. */ "APP_UPDATE_NAG_ALERT_UPDATE_BUTTON" = "Update"; @@ -98,7 +98,7 @@ /* No comment provided by engineer. */ "ATTACHMENT" = "Attachment"; -/* One line label indicating the user can add no more text to the attachment caption. */ +/* One-line label indicating the user can add no more text to the attachment caption. */ "ATTACHMENT_APPROVAL_CAPTION_LENGTH_LIMIT_REACHED" = "Message limit reached."; /* Format string for file extension label in call interstitial view */ @@ -114,7 +114,7 @@ "ATTACHMENT_DEFAULT_FILENAME" = "Attachment"; /* Status label when an attachment download has failed. */ -"ATTACHMENT_DOWNLOADING_STATUS_FAILED" = "Failed. Tap to retry."; +"ATTACHMENT_DOWNLOADING_STATUS_FAILED" = "Download failed. Tap to retry."; /* Status label when an attachment is currently downloading */ "ATTACHMENT_DOWNLOADING_STATUS_IN_PROGRESS" = "Downloading…"; @@ -126,28 +126,28 @@ "ATTACHMENT_ERROR_ALERT_TITLE" = "Error Sending Attachment"; /* Attachment error message for image attachments which could not be converted to JPEG */ -"ATTACHMENT_ERROR_COULD_NOT_CONVERT_TO_JPEG" = "Image attachment could not be resized."; +"ATTACHMENT_ERROR_COULD_NOT_CONVERT_TO_JPEG" = "Unable to convert image."; /* Attachment error message for video attachments which could not be converted to MP4 */ "ATTACHMENT_ERROR_COULD_NOT_CONVERT_TO_MP4" = "Unable to process video."; /* Attachment error message for image attachments which cannot be parsed */ -"ATTACHMENT_ERROR_COULD_NOT_PARSE_IMAGE" = "Image attachment could not be parsed."; +"ATTACHMENT_ERROR_COULD_NOT_PARSE_IMAGE" = "Unable to parse image."; /* Attachment error message for image attachments in which metadata could not be removed */ "ATTACHMENT_ERROR_COULD_NOT_REMOVE_METADATA" = "Unable to remove metadata from image."; /* Attachment error message for image attachments which could not be resized */ -"ATTACHMENT_ERROR_COULD_NOT_RESIZE_IMAGE" = "Could not resize image."; +"ATTACHMENT_ERROR_COULD_NOT_RESIZE_IMAGE" = "Unable to resize image."; /* Attachment error message for attachments whose data exceed file size limits */ "ATTACHMENT_ERROR_FILE_SIZE_TOO_LARGE" = "Attachment is too large."; /* Attachment error message for attachments with invalid data */ -"ATTACHMENT_ERROR_INVALID_DATA" = "Attachment has invalid contents."; +"ATTACHMENT_ERROR_INVALID_DATA" = "Attachment includes invalid content."; /* Attachment error message for attachments with an invalid file format */ -"ATTACHMENT_ERROR_INVALID_FILE_FORMAT" = "Attachment has invalid file format."; +"ATTACHMENT_ERROR_INVALID_FILE_FORMAT" = "Attachment has an invalid file format."; /* Attachment error message for attachments without any data */ "ATTACHMENT_ERROR_MISSING_DATA" = "Attachment is empty."; @@ -165,7 +165,7 @@ "ATTACHMENT_PICKER_DOCUMENTS_FAILED_ALERT_TITLE" = "Failed to choose document."; /* Alert body when picking a document fails because user picked a directory/bundle */ -"ATTACHMENT_PICKER_DOCUMENTS_PICKED_DIRECTORY_FAILED_ALERT_BODY" = "Signal can't handle that file as is. Try compressing it before sending."; +"ATTACHMENT_PICKER_DOCUMENTS_PICKED_DIRECTORY_FAILED_ALERT_BODY" = "Please create a compressed archive of this file or directory and try sending that instead."; /* Alert title when picking a document fails because user picked a directory/bundle */ "ATTACHMENT_PICKER_DOCUMENTS_PICKED_DIRECTORY_FAILED_ALERT_TITLE" = "Unsupported File"; @@ -300,7 +300,7 @@ "CALL_AGAIN_BUTTON_TITLE" = "Call Again"; /* Alert message when calling and permissions for microphone are missing */ -"CALL_AUDIO_PERMISSION_MESSAGE" = "Signal requires access to your microphone to make calls and record voice messages. You can grant this permission in the Settings app."; +"CALL_AUDIO_PERMISSION_MESSAGE" = "You can enable microphone access in the iOS Settings app to make calls and record voice messages in Signal."; /* Alert title when calling and permissions for microphone are missing */ "CALL_AUDIO_PERMISSION_TITLE" = "Microphone Access Required"; @@ -309,7 +309,7 @@ "CALL_LABEL" = "Call"; /* Call setup status label after outgoing call times out */ -"CALL_SCREEN_STATUS_NO_ANSWER" = "No Answer."; +"CALL_SCREEN_STATUS_NO_ANSWER" = "No Answer"; /* 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 %@"; @@ -339,10 +339,10 @@ "CALL_VIEW_MUTE_LABEL" = "Mute"; /* Reminder to the user of the benefits of enabling CallKit and disabling CallKit privacy. */ -"CALL_VIEW_SETTINGS_NAG_DESCRIPTION_ALL" = "You can answer calls directly from your lock screen and see the name and phone number for incoming calls if you change your settings.\n\nSee the privacy settings for details."; +"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."; /* Reminder to the user of the benefits of disabling CallKit privacy. */ -"CALL_VIEW_SETTINGS_NAG_DESCRIPTION_PRIVACY" = "You can see the name and phone number for incoming calls if you change your settings.\n\nSee the privacy settings for details."; +"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."; /* Label for button that dismiss the call view's settings nag. */ "CALL_VIEW_SETTINGS_NAG_NOT_NOW_BUTTON" = "Not Now"; @@ -350,7 +350,7 @@ /* Label for button that shows the privacy settings. */ "CALL_VIEW_SETTINGS_NAG_SHOW_CALL_SETTINGS" = "Show Privacy Settings"; -/* Accessibility label to toggle front vs. rear facing camera */ +/* Accessibility label to toggle front- vs. rear-facing camera */ "CALL_VIEW_SWITCH_CAMERA_DIRECTION" = "Switch Camera Direction"; /* Accessibility label to switch to audio only */ @@ -399,10 +399,10 @@ "COMPOSE_MESSAGE_INVITE_SECTION_TITLE" = "Invite"; /* Multi-line label explaining why compose-screen contact picker is empty. */ -"COMPOSE_SCREEN_MISSING_CONTACTS_PERMISSION" = "To see which of your contacts are Signal users, allow contacts access in your system settings."; +"COMPOSE_SCREEN_MISSING_CONTACTS_PERMISSION" = "You can enable contacts access in the iOS Settings app to see which of your contacts are Signal users."; /* No comment provided by engineer. */ -"CONFIRM_ACCOUNT_DESTRUCTION_TEXT" = "This will reset the application by deleting your messages and unregister you with the server. The app will close after deletion of data."; +"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."; /* No comment provided by engineer. */ "CONFIRM_ACCOUNT_DESTRUCTION_TITLE" = "Are you sure you want to delete your account?"; @@ -591,16 +591,16 @@ "CONVERSATION_VIEW_ADD_TO_CONTACTS_OFFER" = "Add to Contacts"; /* 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" = "Share Your Profile with This User"; /* Title for the group of buttons show for unknown contacts offering to add them to contacts, etc. */ "CONVERSATION_VIEW_CONTACTS_OFFER_TITLE" = "This user is not in your contacts."; /* Indicates that the app is loading more messages in this conversation. */ -"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Loading More Messages..."; +"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Loading More Messages…"; /* 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"; +"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE" = "Tap for More"; /* Message shown in conversation view that offers to block an unknown user. */ "CONVERSATION_VIEW_UNKNOWN_CONTACT_BLOCK_OFFER" = "Block This User"; @@ -718,7 +718,7 @@ "DOMAIN_FRONTING_COUNTRY_VIEW_SECTION_HEADER" = "Censorship Circumvention Location"; /* 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 give access in the Settings app."; +"EDIT_CONTACT_WITHOUT_CONTACTS_PERMISSION_ALERT_BODY" = "You can enable access in the iOS Settings app."; /* 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" = "Signal Needs Contact Access to Edit Contact Information"; @@ -745,7 +745,7 @@ "EDIT_GROUP_UPDATE_BUTTON" = "Update"; /* The alert message if user tries to exit update group view without saving changes. */ -"EDIT_GROUP_VIEW_UNSAVED_CHANGES_MESSAGE" = "You've changed this group. Would you like to save these changes?"; +"EDIT_GROUP_VIEW_UNSAVED_CHANGES_MESSAGE" = "Would you like to save the changes that you made to this group?"; /* The alert title if user tries to exit update group view without saving changes. */ "EDIT_GROUP_VIEW_UNSAVED_CHANGES_TITLE" = "Unsaved Changes"; @@ -763,10 +763,10 @@ "EMAIL_INVITE_SUBJECT" = "Let's switch to Signal"; /* Body text an existing user sees when viewing an empty archive */ -"EMPTY_ARCHIVE_TEXT" = "You can archive inactive conversations for later from your Inbox."; +"EMPTY_ARCHIVE_TEXT" = "You can archive inactive conversations from your Inbox."; /* Header text an existing user sees when viewing an empty archive */ -"EMPTY_ARCHIVE_TITLE" = "Clean Up Your Conversations."; +"EMPTY_ARCHIVE_TITLE" = "Clean Up Your Conversation List"; /* Full width label displayed when attempting to compose message */ "EMPTY_CONTACTS_LABEL_LINE1" = "None of your contacts have Signal."; @@ -781,10 +781,10 @@ "EMPTY_INBOX_NEW_USER_TITLE" = "Start your first Signal conversation!"; /* Body text an existing user sees when viewing an empty inbox */ -"EMPTY_INBOX_TEXT" = "None. Zero. Zilch. Nada."; +"EMPTY_INBOX_TEXT" = "None. Zip. Zilch. Nada."; /* Header text an existing user sees when viewing an empty inbox */ -"EMPTY_INBOX_TITLE" = "Squeaky Freaking Clean."; +"EMPTY_INBOX_TITLE" = "Inbox Zero"; /* Indicates that user should confirm their 'two factor auth pin'. */ "ENABLE_2FA_VIEW_CONFIRM_PIN_INSTRUCTIONS" = "Confirm your PIN."; @@ -832,16 +832,16 @@ "ERROR_DESCRIPTION_CLIENT_SENDING_FAILURE" = "Failed to send message."; /* Error message indicating that message send is disabled due to prekey update failures */ -"ERROR_DESCRIPTION_MESSAGE_SEND_DISABLED_PREKEY_UPDATE_FAILURES" = "Unable to send due to stale privacy data."; +"ERROR_DESCRIPTION_MESSAGE_SEND_DISABLED_PREKEY_UPDATE_FAILURES" = "Unable to send due to stale prekey data."; /* Error message indicating that message send failed due to block list */ "ERROR_DESCRIPTION_MESSAGE_SEND_FAILED_DUE_TO_BLOCK_LIST" = "Failed to message user because you blocked them."; /* Error message indicating that message send failed due to failed attachment write */ -"ERROR_DESCRIPTION_MESSAGE_SEND_FAILED_DUE_TO_FAILED_ATTACHMENT_WRITE" = "Failed due to failed attachment write."; +"ERROR_DESCRIPTION_MESSAGE_SEND_FAILED_DUE_TO_FAILED_ATTACHMENT_WRITE" = "Failed to write and send attachment."; /* Generic error used whenever Signal can't contact the server */ -"ERROR_DESCRIPTION_NO_INTERNET" = "Signal was unable to connect to the internet. Please try from another WiFi network or use mobile data."; +"ERROR_DESCRIPTION_NO_INTERNET" = "Signal was unable to connect to the internet. Please try again."; /* Error indicating that an outgoing message had no valid recipients. */ "ERROR_DESCRIPTION_NO_VALID_RECIPIENTS" = "Message send failed due to a lack of valid recipients."; @@ -856,7 +856,7 @@ "ERROR_DESCRIPTION_RESPONSE_FAILED" = "Invalid response from service."; /* Error message when attempting to send message */ -"ERROR_DESCRIPTION_SENDING_UNAUTHORIZED" = "Your device is no longer registered for your phone number. You must remove and reinstall Signal."; +"ERROR_DESCRIPTION_SENDING_UNAUTHORIZED" = "This device is no longer registered with your phone number. Please reinstall Signal."; /* Generic server error */ "ERROR_DESCRIPTION_SERVER_FAILURE" = "Server Error. Please try again later."; @@ -868,10 +868,10 @@ "ERROR_DESCRIPTION_UNREGISTERED_RECIPIENT" = "Contact is not a Signal user."; /* Error message when unable to receive an attachment because the sending client is too old. */ -"ERROR_MESSAGE_ATTACHMENT_FROM_OLD_CLIENT" = "Failure: Ask sender to update Signal and resend."; +"ERROR_MESSAGE_ATTACHMENT_FROM_OLD_CLIENT" = "Attachment failure: Ask this contact to send their message again after updating to the latest version of Signal."; /* No comment provided by engineer. */ -"ERROR_MESSAGE_DUPLICATE_MESSAGE" = "Received a duplicated message."; +"ERROR_MESSAGE_DUPLICATE_MESSAGE" = "Received a duplicate message."; /* No comment provided by engineer. */ "ERROR_MESSAGE_INVALID_KEY_EXCEPTION" = "The recipient's key is not valid."; @@ -880,7 +880,7 @@ "ERROR_MESSAGE_INVALID_MESSAGE" = "Received message was out of sync."; /* No comment provided by engineer. */ -"ERROR_MESSAGE_INVALID_VERSION" = "Received a message not compatible with this version."; +"ERROR_MESSAGE_INVALID_VERSION" = "Received a message that is not compatible with this version."; /* No comment provided by engineer. */ "ERROR_MESSAGE_NO_SESSION" = "No available session for contact."; @@ -901,10 +901,10 @@ "ERROR_UNREGISTERED_USER_FORMAT" = "Unregistered User: %@"; /* 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 shortly."; +"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "Too many failures with this contact. Please try again later."; /* 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 resending."; +"FAILED_SENDING_BECAUSE_UNTRUSTED_IDENTITY_KEY" = "Your safety number with %@ has recently changed. You may wish to verify before sending this message again."; /* alert title */ "FAILED_VERIFICATION_TITLE" = "Failed to Verify Safety Number!"; @@ -922,10 +922,10 @@ "GALLERY_TILES_EMPTY_GALLERY" = "You don't have any media in this conversation."; /* Label indicating loading is in progress */ -"GALLERY_TILES_LOADING_MORE_RECENT_LABEL" = "Loading Newer Media..."; +"GALLERY_TILES_LOADING_MORE_RECENT_LABEL" = "Loading Newer Media…"; /* Label indicating loading is in progress */ -"GALLERY_TILES_LOADING_OLDER_LABEL" = "Loading Older Media..."; +"GALLERY_TILES_LOADING_OLDER_LABEL" = "Loading Older Media…"; /* A label for generic attachments. */ "GENERIC_ATTACHMENT_LABEL" = "Attachment"; @@ -979,7 +979,7 @@ "GROUP_MEMBERS_CALL" = "Call"; /* 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" = "Clear Verification for All"; /* Label for the 'reset all no-longer-verified group members' confirmation alert. */ "GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED_ALERT_MESSAGE" = "This will clear the verification of all group members whose safety numbers have changed since they were last verified."; @@ -1033,7 +1033,7 @@ "IN_CALL_CONNECTING" = "Connecting…"; /* Call setup status label */ -"IN_CALL_RECONNECTING" = "Reconnecting..."; +"IN_CALL_RECONNECTING" = "Reconnecting…"; /* Call setup status label */ "IN_CALL_RINGING" = "Ringing…"; @@ -1045,10 +1045,10 @@ "IN_CALL_TERMINATED" = "Call Ended."; /* Label reminding the user that they are in archive mode. */ -"INBOX_VIEW_ARCHIVE_MODE_REMINDER" = "These conversations are archived. They will appear in the inbox if new messages are received."; +"INBOX_VIEW_ARCHIVE_MODE_REMINDER" = "These conversations are archived and will only appear in the Inbox if new messages are received."; /* Multi-line label explaining how to show names instead of phone numbers in your inbox */ -"INBOX_VIEW_MISSING_CONTACTS_PERMISSION" = "To see the names of your contacts, update your system settings to allow contact access."; +"INBOX_VIEW_MISSING_CONTACTS_PERMISSION" = "You can enable contacts access in the iOS Settings app to see contact names in your Signal conversation list."; /* notification body */ "INCOMING_CALL" = "Incoming call"; @@ -1069,7 +1069,7 @@ "INVALID_AUDIO_FILE_ALERT_ERROR_MESSAGE" = "Invalid audio file."; /* Alert body when contacts disabled while trying to invite contacts to signal */ -"INVITE_FLOW_REQUIRES_CONTACT_ACCESS_BODY" = "To invite your contacts, you need to allow Signal access to your contacts in the Settings app."; +"INVITE_FLOW_REQUIRES_CONTACT_ACCESS_BODY" = "You can enable contacts access in the iOS Settings app to invite your friends to join Signal."; /* Alert title when contacts disabled while trying to invite contacts to signal */ "INVITE_FLOW_REQUIRES_CONTACT_ACCESS_TITLE" = "Allow Contact Access"; @@ -1084,7 +1084,7 @@ "INVITE_FRIENDS_PICKER_TITLE" = "Invite Friends"; /* Alert warning that sending an invite to multiple users will create a group message whose recipients will be able to see each other. */ -"INVITE_WARNING_MULTIPLE_INVITES_BY_TEXT" = "Inviting multiple users at the same time will send a group message whose recipients will be able to see each other."; +"INVITE_WARNING_MULTIPLE_INVITES_BY_TEXT" = "Inviting multiple users at the same time will start a group message and the recipients will be able to see each other."; /* Slider label embeds {{TIME_AMOUNT}}, e.g. '2 hours'. See *_TIME_AMOUNT strings for examples. */ "KEEP_MESSAGES_DURATION" = "Messages disappear after %@."; @@ -1099,13 +1099,13 @@ "LEAVE_GROUP_ACTION" = "Leave Group"; /* report an invalid linking code */ -"LINK_DEVICE_INVALID_CODE_BODY" = "This QR code is not valid, make sure you are scanning the QR code displayed on the device you want to link."; +"LINK_DEVICE_INVALID_CODE_BODY" = "This QR code is not valid. Please make sure you are scanning the QR code that is displayed on the device you want to link."; /* report an invalid linking code */ "LINK_DEVICE_INVALID_CODE_TITLE" = "Linking Device Failed"; /* confirm the users intent to link a new device */ -"LINK_DEVICE_PERMISSION_ALERT_BODY" = "This device will be able to see your groups and contacts, read all your messages, and send messages in your name."; +"LINK_DEVICE_PERMISSION_ALERT_BODY" = "This device will be able to see your groups and contacts, access your conversations, and send messages in your name."; /* confirm the users intent to link a new device */ "LINK_DEVICE_PERMISSION_ALERT_TITLE" = "Link this device?"; @@ -1114,7 +1114,7 @@ "LINK_DEVICE_RESTART" = "Retry"; /* QR Scanning screen instructions, placed alongside a camera view for scanning QR Codes */ -"LINK_DEVICE_SCANNING_INSTRUCTIONS" = "Scan the QR code displayed on the device to link."; +"LINK_DEVICE_SCANNING_INSTRUCTIONS" = "Scan the QR code that is displayed on the device you want to link."; /* Subheading for 'Link New Device' navigation */ "LINK_NEW_DEVICE_SUBTITLE" = "Scan QR Code"; @@ -1168,16 +1168,16 @@ "MESSAGE_ACTION_COPY_TEXT" = "Copy Message Text"; /* Action sheet button title */ -"MESSAGE_ACTION_DELETE_MESSAGE" = "Delete this Message"; +"MESSAGE_ACTION_DELETE_MESSAGE" = "Delete This Message"; /* Action sheet button subtitle */ -"MESSAGE_ACTION_DELETE_MESSAGE_SUBTITLE" = "It will be deleted on this device only"; +"MESSAGE_ACTION_DELETE_MESSAGE_SUBTITLE" = "It will only be deleted on this device."; /* Action sheet button title */ "MESSAGE_ACTION_DETAILS" = "More Info"; /* Action sheet button title */ -"MESSAGE_ACTION_REPLY" = "Reply to this Message"; +"MESSAGE_ACTION_REPLY" = "Reply to This Message"; /* Action sheet button title */ "MESSAGE_ACTION_SAVE_MEDIA" = "Save Media"; @@ -1258,7 +1258,7 @@ "MESSAGE_STATUS_SEND_FAILED" = "Send Failed"; /* message status while message is sending. */ -"MESSAGE_STATUS_SENDING" = "Sending..."; +"MESSAGE_STATUS_SENDING" = "Sending…"; /* status message for sent messages */ "MESSAGE_STATUS_SENT" = "Sent"; @@ -1270,7 +1270,7 @@ "MESSAGES_VIEW_1_MEMBER_NO_LONGER_VERIFIED_FORMAT" = "%@ is no longer marked as verified. Tap for options."; /* Indicates that this 1:1 conversation has been blocked. */ -"MESSAGES_VIEW_CONTACT_BLOCKED" = "You Blocked this User"; +"MESSAGES_VIEW_CONTACT_BLOCKED" = "You Blocked This User"; /* Indicates that this 1:1 conversation is no longer verified. Embeds {{user's name or phone number}}. */ "MESSAGES_VIEW_CONTACT_NO_LONGER_VERIFIED_FORMAT" = "%@ is no longer marked as verified. Tap for options."; @@ -1313,17 +1313,17 @@ /* Alert body Alert body when camera is not authorized */ -"MISSING_CAMERA_PERMISSION_MESSAGE" = "Signal needs access to your camera for video calls. You can grant this permission in the Settings app >> Privacy >> Camera >> Signal"; +"MISSING_CAMERA_PERMISSION_MESSAGE" = "You can enable camera access in the iOS Settings app to make video calls in Signal."; /* Alert title Alert title when camera is not authorized */ "MISSING_CAMERA_PERMISSION_TITLE" = "Signal needs to access your camera."; /* Alert body when user has previously denied media library access */ -"MISSING_MEDIA_LIBRARY_PERMISSION_MESSAGE" = "You can grant this permission in the Settings app."; +"MISSING_MEDIA_LIBRARY_PERMISSION_MESSAGE" = "You can enable this permission in the iOS Settings app."; /* Alert title when user has previously denied media library access */ -"MISSING_MEDIA_LIBRARY_PERMISSION_TITLE" = "Signal Requires Access to your Media Library to do this."; +"MISSING_MEDIA_LIBRARY_PERMISSION_TITLE" = "Signal requires access to your photos for this feature."; /* notification title. Embeds {{caller's name or phone number}} */ "MSGVIEW_MISSED_CALL_WITH_NAME" = "Missed call from %@."; @@ -1332,7 +1332,7 @@ "MULTIDEVICE_PAIRING_MAX_DESC" = "You cannot link any more devices."; /* alert body: cannot link - reached max linked devices */ -"MULTIDEVICE_PAIRING_MAX_RECOVERY" = "You have reached the maximum of devices you can currently link with your account. Please remove a device or try again to link it later."; +"MULTIDEVICE_PAIRING_MAX_RECOVERY" = "You have reached the maximum of devices you can currently link with your account. Please remove a device and try again."; /* An explanation of the consequences of muting a thread. */ "MUTE_BEHAVIOR_EXPLANATION" = "You will not receive notifications for muted conversations."; @@ -1341,7 +1341,7 @@ "NAVIGATION_ITEM_SKIP_BUTTON" = "Skip"; /* No comment provided by engineer. */ -"NETWORK_ERROR_RECOVERY" = "Please check you're online and try again."; +"NETWORK_ERROR_RECOVERY" = "Please check if you are online and try again."; /* Indicates to the user that censorship circumvention has been activated. */ "NETWORK_STATUS_CENSORSHIP_CIRCUMVENTION_ACTIVE" = "Censorship Circumvention: On"; @@ -1365,7 +1365,7 @@ "NEW_CONVERSATION_FIND_BY_PHONE_NUMBER" = "Find by Phone Number"; /* A label for the cell that lets you add a new non-contact member to a group. */ -"NEW_GROUP_ADD_NON_CONTACT" = "Add by phone number"; +"NEW_GROUP_ADD_NON_CONTACT" = "Add by Phone Number"; /* Action Sheet title prompting the user for a group avatar */ "NEW_GROUP_ADD_PHOTO_ACTION" = "Set Group Photo"; @@ -1536,7 +1536,7 @@ "PRIVACY_VERIFICATION_FAILED_WITH_OLD_REMOTE_VERSION" = "Your partner is running an old version of Signal. They need to update before you can verify."; /* alert body */ -"PRIVACY_VERIFICATION_FAILURE_INVALID_QRCODE" = "The scanned code doesn't look like a safety number code. Are you both on an up-to-date version of Signal?"; +"PRIVACY_VERIFICATION_FAILURE_INVALID_QRCODE" = "The scanned code doesn't look like a safety number. Are you both on an up-to-date version of Signal?"; /* Paragraph(s) shown alongside the safety number when verifying privacy with {{contact name}} */ "PRIVACY_VERIFICATION_INSTRUCTIONS" = "If you wish to verify the security of your end-to-end encryption with %@, compare the numbers above with the numbers on their device.\n\nAlternatively, you can scan the code on their phone, or ask them to scan your code."; @@ -1587,7 +1587,7 @@ "PROFILE_VIEW_SAVE_BUTTON" = "Save"; /* Alert title that indicates the user's profile view is being saved. */ -"PROFILE_VIEW_SAVING" = "Saving..."; +"PROFILE_VIEW_SAVING" = "Saving…"; /* Title for the profile view. */ "PROFILE_VIEW_TITLE" = "Profile"; @@ -1616,7 +1616,7 @@ /* message header label when quoting yourself */ "QUOTED_REPLY_AUTHOR_INDICATOR_YOURSELF" = "Replying to Yourself"; -/* Footer label that appears below quoted messages when the quoted content was note derived locally. When the local user doesn't have a copy of the message being quoted, e.g. if it had since been deleted, we instead show the content specified by the sender. */ +/* Footer label that appears below quoted messages when the quoted content was not derived locally. When the local user doesn't have a copy of the message being quoted, e.g. if it had since been deleted, we instead show the content specified by the sender. */ "QUOTED_REPLY_CONTENT_FROM_REMOTE_SOURCE" = "Original message not found."; /* Toast alert text shown when tapping on a quoted message which we cannot scroll to because the local copy of the message was since deleted. */ @@ -1707,7 +1707,7 @@ "REGISTRATION_PHONENUMBER_BUTTON" = "Phone Number"; /* No comment provided by engineer. */ -"REGISTRATION_RESTRICTED_MESSAGE" = "Someone's excited to send their first message! You need to register before performing this action."; +"REGISTRATION_RESTRICTED_MESSAGE" = "You need to register before you can send a message."; /* No comment provided by engineer. */ "REGISTRATION_TITLE_LABEL" = "Your Phone Number"; @@ -1851,7 +1851,7 @@ "SEND_INVITE_FAILURE" = "Sending invite failed, please try again later."; /* Alert body after invite succeeded */ -"SEND_INVITE_SUCCESS" = "You've invited your friend to use Signal!"; +"SEND_INVITE_SUCCESS" = "You invited your friend to use Signal!"; /* Text for button to send a Signal invite via SMS. %@ is placeholder for the recipient's phone number. */ "SEND_INVITE_VIA_SMS_BUTTON_FORMAT" = "Invite via SMS: %@"; @@ -1959,13 +1959,13 @@ "SETTINGS_CALLING_HIDES_IP_ADDRESS_PREFERENCE_TITLE" = "Always Relay Calls"; /* User settings section footer, a detailed explanation */ -"SETTINGS_CALLING_HIDES_IP_ADDRESS_PREFERENCE_TITLE_DETAIL" = "Relay all calls through the Signal server to avoid revealing your IP address to your contact. Enabling will reduce call quality."; +"SETTINGS_CALLING_HIDES_IP_ADDRESS_PREFERENCE_TITLE_DETAIL" = "Relay all calls through a Signal server to avoid revealing your IP address to your contact. Enabling will reduce call quality."; /* No comment provided by engineer. */ "SETTINGS_CLEAR_HISTORY" = "Clear Conversation History"; /* No comment provided by engineer. */ -"SETTINGS_COPYRIGHT" = "Copyright Open Whisper Systems \n Licensed under the GPLv3"; +"SETTINGS_COPYRIGHT" = "Copyright Signal Messenger \n Licensed under the GPLv3"; /* No comment provided by engineer. */ "SETTINGS_DELETE_ACCOUNT_BUTTON" = "Delete Account"; @@ -1974,7 +1974,7 @@ "SETTINGS_DELETE_DATA_BUTTON" = "Delete All Data"; /* Alert message before user confirms clearing history */ -"SETTINGS_DELETE_HISTORYLOG_CONFIRMATION" = "Are you sure you want to delete all your history (messages, attachments, call history …) ? This action cannot be reverted."; +"SETTINGS_DELETE_HISTORYLOG_CONFIRMATION" = "Are you sure you want to delete all history (messages, attachments, calls, etc.)? This action cannot be reverted."; /* Confirmation text for button which deletes all message, calling, attachments, etc. */ "SETTINGS_DELETE_HISTORYLOG_CONFIRMATION_BUTTON" = "Delete Everything"; @@ -2100,7 +2100,7 @@ "SHARE_EXTENSION_FAILED_SENDING_BECAUSE_UNTRUSTED_IDENTITY_FORMAT" = "Your safety number with %@ has recently changed. You may wish to verify it in the main app before resending."; /* Indicates that the share extension is still loading. */ -"SHARE_EXTENSION_LOADING" = "Loading..."; +"SHARE_EXTENSION_LOADING" = "Loading…"; /* Message indicating that the share extension cannot be used until the user has registered in the main app. */ "SHARE_EXTENSION_NOT_REGISTERED_MESSAGE" = "Launch the Signal app to register."; @@ -2217,7 +2217,7 @@ "UNLINK_ACTION" = "Unlink"; /* Alert message to confirm unlinking a device */ -"UNLINK_CONFIRMATION_ALERT_BODY" = "By unlinking this device, it will no longer be able to send or receive messages."; +"UNLINK_CONFIRMATION_ALERT_BODY" = "This device will no longer be able to send or receive messages if it is unlinked."; /* Alert title for confirming device deletion */ "UNLINK_CONFIRMATION_ALERT_TITLE" = "Unlink \"%@\"?"; @@ -2241,7 +2241,7 @@ "UPDATE_GROUP_CANT_REMOVE_MEMBERS_ALERT_MESSAGE" = "You cannot remove group members. They will either have to leave, or you can create a new group without this member."; /* Title for alert indicating that group members can't be removed. */ -"UPDATE_GROUP_CANT_REMOVE_MEMBERS_ALERT_TITLE" = "Not Allowed"; +"UPDATE_GROUP_CANT_REMOVE_MEMBERS_ALERT_TITLE" = "Not Supported"; /* Description of CallKit to upgrading (existing) users */ "UPGRADE_EXPERIENCE_CALLKIT_DESCRIPTION" = "Answering calls from your lock screen is easy with iOS call integration. We anonymize your caller by default, so it's private too."; @@ -2286,13 +2286,13 @@ "UPGRADE_EXPERIENCE_VIDEO_TITLE" = "Hello Secure Video Calls!"; /* Message for the alert indicating that user should upgrade iOS. */ -"UPGRADE_IOS_ALERT_MESSAGE" = "Signal requires iOS 9 or later. Please upgrade iOS in Settings app >> General >> Software Update."; +"UPGRADE_IOS_ALERT_MESSAGE" = "Signal requires iOS 9 or later. Please use the Software Update feature in the iOS Settings app."; /* Title for the alert indicating that user should upgrade iOS. */ "UPGRADE_IOS_ALERT_TITLE" = "Upgrade iOS"; /* No comment provided by engineer. */ -"Upgrading Signal ..." = "Upgrading Signal ..."; +"Upgrading Signal ..." = "Upgrading Signal…"; /* button text for back button on verification view */ "VERIFICATION_BACK_BUTTON" = "Back"; diff --git a/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift b/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift index 81e279758..036241a5d 100644 --- a/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift +++ b/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift @@ -568,7 +568,7 @@ class CaptioningToolbar: UIView, UITextViewDelegate { // Length Limit Label shown when the user inputs too long of a message lengthLimitLabel.textColor = .white - lengthLimitLabel.text = NSLocalizedString("ATTACHMENT_APPROVAL_CAPTION_LENGTH_LIMIT_REACHED", comment: "One line label indicating the user can add no more text to the attachment caption.") + lengthLimitLabel.text = NSLocalizedString("ATTACHMENT_APPROVAL_CAPTION_LENGTH_LIMIT_REACHED", comment: "One-line label indicating the user can add no more text to the attachment caption.") lengthLimitLabel.textAlignment = .center // Add shadow in case overlayed on white content