diff --git a/Signal/src/audio/AppAudioManager.m b/Signal/src/audio/AppAudioManager.m index 90f5635e3f..d901e7616e 100644 --- a/Signal/src/audio/AppAudioManager.m +++ b/Signal/src/audio/AppAudioManager.m @@ -154,12 +154,12 @@ AppAudioManager *sharedAppAudioManager; - (void)requestRequiredPermissionsIfNeededWithCompletion:(PermissionBlock)permissionBlock incoming:(BOOL)isIncoming { [AVAudioSession.sharedInstance requestRecordPermission:^(BOOL granted) { if (!granted) { - UIAlertView *alertView = - [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ACTION_REQUIRED_TITLE", @"") - message:NSLocalizedString(@"AUDIO_PERMISSION_MESSAGE", @"") - delegate:nil - cancelButtonTitle:NSLocalizedString(@"TXT_CANCEL_TITLE", @"") - otherButtonTitles:NSLocalizedString(@"SETTINGS_NAV_BAR_TITLE", nil), nil]; + UIAlertView *alertView = [[UIAlertView alloc] + initWithTitle:NSLocalizedString(@"ACTION_REQUIRED_TITLE", @"") + message:NSLocalizedString(@"AUDIO_PERMISSION_MESSAGE", @"") + delegate:nil + cancelButtonTitle:NSLocalizedString(@"TXT_CANCEL_TITLE", @"") + otherButtonTitles:NSLocalizedString(@"SETTINGS_NAV_BAR_TITLE", @"Title for settings activity"), nil]; [alertView setDelegate:self]; diff --git a/Signal/src/environment/LocalizableText.h b/Signal/src/environment/LocalizableText.h index f8a6f5c8d9..59c6ea8700 100644 --- a/Signal/src/environment/LocalizableText.h +++ b/Signal/src/environment/LocalizableText.h @@ -2,98 +2,5 @@ #import "CallProgress.h" #import "CallTermination.h" -#define TXT_IN_CALL_CONNECTING NSLocalizedString(@"IN_CALL_CONNECTING", @"") -#define TXT_IN_CALL_RINGING NSLocalizedString(@"IN_CALL_RINGING", @"") -#define TXT_IN_CALL_SECURING NSLocalizedString(@"IN_CALL_SECURING", @"") -#define TXT_IN_CALL_TALKING NSLocalizedString(@"IN_CALL_TALKING", @"") -#define TXT_IN_CALL_TERMINATED NSLocalizedString(@"IN_CALL_TERMINATED", @"") - -#define TXT_END_CALL_LOGIN_FAILED NSLocalizedString(@"END_CALL_LOGIN_FAILED", @"") -#define TXT_END_CALL_STALE_SESSION NSLocalizedString(@"END_CALL_STALE_SESSION", @"") -#define TXT_END_CALL_NO_SUCH_USER NSLocalizedString(@"END_CALL_NO_SUCH_USER", @"") -#define TXT_END_CALL_RESPONDER_IS_BUSY NSLocalizedString(@"END_CALL_RESPONDER_IS_BUSY", @"") -#define TXT_END_CALL_REJECTED_LOCAL NSLocalizedString(@"END_CALL_REJECTED_LOCAL", @"") -#define TXT_END_CALL_REJECTED_REMOTE NSLocalizedString(@"END_CALL_REJECTED_REMOTE", @"") -#define TXT_END_CALL_RECIPIENT_UNAVAILABLE NSLocalizedString(@"END_CALL_RECIPIENT_UNAVAILABLE", @"") -#define TXT_END_CALL_UNCATEGORIZED_FAILURE NSLocalizedString(@"END_CALL_UNCATEGORIZED_FAILURE", @"") -#define TXT_END_CALL_BAD_INTERACTION_WITH_SERVER NSLocalizedString(@"END_CALL_BAD_INTERACTION_WITH_SERVER", @"") -#define TXT_END_CALL_HANDSHAKE_FAILED NSLocalizedString(@"END_CALL_HANDSHAKE_FAILED", @"") -#define TXT_END_CALL_HANGUP_REMOTE NSLocalizedString(@"END_CALL_HANGUP_REMOTE", @"") -#define TXT_END_CALL_HANGUP_LOCAL NSLocalizedString(@"END_CALL_HANGUP_LOCAL", @"") -#define TXT_END_CALL_REPLACED_BY_NEXT NSLocalizedString(@"END_CALL_REPLACED_BY_NEXT", @"") -#define TXT_END_CALL_MESSAGE_FROM_SERVER_PREFIX NSLocalizedString(@"END_CALL_MESSAGE_FROM_SERVER_PREFIX", @"") - -#pragma mark - View Controller Titles -#define SETTINGS_NAV_BAR_TITLE NSLocalizedString(@"SETTINGS_NAV_BAR_TITLE", @"Title for recent calls view controller") - -#define DIALER_CALL_BUTTON_TITLE NSLocalizedString(@"DIALER_CALL_BUTTON_TITLE", @"") - -#pragma mark - General Purpose - -#define TXT_CANCEL_TITLE NSLocalizedString(@"TXT_CANCEL_TITLE", @"") -#define TXT_SEARCH_PLACEHOLDER_TEXT NSLocalizedString(@"TXT_SEARCH_PLACEHOLDER_TEXT", @"") - -#pragma mark - Inbox View - -#define INBOX_VIEW_TUTORIAL_LABEL_TOP NSLocalizedString(@"INBOX_VIEW_TUTORIAL_LABEL_TOP", @"") -#define INBOX_VIEW_TUTORIAL_LABEL_MIDDLE NSLocalizedString(@"INBOX_VIEW_TUTORIAL_LABEL_MIDDLE", @"") - -#define TABLE_SECTION_TITLE_REGISTERED NSLocalizedString(@"TABLE_SECTION_TITLE_REGISTERED", @"") -#define TABLE_SECTION_TITLE_UNREGISTERED NSLocalizedString(@"TABLE_SECTION_TITLE_UNREGISTERED", @"") - -#pragma mark - Home View footer cell - -#define HOME_FOOTER_FIRST_MESSAGE_CALLS_UNSORTED NSLocalizedString(@"HOME_FOOTER_FIRST_MESSAGE_CALLS_UNSORTED", @"") -#define HOME_FOOTER_SECOND_MESSAGE_CALLS_UNSORTED NSLocalizedString(@"HOME_FOOTER_SECOND_MESSAGE_CALLS_UNSORTED", @"") -#define HOME_FOOTER_SECOND_MESSAGE_CALL_UNSORTED NSLocalizedString(@"HOME_FOOTER_SECOND_MESSAGE_CALL_UNSORTED", @"") -#define HOME_FOOTER_FIRST_MESSAGE_CALLS_NIL NSLocalizedString(@"HOME_FOOTER_FIRST_MESSAGE_CALLS_NIL", @"") -#define HOME_FOOTER_SECOND_MESSAGE_CALLS_NIL NSLocalizedString(@"HOME_FOOTER_SECOND_MESSAGE_CALLS_NIL", @"") - -#pragma mark - Settings View - -#define SETTINGS_NUMBER_PREFIX NSLocalizedString(@"SETTINGS_NUMBER_PREFIX", @"") -#define SETTINGS_LOG_CLEAR_TITLE NSLocalizedString(@"SETTINGS_LOG_CLEAR_TITLE", @"") -#define SETTINGS_LOG_CLEAR_MESSAGE NSLocalizedString(@"SETTINGS_LOG_CLEAR_MESSAGE", @"") -#define SETTINGS_LOG_CLEAR_CONFIRM NSLocalizedString(@"OK", @"") - -#define SETTINGS_SENDLOG NSLocalizedString(@"SETTINGS_SENDLOG", @"") - -#define SETTINGS_SENDLOG_WAITING NSLocalizedString(@"SETTINGS_SENDLOGS_WAITING", @"") -#define SETTINGS_SENDLOG_ALERT_TITLE NSLocalizedString(@"SETTINGS_SENDLOG", @"") - -#pragma mark - Registration - -#define REGISTER_CC_ERR_ALERT_VIEW_TITLE NSLocalizedString(@"REGISTER_CC_ERR_ALERT_VIEW_TITLE", @"") -#define REGISTER_CC_ERR_ALERT_VIEW_MESSAGE NSLocalizedString(@"REGISTER_CC_ERR_ALERT_VIEW_MESSAGE", @"") -#define REGISTER_CC_ERR_ALERT_VIEW_DISMISS NSLocalizedString(@"OK", @"") - -#define END_CALL_BUTTON_TITLE NSLocalizedString(@"END_CALL_BUTTON_TITLE", @"") -#define ANSWER_CALL_BUTTON_TITLE NSLocalizedString(@"ANSWER_CALL_BUTTON_TITLE", @"") -#define REJECT_CALL_BUTTON_TITLE NSLocalizedString(@"REJECT_CALL_BUTTON_TITLE", @"") - -#define REGISTER_ERROR_ALERT_VIEW_TITLE NSLocalizedString(@"REGISTRATION_ERROR", @"") -#define REGISTER_ERROR_ALERT_VIEW_BODY NSLocalizedString(@"REGISTRATION_BODY", @"") -#define REGISTER_ERROR_ALERT_VIEW_DISMISS NSLocalizedString(@"OK", @"") - -#define REGISTER_CHALLENGE_ALERT_VIEW_TITLE NSLocalizedString(@"REGISTER_CHALLENGE_ALERT_VIEW_TITLE", @"") -#define REGISTER_CHALLENGE_ALERT_VIEW_BODY NSLocalizedString(@"REGISTER_CHALLENGE_ALERT_VIEW_BODY", @"") - -#pragma mark - Invite Users - -#define INVITE_USERS_ACTION_SHEET_TITLE NSLocalizedString(@"INVITE_USERS_ACTION_SHEET_TITLE", @""); -#define INVITE_USERS_MESSAGE NSLocalizedString(@"INVITE_USERS_MESSAGE", @""); - -#pragma mark - Invite User Modal - -#define INVITE_USER_MODAL_TITLE NSLocalizedString(@"INVITE_USER_MODAL_TITLE", @"") -#define INVITE_USER_MODAL_BUTTON_CANCEL NSLocalizedString(@"INVITE_USER_MODAL_BUTTON_CANCEL", @"") -#define INVITE_USER_MODAL_BUTTON_INVITE NSLocalizedString(@"INVITE_USER_MODAL_BUTTON_INVITE", @"") -#define INVITE_USER_MODAL_TEXT NSLocalizedString(@"INVITE_USER_MODAL_TEXT", @"") - -#pragma mark - Contact Intersection - -#define TIMEOUT NSLocalizedString(@"ERROR_WAS_DETECTED_TITLE", @"") -#define TIMEOUT_CONTACTS_DETAIL NSLocalizedString(@"TIMEOUT_CONTACTS_DETAIL", @"") - NSDictionary *makeCallProgressLocalizedTextDictionary(void); NSDictionary *makeCallTerminationLocalizedTextDictionary(void); diff --git a/Signal/src/environment/LocalizableText.m b/Signal/src/environment/LocalizableText.m index 6b37eddf71..28e542f67c 100644 --- a/Signal/src/environment/LocalizableText.m +++ b/Signal/src/environment/LocalizableText.m @@ -11,28 +11,29 @@ CallProgress *cp(enum CallProgressType t) { NSDictionary *makeCallProgressLocalizedTextDictionary(void) { return @{ - cp(CallProgressType_Connecting) : TXT_IN_CALL_CONNECTING, - cp(CallProgressType_Ringing) : TXT_IN_CALL_RINGING, - cp(CallProgressType_Securing) : TXT_IN_CALL_SECURING, - cp(CallProgressType_Talking) : TXT_IN_CALL_TALKING, - cp(CallProgressType_Terminated) : TXT_IN_CALL_TERMINATED + cp(CallProgressType_Connecting) : NSLocalizedString(@"IN_CALL_CONNECTING", @"Call setup status label"), + cp(CallProgressType_Ringing) : NSLocalizedString(@"IN_CALL_RINGING", @"Call setup status label"), + cp(CallProgressType_Securing) : NSLocalizedString(@"IN_CALL_SECURING", @"Call setup status label"), + cp(CallProgressType_Talking) : NSLocalizedString(@"IN_CALL_TALKING", @"Call setup status label"), + cp(CallProgressType_Terminated) : NSLocalizedString(@"IN_CALL_TERMINATED", @"Call setup status label") }; } NSDictionary *makeCallTerminationLocalizedTextDictionary(void) { return @{ - ct(CallTerminationType_NoSuchUser) : TXT_END_CALL_NO_SUCH_USER, - ct(CallTerminationType_LoginFailed) : TXT_END_CALL_LOGIN_FAILED, - ct(CallTerminationType_ResponderIsBusy) : TXT_END_CALL_RESPONDER_IS_BUSY, - ct(CallTerminationType_StaleSession) : TXT_END_CALL_STALE_SESSION, - ct(CallTerminationType_UncategorizedFailure) : TXT_END_CALL_UNCATEGORIZED_FAILURE, - ct(CallTerminationType_ReplacedByNext) : TXT_END_CALL_REPLACED_BY_NEXT, - ct(CallTerminationType_RecipientUnavailable) : TXT_END_CALL_RECIPIENT_UNAVAILABLE, - ct(CallTerminationType_BadInteractionWithServer) : TXT_END_CALL_BAD_INTERACTION_WITH_SERVER, - ct(CallTerminationType_HandshakeFailed) : TXT_END_CALL_HANDSHAKE_FAILED, - ct(CallTerminationType_HangupRemote) : TXT_END_CALL_HANGUP_REMOTE, - ct(CallTerminationType_HangupLocal) : TXT_END_CALL_HANGUP_LOCAL, - ct(CallTerminationType_ServerMessage) : TXT_END_CALL_MESSAGE_FROM_SERVER_PREFIX, - ct(CallTerminationType_RejectedLocal) : TXT_END_CALL_REJECTED_LOCAL, - ct(CallTerminationType_RejectedRemote) : TXT_END_CALL_REJECTED_REMOTE + ct(CallTerminationType_NoSuchUser) : NSLocalizedString(@"END_CALL_NO_SUCH_USER", @""), + ct(CallTerminationType_LoginFailed) : NSLocalizedString(@"END_CALL_LOGIN_FAILED", @""), + ct(CallTerminationType_ResponderIsBusy) : NSLocalizedString(@"END_CALL_RESPONDER_IS_BUSY", @""), + ct(CallTerminationType_StaleSession) : NSLocalizedString(@"END_CALL_STALE_SESSION", @""), + ct(CallTerminationType_UncategorizedFailure) : NSLocalizedString(@"END_CALL_UNCATEGORIZED_FAILURE", @""), + ct(CallTerminationType_ReplacedByNext) : NSLocalizedString(@"END_CALL_REPLACED_BY_NEXT", @""), + ct(CallTerminationType_RecipientUnavailable) : NSLocalizedString(@"END_CALL_RECIPIENT_UNAVAILABLE", @""), + ct(CallTerminationType_BadInteractionWithServer) : + NSLocalizedString(@"END_CALL_BAD_INTERACTION_WITH_SERVER", @""), + ct(CallTerminationType_HandshakeFailed) : NSLocalizedString(@"END_CALL_HANDSHAKE_FAILED", @""), + ct(CallTerminationType_HangupRemote) : NSLocalizedString(@"END_CALL_HANGUP_REMOTE", @""), + ct(CallTerminationType_HangupLocal) : NSLocalizedString(@"END_CALL_HANGUP_LOCAL", @""), + ct(CallTerminationType_ServerMessage) : NSLocalizedString(@"END_CALL_MESSAGE_FROM_SERVER_PREFIX", @""), + ct(CallTerminationType_RejectedLocal) : NSLocalizedString(@"END_CALL_REJECTED_LOCAL", @""), + ct(CallTerminationType_RejectedRemote) : NSLocalizedString(@"END_CALL_REJECTED_REMOTE", @"") }; } diff --git a/Signal/src/view controllers/CodeVerificationViewController.m b/Signal/src/view controllers/CodeVerificationViewController.m index 24e7314bac..5d40bcbbff 100644 --- a/Signal/src/view controllers/CodeVerificationViewController.m +++ b/Signal/src/view controllers/CodeVerificationViewController.m @@ -238,7 +238,7 @@ UIAlertView *registrationErrorAV = [[UIAlertView alloc] initWithTitle:registrationError.localizedDescription message:registrationError.localizedRecoverySuggestion delegate:nil - cancelButtonTitle:REGISTER_ERROR_ALERT_VIEW_DISMISS + cancelButtonTitle:NSLocalizedString(@"OK", @"") otherButtonTitles:nil, nil]; [registrationErrorAV show]; diff --git a/Signal/src/view controllers/InCallViewController.m b/Signal/src/view controllers/InCallViewController.m index b477c9f3bd..5d10fc1dca 100644 --- a/Signal/src/view controllers/InCallViewController.m +++ b/Signal/src/view controllers/InCallViewController.m @@ -110,9 +110,9 @@ } - (void)localizeButtons { - [_endButton setTitle:END_CALL_BUTTON_TITLE forState:UIControlStateNormal]; - [_answerButton setTitle:ANSWER_CALL_BUTTON_TITLE forState:UIControlStateNormal]; - [_rejectButton setTitle:REJECT_CALL_BUTTON_TITLE forState:UIControlStateNormal]; + [_endButton setTitle:NSLocalizedString(@"END_CALL_BUTTON_TITLE", @"") forState:UIControlStateNormal]; + [_answerButton setTitle:NSLocalizedString(@"ANSWER_CALL_BUTTON_TITLE", @"") forState:UIControlStateNormal]; + [_rejectButton setTitle:NSLocalizedString(@"REJECT_CALL_BUTTON_TITLE", @"") forState:UIControlStateNormal]; } - (void)setPotentiallyKnownContact:(Contact *)potentiallyKnownContact { diff --git a/Signal/src/view controllers/MessageComposeTableViewController.m b/Signal/src/view controllers/MessageComposeTableViewController.m index eb367b4b77..e2eaa3ac05 100644 --- a/Signal/src/view controllers/MessageComposeTableViewController.m +++ b/Signal/src/view controllers/MessageComposeTableViewController.m @@ -474,14 +474,15 @@ } failure:^(NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ - UIAlertView *alert = [[UIAlertView alloc] initWithTitle:TIMEOUT - message:TIMEOUT_CONTACTS_DETAIL - delegate:nil - cancelButtonTitle:NSLocalizedString(@"OK", @"") - otherButtonTitles:nil]; + UIAlertView *alert = + [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ERROR_WAS_DETECTED_TITLE", @"") + message:NSLocalizedString(@"TIMEOUT_CONTACTS_DETAIL", @"") + delegate:nil + cancelButtonTitle:NSLocalizedString(@"OK", @"") + otherButtonTitles:nil]; [alert show]; [self updateAfterRefreshTry]; - }); + }); }]; if ([self.contacts count] == 0) { diff --git a/Signal/src/view controllers/RegistrationViewController.m b/Signal/src/view controllers/RegistrationViewController.m index 02b14894f6..cbcf1bb5a7 100644 --- a/Signal/src/view controllers/RegistrationViewController.m +++ b/Signal/src/view controllers/RegistrationViewController.m @@ -108,11 +108,13 @@ static NSString *const kCodeSentSegue = @"codeSent"; } - (void)presentInvalidCountryCodeError { - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:REGISTER_CC_ERR_ALERT_VIEW_TITLE - message:REGISTER_CC_ERR_ALERT_VIEW_MESSAGE - delegate:nil - cancelButtonTitle:REGISTER_CC_ERR_ALERT_VIEW_DISMISS - otherButtonTitles:nil]; + UIAlertView *alertView = + [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"REGISTER_CC_ERR_ALERT_VIEW_TITLE", @"") + message:NSLocalizedString(@"REGISTER_CC_ERR_ALERT_VIEW_MESSAGE", @"") + delegate:nil + cancelButtonTitle:NSLocalizedString(@"DISMISS_BUTTON_TEXT", + @"Generic short text for button to dismiss a dialog") + otherButtonTitles:nil]; [alertView show]; } diff --git a/Signal/src/view controllers/SettingsTableViewController.m b/Signal/src/view controllers/SettingsTableViewController.m index 6375e39b87..689e187605 100644 --- a/Signal/src/view controllers/SettingsTableViewController.m +++ b/Signal/src/view controllers/SettingsTableViewController.m @@ -73,7 +73,7 @@ typedef enum { [self initializeObserver]; [TSSocketManager sendNotification]; - self.title = NSLocalizedString(@"SETTINGS_NAV_BAR_TITLE", @""); + self.title = NSLocalizedString(@"SETTINGS_NAV_BAR_TITLE", @"Title for settings activity"); self.networkStatusHeader.text = NSLocalizedString(@"NETWORK_STATUS_HEADER", @""); self.privacyLabel.text = NSLocalizedString(@"SETTINGS_PRIVACY_TITLE", @""); self.advancedLabel.text = NSLocalizedString(@"SETTINGS_ADVANCED_TITLE", @""); diff --git a/Signal/translations/ar.lproj/Localizable.strings b/Signal/translations/ar.lproj/Localizable.strings index 5bfecdaf24..245efe5c71 100644 Binary files a/Signal/translations/ar.lproj/Localizable.strings and b/Signal/translations/ar.lproj/Localizable.strings differ diff --git a/Signal/translations/az_AZ.lproj/Localizable.strings b/Signal/translations/az_AZ.lproj/Localizable.strings index bc2b8ae000..7d756164bb 100644 Binary files a/Signal/translations/az_AZ.lproj/Localizable.strings and b/Signal/translations/az_AZ.lproj/Localizable.strings differ diff --git a/Signal/translations/bg.lproj/Localizable.strings b/Signal/translations/bg.lproj/Localizable.strings index 25133ed2a4..b6ef323073 100644 Binary files a/Signal/translations/bg.lproj/Localizable.strings and b/Signal/translations/bg.lproj/Localizable.strings differ diff --git a/Signal/translations/bin/auto-genstrings b/Signal/translations/bin/auto-genstrings new file mode 100755 index 0000000000..2800914fb6 --- /dev/null +++ b/Signal/translations/bin/auto-genstrings @@ -0,0 +1,33 @@ +#!/bin/bash +TARGETS="Signal/src Pods/SignalServiceKit Pods/JSQMessagesViewController" +TMP="$(mktemp -d)" +STRINGFILE="Signal/translations/en.lproj/Localizable.strings" + +# Make sure we are in the right place +if [ ! -d "Signal/src" ]; then + echo "Please run this tool from the repository's base directory" + exit 1 +fi + +# Search directories for .m & .h files and collect string definitions with genstrings +find $TARGETS -name "*.m" -print0 -name "*.h" -print0 | xargs -0 genstrings -o $TMP + +# We have to convert the old and new .strings files to UTF-8 in order to deal with them +OLDUTF8=$(iconv -f UTF-16 -t UTF-8 $STRINGFILE) +NEWUTF8=$(iconv -f UTF-16 -t UTF-8 $TMP/Localizable.strings) + +# Let's merge the old with the new .strings file: +# 1. Select old string definition lines +# 2. Setup field separators +# 3. Read old string definitions as associative array +# 4. In new file, if possible, insert old definition +# 5. Add separator and semicolon only for string definition lines +# 6. Convert output back to UTF-16 to final location +echo "$OLDUTF8" | grep -Eo '^".*"' | \ + awk 'BEGIN {FS = "[ ]*=[ ]*"; OFS = ""} \ + NR == FNR {a[$1] = $2; next} \ + {$2 = ($1 in a ? a[$1] : $2); \ + if($2 ~ /"[;]*$/){$2 = " = "$2}; \ + if($2 ~ /"$/){$2 = $2";"}; \ + print}' - <(echo "$NEWUTF8") | \ + iconv -f UTF-8 -t UTF-16 > $STRINGFILE diff --git a/Signal/translations/bs.lproj/Localizable.strings b/Signal/translations/bs.lproj/Localizable.strings index 0db3a97f90..3ff5b240f5 100644 Binary files a/Signal/translations/bs.lproj/Localizable.strings and b/Signal/translations/bs.lproj/Localizable.strings differ diff --git a/Signal/translations/ca.lproj/Localizable.strings b/Signal/translations/ca.lproj/Localizable.strings index f02886d097..033c2699d8 100644 Binary files a/Signal/translations/ca.lproj/Localizable.strings and b/Signal/translations/ca.lproj/Localizable.strings differ diff --git a/Signal/translations/cs.lproj/Localizable.strings b/Signal/translations/cs.lproj/Localizable.strings index ec004de51a..13207e53c8 100644 Binary files a/Signal/translations/cs.lproj/Localizable.strings and b/Signal/translations/cs.lproj/Localizable.strings differ diff --git a/Signal/translations/da.lproj/Localizable.strings b/Signal/translations/da.lproj/Localizable.strings index 070b7871b6..dd82a5d91b 100644 Binary files a/Signal/translations/da.lproj/Localizable.strings and b/Signal/translations/da.lproj/Localizable.strings differ diff --git a/Signal/translations/de.lproj/Localizable.strings b/Signal/translations/de.lproj/Localizable.strings index 30f70e9bd0..19210befcc 100644 Binary files a/Signal/translations/de.lproj/Localizable.strings and b/Signal/translations/de.lproj/Localizable.strings differ diff --git a/Signal/translations/el_GR.lproj/Localizable.strings b/Signal/translations/el_GR.lproj/Localizable.strings index daa7bccae1..2dc09459cd 100644 Binary files a/Signal/translations/el_GR.lproj/Localizable.strings and b/Signal/translations/el_GR.lproj/Localizable.strings differ diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index 0a80e8e1c2..e02120f319 100644 Binary files a/Signal/translations/en.lproj/Localizable.strings and b/Signal/translations/en.lproj/Localizable.strings differ diff --git a/Signal/translations/es.lproj/Localizable.strings b/Signal/translations/es.lproj/Localizable.strings index 532701fe31..0722d28dd5 100644 Binary files a/Signal/translations/es.lproj/Localizable.strings and b/Signal/translations/es.lproj/Localizable.strings differ diff --git a/Signal/translations/fa.lproj/Localizable.strings b/Signal/translations/fa.lproj/Localizable.strings index 058ca2033e..fe283a6750 100644 Binary files a/Signal/translations/fa.lproj/Localizable.strings and b/Signal/translations/fa.lproj/Localizable.strings differ diff --git a/Signal/translations/fi.lproj/Localizable.strings b/Signal/translations/fi.lproj/Localizable.strings index 55444ecd59..0bd35e616c 100644 Binary files a/Signal/translations/fi.lproj/Localizable.strings and b/Signal/translations/fi.lproj/Localizable.strings differ diff --git a/Signal/translations/fil.lproj/Localizable.strings b/Signal/translations/fil.lproj/Localizable.strings index f3d32f55b6..6bfc34d477 100644 Binary files a/Signal/translations/fil.lproj/Localizable.strings and b/Signal/translations/fil.lproj/Localizable.strings differ diff --git a/Signal/translations/fr.lproj/Localizable.strings b/Signal/translations/fr.lproj/Localizable.strings index ae438e4533..1a4237a6fa 100644 Binary files a/Signal/translations/fr.lproj/Localizable.strings and b/Signal/translations/fr.lproj/Localizable.strings differ diff --git a/Signal/translations/gl.lproj/Localizable.strings b/Signal/translations/gl.lproj/Localizable.strings index 77bd107535..d7f38aa8eb 100644 Binary files a/Signal/translations/gl.lproj/Localizable.strings and b/Signal/translations/gl.lproj/Localizable.strings differ diff --git a/Signal/translations/he.lproj/Localizable.strings b/Signal/translations/he.lproj/Localizable.strings index 7b5e9b609e..9c65cf0135 100644 Binary files a/Signal/translations/he.lproj/Localizable.strings and b/Signal/translations/he.lproj/Localizable.strings differ diff --git a/Signal/translations/hr.lproj/Localizable.strings b/Signal/translations/hr.lproj/Localizable.strings index ad6f53a989..3f6d8bbfe2 100644 Binary files a/Signal/translations/hr.lproj/Localizable.strings and b/Signal/translations/hr.lproj/Localizable.strings differ diff --git a/Signal/translations/hu.lproj/Localizable.strings b/Signal/translations/hu.lproj/Localizable.strings index 329da5d21c..9161024b6e 100644 Binary files a/Signal/translations/hu.lproj/Localizable.strings and b/Signal/translations/hu.lproj/Localizable.strings differ diff --git a/Signal/translations/id.lproj/Localizable.strings b/Signal/translations/id.lproj/Localizable.strings index f2bbd7ac1f..b90254d935 100644 Binary files a/Signal/translations/id.lproj/Localizable.strings and b/Signal/translations/id.lproj/Localizable.strings differ diff --git a/Signal/translations/it_IT.lproj/Localizable.strings b/Signal/translations/it_IT.lproj/Localizable.strings index 75c37922d7..42f204882d 100644 Binary files a/Signal/translations/it_IT.lproj/Localizable.strings and b/Signal/translations/it_IT.lproj/Localizable.strings differ diff --git a/Signal/translations/ja_JP.lproj/Localizable.strings b/Signal/translations/ja_JP.lproj/Localizable.strings index eebbf4f5f9..de3ec3b67c 100644 Binary files a/Signal/translations/ja_JP.lproj/Localizable.strings and b/Signal/translations/ja_JP.lproj/Localizable.strings differ diff --git a/Signal/translations/ko_KR.lproj/Localizable.strings b/Signal/translations/ko_KR.lproj/Localizable.strings index 8ff9cbeb72..c9a99e5285 100644 Binary files a/Signal/translations/ko_KR.lproj/Localizable.strings and b/Signal/translations/ko_KR.lproj/Localizable.strings differ diff --git a/Signal/translations/lv.lproj/Localizable.strings b/Signal/translations/lv.lproj/Localizable.strings index c2a536298d..93ad5ec86a 100644 Binary files a/Signal/translations/lv.lproj/Localizable.strings and b/Signal/translations/lv.lproj/Localizable.strings differ diff --git a/Signal/translations/mk.lproj/Localizable.strings b/Signal/translations/mk.lproj/Localizable.strings index b59c6a180d..a2e9e881f0 100644 Binary files a/Signal/translations/mk.lproj/Localizable.strings and b/Signal/translations/mk.lproj/Localizable.strings differ diff --git a/Signal/translations/nb_NO.lproj/Localizable.strings b/Signal/translations/nb_NO.lproj/Localizable.strings index 9562873dec..bdcf8511e4 100644 Binary files a/Signal/translations/nb_NO.lproj/Localizable.strings and b/Signal/translations/nb_NO.lproj/Localizable.strings differ diff --git a/Signal/translations/nl.lproj/Localizable.strings b/Signal/translations/nl.lproj/Localizable.strings index f0ac2dacad..ad281eedff 100644 Binary files a/Signal/translations/nl.lproj/Localizable.strings and b/Signal/translations/nl.lproj/Localizable.strings differ diff --git a/Signal/translations/pl.lproj/Localizable.strings b/Signal/translations/pl.lproj/Localizable.strings index e284f5ca14..2944cb4190 100644 Binary files a/Signal/translations/pl.lproj/Localizable.strings and b/Signal/translations/pl.lproj/Localizable.strings differ diff --git a/Signal/translations/pt_BR.lproj/Localizable.strings b/Signal/translations/pt_BR.lproj/Localizable.strings index 46346bd45e..b3677eee0e 100644 Binary files a/Signal/translations/pt_BR.lproj/Localizable.strings and b/Signal/translations/pt_BR.lproj/Localizable.strings differ diff --git a/Signal/translations/pt_PT.lproj/Localizable.strings b/Signal/translations/pt_PT.lproj/Localizable.strings index c1a74d3126..150ca118fa 100644 Binary files a/Signal/translations/pt_PT.lproj/Localizable.strings and b/Signal/translations/pt_PT.lproj/Localizable.strings differ diff --git a/Signal/translations/ro.lproj/Localizable.strings b/Signal/translations/ro.lproj/Localizable.strings index 2b7f84f6d8..d8949ff823 100644 Binary files a/Signal/translations/ro.lproj/Localizable.strings and b/Signal/translations/ro.lproj/Localizable.strings differ diff --git a/Signal/translations/ru.lproj/Localizable.strings b/Signal/translations/ru.lproj/Localizable.strings index 03d50009c9..67dc758650 100644 Binary files a/Signal/translations/ru.lproj/Localizable.strings and b/Signal/translations/ru.lproj/Localizable.strings differ diff --git a/Signal/translations/sl.lproj/Localizable.strings b/Signal/translations/sl.lproj/Localizable.strings index 8802c107e5..4b752edbdd 100644 Binary files a/Signal/translations/sl.lproj/Localizable.strings and b/Signal/translations/sl.lproj/Localizable.strings differ diff --git a/Signal/translations/sn.lproj/Localizable.strings b/Signal/translations/sn.lproj/Localizable.strings index b568eab2b6..0b9552c6fd 100644 Binary files a/Signal/translations/sn.lproj/Localizable.strings and b/Signal/translations/sn.lproj/Localizable.strings differ diff --git a/Signal/translations/sq.lproj/Localizable.strings b/Signal/translations/sq.lproj/Localizable.strings index 3d16a8791c..f7bd29a6ad 100644 Binary files a/Signal/translations/sq.lproj/Localizable.strings and b/Signal/translations/sq.lproj/Localizable.strings differ diff --git a/Signal/translations/sv_SE.lproj/Localizable.strings b/Signal/translations/sv_SE.lproj/Localizable.strings index 5dcdce4a3a..de166efae0 100644 Binary files a/Signal/translations/sv_SE.lproj/Localizable.strings and b/Signal/translations/sv_SE.lproj/Localizable.strings differ diff --git a/Signal/translations/th_TH.lproj/Localizable.strings b/Signal/translations/th_TH.lproj/Localizable.strings index 90a5005546..a6c7995a21 100644 Binary files a/Signal/translations/th_TH.lproj/Localizable.strings and b/Signal/translations/th_TH.lproj/Localizable.strings differ diff --git a/Signal/translations/tr_TR.lproj/Localizable.strings b/Signal/translations/tr_TR.lproj/Localizable.strings index f619580b99..b8b39e313d 100644 Binary files a/Signal/translations/tr_TR.lproj/Localizable.strings and b/Signal/translations/tr_TR.lproj/Localizable.strings differ diff --git a/Signal/translations/zh_CN.lproj/Localizable.strings b/Signal/translations/zh_CN.lproj/Localizable.strings index a5d6f8251c..0f27d7b73d 100644 Binary files a/Signal/translations/zh_CN.lproj/Localizable.strings and b/Signal/translations/zh_CN.lproj/Localizable.strings differ