From ed6279ad9feba549df936bb5baeb9ba035aff34d Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sat, 11 Dec 2021 07:30:50 +0000 Subject: [PATCH] translations: More localised strings, and enable Indonesian language --- .../id.lproj/MainInterface.strings | 11 + Snikket.xcodeproj/project.pbxproj | 25 + .../chat/AttachmentChatTableViewCell.swift | 22 +- ...rWithDataSourceContextMenuAndToolbar.swift | 6 +- Snikket/da.lproj/Localizable.strings | 25 + Snikket/de.lproj/Localizable.strings | 25 + Snikket/en-GB.lproj/Localizable.strings | 25 + Snikket/en.lproj/Localizable.strings | 25 + Snikket/fr.lproj/Localizable.strings | 25 + Snikket/id.lproj/Account.strings | 131 ++++ Snikket/id.lproj/Groupchat.strings | 65 ++ Snikket/id.lproj/Info.plist | 98 +++ Snikket/id.lproj/Info.strings | 8 + Snikket/id.lproj/LaunchScreen.strings | 1 + Snikket/id.lproj/Localizable.strings | 700 ++++++++++++++++++ Snikket/id.lproj/MIX.strings | 167 +++++ Snikket/id.lproj/Main.strings | 107 +++ Snikket/id.lproj/Settings.strings | 128 ++++ Snikket/id.lproj/VoIP.strings | 65 ++ Snikket/id.lproj/Welcome.strings | 11 + Snikket/sv.lproj/Localizable.strings | 25 + Snikket/util/MediaHelper.swift | 4 +- 22 files changed, 1683 insertions(+), 16 deletions(-) create mode 100644 Snikket - Share/id.lproj/MainInterface.strings create mode 100644 Snikket/id.lproj/Account.strings create mode 100644 Snikket/id.lproj/Groupchat.strings create mode 100644 Snikket/id.lproj/Info.plist create mode 100644 Snikket/id.lproj/Info.strings create mode 100644 Snikket/id.lproj/LaunchScreen.strings create mode 100644 Snikket/id.lproj/Localizable.strings create mode 100644 Snikket/id.lproj/MIX.strings create mode 100644 Snikket/id.lproj/Main.strings create mode 100644 Snikket/id.lproj/Settings.strings create mode 100644 Snikket/id.lproj/VoIP.strings create mode 100644 Snikket/id.lproj/Welcome.strings diff --git a/Snikket - Share/id.lproj/MainInterface.strings b/Snikket - Share/id.lproj/MainInterface.strings new file mode 100644 index 0000000..0088057 --- /dev/null +++ b/Snikket - Share/id.lproj/MainInterface.strings @@ -0,0 +1,11 @@ +/* Class = "UITableViewController"; title = "Accounts"; ObjectID = "6l2-wd-vXh"; */ +"6l2-wd-vXh.title" = "Accounts"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "95D-JK-fLM"; */ +"95D-JK-fLM.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "Geq-xy-Tr2"; */ +"Geq-xy-Tr2.text" = "Label"; + +/* Class = "UITableViewController"; title = "Recipients"; ObjectID = "wpy-g7-270"; */ +"wpy-g7-270.title" = "Recipients"; diff --git a/Snikket.xcodeproj/project.pbxproj b/Snikket.xcodeproj/project.pbxproj index 6ac7841..6515221 100644 --- a/Snikket.xcodeproj/project.pbxproj +++ b/Snikket.xcodeproj/project.pbxproj @@ -388,6 +388,18 @@ 591D5F2C26FFAEF500B2F114 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "en-GB"; path = "en-GB.lproj/Info.plist"; sourceTree = ""; }; 591D5F2D26FFAEF600B2F114 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/Localizable.strings"; sourceTree = ""; }; 591D5F2E26FFAEF700B2F114 /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/MainInterface.strings"; sourceTree = ""; }; + 59D7B863276489C000412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/LaunchScreen.strings; sourceTree = ""; }; + 59D7B864276489C200412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Main.strings; sourceTree = ""; }; + 59D7B865276489C200412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/VoIP.strings; sourceTree = ""; }; + 59D7B866276489C300412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Groupchat.strings; sourceTree = ""; }; + 59D7B867276489C300412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Info.strings; sourceTree = ""; }; + 59D7B868276489C400412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Settings.strings; sourceTree = ""; }; + 59D7B869276489C400412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/MIX.strings; sourceTree = ""; }; + 59D7B86A276489C500412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Welcome.strings; sourceTree = ""; }; + 59D7B86B276489C600412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/MainInterface.strings; sourceTree = ""; }; + 59D7B86C276489C600412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = id; path = id.lproj/Info.plist; sourceTree = ""; }; + 59D7B86D276489C600412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Localizable.strings; sourceTree = ""; }; + 59D7B86F27648A5700412972 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/Account.strings; sourceTree = ""; }; E928AD4226D6A08A00F29F93 /* db-schema-14.sql */ = {isa = PBXFileReference; lastKnownFileType = text; path = "db-schema-14.sql"; sourceTree = ""; }; E95AA70126D38B6E00A38D44 /* DisplayNameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplayNameViewController.swift; sourceTree = ""; }; E963720F26D786D000332482 /* BlockingCommandModuleExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockingCommandModuleExtension.swift; sourceTree = ""; }; @@ -1246,6 +1258,7 @@ fr, sv, "en-GB", + id, ); mainGroup = FE94E5181CCBA74F00FAE755; packageReferences = ( @@ -1628,6 +1641,7 @@ 591D5F0E26FCA2E300B2F114 /* fr */, 591D5F1D26FCD2EE00B2F114 /* sv */, 591D5F2B26FFAEF000B2F114 /* en-GB */, + 59D7B86A276489C500412972 /* id */, ); name = Welcome.storyboard; sourceTree = ""; @@ -1642,6 +1656,7 @@ 591D5F0926FCA2E100B2F114 /* fr */, 591D5F1826FCD2EC00B2F114 /* sv */, 591D5F2626FFAEBA00B2F114 /* en-GB */, + 59D7B866276489C300412972 /* id */, ); name = Groupchat.storyboard; sourceTree = ""; @@ -1656,6 +1671,7 @@ 591D5F0826FCA2E100B2F114 /* fr */, 591D5F1726FCD2EC00B2F114 /* sv */, 591D5F2526FFAEB900B2F114 /* en-GB */, + 59D7B865276489C200412972 /* id */, ); name = VoIP.storyboard; sourceTree = ""; @@ -1670,6 +1686,7 @@ 591D5F0A26FCA2E200B2F114 /* fr */, 591D5F1926FCD2EC00B2F114 /* sv */, 591D5F2726FFAEBB00B2F114 /* en-GB */, + 59D7B867276489C300412972 /* id */, ); name = Info.storyboard; sourceTree = ""; @@ -1684,6 +1701,7 @@ 591D5F0B26FCA2E200B2F114 /* fr */, 591D5F1A26FCD2ED00B2F114 /* sv */, 591D5F2826FFAEBE00B2F114 /* en-GB */, + 59D7B868276489C400412972 /* id */, ); name = Settings.storyboard; sourceTree = ""; @@ -1698,6 +1716,7 @@ 591D5F0C26FCA2E200B2F114 /* fr */, 591D5F1B26FCD2ED00B2F114 /* sv */, 591D5F2926FFAEEE00B2F114 /* en-GB */, + 59D7B86F27648A5700412972 /* id */, ); name = Account.storyboard; sourceTree = ""; @@ -1712,6 +1731,7 @@ 591D5F0D26FCA2E300B2F114 /* fr */, 591D5F1C26FCD2ED00B2F114 /* sv */, 591D5F2A26FFAEEF00B2F114 /* en-GB */, + 59D7B869276489C400412972 /* id */, ); name = MIX.storyboard; sourceTree = ""; @@ -1724,6 +1744,7 @@ 591D5F1026FCA2E400B2F114 /* fr */, 591D5F1F26FCD2EE00B2F114 /* sv */, 591D5F2C26FFAEF500B2F114 /* en-GB */, + 59D7B86C276489C600412972 /* id */, ); name = Info.plist; sourceTree = ""; @@ -1737,6 +1758,7 @@ 591D5F1126FCA2E400B2F114 /* fr */, 591D5F2026FCD2EF00B2F114 /* sv */, 591D5F2D26FFAEF600B2F114 /* en-GB */, + 59D7B86D276489C600412972 /* id */, ); name = Localizable.strings; sourceTree = ""; @@ -1750,6 +1772,7 @@ 591D5F0F26FCA2E300B2F114 /* fr */, 591D5F1E26FCD2EE00B2F114 /* sv */, 591D5F2E26FFAEF700B2F114 /* en-GB */, + 59D7B86B276489C600412972 /* id */, ); name = MainInterface.storyboard; sourceTree = ""; @@ -1764,6 +1787,7 @@ 591D5F1526FCB62600B2F114 /* de */, 591D5F2226FCD7B200B2F114 /* sv */, 591D5F2426FFAEB800B2F114 /* en-GB */, + 59D7B864276489C200412972 /* id */, ); name = Main.storyboard; sourceTree = ""; @@ -1778,6 +1802,7 @@ 591D5F0726FCA2B300B2F114 /* fr */, 591D5F1626FCD2EB00B2F114 /* sv */, 591D5F2326FFAEB300B2F114 /* en-GB */, + 59D7B863276489C000412972 /* id */, ); name = LaunchScreen.storyboard; sourceTree = ""; diff --git a/Snikket/chat/AttachmentChatTableViewCell.swift b/Snikket/chat/AttachmentChatTableViewCell.swift index 3fd16f3..33ec0b7 100644 --- a/Snikket/chat/AttachmentChatTableViewCell.swift +++ b/Snikket/chat/AttachmentChatTableViewCell.swift @@ -305,47 +305,47 @@ class AttachmentChatTableViewCell: BaseChatTableViewCell, UIContextMenuInteracti if let localUrl = DownloadStore.instance.url(for: "\(item.id)") { let items = [ - UIAction(title: "Preview", image: UIImage(systemName: "eye.fill"), handler: { action in + UIAction(title: NSLocalizedString("Preview", comment: "Alert title"), image: UIImage(systemName: "eye.fill"), handler: { action in print("preview called"); self.open(url: localUrl, preview: true); }), - UIAction(title: "Copy", image: UIImage(systemName: "doc.on.doc"), handler: { action in + UIAction(title: NSLocalizedString("Copy", comment: "Context menu action"), image: UIImage(systemName: "doc.on.doc"), handler: { action in guard let text = self.item?.copyText(withTimestamp: Settings.CopyMessagesWithTimestamps.getBool(), withSender: false) else { return; } UIPasteboard.general.strings = [text]; UIPasteboard.general.string = text; }), - UIAction(title: "Share..", image: UIImage(systemName: "square.and.arrow.up"), handler: { action in + UIAction(title: NSLocalizedString("Share...", comment: "Context menu action"), image: UIImage(systemName: "square.and.arrow.up"), handler: { action in print("share called"); self.open(url: localUrl, preview: false); }), - UIAction(title: "Delete", image: UIImage(systemName: "trash"), attributes: [.destructive], handler: { action in + UIAction(title: NSLocalizedString("Delete", comment: "Context menu action"), image: UIImage(systemName: "trash"), attributes: [.destructive], handler: { action in print("delete called"); DownloadStore.instance.deleteFile(for: "\(item.id)"); DBChatHistoryStore.instance.updateItem(for: item.account, with: item.jid, id: item.id, updateAppendix: { appendix in appendix.state = .removed; }) }), - UIAction(title: "More..", image: UIImage(systemName: "ellipsis"), handler: { action in + UIAction(title: NSLocalizedString("More...", comment: "Menu item: view more options"), image: UIImage(systemName: "ellipsis"), handler: { action in NotificationCenter.default.post(name: Notification.Name("tableViewCellShowEditToolbar"), object: self); }) ]; return UIMenu(title: "", image: nil, identifier: nil, options: [], children: items); } else { let items = [ - UIAction(title: "Copy", image: UIImage(systemName: "doc.on.doc"), handler: { action in + UIAction(title: NSLocalizedString("Copy", comment: "Context menu item"), image: UIImage(systemName: "doc.on.doc"), handler: { action in guard let text = self.item?.copyText(withTimestamp: Settings.CopyMessagesWithTimestamps.getBool(), withSender: false) else { return; } UIPasteboard.general.strings = [text]; UIPasteboard.general.string = text; }), - UIAction(title: "Download", image: UIImage(systemName: "square.and.arrow.down"), handler: { action in + UIAction(title: NSLocalizedString("Download", comment: "Context menu item"), image: UIImage(systemName: "square.and.arrow.down"), handler: { action in print("download called"); self.download(for: item); }), - UIAction(title: "More..", image: UIImage(systemName: "ellipsis"), handler: { action in + UIAction(title: NSLocalizedString("More...", comment: "Context menu item: view more options"), image: UIImage(systemName: "ellipsis"), handler: { action in NotificationCenter.default.post(name: Notification.Name("tableViewCellShowEditToolbar"), object: self); }) ]; @@ -413,11 +413,11 @@ class AttachmentChatTableViewCell: BaseChatTableViewCell, UIContextMenuInteracti if let localUrl = DownloadStore.instance.url(for: "\(item.id)") { open(url: localUrl, preview: true); } else { - let alert = UIAlertController(title: "Download", message: "File is not available locally. Should it be downloaded?", preferredStyle: .alert); - alert.addAction(UIAlertAction(title: "Yes", style: .default, handler: { (action) in + let alert = UIAlertController(title: NSLocalizedString("Download", comment: "Alert title"), message: NSLocalizedString("File is not available locally. Should it be downloaded?", comment: "Alert text"), preferredStyle: .alert); + alert.addAction(UIAlertAction(title: NSLocalizedString("Yes", comment: ""), style: .default, handler: { (action) in self.download(for: item); })) - alert.addAction(UIAlertAction(title: "No", style: .cancel, handler: nil)); + alert.addAction(UIAlertAction(title: NSLocalizedString("No", comment: ""), style: .cancel, handler: nil)); if let controller = (UIApplication.shared.delegate as? AppDelegate)?.window?.rootViewController { controller.present(alert, animated: true, completion: nil); } diff --git a/Snikket/chat/BaseChatViewControllerWithDataSourceContextMenuAndToolbar.swift b/Snikket/chat/BaseChatViewControllerWithDataSourceContextMenuAndToolbar.swift index 2119357..85f9db5 100644 --- a/Snikket/chat/BaseChatViewControllerWithDataSourceContextMenuAndToolbar.swift +++ b/Snikket/chat/BaseChatViewControllerWithDataSourceContextMenuAndToolbar.swift @@ -33,7 +33,7 @@ class BaseChatViewControllerWithDataSourceAndContextMenuAndToolbar: BaseChatView } else { var items: [UIMenuItem] = UIMenuController.shared.menuItems ?? []; - items.append(UIMenuItem(title: "More..", action: #selector(ChatTableViewCell.actionMore(_:)))); + items.append(UIMenuItem(title: NSLocalizedString("More...", comment: "Menu item: see more message actions"), action: #selector(ChatTableViewCell.actionMore(_:)))); UIMenuController.shared.menuItems = items; } @@ -104,8 +104,8 @@ class BaseChatViewControllerWithDataSourceAndContextMenuAndToolbar: BaseChatView let items: [UIMenuElement] = actions.map({ action -> UIMenuElement in if action.isDesctructive { return UIMenu(title: action.title, image: action.image, options: .destructive, children: [ - UIAction(title: "No", handler: { _ in }), - UIAction(title: "Yes", attributes: .destructive, handler: { _ in + UIAction(title: NSLocalizedString("No", comment: ""), handler: { _ in }), + UIAction(title: NSLocalizedString("Yes", comment: ""), attributes: .destructive, handler: { _ in self.executeContext(action: action, forItem: item, at: indexPath); }) ]); diff --git a/Snikket/da.lproj/Localizable.strings b/Snikket/da.lproj/Localizable.strings index dfca5e9..e1dd813 100644 --- a/Snikket/da.lproj/Localizable.strings +++ b/Snikket/da.lproj/Localizable.strings @@ -125,6 +125,10 @@ /* No comment provided by engineer. */ "Continue" = "Continue"; +/* Context menu action + Context menu item */ +"Copy" = "Copy"; + /* No comment provided by engineer. */ "Could not connect to the service. Check your network connectivity or try again later." = "Could not connect to the service. Check your network connectivity or try again later."; @@ -200,6 +204,10 @@ /* Menu item: opens file picket to select document to share */ "Document" = "Document"; +/* Alert title + Context menu item */ +"Download" = "Download"; + /* No comment provided by engineer. */ "Edit" = "Edit"; @@ -248,6 +256,9 @@ /* No comment provided by engineer. */ "Failure" = "Failure"; +/* Alert text */ +"File is not available locally. Should it be downloaded?" = "File is not available locally. Should it be downloaded?"; + /* Error text - while uploading file */ "File is too large to share on your account." = "File is too large to share on your account."; @@ -359,6 +370,11 @@ /* No comment provided by engineer. */ "Messages" = "Messages"; +/* Context menu item: view more options + Menu item: see more message actions + Menu item: view more options */ +"More..." = "More..."; + /* Option: notifications from this group chat will be suppressed */ "Muted" = "Muted"; @@ -449,6 +465,9 @@ /* No comment provided by engineer. */ "Please try again!" = "Please try again!"; +/* Alert title */ +"Preview" = "Preview"; + /* No comment provided by engineer. */ "Private message" = "Private message"; @@ -530,6 +549,9 @@ /* No comment provided by engineer. */ "Select photo" = "Select photo"; +/* Alert title - select image share quality */ +"Select quality" = "Select quality"; + /* No comment provided by engineer. */ "Select quality of the image to use for sharing" = "Select quality of the image to use for sharing"; @@ -566,6 +588,9 @@ /* No comment provided by engineer. */ "Settings" = "Settings"; +/* Context menu action */ +"Share..." = "Share..."; + /* Informs user to slide their finger in direction of arrow to cancel audio recording */ "Slide to cancel" = "Slide to cancel"; diff --git a/Snikket/de.lproj/Localizable.strings b/Snikket/de.lproj/Localizable.strings index 4eb3c29..1a4d498 100644 --- a/Snikket/de.lproj/Localizable.strings +++ b/Snikket/de.lproj/Localizable.strings @@ -125,6 +125,10 @@ /* No comment provided by engineer. */ "Continue" = "Fortsetzen"; +/* Context menu action + Context menu item */ +"Copy" = "Copy"; + /* No comment provided by engineer. */ "Could not connect to the service. Check your network connectivity or try again later." = "Konnte nicht mit dem Dienst verbinden. Überprüfe die Netzwerkverbindung oder versuche es später noch einmal."; @@ -200,6 +204,10 @@ /* Menu item: opens file picket to select document to share */ "Document" = "Document"; +/* Alert title + Context menu item */ +"Download" = "Download"; + /* No comment provided by engineer. */ "Edit" = "Bearbeiten"; @@ -248,6 +256,9 @@ /* No comment provided by engineer. */ "Failure" = "Fehlschlag"; +/* Alert text */ +"File is not available locally. Should it be downloaded?" = "File is not available locally. Should it be downloaded?"; + /* Error text - while uploading file */ "File is too large to share on your account." = "File is too large to share on your account."; @@ -359,6 +370,11 @@ /* No comment provided by engineer. */ "Messages" = "Nachrichten"; +/* Context menu item: view more options + Menu item: see more message actions + Menu item: view more options */ +"More..." = "More..."; + /* Option: notifications from this group chat will be suppressed */ "Muted" = "Stumm gestellt"; @@ -449,6 +465,9 @@ /* No comment provided by engineer. */ "Please try again!" = "Bitte nochmal versuchen!"; +/* Alert title */ +"Preview" = "Preview"; + /* No comment provided by engineer. */ "Private message" = "Private Nachricht"; @@ -531,6 +550,9 @@ /* Action button: select (existing) photo for group chat picture */ "Select photo" = "Foto auswählen"; +/* Alert title - select image share quality */ +"Select quality" = "Select quality"; + /* No comment provided by engineer. */ "Select quality of the image to use for sharing" = "Auswahl der Bildqualität zum Teilen"; @@ -567,6 +589,9 @@ /* No comment provided by engineer. */ "Settings" = "Einstellungen"; +/* Context menu action */ +"Share..." = "Share..."; + /* Informs user to slide their finger in direction of arrow to cancel audio recording */ "Slide to cancel" = "Slide to cancel"; diff --git a/Snikket/en-GB.lproj/Localizable.strings b/Snikket/en-GB.lproj/Localizable.strings index 714161c..0f1c267 100644 --- a/Snikket/en-GB.lproj/Localizable.strings +++ b/Snikket/en-GB.lproj/Localizable.strings @@ -125,6 +125,10 @@ /* No comment provided by engineer. */ "Continue" = "Continue"; +/* Context menu action + Context menu item */ +"Copy" = "Copy"; + /* No comment provided by engineer. */ "Could not connect to the service. Check your network connectivity or try again later." = "Could not connect to the service. Check your network connectivity or try again later."; @@ -200,6 +204,10 @@ /* Menu item: opens file picket to select document to share */ "Document" = "Document"; +/* Alert title + Context menu item */ +"Download" = "Download"; + /* No comment provided by engineer. */ "Edit" = "Edit"; @@ -248,6 +256,9 @@ /* No comment provided by engineer. */ "Failure" = "Failure"; +/* Alert text */ +"File is not available locally. Should it be downloaded?" = "File is not available locally. Should it be downloaded?"; + /* Error text - while uploading file */ "File is too large to share on your account." = "File is too large to share on your account."; @@ -359,6 +370,11 @@ /* No comment provided by engineer. */ "Messages" = "Messages"; +/* Context menu item: view more options + Menu item: see more message actions + Menu item: view more options */ +"More..." = "More..."; + /* Option: notifications from this group chat will be suppressed */ "Muted" = "Muted"; @@ -449,6 +465,9 @@ /* No comment provided by engineer. */ "Please try again!" = "Please try again!"; +/* Alert title */ +"Preview" = "Preview"; + /* No comment provided by engineer. */ "Private message" = "Private message"; @@ -530,6 +549,9 @@ /* No comment provided by engineer. */ "Select photo" = "Select photo"; +/* Alert title - select image share quality */ +"Select quality" = "Select quality"; + /* No comment provided by engineer. */ "Select quality of the image to use for sharing" = "Select quality of the image to use for sharing"; @@ -566,6 +588,9 @@ /* No comment provided by engineer. */ "Settings" = "Settings"; +/* Context menu action */ +"Share..." = "Share..."; + /* Informs user to slide their finger in direction of arrow to cancel audio recording */ "Slide to cancel" = "Slide to cancel"; diff --git a/Snikket/en.lproj/Localizable.strings b/Snikket/en.lproj/Localizable.strings index 714161c..0f1c267 100644 --- a/Snikket/en.lproj/Localizable.strings +++ b/Snikket/en.lproj/Localizable.strings @@ -125,6 +125,10 @@ /* No comment provided by engineer. */ "Continue" = "Continue"; +/* Context menu action + Context menu item */ +"Copy" = "Copy"; + /* No comment provided by engineer. */ "Could not connect to the service. Check your network connectivity or try again later." = "Could not connect to the service. Check your network connectivity or try again later."; @@ -200,6 +204,10 @@ /* Menu item: opens file picket to select document to share */ "Document" = "Document"; +/* Alert title + Context menu item */ +"Download" = "Download"; + /* No comment provided by engineer. */ "Edit" = "Edit"; @@ -248,6 +256,9 @@ /* No comment provided by engineer. */ "Failure" = "Failure"; +/* Alert text */ +"File is not available locally. Should it be downloaded?" = "File is not available locally. Should it be downloaded?"; + /* Error text - while uploading file */ "File is too large to share on your account." = "File is too large to share on your account."; @@ -359,6 +370,11 @@ /* No comment provided by engineer. */ "Messages" = "Messages"; +/* Context menu item: view more options + Menu item: see more message actions + Menu item: view more options */ +"More..." = "More..."; + /* Option: notifications from this group chat will be suppressed */ "Muted" = "Muted"; @@ -449,6 +465,9 @@ /* No comment provided by engineer. */ "Please try again!" = "Please try again!"; +/* Alert title */ +"Preview" = "Preview"; + /* No comment provided by engineer. */ "Private message" = "Private message"; @@ -530,6 +549,9 @@ /* No comment provided by engineer. */ "Select photo" = "Select photo"; +/* Alert title - select image share quality */ +"Select quality" = "Select quality"; + /* No comment provided by engineer. */ "Select quality of the image to use for sharing" = "Select quality of the image to use for sharing"; @@ -566,6 +588,9 @@ /* No comment provided by engineer. */ "Settings" = "Settings"; +/* Context menu action */ +"Share..." = "Share..."; + /* Informs user to slide their finger in direction of arrow to cancel audio recording */ "Slide to cancel" = "Slide to cancel"; diff --git a/Snikket/fr.lproj/Localizable.strings b/Snikket/fr.lproj/Localizable.strings index edc73c7..1f80026 100644 --- a/Snikket/fr.lproj/Localizable.strings +++ b/Snikket/fr.lproj/Localizable.strings @@ -125,6 +125,10 @@ /* No comment provided by engineer. */ "Continue" = "Continuer"; +/* Context menu action + Context menu item */ +"Copy" = "Copy"; + /* No comment provided by engineer. */ "Could not connect to the service. Check your network connectivity or try again later." = "Échec de la connexion au service. Vérifiez votre connectivité réseau ou réessayez plus tard."; @@ -200,6 +204,10 @@ /* Menu item: opens file picket to select document to share */ "Document" = "Document"; +/* Alert title + Context menu item */ +"Download" = "Download"; + /* No comment provided by engineer. */ "Edit" = "Éditer"; @@ -248,6 +256,9 @@ /* No comment provided by engineer. */ "Failure" = "Échec"; +/* Alert text */ +"File is not available locally. Should it be downloaded?" = "File is not available locally. Should it be downloaded?"; + /* Error text - while uploading file */ "File is too large to share on your account." = "File is too large to share on your account."; @@ -359,6 +370,11 @@ /* No comment provided by engineer. */ "Messages" = "Messages"; +/* Context menu item: view more options + Menu item: see more message actions + Menu item: view more options */ +"More..." = "More..."; + /* Option: notifications from this group chat will be suppressed */ "Muted" = "Muted"; @@ -449,6 +465,9 @@ /* No comment provided by engineer. */ "Please try again!" = "Merci de réessayer !"; +/* Alert title */ +"Preview" = "Preview"; + /* No comment provided by engineer. */ "Private message" = "Message privé"; @@ -531,6 +550,9 @@ /* Action button: select (existing) photo for group chat picture */ "Select photo" = "Sélectionner une photo"; +/* Alert title - select image share quality */ +"Select quality" = "Select quality"; + /* No comment provided by engineer. */ "Select quality of the image to use for sharing" = "Sélectionner la qualité d’image à utiliser pour partager"; @@ -567,6 +589,9 @@ /* No comment provided by engineer. */ "Settings" = "Préférences"; +/* Context menu action */ +"Share..." = "Share..."; + /* Informs user to slide their finger in direction of arrow to cancel audio recording */ "Slide to cancel" = "Slide to cancel"; diff --git a/Snikket/id.lproj/Account.strings b/Snikket/id.lproj/Account.strings new file mode 100644 index 0000000..35c3c6b --- /dev/null +++ b/Snikket/id.lproj/Account.strings @@ -0,0 +1,131 @@ +/* Class = "UILabel"; text = "add email"; ObjectID = "06Y-Cg-0Q3"; */ +"06Y-Cg-0Q3.text" = "add email"; + +/* Class = "UILabel"; text = "Nickname"; ObjectID = "27D-rn-4zp"; */ +"27D-rn-4zp.text" = "Nickname"; + +/* Class = "UITextField"; placeholder = "Country"; ObjectID = "4hs-GL-9fd"; */ +"4hs-GL-9fd.placeholder" = "Country"; + +/* Class = "UILabel"; text = "Change account settings"; ObjectID = "70p-aF-3x5"; */ +"70p-aF-3x5.text" = "Change account settings"; + +/* Class = "UILabel"; text = "Scan QR Code to add me as a contact"; ObjectID = "7cH-MH-cya"; */ +"7cH-MH-cya.text" = "Scan QR Code to add me as a contact"; + +/* Class = "UITextField"; placeholder = "Required"; ObjectID = "7KN-S3-8XR"; */ +"7KN-S3-8XR.placeholder" = "Required"; + +/* Class = "UITableViewController"; title = "OMEMO fingerprints"; ObjectID = "A24-eF-tzh"; */ +"A24-eF-tzh.title" = "OMEMO fingerprints"; + +/* Class = "UILabel"; text = "When in Away/XA/DND state"; ObjectID = "aKW-CM-bl2"; */ +"aKW-CM-bl2.text" = "When in Away/XA/DND state"; + +/* Class = "UITextField"; placeholder = "Type"; ObjectID = "Clb-vT-t5A"; */ +"Clb-vT-t5A.placeholder" = "Type"; + +/* Class = "UITextField"; placeholder = "City"; ObjectID = "Cmz-iN-c4d"; */ +"Cmz-iN-c4d.placeholder" = "City"; + +/* Class = "UITableViewSection"; headerTitle = "Encryption"; ObjectID = "Et5-H6-t7C"; */ +"Et5-H6-t7C.headerTitle" = "Encryption"; + +/* Class = "UITableViewController"; title = "Telephony Provider"; ObjectID = "Ey3-E6-jDR"; */ +"Ey3-E6-jDR.title" = "Telephony Provider"; + +/* Class = "UILabel"; text = "Subtitle"; ObjectID = "FeX-5F-H2m"; */ +"FeX-5F-H2m.text" = "Subtitle"; + +/* Class = "UILabel"; text = "add address"; ObjectID = "fRX-fN-yOj"; */ +"fRX-fN-yOj.text" = "add address"; + +/* Class = "UILabel"; text = "OMEMO fingerprint"; ObjectID = "gUr-GY-P3A"; */ +"gUr-GY-P3A.text" = "OMEMO fingerprint"; + +/* Class = "UILabel"; text = "Log out"; ObjectID = "GWw-NK-6oU"; */ +"GWw-NK-6oU.text" = "Log out"; + +/* Class = "UINavigationItem"; title = "Account settings"; ObjectID = "gzC-dB-kIF"; */ +"gzC-dB-kIF.title" = "Account settings"; + +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "ijD-Kb-uyj"; */ +"ijD-Kb-uyj.title" = "Done"; + +/* Class = "UILabel"; text = "Title"; ObjectID = "IUH-ca-fBy"; */ +"IUH-ca-fBy.text" = "Title"; + +/* Class = "UILabel"; text = "add phone"; ObjectID = "jAE-vq-Vfj"; */ +"jAE-vq-Vfj.text" = "add phone"; + +/* Class = "UILabel"; text = "Detail"; ObjectID = "JkB-3h-A61"; */ +"JkB-3h-A61.text" = "Detail"; + +/* Class = "UITextField"; placeholder = "Street"; ObjectID = "KgL-GY-IFp"; */ +"KgL-GY-IFp.placeholder" = "Street"; + +/* Class = "UILabel"; text = "Delete account"; ObjectID = "lGT-wY-qtX"; */ +"lGT-wY-qtX.text" = "Delete account"; + +/* Class = "UITableViewSection"; headerTitle = " Password"; ObjectID = "LO4-Ys-cek"; */ +"LO4-Ys-cek.headerTitle" = " Password"; + +/* Class = "UIButton"; normalTitle = "Change avatar"; ObjectID = "Mo3-sc-7ss"; */ +"Mo3-sc-7ss.normalTitle" = "Change avatar"; + +/* Class = "UITextField"; placeholder = "Type"; ObjectID = "NK4-tE-QSu"; */ +"NK4-tE-QSu.placeholder" = "Type"; + +/* Class = "UITextField"; placeholder = "Code"; ObjectID = "NUu-KT-QM5"; */ +"NUu-KT-QM5.placeholder" = "Code"; + +/* Class = "UITableViewSection"; headerTitle = "Push Notifications"; ObjectID = "PvC-LX-0Sp"; */ +"PvC-LX-0Sp.headerTitle" = "Push Notifications"; + +/* Class = "UIBarButtonItem"; title = "Next"; ObjectID = "R0m-k2-q64"; */ +"R0m-k2-q64.title" = "Next"; + +/* Class = "UITableViewSection"; footerTitle = "Enter your account JID"; ObjectID = "SKG-bP-NPK"; */ +"SKG-bP-NPK.footerTitle" = "Enter your account JID"; + +/* Class = "UITableViewSection"; headerTitle = " XMPP ID"; ObjectID = "SKG-bP-NPK"; */ +"SKG-bP-NPK.headerTitle" = " XMPP ID"; + +/* Class = "UILabel"; text = "None"; ObjectID = "StS-4J-0Uu"; Note = "Default value for telephony provider (None)"; */ +"StS-4J-0Uu.text" = "None"; + +/* Class = "UITextField"; placeholder = "Phone number"; ObjectID = "T1r-DU-iqs"; */ +"T1r-DU-iqs.placeholder" = "Phone number"; + +/* Class = "UILabel"; text = "Server features"; ObjectID = "t3T-uh-mob"; */ +"t3T-uh-mob.text" = "Server features"; + +/* Class = "UITextField"; placeholder = "Type"; ObjectID = "UQ1-rc-tuY"; */ +"UQ1-rc-tuY.placeholder" = "Type"; + +/* Class = "UITableViewSection"; headerTitle = "General"; ObjectID = "v8B-ee-zAk"; */ +"v8B-ee-zAk.headerTitle" = "General"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "vjD-aw-Ugt"; */ +"vjD-aw-Ugt.text" = "Label"; + +/* Class = "UILabel"; text = "Enabled"; ObjectID = "wbI-5v-vug"; */ +"wbI-5v-vug.text" = "Enabled"; + +/* Class = "UITableViewSection"; headerTitle = "Telephony"; ObjectID = "WFs-jm-Wmk"; */ +"WFs-jm-Wmk.headerTitle" = "Telephony"; + +/* Class = "UITableViewController"; title = "Server Features"; ObjectID = "wW7-3f-Kck"; */ +"wW7-3f-Kck.title" = "Server Features"; + +/* Class = "UITextField"; placeholder = "Email address"; ObjectID = "ynp-RE-XlY"; */ +"ynp-RE-XlY.placeholder" = "Email address"; + +/* Class = "UILabel"; text = "Provider"; ObjectID = "YYb-TE-za0"; Note = "Option to select telephony provider (appears directly within Telephony section)"; */ +"YYb-TE-za0.text" = "Provider"; + +/* Class = "UILabel"; text = "Re-register push notifications"; ObjectID = "ZHc-Ml-5eX"; Note = "Action button to re-register this device to receive push notifications"; */ +"ZHc-Ml-5eX.text" = "Re-register push notifications"; + +/* Class = "UILabel"; text = "Title"; ObjectID = "zhp-jp-Aoq"; */ +"zhp-jp-Aoq.text" = "Title"; diff --git a/Snikket/id.lproj/Groupchat.strings b/Snikket/id.lproj/Groupchat.strings new file mode 100644 index 0000000..9962500 --- /dev/null +++ b/Snikket/id.lproj/Groupchat.strings @@ -0,0 +1,65 @@ +/* Class = "UILabel"; text = "Notifications"; ObjectID = "02f-aw-3Zd"; */ +"02f-aw-3Zd.text" = "Notifications"; + +/* Class = "UITableViewSection"; headerTitle = " "; ObjectID = "2ZD-5S-4hK"; */ +"2ZD-5S-4hK.headerTitle" = " "; + +/* Class = "UILabel"; text = "Offline"; ObjectID = "54Z-E5-MZp"; */ +"54Z-E5-MZp.text" = "Offline"; + +/* Class = "UITableViewSection"; headerTitle = " History"; ObjectID = "552-vb-Heg"; */ +"552-vb-Heg.headerTitle" = " History"; + +/* Class = "UILabel"; text = "very long group name written here"; ObjectID = "az1-E9-Dy7"; */ +"az1-E9-Dy7.text" = "very long group name written here"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "BJz-HA-uv6"; */ +"BJz-HA-uv6.text" = "Label"; + +/* Class = "UITableViewSection"; footerTitle = "Push notification support depends on the XMPP server which you are using and may not work in some cases even if it's supported and enabled on the group chat"; ObjectID = "bRu-vo-fpu"; */ +"bRu-vo-fpu.footerTitle" = "Push notification support depends on the XMPP server which you are using and may not work in some cases even if it's supported and enabled on the group chat"; + +/* Class = "UITableViewSection"; headerTitle = " Settings"; ObjectID = "bRu-vo-fpu"; */ +"bRu-vo-fpu.headerTitle" = " Settings"; + +/* Class = "UILabel"; text = "Encryption"; ObjectID = "DQk-sn-hKj"; */ +"DQk-sn-hKj.text" = "Encryption"; + +/* Class = "UILabel"; text = "When mentioned"; ObjectID = "exK-ZH-jpA"; */ +"exK-ZH-jpA.text" = "When mentioned"; + +/* Class = "UITableViewController"; title = "Group details"; ObjectID = "IGA-uE-mHb"; */ +"IGA-uE-mHb.title" = "Group details"; + +/* Class = "UITableViewSection"; headerTitle = "Subject"; ObjectID = "iYv-zL-tZT"; */ +"iYv-zL-tZT.headerTitle" = "Subject"; + +/* Class = "UILabel"; text = "Push notifications"; ObjectID = "jMz-qR-fJ6"; */ +"jMz-qR-fJ6.text" = "Push notifications"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "kFB-wJ-yDE"; */ +"kFB-wJ-yDE.text" = "Label"; + +/* Class = "UILabel"; text = "Group name"; ObjectID = "lEG-rf-VV5"; */ +"lEG-rf-VV5.text" = "Group name"; + +/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "Qmg-sW-dkA"; */ +"Qmg-sW-dkA.normalTitle" = "Button"; + +/* Class = "UITableViewController"; title = "Invite to chat"; ObjectID = "SOJ-3n-8YB"; */ +"SOJ-3n-8YB.title" = "Invite to chat"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "t0j-TN-qOY"; */ +"t0j-TN-qOY.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "WaG-aF-FTg"; */ +"WaG-aF-FTg.text" = "Label"; + +/* Class = "UILabel"; text = "Attachments"; ObjectID = "wBw-1J-Xau"; */ +"wBw-1J-Xau.text" = "Attachments"; + +/* Class = "UILabel"; text = "Delete History"; ObjectID = "wNk-Ce-zfI"; */ +"wNk-Ce-zfI.text" = "Delete History"; + +/* Class = "UILabel"; text = "None"; ObjectID = "YT2-1I-RlM"; */ +"YT2-1I-RlM.text" = "None"; diff --git a/Snikket/id.lproj/Info.plist b/Snikket/id.lproj/Info.plist new file mode 100644 index 0000000..cc6440a --- /dev/null +++ b/Snikket/id.lproj/Info.plist @@ -0,0 +1,98 @@ + + + + + BGTaskSchedulerPermittedIdentifiers + + org.tigase.messenger.mobile.refresh + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + Snikket + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Snikket + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLName + org.snikket.ios + CFBundleURLSchemes + + xmpp + + + + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + ITSAppUsesNonExemptEncryption + + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSCameraUsageDescription + Uses camera to capture photo for avatar and for VoIP calls + NSLocationWhenInUseUsageDescription + Allows you to share your location with others + NSMicrophoneUsageDescription + Uses microphone for VoIP calls + NSPhotoLibraryAddUsageDescription + Used to save attachements from conversations + NSPhotoLibraryUsageDescription + Used to select avatar + UIBackgroundModes + + fetch + remote-notification + voip + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarTintParameters + + UINavigationBar + + Style + UIBarStyleDefault + Translucent + + + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Snikket/id.lproj/Info.strings b/Snikket/id.lproj/Info.strings new file mode 100644 index 0000000..6720e8e --- /dev/null +++ b/Snikket/id.lproj/Info.strings @@ -0,0 +1,8 @@ +/* Class = "UILabel"; text = "Version: 1.0"; ObjectID = "lRd-ky-eXs"; */ +"lRd-ky-eXs.text" = "Version: 1.0"; + +/* Class = "UILabel"; text = "Build:"; ObjectID = "R7V-kJ-UYE"; */ +"R7V-kJ-UYE.text" = "Build:"; + +/* Class = "UILabel"; text = "Snikket"; ObjectID = "Z7m-aB-9EO"; */ +"Z7m-aB-9EO.text" = "Snikket"; diff --git a/Snikket/id.lproj/LaunchScreen.strings b/Snikket/id.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Snikket/id.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/Snikket/id.lproj/Localizable.strings b/Snikket/id.lproj/Localizable.strings new file mode 100644 index 0000000..0f1c267 --- /dev/null +++ b/Snikket/id.lproj/Localizable.strings @@ -0,0 +1,700 @@ +/* No comment provided by engineer. */ +" server returned an error on the request to enable push notifications. You can try to enable this feature later on from the account settings." = " server returned an error on the request to enable push notifications. You can try to enable this feature later on from the account settings."; + +/* Placeholder is the MBs Download Limit */ +"%d MB" = "%d MB"; + +/* No comment provided by engineer. */ +"(private message)" = "(private message)"; + +/* No comment provided by engineer. */ +"1 line of preview" = "1 line of preview"; + +/* Alert dialog title - account is offline */ +"Account Offline" = "Account Offline"; + +/* Alert title */ +"Account Removal Failed" = "Account Removal Failed"; + +/* No comment provided by engineer. */ +"Accounts" = "Accounts"; + +/* No comment provided by engineer. */ +"Add account" = "Add account"; + +/* Action: add the provided JID as a new contact */ +"Add contact" = "Add contact"; + +/* No comment provided by engineer. */ +"Addresses" = "Addresses"; + +/* No comment provided by engineer. */ +"All" = "All"; + +/* No comment provided by engineer. */ +"All messages will be deleted and all participants will be kicked out. Are you sure?" = "All messages will be deleted and all participants will be kicked out. Are you sure?"; + +/* Option: Always notify user about messages in this group */ +"Always" = "Always"; + +/* No comment provided by engineer. */ +"Attachment" = "Attachment"; + +/* No comment provided by engineer. */ +"Attachments" = "Attachments"; + +/* No comment provided by engineer. */ +"Audio call" = "Audio call"; + +/* App Theme Type */ +"Auto" = "Auto"; + +/* Status Option + Status Options */ +"Automatic" = "Automatic"; + +/* Status Options */ +"Away" = "Away"; + +/* Alert title */ +"Ban Failed" = "Ban Failed"; + +/* No comment provided by engineer. */ +"Ban user" = "Ban user"; + +/* No comment provided by engineer. */ +"Banning user" = "Banning user"; + +/* No comment provided by engineer. */ +"Be right back" = "Be right back"; + +/* Sorting Chat Messages */ +"By availability and time" = "By availability and time"; + +/* No comment provided by engineer. */ +"By name" = "By name"; + +/* No comment provided by engineer. */ +"By status" = "By status"; + +/* Sorting Chat Messages */ +"By time" = "By time"; + +/* No comment provided by engineer. */ +"Call ended" = "Call ended"; + +/* No comment provided by engineer. */ +"Call failed" = "Call failed"; + +/* Menu item: open camera to capture media for sharing */ +"Camera" = "Camera"; + +/* No comment provided by engineer. */ +"Cancel" = "Cancel"; + +/* No comment provided by engineer. */ +"Change" = "Change"; + +/* Alert title: change group chat picture */ +"Change picture" = "Change picture"; + +/* No comment provided by engineer. */ +"Change subject" = "Change subject"; + +/* No comment provided by engineer. */ +"Channel destruction failed!" = "Channel destruction failed!"; + +/* Status Options */ +"Chat" = "Chat"; + +/* Error text - while uploading file */ +"Check your network connection or try again later." = "Check your network connection or try again later."; + +/* No comment provided by engineer. */ +"Clear History" = "Clear History"; + +/* No comment provided by engineer. */ +"Close" = "Close"; + +/* Action button */ +"Connect" = "Connect"; + +/* No comment provided by engineer. */ +"Connecting..." = "Connecting..."; + +/* No comment provided by engineer. */ +"Continue" = "Continue"; + +/* Context menu action + Context menu item */ +"Copy" = "Copy"; + +/* No comment provided by engineer. */ +"Could not connect to the service. Check your network connectivity or try again later." = "Could not connect to the service. Check your network connectivity or try again later."; + +/* Error text - while uploading file */ +"Could not detect file type." = "Could not detect file type."; + +/* Error text - while uploading file */ +"Could not determine file size." = "Could not determine file size."; + +/* No comment provided by engineer. */ +"Could not rename group chat. The server responded with an error:" = "Could not rename group chat. The server responded with an error:"; + +/* No comment provided by engineer. */ +"Could not set the group chat picture. The server responded with an error:" = "Could not set the group chat picture. The server responded with an error:"; + +/* No comment provided by engineer. */ +"Create" = "Create"; + +/* Alert title */ +"Create Account" = "Create Account"; + +/* App Theme Type */ +"Dark" = "Dark"; + +/* No comment provided by engineer. */ +"Default" = "Default"; + +/* No comment provided by engineer. */ +"Delete" = "Delete"; + +/* Action: Delete all downloaded files */ +"Delete all" = "Delete all"; + +/* No comment provided by engineer. */ +"Delete channel?" = "Delete channel?"; + +/* No comment provided by engineer. */ +"Delete chat" = "Delete chat"; + +/* No comment provided by engineer. */ +"Delete group chat?" = "Delete group chat?"; + +/* No comment provided by engineer. */ +"Delete My Account" = "Delete My Account"; + +/* No comment provided by engineer. */ +"Deleting your account will permanently log out all your devices and delete your account, profile, and associated data on %@." = "Deleting your account will permanently log out all your devices and delete your account, profile, and associated data on %@."; + +/* No comment provided by engineer. */ +"Details" = "Details"; + +/* No comment provided by engineer. */ +"Display" = "Display"; + +/* Label for text field where user can enter their preferred name to display to their contacts */ +"Display Name" = "Display Name"; + +/* Status Options */ +"Do not disturb" = "Do not disturb"; + +/* No comment provided by engineer. */ +"Do you want to ban user" = "Do you want to ban user"; + +/* Confirmation prompt text */ +"Do you wish to publish this photo as your profile picture?" = "Do you wish to publish this photo as your profile picture?"; + +/* Alert text. Placeholder is server domain. */ +"Do you wish to register a new account at %@?" = "Do you wish to register a new account at %@?"; + +/* Alert text. Placeholder is account JID. */ +"Do you wish to register the account %@?" = "Do you wish to register the account %@?"; + +/* Menu item: opens file picket to select document to share */ +"Document" = "Document"; + +/* Alert title + Context menu item */ +"Download" = "Download"; + +/* No comment provided by engineer. */ +"Edit" = "Edit"; + +/* Section heading for list of contact email addresses */ +"Email addresses" = "Email addresses"; + +/* No comment provided by engineer. */ +"Enable %@" = "Enable %@"; + +/* No comment provided by engineer. */ +"Enable telephony provider?" = "Enable telephony provider?"; + +/* No comment provided by engineer. */ +"Encryption" = "Encryption"; + +/* Alert title */ +"Encryption Not Supported" = "Encryption Not Supported"; + +/* No comment provided by engineer. */ +"Enter default nickname to use in chats" = "Enter default nickname to use in chats"; + +/* No comment provided by engineer. */ +"Enter message to send to:" = "Enter message to send to:"; + +/* No comment provided by engineer. */ +"Enter new name for group chat" = "Enter new name for group chat"; + +/* No comment provided by engineer. */ +"Enter new subject for group chat" = "Enter new subject for group chat"; + +/* No comment provided by engineer. */ +"Enter status message" = "Enter status message"; + +/* No comment provided by engineer. */ +"Error" = "Error"; + +/* Status Options */ +"Extended away" = "Extended away"; + +/* Alert text. First placeholder is name or JID, second is error message */ +"Failed to ban %@: %@" = "Failed to ban %1$@: %2$@"; + +/* No comment provided by engineer. */ +"Failed To Update Contact List" = "Failed To Update Contact List"; + +/* No comment provided by engineer. */ +"Failure" = "Failure"; + +/* Alert text */ +"File is not available locally. Should it be downloaded?" = "File is not available locally. Should it be downloaded?"; + +/* Error text - while uploading file */ +"File is too large to share on your account." = "File is too large to share on your account."; + +/* Error text */ +"File upload was not acknowledged by the server." = "File upload was not acknowledged by the server."; + +/* Error text - while uploading file */ +"File uploads are not supported on your account." = "File uploads are not supported on your account."; + +/* No comment provided by engineer. */ +"Fingerprint of this device" = "Fingerprint of this device"; + +/* No comment provided by engineer. */ +"Free for chat" = "Free for chat"; + +/* No comment provided by engineer. */ +"General" = "General"; + +/* No comment provided by engineer. */ +"History" = "History"; + +/* No comment provided by engineer. */ +"Info" = "Info"; + +/* No comment provided by engineer. */ +"Invitation" = "Invitation"; + +/* No comment provided by engineer. */ +"Invite" = "Invite"; + +/* No comment provided by engineer. */ +"It was not possible to access camera or microphone. Please check privacy settings" = "It was not possible to access camera or microphone. Please check privacy settings"; + +/* No comment provided by engineer. */ +"It was not possible to access camera. Please check in privacy settings that you have granted Snikket access to the camera." = "It was not possible to access camera. Please check in privacy settings that you have granted Snikket access to the camera."; + +/* Error text: upload failed due to permissions */ +"It was not possible to access the file." = "It was not possible to access the file."; + +/* No comment provided by engineer. */ +"It was not possible to contact XMPP server and sign in." = "It was not possible to contact XMPP server and sign in."; + +/* No comment provided by engineer. */ +"It was not possible to destroy channel %@. Server returned an error:" = "It was not possible to destroy channel %@. Server returned an error:"; + +/* No comment provided by engineer. */ +"It was not possible to establish call" = "It was not possible to establish call"; + +/* Action: Join the supplied JID as a group */ +"Join group" = "Join group"; + +/* No comment provided by engineer. */ +"Join group chat" = "Join group chat"; + +/* No comment provided by engineer. */ +"Joined" = "Joined"; + +/* No comment provided by engineer. */ +"Joining..." = "Joining..."; + +/* No comment provided by engineer. */ +"Key not generated!" = "Key not generated!"; + +/* Placeholder is number of days */ +"Last %d days" = "Last %d days"; + +/* Placeholder is hours value */ +"Last %d hours" = "Last %d hours"; + +/* No comment provided by engineer. */ +"Leave chat" = "Leave chat"; + +/* App Theme Type */ +"Light" = "Light"; + +/* No comment provided by engineer. */ +"Limits the size of the files sent to you which may be automatically downloaded" = "Limits the size of the files sent to you which may be automatically downloaded"; + +/* No comment provided by engineer. */ +"lines of preview" = "lines of preview"; + +/* No comment provided by engineer. */ +"List of Messages" = "List of Messages"; + +/* Menu item: open location picker to share a location */ +"Location" = "Location"; + +/* No comment provided by engineer. */ +"Log Out" = "Log Out"; + +/* No comment provided by engineer. */ +"Login and password do not match." = "Login and password do not match."; + +/* Alert title for storage usage */ +"Manage Storage" = "Manage Storage"; + +/* No comment provided by engineer. */ +"Media" = "Media"; + +/* No comment provided by engineer. */ +"Member" = "Member"; + +/* No comment provided by engineer. */ +"Message Archiving" = "Message Archiving"; + +/* No comment provided by engineer. */ +"Message Archiving Error" = "Message Archiving Error"; + +/* No comment provided by engineer. */ +"Messages" = "Messages"; + +/* Context menu item: view more options + Menu item: see more message actions + Menu item: view more options */ +"More..." = "More..."; + +/* Option: notifications from this group chat will be suppressed */ +"Muted" = "Muted"; + +/* No comment provided by engineer. */ +"Name" = "Name"; + +/* No comment provided by engineer. */ +"New call..." = "New call..."; + +/* No comment provided by engineer. */ +"New private group chat" = "New private group chat"; + +/* No comment provided by engineer. */ +"New public group chat" = "New public group chat"; + +/* No comment provided by engineer. */ +"Nickname" = "Nickname"; + +/* No comment provided by engineer. */ +"No" = "No"; + +/* No comment provided by engineer. */ +"No attachments" = "No attachments"; + +/* No comment provided by engineer. */ +"No messages yet. Say hi!" = "No messages yet. Say hi!"; + +/* No comment provided by engineer. */ +"None" = "None"; + +/* Alert title */ +"Not Connected" = "Not Connected"; + +/* No comment provided by engineer. */ +"Not connected!" = "Not connected!"; + +/* No comment provided by engineer. */ +"Not Joined" = "Not Joined"; + +/* No comment provided by engineer. */ +"Nothing" = "Nothing"; + +/* No comment provided by engineer. */ +"Offline" = "Offline"; + +/* No comment provided by engineer. */ +"OK" = "OK"; + +/* No comment provided by engineer. */ +"Older than 7 days" = "Older than 7 days"; + +/* No comment provided by engineer. */ +"OMEMO" = "OMEMO"; + +/* Status Options */ +"Online" = "Online"; + +/* Action: open a chat with a JID */ +"Open chat" = "Open chat"; + +/* Alert title */ +"Open URL" = "Open URL"; + +/* No comment provided by engineer. */ +"Operation timed out" = "Operation timed out"; + +/* No comment provided by engineer. */ +"operation timed out" = "operation timed out"; + +/* No comment provided by engineer. */ +"Original quality will share image in the format in which it is stored on your phone and it may not be supported by every device." = "Original quality will share image in the format in which it is stored on your phone and it may not be supported by every device."; + +/* No comment provided by engineer. */ +"Original quality will share video in the format in which video is stored on your phone and it may not be supported by every device." = "Original quality will share video in the format in which video is stored on your phone and it may not be supported by every device."; + +/* No comment provided by engineer. */ +"Other devices fingerprints" = "Other devices fingerprints"; + +/* No comment provided by engineer. */ +"Permanently Delete Account" = "Permanently Delete Account"; + +/* Section heading for list of contact phone numbers */ +"Phone numbers" = "Phone numbers"; + +/* Menu item: select media to share from photo/video library */ +"Photo & Video Library" = "Photo & Video Library"; + +/* No comment provided by engineer. */ +"Please try again!" = "Please try again!"; + +/* Alert title */ +"Preview" = "Preview"; + +/* No comment provided by engineer. */ +"Private message" = "Private message"; + +/* Alert title */ +"Profile Picture Update Failed" = "Profile Picture Update Failed"; + +/* No comment provided by engineer. */ +"Provided values are not acceptable" = "Provided values are not acceptable"; + +/* Alert title */ +"Push Notifications" = "Push Notifications"; + +/* No comment provided by engineer. */ +"Push notifications are enabled for %@. They need to be disabled before account can be removed and it is not possible to at this time. Please try again later." = "Push notifications are enabled for %@. They need to be disabled before account can be removed and it is not possible to at this time. Please try again later."; + +/* Alert title */ +"Push Notifications Enabled" = "Push Notifications Enabled"; + +/* No comment provided by engineer. */ +"Push Notifications Error" = "Push Notifications Error"; + +/* No comment provided by engineer. */ +"Quality of shared media" = "Quality of shared media"; + +/* Placeholder is the number in MBs */ +"Received files are using %d MB of storage." = "Received files are using %d MB of storage."; + +/* No comment provided by engineer. */ +"Register" = "Register"; + +/* Alert title */ +"Registration Failure" = "Registration Failure"; + +/* No comment provided by engineer. */ +"Registration is not supported by this server" = "Registration is not supported by this server"; + +/* No comment provided by engineer. */ +"Remove Account Data" = "Remove Account Data"; + +/* No comment provided by engineer. */ +"Rename" = "Rename"; + +/* No comment provided by engineer. */ +"Rename chat" = "Rename chat"; + +/* No comment provided by engineer. */ +"Report" = "Report"; + +/* No comment provided by engineer. */ +"Report and Block" = "Report and Block"; + +/* No comment provided by engineer. */ +"Report Contact" = "Report Contact"; + +/* No comment provided by engineer. */ +"Reported" = "Reported"; + +/* No comment provided by engineer. */ +"Reporting..." = "Reporting..."; + +/* No comment provided by engineer. */ +"Resend" = "Resend"; + +/* No comment provided by engineer. */ +"Ringing..." = "Ringing..."; + +/* No comment provided by engineer. */ +"Save" = "Save"; + +/* No comment provided by engineer. */ +"Scanned QR code is not valid for Snikket." = "Scanned QR code is not valid for Snikket."; + +/* No comment provided by engineer. */ +"Search channels" = "Search channels"; + +/* Shown above a choice list of the user's accounts */ +"Select account to open chat from:" = "Select account to open chat from:"; + +/* No comment provided by engineer. */ +"Select photo" = "Select photo"; + +/* Alert title - select image share quality */ +"Select quality" = "Select quality"; + +/* No comment provided by engineer. */ +"Select quality of the image to use for sharing" = "Select quality of the image to use for sharing"; + +/* No comment provided by engineer. */ +"Select quality of the video to use for sharing" = "Select quality of the video to use for sharing"; + +/* No comment provided by engineer. */ +"Select status" = "Select status"; + +/* No comment provided by engineer. */ +"Send" = "Send"; + +/* No comment provided by engineer. */ +"Send Current Location" = "Send Current Location"; + +/* No comment provided by engineer. */ +"Send message" = "Send message"; + +/* No comment provided by engineer. */ +"Send Pin Location" = "Send Pin Location"; + +/* No comment provided by engineer. */ +"Server did not respond to registration request" = "Server did not respond to registration request"; + +/* No comment provided by engineer. */ +"server returned an error on the request to enable archiving. You can try to enable this feature later on from the account settings." = "server returned an error on the request to enable archiving. You can try to enable this feature later on from the account settings."; + +/* No comment provided by engineer. */ +"Server returned error:" = "Server returned error:"; + +/* No comment provided by engineer. */ +"Set" = "Set"; + +/* No comment provided by engineer. */ +"Settings" = "Settings"; + +/* Context menu action */ +"Share..." = "Share..."; + +/* Informs user to slide their finger in direction of arrow to cancel audio recording */ +"Slide to cancel" = "Slide to cancel"; + +/* Alert title - starting a new chat */ +"Start Chat" = "Start Chat"; + +/* No comment provided by engineer. */ +"Status" = "Status"; + +/* No comment provided by engineer. */ +"Successfully registered to receive push notifications." = "Successfully registered to receive push notifications."; + +/* No comment provided by engineer. */ +"Take photo" = "Take photo"; + +/* followed by a space and error condition */ +"The server returned an error:" = "The server returned an error:"; + +/* No comment provided by engineer. */ +"The server returned an error: " = "The server returned an error: "; + +/* Error text - while uploading a file. Placeholder is a HTTP status code. */ +"The upload was rejected by the server (error %d)." = "The upload was rejected by the server (error %d)."; + +/* No comment provided by engineer. */ +"The user will be reported and any calls, messages and status updates from them will be blocked." = "The user will be reported and any calls, messages and status updates from them will be blocked."; + +/* Error text - while uploading file */ +"There was a server error processing the file upload. Please try again later." = "There was a server error processing the file upload. Please try again later."; + +/* No comment provided by engineer. */ +"This will delete all the message history for this chat. Continue?" = "This will delete all the message history for this chat. Continue?"; + +/* Alert text */ +"Unable to publish your profile picture at this time.\nError: %@" = "Unable to publish your profile picture at this time.\nError: %@"; + +/* No comment provided by engineer. */ +"Unblock" = "Unblock"; + +/* Error text - while uploading file. Placeholder is a HTTP status code. */ +"Unexpected error (%d) received while uploading file." = "Unexpected error (%d) received while uploading file."; + +/* No comment provided by engineer. */ +"Unkown error occured" = "Unkown error occured"; + +/* No comment provided by engineer. */ +"Unlimited" = "Unlimited"; + +/* Alert title */ +"Upload Failed" = "Upload Failed"; + +/* No comment provided by engineer. */ +"Used image and video quality may impact storage and network usage" = "Used image and video quality may impact storage and network usage"; + +/* No comment provided by engineer. */ +"User with provided username already exists" = "User with provided username already exists"; + +/* No comment provided by engineer. */ +"using" = "using"; + +/* No comment provided by engineer. */ +"Video call" = "Video call"; + +/* No comment provided by engineer. */ +"Warning" = "Warning"; + +/* Placeholder is xmpp: URI */ +"What do you want to do with %@?" = "What do you want to do with %@?"; + +/* Option: only notify user when they are mentioned in this group */ +"When mentioned" = "When mentioned"; + +/* No comment provided by engineer. */ +"Would you like to use %@ as the default provider for outgoing SMS and calls from %@?" = "Would you like to use %1$@ as the default provider for outgoing SMS and calls from %2$@?"; + +/* No comment provided by engineer. */ +"Yes" = "Yes"; + +/* No comment provided by engineer. */ +"Yesterday" = "Yesterday"; + +/* No comment provided by engineer. */ +"You are invited to join conversation at" = "You are invited to join conversation at"; + +/* No comment provided by engineer. */ +"You are leaving the group chat" = "You are leaving the group chat"; + +/* Alert text */ +"You are not currently connected to this group. Please check your network connection and try again later." = "You are not currently connected to this group. Please check your network connection and try again later."; + +/* No comment provided by engineer. */ +"You are not joined to the channel." = "You are not joined to the channel."; + +/* No comment provided by engineer. */ +"You can log out of this account temporarily, or permanently remove all account data from this device (including chats). Account removal cannot be undone." = "You can log out of this account temporarily, or permanently remove all account data from this device (including chats). Account removal cannot be undone."; + +/* No comment provided by engineer. */ +"You have enabled encryption, but this group does not support encrypted messages. Please change encryption settings to be able to send messages." = "You have enabled encryption, but this group does not support encrypted messages. Please change encryption settings to be able to send messages."; + +/* No comment provided by engineer. */ +"You need to connect to your account before you can update your contact list. Do you wish to connect now?" = "You need to connect to your account before you can update your contact list. Do you wish to connect now?"; + +/* Placeholder is the Group Name */ +"You've left the group %@ and notifications for this group have been disabled.\nYou may need to reenable them on other devices." = "You've left the group %@ and notifications for this group have been disabled.\nYou may need to reenable them on other devices."; + +/* No comment provided by engineer. */ +"Your Name" = "Your Name"; diff --git a/Snikket/id.lproj/MIX.strings b/Snikket/id.lproj/MIX.strings new file mode 100644 index 0000000..bea1164 --- /dev/null +++ b/Snikket/id.lproj/MIX.strings @@ -0,0 +1,167 @@ +/* Class = "UILabel"; text = "Title"; ObjectID = "14i-9k-DTf"; */ +"14i-9k-DTf.text" = "Title"; + +/* Class = "UITextField"; placeholder = "Automatic"; ObjectID = "19A-3H-7QN"; */ +"19A-3H-7QN.placeholder" = "Automatic"; + +/* Class = "UILabel"; text = "Subtitle"; ObjectID = "491-DV-e2a"; */ +"491-DV-e2a.text" = "Subtitle"; + +/* Class = "UITableViewSection"; headerTitle = "Select Account"; ObjectID = "4lS-sP-X2v"; */ +"4lS-sP-X2v.headerTitle" = "Select Account"; + +/* Class = "UILabel"; text = "When mentioned"; ObjectID = "4mY-vJ-rHP"; */ +"4mY-vJ-rHP.text" = "When mentioned"; + +/* Class = "UILabel"; text = "Use MIX"; ObjectID = "4P1-zT-Par"; */ +"4P1-zT-Par.text" = "Use MIX"; + +/* Class = "UITableViewSection"; footerTitle = "Enter domain name of a component with channel or leave blank to automatically detect components with channels"; ObjectID = "94L-uC-ldZ"; */ +"94L-uC-ldZ.footerTitle" = "Enter domain name of a component with channel or leave blank to automatically detect components with channels"; + +/* Class = "UITableViewSection"; headerTitle = "Component domain"; ObjectID = "94L-uC-ldZ"; */ +"94L-uC-ldZ.headerTitle" = "Component domain"; + +/* Class = "UITableViewSection"; headerTitle = " "; ObjectID = "aFn-uB-myu"; */ +"aFn-uB-myu.headerTitle" = " "; + +/* Class = "UITableViewSection"; headerTitle = "Experimental"; ObjectID = "aqR-Sm-2re"; */ +"aqR-Sm-2re.headerTitle" = "Experimental"; + +/* Class = "UILabel"; text = "Offline"; ObjectID = "bRP-ZF-wlT"; */ +"bRP-ZF-wlT.text" = "Offline"; + +/* Class = "UINavigationItem"; title = "Select channel"; ObjectID = "C5U-9C-poe"; */ +"C5U-9C-poe.title" = "Select channel"; + +/* Class = "UIBarButtonItem"; title = "Item"; ObjectID = "cv8-VS-8c6"; */ +"cv8-VS-8c6.title" = "Item"; + +/* Class = "UILabel"; text = "Notifications"; ObjectID = "fFa-pN-ndo"; */ +"fFa-pN-ndo.text" = "Notifications"; + +/* Class = "UILabel"; text = "Subtitle"; ObjectID = "frK-mh-cjn"; */ +"frK-mh-cjn.text" = "Subtitle"; + +/* Class = "UILabel"; text = "Room name"; ObjectID = "gBT-qM-eUt"; */ +"gBT-qM-eUt.text" = "Room name"; + +/* Class = "UITextField"; placeholder = "required"; ObjectID = "gNa-Cz-T88"; */ +"gNa-Cz-T88.placeholder" = "required"; + +/* Class = "UILabel"; text = "Title"; ObjectID = "Gxx-ac-Co4"; */ +"Gxx-ac-Co4.text" = "Title"; + +/* Class = "UILabel"; text = "Title"; ObjectID = "hOB-gk-g82"; */ +"hOB-gk-g82.text" = "Title"; + +/* Class = "UITextField"; placeholder = "optional"; ObjectID = "Jiu-Fd-AsM"; */ +"Jiu-Fd-AsM.placeholder" = "optional"; + +/* Class = "UITextField"; placeholder = "required"; ObjectID = "kD7-lz-IEK"; */ +"kD7-lz-IEK.placeholder" = "required"; + +/* Class = "UITableViewController"; title = "Channel details"; ObjectID = "ke4-WK-unt"; */ +"ke4-WK-unt.title" = "Channel details"; + +/* Class = "UIBarButtonItem"; title = "Invite"; ObjectID = "Kre-sS-2vH"; */ +"Kre-sS-2vH.title" = "Invite"; + +/* Class = "UILabel"; text = "Subtitle"; ObjectID = "L9j-Ji-XrB"; */ +"L9j-Ji-XrB.text" = "Subtitle"; + +/* Class = "UILabel"; text = "Title"; ObjectID = "lD0-pX-s2D"; */ +"lD0-pX-s2D.text" = "Title"; + +/* Class = "UIViewController"; title = "Channel Controller"; ObjectID = "lfo-Uw-gL1"; */ +"lfo-Uw-gL1.title" = "Channel Controller"; + +/* Class = "UILabel"; text = "Channel description"; ObjectID = "mpC-5r-OOo"; */ +"mpC-5r-OOo.text" = "Channel description"; + +/* Class = "UITextField"; placeholder = "Description"; ObjectID = "MsF-6z-TY3"; */ +"MsF-6z-TY3.placeholder" = "Description"; + +/* Class = "UINavigationItem"; title = "Participants"; ObjectID = "mW8-st-X8N"; */ +"mW8-st-X8N.title" = "Participants"; + +/* Class = "UITableViewSection"; headerTitle = "Access"; ObjectID = "mXt-Xt-Bj5"; */ +"mXt-Xt-Bj5.headerTitle" = "Access"; + +/* Class = "UITableViewSection"; headerTitle = " "; ObjectID = "Ngp-xJ-0lZ"; */ +"Ngp-xJ-0lZ.headerTitle" = " "; + +/* Class = "UILabel"; text = "Attachments"; ObjectID = "NWM-d4-jmq"; */ +"NWM-d4-jmq.text" = "Attachments"; + +/* Class = "UITableViewSection"; headerTitle = "Nickname"; ObjectID = "NyO-PD-t9d"; */ +"NyO-PD-t9d.headerTitle" = "Nickname"; + +/* Class = "UILabel"; text = "Delete channel"; ObjectID = "O9e-sP-5IO"; */ +"O9e-sP-5IO.text" = "Delete channel"; + +/* Class = "UITextField"; placeholder = "required"; ObjectID = "oIZ-xz-SzZ"; */ +"oIZ-xz-SzZ.placeholder" = "required"; + +/* Class = "UILabel"; text = "Channel name"; ObjectID = "P5r-af-VfY"; */ +"P5r-af-VfY.text" = "Channel name"; + +/* Class = "UIBarButtonItem"; title = "Join"; ObjectID = "Pgv-Uz-ZgP"; */ +"Pgv-Uz-ZgP.title" = "Join"; + +/* Class = "UIBarButtonItem"; title = "Create"; ObjectID = "pZC-YZ-jlg"; */ +"pZC-YZ-jlg.title" = "Create"; + +/* Class = "UITableViewSection"; headerTitle = "Password"; ObjectID = "qB9-Eq-3RT"; */ +"qB9-Eq-3RT.headerTitle" = "Password"; + +/* Class = "UITextField"; placeholder = "Name"; ObjectID = "r60-FV-hoE"; */ +"r60-FV-hoE.placeholder" = "Name"; + +/* Class = "UILabel"; text = "Change"; ObjectID = "Sso-1F-PI3"; */ +"Sso-1F-PI3.text" = "Change"; + +/* Class = "UITableViewSection"; footerTitle = "Select which account should be used to join channel"; ObjectID = "SUF-pg-qbn"; */ +"SUF-pg-qbn.footerTitle" = "Select which account should be used to join channel"; + +/* Class = "UITableViewSection"; headerTitle = "Account"; ObjectID = "SUF-pg-qbn"; */ +"SUF-pg-qbn.headerTitle" = "Account"; + +/* Class = "UITableViewSection"; footerTitle = "Notification support and filtering depends on the XMPP server which you are using and may not work in some cases even if it's enabled here."; ObjectID = "Ta8-dG-cwn"; */ +"Ta8-dG-cwn.footerTitle" = "Notification support and filtering depends on the XMPP server which you are using and may not work in some cases even if it's enabled here."; + +/* Class = "UITableViewSection"; headerTitle = " Settings"; ObjectID = "Ta8-dG-cwn"; */ +"Ta8-dG-cwn.headerTitle" = " Settings"; + +/* Class = "UILabel"; text = "Subtitle"; ObjectID = "TOR-gJ-n2M"; */ +"TOR-gJ-n2M.text" = "Subtitle"; + +/* Class = "UITextField"; text = "test@example.com"; ObjectID = "tUe-gp-Aqd"; */ +"tUe-gp-Aqd.text" = "test@example.com"; + +/* Class = "UITableViewSection"; footerTitle = "ID of a channel used for joining (localpart of a JID)"; ObjectID = "u6K-qu-Pf5"; */ +"u6K-qu-Pf5.footerTitle" = "ID of a channel used for joining (localpart of a JID)"; + +/* Class = "UITableViewSection"; headerTitle = "Channel ID"; ObjectID = "u6K-qu-Pf5"; */ +"u6K-qu-Pf5.headerTitle" = "Channel ID"; + +/* Class = "UINavigationItem"; title = "Blocked"; ObjectID = "uMJ-O9-BGV"; */ +"uMJ-O9-BGV.title" = "Blocked"; + +/* Class = "UIBarButtonItem"; title = "Next"; ObjectID = "uX9-lh-BwU"; */ +"uX9-lh-BwU.title" = "Next"; + +/* Class = "UITableViewSection"; headerTitle = "Channel name"; ObjectID = "vcg-og-awz"; */ +"vcg-og-awz.headerTitle" = "Channel name"; + +/* Class = "UIBarButtonItem"; title = "Item"; ObjectID = "VkQ-fL-ON5"; */ +"VkQ-fL-ON5.title" = "Item"; + +/* Class = "UINavigationItem"; title = "Create channel"; ObjectID = "Vna-Fa-6lB"; */ +"Vna-Fa-6lB.title" = "Create channel"; + +/* Class = "UILabel"; text = "Invitation only"; ObjectID = "Xcj-Am-jtk"; */ +"Xcj-Am-jtk.text" = "Invitation only"; + +/* Class = "UILabel"; text = "Title"; ObjectID = "zcF-H6-Z39"; */ +"zcF-H6-Z39.text" = "Title"; diff --git a/Snikket/id.lproj/Main.strings b/Snikket/id.lproj/Main.strings new file mode 100644 index 0000000..09649de --- /dev/null +++ b/Snikket/id.lproj/Main.strings @@ -0,0 +1,107 @@ +/* Class = "UILabel"; text = "Your server for account \\(account) supports message archiving. Would you like to enable this feature?"; ObjectID = "1dk-YA-RVu"; */ +"1dk-YA-RVu.text" = "Your server for account \\(account) supports message archiving. Would you like to enable this feature?"; + +/* Class = "UIButton"; normalTitle = "Send Current Location"; ObjectID = "5tI-9V-tVB"; */ +"5tI-9V-tVB.normalTitle" = "Send Current Location"; + +/* Class = "UIViewController"; title = "Chats"; ObjectID = "9pv-A4-QxB"; */ +"9pv-A4-QxB.title" = "Chats"; + +/* Class = "UITabBarItem"; title = "Chats"; ObjectID = "acW-dT-cKf"; */ +"acW-dT-cKf.title" = "Chats"; + +/* Class = "UITextField"; placeholder = "Enter chat address"; ObjectID = "BM3-28-huR"; */ +"BM3-28-huR.placeholder" = "Enter chat address"; + +/* Class = "UINavigationItem"; title = "Details"; ObjectID = "bNp-S8-ulX"; Note = "Contact info screen title"; */ +"bNp-S8-ulX.title" = "Details"; + +/* Class = "UINavigationItem"; title = "Attachments"; ObjectID = "C1j-4i-HDP"; Note = "Conversation shared media gallery title"; */ +"C1j-4i-HDP.title" = "Attachments"; + +/* Class = "UILabel"; text = "Message Archiving"; ObjectID = "Ckp-Mb-v0c"; */ +"Ckp-Mb-v0c.text" = "Message Archiving"; + +/* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "Dx3-QU-3cN"; */ +"Dx3-QU-3cN.title" = "Back"; + +/* Class = "UINavigationItem"; title = "Send Location"; ObjectID = "e6z-jk-XtN"; */ +"e6z-jk-XtN.title" = "Send Location"; + +/* Class = "UILabel"; text = "Attachments"; ObjectID = "EpU-tc-DIx"; */ +"EpU-tc-DIx.text" = "Attachments"; + +/* Class = "UILabel"; text = "Contact added you to their contact list. Add to contacts?"; ObjectID = "ezh-iK-Sk7"; */ +"ezh-iK-Sk7.text" = "Contact added you to their contact list. Add to contacts?"; + +/* Class = "UILabel"; text = "Receive presence updates"; ObjectID = "ffo-7n-Tn2"; */ +"ffo-7n-Tn2.text" = "Receive presence updates"; + +/* Class = "UILabel"; text = "Mute contact"; ObjectID = "g8N-kr-fax"; Note = "Toggle label (in contact details): mute notifications from this contact"; */ +"g8N-kr-fax.text" = "Mute contact"; + +/* Class = "UITextField"; placeholder = "Select account"; ObjectID = "gXY-yq-Y2K"; */ +"gXY-yq-Y2K.placeholder" = "Select account"; + +/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "k9G-H8-3Hb"; */ +"k9G-H8-3Hb.normalTitle" = "Button"; + +/* Class = "UITabBarItem"; title = "Settings"; ObjectID = "kee-Xk-ORJ"; */ +"kee-Xk-ORJ.title" = "Settings"; + +/* Class = "UITableViewSection"; headerTitle = "Name"; ObjectID = "Kfl-J5-hdD"; */ +"Kfl-J5-hdD.headerTitle" = "Name"; + +/* Class = "UILabel"; text = "Block contact"; ObjectID = "kwQ-p7-cX2"; */ +"kwQ-p7-cX2.text" = "Block contact"; + +/* Class = "UINavigationItem"; title = "Chats"; ObjectID = "LKO-PG-RwH"; */ +"LKO-PG-RwH.title" = "Chats"; + +/* Class = "UITableViewSection"; headerTitle = "Account"; ObjectID = "Mfv-HJ-QDO"; */ +"Mfv-HJ-QDO.headerTitle" = "Account"; + +/* Class = "UICollectionViewController"; title = "Attachments"; ObjectID = "N9z-ms-iaT"; */ +"N9z-ms-iaT.title" = "Attachments"; + +/* Class = "UINavigationController"; title = "Contacts"; ObjectID = "Ndx-if-NHK"; */ +"Ndx-if-NHK.title" = "Contacts"; + +/* Class = "UITextField"; placeholder = "Enter contact name"; ObjectID = "OGf-mX-8z3"; */ +"OGf-mX-8z3.placeholder" = "Enter contact name"; + +/* Class = "UITableViewSection"; headerTitle = "PRESENCE"; ObjectID = "Q28-Ig-9NP"; */ +"Q28-Ig-9NP.headerTitle" = "PRESENCE"; + +/* Class = "UITableViewSection"; headerTitle = "JID"; ObjectID = "Qgj-eQ-geg"; */ +"Qgj-eQ-geg.headerTitle" = "JID"; + +/* Class = "UILabel"; text = "Clear History"; ObjectID = "qjs-BY-Nid"; */ +"qjs-BY-Nid.text" = "Clear History"; + +/* Class = "UILabel"; text = "Chat with"; ObjectID = "Qr0-8H-IJq"; */ +"Qr0-8H-IJq.text" = "Chat with"; + +/* Class = "UINavigationItem"; title = "Contacts"; ObjectID = "SEz-IM-IWL"; */ +"SEz-IM-IWL.title" = "Contacts"; + +/* Class = "UILabel"; text = "Send presence updates"; ObjectID = "upM-mW-rMZ"; */ +"upM-mW-rMZ.text" = "Send presence updates"; + +/* Class = "UITabBarItem"; title = "Contacts"; ObjectID = "W52-LN-wzX"; */ +"W52-LN-wzX.title" = "Contacts"; + +/* Class = "UIViewController"; title = "Chat"; ObjectID = "WP2-Cp-7ZE"; */ +"WP2-Cp-7ZE.title" = "Chat"; + +/* Class = "UIButton"; normalTitle = "Not now"; ObjectID = "wvT-dz-RVz"; */ +"wvT-dz-RVz.normalTitle" = "Not now"; + +/* Class = "UILabel"; text = "Message encryption"; ObjectID = "XZp-oZ-XpC"; */ +"XZp-oZ-XpC.text" = "Message encryption"; + +/* Class = "UIButton"; normalTitle = "Enable"; ObjectID = "yJk-Px-1oo"; */ +"yJk-Px-1oo.normalTitle" = "Enable"; + +/* Class = "UILabel"; text = "Add to contact list"; ObjectID = "zrb-Yr-XQO"; */ +"zrb-Yr-XQO.text" = "Add to contact list"; diff --git a/Snikket/id.lproj/Settings.strings b/Snikket/id.lproj/Settings.strings new file mode 100644 index 0000000..41a9b4b --- /dev/null +++ b/Snikket/id.lproj/Settings.strings @@ -0,0 +1,128 @@ +/* Class = "UINavigationController"; title = "Settings"; ObjectID = "15C-WY-qrp"; */ +"15C-WY-qrp.title" = "Settings"; + +/* Class = "UILabel"; text = "Request delivery receipts"; ObjectID = "32B-bc-CHX"; */ +"32B-bc-CHX.text" = "Request delivery receipts"; + +/* Class = "UILabel"; text = "Show emoticons"; ObjectID = "3a8-1d-3PR"; */ +"3a8-1d-3PR.text" = "Show emoticons"; + +/* Class = "UILabel"; text = "Notifications"; ObjectID = "3pd-ay-sAI"; Note = "Open notification settings page"; */ +"3pd-ay-sAI.text" = "Notifications"; + +/* Class = "UILabel"; text = "About"; ObjectID = "3vM-ad-4ap"; Note = "Action button: show app about screen"; */ +"3vM-ad-4ap.text" = "About"; + +/* Class = "UILabel"; text = "Account name"; ObjectID = "7ho-Mu-thd"; */ +"7ho-Mu-thd.text" = "Account name"; + +/* Class = "UILabel"; text = "Media"; ObjectID = "8G3-tm-sCO"; Note = "Open media settings page"; */ +"8G3-tm-sCO.text" = "Media"; + +/* Class = "UILabel"; text = "Enable markdown"; ObjectID = "8K5-bS-ddh"; */ +"8K5-bS-ddh.text" = "Enable markdown"; + +/* Class = "UILabel"; text = "Encryption"; ObjectID = "9Gl-4Z-f2X"; */ +"9Gl-4Z-f2X.text" = "Encryption"; + +/* Class = "UILabel"; text = "No blocked contacts"; ObjectID = "Aki-gv-qus"; Note = "Placeholder label when list of blocked contacts is empty"; */ +"Aki-gv-qus.text" = "No blocked contacts"; + +/* Class = "UILabel"; text = "Photos quality"; ObjectID = "bbT-7s-6ph"; */ +"bbT-7s-6ph.text" = "Photos quality"; + +/* Class = "UILabel"; text = "Send message on return"; ObjectID = "Bd4-qf-OsU"; Note = "Toggle label: send message when return/enter button is pressed"; */ +"Bd4-qf-OsU.text" = "Send message on return"; + +/* Class = "UILabel"; text = "File download limit"; ObjectID = "bj6-vP-3A7"; */ +"bj6-vP-3A7.text" = "File download limit"; + +/* Class = "UILabel"; text = "Videos quality"; ObjectID = "bKW-ln-Kez"; */ +"bKW-ln-Kez.text" = "Videos quality"; + +/* Class = "UILabel"; text = "None"; ObjectID = "bPa-aU-WFn"; */ +"bPa-aU-WFn.text" = "None"; + +/* Class = "UILabel"; text = "Use public STUN servers"; ObjectID = "BSa-RZ-M7L"; */ +"BSa-RZ-M7L.text" = "Use public STUN servers"; + +/* Class = "UILabel"; text = "Contacts in groups"; ObjectID = "BSk-tI-BDM"; */ +"BSk-tI-BDM.text" = "Contacts in groups"; + +/* Class = "UILabel"; text = "XMPP Quickstart / Pipelining"; ObjectID = "dbq-Tl-d6b"; */ +"dbq-Tl-d6b.text" = "XMPP Quickstart / Pipelining"; + +/* Class = "UILabel"; text = "Chats"; ObjectID = "etv-3w-9lA"; Note = "Open chats settings page"; */ +"etv-3w-9lA.text" = "Chats"; + +/* Class = "UILabel"; text = "File sharing via HTTP"; ObjectID = "eZJ-fR-LPh"; */ +"eZJ-fR-LPh.text" = "File sharing via HTTP"; + +/* Class = "UITableViewController"; title = "Experimental"; ObjectID = "FGQ-GL-dYt"; */ +"FGQ-GL-dYt.title" = "Experimental"; + +/* Class = "UILabel"; text = "Appearance"; ObjectID = "fxY-aA-n0i"; Note = "App appearance/theme selection"; */ +"fxY-aA-n0i.text" = "Appearance"; + +/* Class = "UIBarButtonItem"; title = "Close"; ObjectID = "G2W-rB-KuE"; */ +"G2W-rB-KuE.title" = "Close"; + +/* Class = "UILabel"; text = "2 lines"; ObjectID = "g4v-o5-nXZ"; */ +"g4v-o5-nXZ.text" = "2 lines"; + +/* Class = "UITableViewController"; title = "Notification settings"; ObjectID = "GfS-6V-cuc"; */ +"GfS-6V-cuc.title" = "Notification settings"; + +/* Class = "UILabel"; text = "Contacts"; ObjectID = "hGX-FI-YNj"; Note = "Action button: open contact list settings page"; */ +"hGX-FI-YNj.text" = "Contacts"; + +/* Class = "UILabel"; text = "Clear download cache"; ObjectID = "Hu1-2i-RSO"; */ +"Hu1-2i-RSO.text" = "Clear download cache"; + +/* Class = "UILabel"; text = "Media"; ObjectID = "ieE-mK-uEm"; */ +"ieE-mK-uEm.text" = "Media"; + +/* Class = "UILabel"; text = "Clear chat on close"; ObjectID = "ioL-eS-dDk"; */ +"ioL-eS-dDk.text" = "Clear chat on close"; + +/* Class = "UINavigationItem"; title = "Settings"; ObjectID = "jeY-X9-tWB"; */ +"jeY-X9-tWB.title" = "Settings"; + +/* Class = "UILabel"; text = "By presence and time"; ObjectID = "LAc-oF-22z"; */ +"LAc-oF-22z.text" = "By presence and time"; + +/* Class = "UILabel"; text = "Auto-authorize contacts"; ObjectID = "MGl-L6-Fs3"; */ +"MGl-L6-Fs3.text" = "Auto-authorize contacts"; + +/* Class = "UILabel"; text = "Blocked contacts"; ObjectID = "MJ0-kw-1Kl"; */ +"MJ0-kw-1Kl.text" = "Blocked contacts"; + +/* Class = "UILabel"; text = "\"Hidden\" group"; ObjectID = "P82-B8-768"; */ +"P82-B8-768.text" = "\"Hidden\" group"; + +/* Class = "UITableViewController"; title = "Chat settings"; ObjectID = "pFo-ox-4gT"; */ +"pFo-ox-4gT.title" = "Chat settings"; + +/* Class = "UILabel"; text = "Message Styling"; ObjectID = "Qu4-Mf-tz4"; */ +"Qu4-Mf-tz4.text" = "Message Styling"; + +/* Class = "UILabel"; text = "Groupchats bookmarks sync"; ObjectID = "Tbt-L3-jpa"; */ +"Tbt-L3-jpa.text" = "Groupchats bookmarks sync"; + +/* Class = "UILabel"; text = "Medium"; ObjectID = "tqu-Xn-F0Z"; */ +"tqu-Xn-F0Z.text" = "Medium"; + +/* Class = "UILabel"; text = "Medium"; ObjectID = "u45-W8-GP0"; */ +"u45-W8-GP0.text" = "Medium"; + +/* Class = "UITableViewController"; title = "Contacts settings"; ObjectID = "xRS-v5-T5C"; */ +"xRS-v5-T5C.title" = "Contacts settings"; + +/* Class = "UILabel"; text = "Sorting"; ObjectID = "Y0J-o4-ADK"; */ +"Y0J-o4-ADK.text" = "Sorting"; + +/* Class = "UILabel"; text = "Show link previews"; ObjectID = "ybc-mt-hVG"; */ +"ybc-mt-hVG.text" = "Show link previews"; + +/* Class = "UILabel"; text = "Message carbons"; ObjectID = "zwR-jn-5u6"; */ +"zwR-jn-5u6.text" = "Message carbons"; diff --git a/Snikket/id.lproj/VoIP.strings b/Snikket/id.lproj/VoIP.strings new file mode 100644 index 0000000..41205ee --- /dev/null +++ b/Snikket/id.lproj/VoIP.strings @@ -0,0 +1,65 @@ +/* Class = "UILabel"; text = "GHI"; ObjectID = "3AK-8A-Pb8"; */ +"3AK-8A-Pb8.text" = "GHI"; + +/* Class = "UILabel"; text = "6"; ObjectID = "3o3-O7-VKn"; */ +"3o3-O7-VKn.text" = "6"; + +/* Class = "UILabel"; text = "3"; ObjectID = "4GI-gL-K98"; */ +"4GI-gL-K98.text" = "3"; + +/* Class = "UILabel"; text = "0"; ObjectID = "7f7-cm-34C"; */ +"7f7-cm-34C.text" = "0"; + +/* Class = "UILabel"; text = "XYZ"; ObjectID = "bk6-Bq-pzY"; */ +"bk6-Bq-pzY.text" = "XYZ"; + +/* Class = "UILabel"; text = "ABC"; ObjectID = "bPD-13-cpQ"; */ +"bPD-13-cpQ.text" = "ABC"; + +/* Class = "UILabel"; text = "8"; ObjectID = "CoF-1U-yN4"; */ +"CoF-1U-yN4.text" = "8"; + +/* Class = "UILabel"; text = "2"; ObjectID = "ddF-nO-S1A"; */ +"ddF-nO-S1A.text" = "2"; + +/* Class = "UILabel"; text = "PQRS"; ObjectID = "flh-6y-zns"; */ +"flh-6y-zns.text" = "PQRS"; + +/* Class = "UILabel"; text = "MNO"; ObjectID = "G84-mU-mWT"; */ +"G84-mU-mWT.text" = "MNO"; + +/* Class = "UILabel"; text = "#"; ObjectID = "Kj7-HM-1eU"; */ +"Kj7-HM-1eU.text" = "#"; + +/* Class = "UILabel"; text = "DEF"; ObjectID = "Kl5-ka-eb9"; */ +"Kl5-ka-eb9.text" = "DEF"; + +/* Class = "UILabel"; text = "*"; ObjectID = "Liz-bC-Mnb"; */ +"Liz-bC-Mnb.text" = "*"; + +/* Class = "UILabel"; text = "+"; ObjectID = "o93-nj-537"; */ +"o93-nj-537.text" = "+"; + +/* Class = "UILabel"; text = "TUV"; ObjectID = "PKN-5m-zEF"; */ +"PKN-5m-zEF.text" = "TUV"; + +/* Class = "UILabel"; text = "5"; ObjectID = "PTr-3K-fqE"; */ +"PTr-3K-fqE.text" = "5"; + +/* Class = "UILabel"; text = "JKL"; ObjectID = "Q7k-d2-q0x"; */ +"Q7k-d2-q0x.text" = "JKL"; + +/* Class = "UILabel"; text = "9"; ObjectID = "rDC-mF-Lhn"; */ +"rDC-mF-Lhn.text" = "9"; + +/* Class = "UILabel"; text = "7"; ObjectID = "RHJ-lu-qdC"; */ +"RHJ-lu-qdC.text" = "7"; + +/* Class = "UILabel"; text = "4"; ObjectID = "wgM-06-9Ik"; */ +"wgM-06-9Ik.text" = "4"; + +/* Class = "UILabel"; text = " "; ObjectID = "XeF-nm-rTF"; */ +"XeF-nm-rTF.text" = " "; + +/* Class = "UILabel"; text = "1"; ObjectID = "XUJ-Gp-lqi"; */ +"XUJ-Gp-lqi.text" = "1"; diff --git a/Snikket/id.lproj/Welcome.strings b/Snikket/id.lproj/Welcome.strings new file mode 100644 index 0000000..0d1f97a --- /dev/null +++ b/Snikket/id.lproj/Welcome.strings @@ -0,0 +1,11 @@ +/* Class = "UIButton"; normalTitle = "Learn more"; ObjectID = "9Xm-uz-gIu"; */ +"9Xm-uz-gIu.normalTitle" = "Learn more"; + +/* Class = "UIBarButtonItem"; title = "Scan barcode"; ObjectID = "i2u-OL-UUY"; Note = "Action button to scan QR code"; */ +"i2u-OL-UUY.title" = "Scan barcode"; + +/* Class = "UIButton"; normalTitle = "Sign in"; ObjectID = "is0-gN-a4J"; */ +"is0-gN-a4J.normalTitle" = "Sign in"; + +/* Class = "UINavigationItem"; title = "Snikket"; ObjectID = "Pr0-Qp-NEQ"; */ +"Pr0-Qp-NEQ.title" = "Snikket"; diff --git a/Snikket/sv.lproj/Localizable.strings b/Snikket/sv.lproj/Localizable.strings index 060c5bf..cfb5eaa 100644 --- a/Snikket/sv.lproj/Localizable.strings +++ b/Snikket/sv.lproj/Localizable.strings @@ -125,6 +125,10 @@ /* No comment provided by engineer. */ "Continue" = "Fortsätt"; +/* Context menu action + Context menu item */ +"Copy" = "Copy"; + /* No comment provided by engineer. */ "Could not connect to the service. Check your network connectivity or try again later." = "Kunde inte ansluta till tjänsten. Kontrollera din nätverksanslutning eller försök igen senare."; @@ -200,6 +204,10 @@ /* Menu item: opens file picket to select document to share */ "Document" = "Document"; +/* Alert title + Context menu item */ +"Download" = "Download"; + /* No comment provided by engineer. */ "Edit" = "Redigera"; @@ -248,6 +256,9 @@ /* No comment provided by engineer. */ "Failure" = "Fel"; +/* Alert text */ +"File is not available locally. Should it be downloaded?" = "File is not available locally. Should it be downloaded?"; + /* Error text - while uploading file */ "File is too large to share on your account." = "File is too large to share on your account."; @@ -359,6 +370,11 @@ /* No comment provided by engineer. */ "Messages" = "Messages"; +/* Context menu item: view more options + Menu item: see more message actions + Menu item: view more options */ +"More..." = "More..."; + /* Option: notifications from this group chat will be suppressed */ "Muted" = "Mutad"; @@ -449,6 +465,9 @@ /* No comment provided by engineer. */ "Please try again!" = "Vänligen försök igen!"; +/* Alert title */ +"Preview" = "Preview"; + /* No comment provided by engineer. */ "Private message" = "Private message"; @@ -531,6 +550,9 @@ /* Action button: select (existing) photo for group chat picture */ "Select photo" = "Välj foto"; +/* Alert title - select image share quality */ +"Select quality" = "Select quality"; + /* No comment provided by engineer. */ "Select quality of the image to use for sharing" = "Välj kvalité på bild för delning"; @@ -567,6 +589,9 @@ /* No comment provided by engineer. */ "Settings" = "Inställningar"; +/* Context menu action */ +"Share..." = "Share..."; + /* Informs user to slide their finger in direction of arrow to cancel audio recording */ "Slide to cancel" = "Slide to cancel"; diff --git a/Snikket/util/MediaHelper.swift b/Snikket/util/MediaHelper.swift index 8fa692d..47e77ba 100644 --- a/Snikket/util/MediaHelper.swift +++ b/Snikket/util/MediaHelper.swift @@ -29,7 +29,7 @@ class MediaHelper { completionHandler(.success(quality)); } else { DispatchQueue.main.async { - let alert = UIAlertController(title: "Select quality", message: nil, preferredStyle: .alert); + let alert = UIAlertController(title: NSLocalizedString("Select quality", comment: "Alert title - select image share quality"), message: nil, preferredStyle: .alert); let values: [ImageQuality] = [.original, .highest, .high, .medium, .low]; for value in values { @@ -37,7 +37,7 @@ class MediaHelper { completionHandler(.success(value)); })); } - alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { _ in + alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler: { _ in completionHandler(.failure(.noAccessError)); })) controller.present(alert, animated: true);