diff --git a/Podfile.lock b/Podfile.lock index 26f3c4856..d2d881cac 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -131,7 +131,7 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: SignalServiceKit: - :commit: e9c54b52a88b094e7b6deafdfda6704be5721f3c + :commit: 0933b921289ded4bb0761ce4176a2004aeab4dd5 :git: https://github.com/WhisperSystems/SignalServiceKit.git SocketRocket: :commit: 8096fef47d582bff8ae3758c9ae7af1d55ea53d6 diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 275e8ebda..213e8e61e 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -534,6 +534,8 @@ 458E38391D6699FA0094BD24 /* OWSDeviceProvisioningURLParserTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWSDeviceProvisioningURLParserTest.m; path = Models/OWSDeviceProvisioningURLParserTest.m; sourceTree = ""; }; 459311FA1D75C948008DD4F0 /* OWSDeviceTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSDeviceTableViewCell.h; sourceTree = ""; }; 459311FB1D75C948008DD4F0 /* OWSDeviceTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSDeviceTableViewCell.m; sourceTree = ""; }; + 4597E94E1D8313C100040CDE /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = translations/sq.lproj/Localizable.strings; sourceTree = ""; }; + 4597E94F1D8313CB00040CDE /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = translations/bg.lproj/Localizable.strings; sourceTree = ""; }; 459C3F0C1C9B3A1B003ACF51 /* TSMessageAdapterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TSMessageAdapterTest.m; path = "view controllers/Signals/TSMessageAdapters/TSMessageAdapterTest.m"; sourceTree = ""; }; 45C681B51D305A580050903A /* OWSCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSCall.h; sourceTree = ""; }; 45C681B61D305A580050903A /* OWSCall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSCall.m; sourceTree = ""; }; @@ -921,7 +923,6 @@ B68EF9B81C0B1EBD009C3DCD /* FLAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = Libraries/FLAnimatedImage/FLAnimatedImageView.h; sourceTree = SOURCE_ROOT; }; B68EF9B91C0B1EBD009C3DCD /* FLAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = Libraries/FLAnimatedImage/FLAnimatedImageView.m; sourceTree = SOURCE_ROOT; }; B69C2D171AA5445000A640C2 /* az_AZ */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = az_AZ; path = translations/az_AZ.lproj/Localizable.strings; sourceTree = ""; }; - B69C2D181AA5445F00A640C2 /* bg_BG */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg_BG; path = translations/bg_BG.lproj/Localizable.strings; sourceTree = ""; }; B69C2D191AA5446C00A640C2 /* bs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bs; path = translations/bs.lproj/Localizable.strings; sourceTree = ""; }; B69C2D1A1AA5447600A640C2 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = translations/ca.lproj/Localizable.strings; sourceTree = ""; }; B69C2D1B1AA5448300A640C2 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = translations/cs.lproj/Localizable.strings; sourceTree = ""; }; @@ -2431,6 +2432,8 @@ id, gl, mk, + sq, + bg, ); mainGroup = D221A07E169C9E5E00537ABF; productRefGroup = D221A08A169C9E5E00537ABF /* Products */; @@ -3044,7 +3047,6 @@ children = ( B6F509961AA53F760068F56A /* en */, B69C2D171AA5445000A640C2 /* az_AZ */, - B69C2D181AA5445F00A640C2 /* bg_BG */, B69C2D191AA5446C00A640C2 /* bs */, B69C2D1A1AA5447600A640C2 /* ca */, B69C2D1B1AA5448300A640C2 /* cs */, @@ -3077,6 +3079,8 @@ 45E282DE1D08E67800ADD4C8 /* gl */, 45E282DF1D08E6CC00ADD4C8 /* id */, 454B35071D08EED80026D658 /* mk */, + 4597E94E1D8313C100040CDE /* sq */, + 4597E94F1D8313CB00040CDE /* bg */, ); name = Localizable.strings; sourceTree = ""; diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 0b8c4b3aa..d7c26624b 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.5.0.6 + 2.5.0.7 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/Signal/src/view controllers/OWSLinkDeviceViewController.m b/Signal/src/view controllers/OWSLinkDeviceViewController.m index 84226493d..d5fc81fd0 100644 --- a/Signal/src/view controllers/OWSLinkDeviceViewController.m +++ b/Signal/src/view controllers/OWSLinkDeviceViewController.m @@ -32,9 +32,10 @@ NS_ASSUME_NONNULL_BEGIN [self.qrScanningController resizeViews]; // END HACK to get full width preview layer - self.scanningInstructionsLabel.text = NSLocalizedString( - @"Scan the QR code displayed on the device to link.", @"QR Scanning screen instructions label"); - self.title = NSLocalizedString(@"Link New Device", "Navigation title when scanning QR code to add new device."); + self.scanningInstructionsLabel.text = NSLocalizedString(@"LINK_DEVICE_SCANNING_INSTRUCTIONS", + @"QR Scanning screen instructions, placed alongside a camera view for scanning QRCodes"); + self.title + = NSLocalizedString(@"LINK_NEW_DEVICE_TITLE", "Navigation title when scanning QR code to add new device."); } - (void)viewWillAppear:(BOOL)animated @@ -56,10 +57,10 @@ NS_ASSUME_NONNULL_BEGIN // pragma mark - OWSQRScannerDelegate - (void)controller:(OWSQRCodeScanningViewController *)controller didDetectQRCodeWithString:(NSString *)string { - NSString *title = NSLocalizedString(@"Link this device?", @"Alert title"); - NSString *linkingDescription = NSLocalizedString(@"This device will be able to see your groups and contacts, read " - @"all your messages, and send messages in your name.", - @"Alert body confirmation when linking a new device"); + NSString *title + = NSLocalizedString(@"LINK_DEVICE_PERMISSION_ALERT_TITLE", @"confirm the users intent to link a new device"); + NSString *linkingDescription + = NSLocalizedString(@"LINK_DEVICE_PERMISSION_ALERT_BODY", @"confirm the users intent to link a new device"); UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:linkingDescription @@ -75,11 +76,12 @@ NS_ASSUME_NONNULL_BEGIN }]; [alertController addAction:cancelAction]; - UIAlertAction *proceedAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"Link New Device", nil) - style:UIAlertActionStyleDefault - handler:^(UIAlertAction *action) { - [self provisionWithString:string]; - }]; + UIAlertAction *proceedAction = + [UIAlertAction actionWithTitle:NSLocalizedString(@"CONFIRM_LINK_NEW_DEVICE_ACTION", @"Button text") + style:UIAlertActionStyleDefault + handler:^(UIAlertAction *action) { + [self provisionWithString:string]; + }]; [alertController addAction:proceedAction]; [self presentViewController:alertController animated:YES completion:nil]; @@ -126,7 +128,7 @@ NS_ASSUME_NONNULL_BEGIN - (UIAlertController *)retryAlertControllerWithError:(NSError *)error retryBlock:(void (^)())retryBlock { - NSString *title = NSLocalizedString(@"Linking Device Failed", @"Alert Title"); + NSString *title = NSLocalizedString(@"LINKING_DEVICE_FAILED_TITLE", @"Alert Title"); UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:error.localizedDescription preferredStyle:UIAlertControllerStyleAlert]; diff --git a/Signal/src/view controllers/OWSLinkedDevicesTableViewController.m b/Signal/src/view controllers/OWSLinkedDevicesTableViewController.m index e319e9d39..3b89fae15 100644 --- a/Signal/src/view controllers/OWSLinkedDevicesTableViewController.m +++ b/Signal/src/view controllers/OWSLinkedDevicesTableViewController.m @@ -35,6 +35,8 @@ int const OWSLinkedDevicesTableViewControllerSectionAddDevice = 1; - (void)viewDidLoad { [super viewDidLoad]; + self.title = NSLocalizedString(@"LINKED_DEVICES_TITLE", @"Menu item and navbar title for the device manager"); + self.isExpectingMoreDevices = NO; self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 70; @@ -103,9 +105,9 @@ int const OWSLinkedDevicesTableViewControllerSectionAddDevice = 1; userInfo:nil repeats:YES]; - NSString *progressText = NSLocalizedString(@"Complete setup on Signal Desktop.", - @"Activity indicator title, shown upon returning to the device manager, " - @"until you complete the provisioning process on desktop"); + NSString *progressText = NSLocalizedString(@"WAITING_TO_COMPLETE_DEVICE_LINK_TEXT", + @"Activity indicator title, shown upon returning to the device " + @"manager, until you complete the provisioning process on desktop"); NSAttributedString *progressTitle = [[NSAttributedString alloc] initWithString:progressText]; // HACK to get refreshControl title to align properly. @@ -146,7 +148,7 @@ int const OWSLinkedDevicesTableViewControllerSectionAddDevice = 1; DDLogError(@"Failed to fetch devices in linkedDevices controller with error: %@", error); NSString *alertTitle = NSLocalizedString( - @"Failed to update device list.", @"Alert title that can occur when viewing device manager."); + @"DEVICE_LIST_UPDATE_FAILED_TITLE", @"Alert title that can occur when viewing device manager."); UIAlertController *alertController = [UIAlertController alertControllerWithTitle:alertTitle @@ -251,7 +253,13 @@ int const OWSLinkedDevicesTableViewControllerSectionAddDevice = 1; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == OWSLinkedDevicesTableViewControllerSectionAddDevice) { - return [tableView dequeueReusableCellWithIdentifier:@"AddNewDevice" forIndexPath:indexPath]; + UITableViewCell *addNewDeviceCell = + [tableView dequeueReusableCellWithIdentifier:@"AddNewDevice" forIndexPath:indexPath]; + addNewDeviceCell.textLabel.text + = NSLocalizedString(@"LINK_NEW_DEVICE_TITLE", @"Navigation title when scanning QR code to add new device."); + addNewDeviceCell.detailTextLabel.text + = NSLocalizedString(@"LINK_NEW_DEVICE_SUBTITLE", @"Subheading for 'Link New Device' navigation"); + return addNewDeviceCell; } else if (indexPath.section == OWSLinkedDevicesTableViewControllerSectionExistingDevices) { OWSDeviceTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ExistingDevice" forIndexPath:indexPath]; @@ -288,7 +296,7 @@ int const OWSLinkedDevicesTableViewControllerSectionAddDevice = 1; - (nullable NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath { - return NSLocalizedString(@"Unlink", "Action title for unlinking a device"); + return NSLocalizedString(@"UNLINK_ACTION", "button title for unlinking a device"); } - (void)tableView:(UITableView *)tableView @@ -308,11 +316,10 @@ int const OWSLinkedDevicesTableViewControllerSectionAddDevice = 1; - (void)touchedUnlinkControlForDevice:(OWSDevice *)device success:(void (^)())successCallback { NSString *confirmationTitleFormat - = NSLocalizedString(@"Unlink \"%@\"?", @"Alert title for confirming device deletion"); + = NSLocalizedString(@"UNLINK_CONFIRMATION_ALERT_TITLE", @"Alert title for confirming device deletion"); NSString *confirmationTitle = [NSString stringWithFormat:confirmationTitleFormat, device.name]; NSString *confirmationMessage - = NSLocalizedString(@"By unlinking this device, it will no longer be able to send or receive messages.", - @"Alert description shown to confirm unlinking a device."); + = NSLocalizedString(@"UNLINK_CONFIRMATION_ALERT_BODY", @"Alert message to confirm unlinking a device"); UIAlertController *alertController = [UIAlertController alertControllerWithTitle:confirmationTitle message:confirmationMessage preferredStyle:UIAlertControllerStyleAlert]; @@ -323,7 +330,7 @@ int const OWSLinkedDevicesTableViewControllerSectionAddDevice = 1; [alertController addAction:cancelAction]; UIAlertAction *unlinkAction = - [UIAlertAction actionWithTitle:NSLocalizedString(@"Unlink", "Action title for unlinking a device") + [UIAlertAction actionWithTitle:NSLocalizedString(@"UNLINK_ACTION", "button title for unlinking a device") style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ @@ -342,8 +349,8 @@ int const OWSLinkedDevicesTableViewControllerSectionAddDevice = 1; [[OWSDevicesService new] unlinkDevice:device success:successCallback failure:^(NSError *error) { - NSString *title = NSLocalizedString(@"Signal was unable to delete your device.", - @"Alert title when unlinking device fails"); + NSString *title = NSLocalizedString( + @"UNLINKING_FAILED_ALERT_TITLE", @"Alert title when unlinking device fails"); UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:error.localizedDescription diff --git a/Signal/src/view controllers/SettingsTableViewController.m b/Signal/src/view controllers/SettingsTableViewController.m index 34fd0a599..6375e39b8 100644 --- a/Signal/src/view controllers/SettingsTableViewController.m +++ b/Signal/src/view controllers/SettingsTableViewController.m @@ -79,8 +79,8 @@ typedef enum { self.advancedLabel.text = NSLocalizedString(@"SETTINGS_ADVANCED_TITLE", @""); self.aboutLabel.text = NSLocalizedString(@"SETTINGS_ABOUT", @""); self.notificationsLabel.text = NSLocalizedString(@"SETTINGS_NOTIFICATIONS", nil); - self.linkedDevicesLabel.text = NSLocalizedString( - @"LINKED_DEVICES_LABEL", @"table cell label, when pressed takes you to manage your linked devices."); + self.linkedDevicesLabel.text + = NSLocalizedString(@"LINKED_DEVICES_TITLE", @"Menu item and navbar title for the device manager"); [self.destroyAccountButton setTitle:NSLocalizedString(@"SETTINGS_DELETE_ACCOUNT_BUTTON", @"") forState:UIControlStateNormal]; } diff --git a/Signal/src/views/OWSDeviceTableViewCell.m b/Signal/src/views/OWSDeviceTableViewCell.m index da1bc83c5..350cbe71a 100644 --- a/Signal/src/views/OWSDeviceTableViewCell.m +++ b/Signal/src/views/OWSDeviceTableViewCell.m @@ -11,12 +11,13 @@ NS_ASSUME_NONNULL_BEGIN { self.nameLabel.text = device.displayName; - NSString *linkedFormatString = NSLocalizedString(@"Linked: %@", @"{{Short Date}} when device was linked."); + NSString *linkedFormatString + = NSLocalizedString(@"DEVICE_LINKED_AT_LABEL", @"{{Short Date}} when device was linked."); self.linkedLabel.text = [NSString stringWithFormat:linkedFormatString, [DateUtil.dateFormatter stringFromDate:device.createdAt]]; - NSString *lastSeenFormatString - = NSLocalizedString(@"Last active: %@", @"{{Short Date}} when device last communicated with Signal Server."); + NSString *lastSeenFormatString = NSLocalizedString( + @"DEVICE_LAST_ACTIVE_AT_LABEL", @"{{Short Date}} when device last communicated with Signal Server."); self.lastSeenLabel.text = [NSString stringWithFormat:lastSeenFormatString, [DateUtil.dateFormatter stringFromDate:device.createdAt]]; } diff --git a/Signal/translations/ar.lproj/Localizable.strings b/Signal/translations/ar.lproj/Localizable.strings index 9be7c372a..9224878ac 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 4d4ddf836..9432c0647 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 new file mode 100644 index 000000000..62fbf415c Binary files /dev/null and b/Signal/translations/bg.lproj/Localizable.strings differ diff --git a/Signal/translations/bg_BG.lproj/Localizable.strings b/Signal/translations/bg_BG.lproj/Localizable.strings deleted file mode 100644 index cccc44f15..000000000 Binary files a/Signal/translations/bg_BG.lproj/Localizable.strings and /dev/null differ diff --git a/Signal/translations/bs.lproj/Localizable.strings b/Signal/translations/bs.lproj/Localizable.strings index 3e63f6d36..39f6423c2 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 345fe1e9f..3939be02c 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 ee91f128b..1f9134e1d 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 19cb9588b..dca47970a 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 96b8b2199..17c391026 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 087296189..6a355912d 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 4937d7c1e..09f49ab98 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 2a447b42c..1f7df4949 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 9d79d472b..6fee4f8dd 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 6e9dab0e6..d4680f355 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 f1fb41277..add6ca01a 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 4c0ff8e9b..79a4972ce 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 38f6d2c5e..9e569f02f 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 119e1aac1..eb549670e 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 6646e37b0..618b224cc 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 1c22a2724..449554c0d 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 8e9cbbbcf..706b5b2ba 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 4093dac94..714b305b4 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 34b4e755b..9f4775d45 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 a6d0c1f64..8a4529d72 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 6559385d3..c0bbdaac8 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 f16bd33c1..b3e390aa7 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 4d6c0408e..edb9e88de 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 547f961b3..032e506ef 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 6c08c7b40..9eb9377f9 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 ae37e5897..c73e16a75 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 d34c3a94f..8e6fcbc13 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 6ba01e04c..398027121 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 db57a21c2..d9df3551d 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 31aecb4d8..63732cb0c 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 a2e95e859..63015894a 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 new file mode 100644 index 000000000..41ca89740 Binary files /dev/null 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 ed327f313..aa6e87c95 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 90078dab4..a045cf6fe 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 6a9ac8413..22f7cb75e 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 3fd0eebfb..52e6cd3a5 100644 Binary files a/Signal/translations/zh_CN.lproj/Localizable.strings and b/Signal/translations/zh_CN.lproj/Localizable.strings differ