getChatBubble(withText:NSLocalizedString("It's a decentralized, encrypted messaging app.",comment:""),wasSentByCurrentUser:false),
getChatBubble(withText:NSLocalizedString("So it doesn't collect my personal information or my conversation metadata? How does it work?",comment:""),wasSentByCurrentUser:true),
getChatBubble(withText:NSLocalizedString("Using a combination of advanced anonymous routing and end-to-end encryption technologies.",comment:""),wasSentByCurrentUser:false),
getChatBubble(withText:NSLocalizedString("Friends don't let friends use compromised messengers. You're welcome.",comment:""),wasSentByCurrentUser:false)
explanationLabel.text=NSLocalizedString("Would you like to restore your session? This can help resolve issues. Your messages will be preserved.",comment:"")
explanationLabel.text="Would you like to restore your session? This can help resolve issues. Your messages will be preserved."
explanationLabel.numberOfLines=0
explanationLabel.textAlignment=.center
explanationLabel.lineBreakMode=.byWordWrapping
@ -48,7 +48,7 @@ final class SessionRestorationView : UIView {
explanationLabel.text=String(format:NSLocalizedString("Would you like to restore your session with %@? This can help resolve issues. Your messages will be preserved.",comment:""),displayName)
explanationLabel.text=String(format:"Would you like to restore your session with %@? This can help resolve issues. Your messages will be preserved.",displayName)
letalert=UIAlertController(title:"Device Link Request Received",message:"Open the device link screen by going to \"Settings\" > \"Devices\" > \"Link a Device\" to link your devices.",preferredStyle:.alert)
case.master:returnNSLocalizedString("Download Session on your other device and tap \"Link to an existing account\" at the bottom of the landing screen. If you have an existing account on your other device already you will have to delete that account first.",comment:"")
case.slave:returnNSLocalizedString("Please check that the words below match those shown on your other device",comment:"")
letalert=UIAlertController(title:NSLocalizedString("Device Linking Failed",comment:""),message:NSLocalizedString("Please check your internet connection and try again",comment:""),preferredStyle:.alert)
letalert=UIAlertController(title:"Device Linking Failed",message:"Please check your internet connection and try again",preferredStyle:.alert)
@ -213,7 +213,7 @@ final class DeviceLinkingModal : Modal, DeviceLinkingSessionDelegate {
print("[Loki] Failed to add device link due to error: \(error).")
DispatchQueue.main.async{
self?.close()//TODO:Showamessagetotheuser
letalert=UIAlertController(title:NSLocalizedString("Device Linking Failed",comment:""),message:NSLocalizedString("Please check your internet connection and try again",comment:""),preferredStyle:.alert)
letalert=UIAlertController(title:"Device Linking Failed",message:"Please check your internet connection and try again",preferredStyle:.alert)
letalert=UIAlertController(title:NSLocalizedString("Multi Device Limit Reached",comment:""),message:NSLocalizedString("It's currently not allowed to link more than one device.",comment:""),preferredStyle:.alert)
letalert=UIAlertController(title:NSLocalizedString("vc_linked_devices_multi_device_limit_reached_modal_title",comment:""),message:NSLocalizedString("It's currently not allowed to link more than one device.",comment:""),preferredStyle:.alert)
@ -166,7 +166,7 @@ final class DeviceLinksVC : BaseVC, UITableViewDataSource, UITableViewDelegate,
})
self?.updateDeviceLinks()
}.catch{[weakself]_in
letalert=UIAlertController(title:NSLocalizedString("Couldn't Unlink Device",comment:""),message:NSLocalizedString("Please check your internet connection and try again",comment:""),preferredStyle:.alert)
letalert=UIAlertController(title:"Couldn't Unlink Device",message:"Please check your internet connection and try again",preferredStyle:.alert)
letalert=UIAlertController(title:NSLocalizedString("Error",comment:""),message:NSLocalizedString("Please pick a name",comment:""),preferredStyle:.alert)
letalert=UIAlertController(title:"Error",message:"Please pick a name",preferredStyle:.alert)
returnshowError(title:NSLocalizedString("Invalid URL",comment:""),message:NSLocalizedString("Please check the URL you entered and try again",comment:""))
returnshowError(title:NSLocalizedString("invalid_url",comment:""),message:"Please check the URL you entered and try again")
}
isJoining=true
letchannelID:UInt64=1
@ -154,11 +154,11 @@ final class JoinPublicChatVC : BaseVC, UIPageViewControllerDataSource, UIPageVie
letalert=UIAlertController(title:NSLocalizedString("Invalid Session ID",comment:""),message:NSLocalizedString("Please make sure the Session ID you entered is correct and try again.",comment:""),preferredStyle:.alert)
letalert=UIAlertController(title:NSLocalizedString("invalid_session_id",comment:""),message:"Please make sure the Session ID you entered is correct and try again.",preferredStyle:.alert)
letmessage=NSLocalizedString("Navigate to \"Settings\" > \"Devices\" > \"Link a Device\" on your other device and then scan the QR code that comes up to start the linking process.",comment:"")
explanationLabel.text="Navigate to \"Settings\" > \"Devices\" > \"Link a Device\" on your other device and then enter your Session ID here to start the linking process."
letmessage=NSLocalizedString("Scan a user’s QR code to start a session. QR codes can be found by tapping the QR code icon in account settings.",comment:"")
letalert=UIAlertController(title:NSLocalizedString("Invalid Session ID",comment:""),message:NSLocalizedString("Please check the Session ID and try again",comment:""),preferredStyle:.alert)
letalert=UIAlertController(title:NSLocalizedString("invalid_session_id",comment:""),message:NSLocalizedString("Please check the Session ID and try again",comment:""),preferredStyle:.alert)
@ -11,8 +11,8 @@ final class PNModeVC : BaseVC, OptionViewDelegate {
}
//MARK:Components
privatelazyvarapnsOptionView=OptionView(title:NSLocalizedString("Apple Push Notification Service",comment:""),explanation:NSLocalizedString("Session will use the Apple Push Notification service to receive push notifications. You'll be notified of new messages reliably and immediately. Using APNs means that your IP address and device token will be exposed to Apple. If you use push notifications for other apps, this will already be the case. Your IP address and device token will also be exposed to Loki, but your messages will still be onion-routed and end-to-end encrypted, so the contents of your messages will remain completely private.",comment:""),delegate:self,isRecommended:true)
privatelazyvarbackgroundPollingOptionView=OptionView(title:NSLocalizedString("Background Polling",comment:""),explanation:NSLocalizedString("Session will occasionally check for new messages in the background. This guarantees full metadata protection, but message notifications may be significantly delayed.",comment:""),delegate:self)
explanationLabel.text=NSLocalizedString("There are two ways Session can handle push notifications. Make sure to read the descriptions carefully before you choose.",comment:"")
explanationLabel.text=NSLocalizedString("Session hides your IP by bouncing your messages through several Service Nodes in Session’s decentralized network. These are the countries your connection is currently being bounced through:",comment:"")
letalert=UIAlertController(title:NSLocalizedString("Invalid Session ID",comment:""),message:NSLocalizedString("Please check the Session ID and try again.",comment:""),preferredStyle:.alert)
letalert=UIAlertController(title:NSLocalizedString("invalid_session_id",comment:""),message:NSLocalizedString("Please check the Session ID and try again.",comment:""),preferredStyle:.alert)
explanationLabel.text=NSLocalizedString("Your Session ID is the unique address people can use to contact you on Session. With no connection to your real identity, your Session ID is totally anonymous and private by design.",comment:"")
explanationLabel.text=NSLocalizedString("This is your recovery phrase. With it, you can restore or migrate your Session ID to a new device.",comment:"")
result.subtitle=NSLocalizedString("Tap and hold the redacted words to reveal your recovery phrase, then store it safely to secure your Session ID.",comment:"")
explanationLabel.text=NSLocalizedString("Your recovery phrase is the master key to your Session ID — you can use it to restore your Session ID if you lose access to your device. Store your recovery phrase in a safe place, and don’t give it to anyone.",comment:"")
letmessage=isMaxFileSizeExceeded?"Please select a smaller photo and try again":NSLocalizedString("Please check your internet connection and try again",comment:"")
"Session can let you know when you get a message (and who it is from)" = "Session can let you know when you get a message (and who it is from)";
"Create Your Session Account" = "Create Your Session Account";
"Enter a name to be shown to your contacts" = "Enter a name to be shown to your contacts";
"Display Name" = "Display Name";
"Type an optional password for added security" = "Type an optional password for added security";
"Password (Optional)" = "Password (Optional)";
"Next" = "Next";
"Add" = "Add";
"Please save the seed below in a safe location. It can be used to restore your account if you lose access, or to migrate your account to a new device." = "Please save the seed below in a safe location. It can be used to restore your account if you lose access, or to migrate your account to a new device.";
"Restore your account by entering your seed below." = "Restore your account by entering your seed below.";
"Copy" = "Copy";
"Copied ✓" = "Copied ✓";
"Restore Using Seed" = "Restore Using Seed";
"Register" = "Register";
"Enter Your Seed" = "Enter Your Seed";
"Register a New Account" = "Register a New Account";
"Restore" = "Restore";
"Something went wrong. Please check your seed and try again." = "Something went wrong. Please check your seed and try again.";
"Looks like you didn't enter enough words. Please check your seed and try again." = "Looks like you didn't enter enough words. Please check your seed and try again.";
"You seem to be missing the last word of your seed. Please check what you entered and try again." = "You seem to be missing the last word of your seed. Please check what you entered and try again.";
"There appears to be an invalid word in your seed. Please check what you entered and try again." = "There appears to be an invalid word in your seed. Please check what you entered and try again.";
"Your seed couldn't be verified. Please check what you entered and try again." = "Your seed couldn't be verified. Please check what you entered and try again.";
"Search by public key" = "Search by public key";
"Start a Conversation" = "Start a Conversation";
"Invalid Session ID" = "Invalid Session ID";
"No search results" = "No search results";
"Calculating proof of work" = "Calculating proof of work";
"Failed to calculate proof of work." = "Failed to calculate proof of work.";
"Share Public Key" = "Share Public Key";
"%@ sent you a session request" = "%@ sent you a session request";
"%@ accepted your session request" = "%@ accepted your session request";
"%@'s session request has expired" = "%@'s session request has expired";
"Your session request to %@ has expired" = "Your session request to %@ has expired";
"Show Seed" = "Show Seed";
"Your Seed" = "Your Seed";
"Require Touch ID, Face ID or your device passcode to unlock Session’s screen. You can still receive notifications when Screen Lock is enabled. Use Session’s notification settings to customise the information displayed in notifications." = "Require Touch ID, Face ID or your device passcode to unlock Session’s screen. You can still receive notifications when Screen Lock is enabled. Use Session’s notification settings to customise the information displayed in notifications.";
"Prevent Session previews from appearing in the app switcher." = "Prevent Session previews from appearing in the app switcher.";
"Session" = "Session";
"Privacy Policy" = "Privacy Policy";
"New Session" = "New Session";
"Add Public Chat Server" = "Add Public Chat Server";
"Please check the Session ID and try again" = "Please check the Session ID and try again";
"Looks like you don't have any conversations yet. Get started by messaging a friend." = "Looks like you don't have any conversations yet. Get started by messaging a friend.";
"Enter the public key of the person you'd like to securely message. They can share their public key with you by going into Session's in-app settings and clicking \"Share Public Key\"." = "Enter the public key of the person you'd like to securely message. They can share their public key with you by going into Session's in-app settings and clicking \"Share Public Key\".";
"Unlock Session" = "Unlock Session";
"Clear All Data" = "Clear All Data";
"Are you sure you want to clear all your data? This will delete your entire account, including all conversations and your personal key pair." = "Are you sure you want to clear all your data? This will delete your entire account, including all conversations and your personal key pair.";
"Cancel" = "Cancel";
"Update Required" = "Update Required";
"This version of Session is no longer supported. Please press OK to reset your account and migrate to the latest version." = "This version of Session is no longer supported. Please press OK to reset your account and migrate to the latest version.";
"Loki Public Chat" = "Loki Public Chat";
"Loki News" = "Loki News";
"Session Updates" = "Session Updates";
"Show QR Code" = "Show QR Code";
"This is your QR code. Other people can scan it to start a secure conversation with you." = "This is your QR code. Other people can scan it to start a secure conversation with you.";
"Scan a QR Code Instead" = "Scan a QR Code Instead";
"Session needs camera access to scan QR codes." = "Session needs camera access to scan QR codes.";
"You can enable camera access in your device settings." = "You can enable camera access in your device settings.";
"Please enter the public key of the person you'd like to message." = "Please enter the public key of the person you'd like to message.";
"Session is currently in beta. For development purposes the beta version collects basic usage statistics and crash logs. In addition, the beta version doesn't yet provide full privacy and shouldn't be used to transmit sensitive information." = "Session is currently in beta. For development purposes the beta version collects basic usage statistics and crash logs. In addition, the beta version doesn't yet provide full privacy and shouldn't be used to transmit sensitive information.";
"Copy Public Key" = "Copy Public Key";
"Link Device" = "Link Device";
"Waiting for Device" = "Waiting for Device";
"Waiting for Authorization" = "Waiting for Authorization";
"Create a new account on your other device and click \"Link Device\" when you're at the \"Create Your Session Account\" step to start the linking process" = "Create a new account on your other device and click \"Link Device\" when you're at the \"Create Your Session Account\" step to start the linking process";
"Please check that the words below match those shown on your other device" = "Please check that the words below match those shown on your other device";
"Link to an existing device by going into its in-app settings and clicking \"Link Device\"." = "Link to an existing device by going into its in-app settings and clicking \"Link Device\".";
"Authorize" = "Authorize";
"Enter the Other Device's Public Key" = "Enter the Other Device's Public Key";
"This is your personal secret. It can be used to restore your account if you lose access, or to migrate your account to a new device." = "This is your personal secret. It can be used to restore your account if you lose access, or to migrate your account to a new device.";
"Device Link Authorized" = "Device Link Authorized";
"Your device has been linked successfully" = "Your device has been linked successfully";
"Link" = "Link";
"Anonymous" = "Anonymous";
"Invalid URL" = "Invalid URL";
"Please check the URL you entered and try again." = "Please check the URL you entered and try again.";
"Please pick a shorter display name" = "Please pick a shorter display name";
"Please pick a display name" = "Please pick a display name";
"Add Public Chat" = "Add Public Chat";
"Enter a URL" = "Enter a URL";
"Enter the URL of the public chat you'd like to join. The Loki Public Chat URL is https://chat.lokinet.org." = "Enter the URL of the public chat you'd like to join. The Loki Public Chat URL is https://chat.lokinet.org.";
"Connecting..." = "Connecting...";
"Couldn't Connect" = "Couldn't Connect";
"Please pick a display name that consists of only a-z, A-Z, 0-9 and _ characters" = "Please pick a display name that consists of only a-z, A-Z, 0-9 and _ characters";
"Please check your internet connection and try again" = "Please check your internet connection and try again";
"Device Unlinked" = "Device Unlinked";
"Your device was unlinked successfully" = "Your device was unlinked successfully";
"Unnamed Device" = "Unnamed Device";
"Linked device (%@)" = "Linked device (%@)";
"Restore session" = "Restore session";
"Would you like to start a new session with %@?" = "Would you like to start a new session with %@?";
// MARK: - Session
"Messages" = "Messages";
"Note to Self" = "Note to Self";
"New Group" = "New Group";
"Delete" = "Delete";
"Search" = "Search";
"New Session" = "New Session";
"Enter a Session ID" = "Enter a Session ID";
"Users can share their Session ID from their account settings, or by sharing their QR code." = "Users can share their Session ID from their account settings, or by sharing their QR code.";
"Scan a user’s QR code to start a session. QR codes can be found by tapping the QR code icon in account settings." = "Scan a user’s QR code to start a session. QR codes can be found by tapping the QR code icon in account settings.";
"Your Session ID" = "Your Session ID";
"Copy" = "Copy";
"Copied" = "Copied";
"Share" = "Share";
"Next" = "Next";
"Session needs camera access to scan QR codes" = "Session needs camera access to scan QR codes";
"Enable Camera Access" = "Enable Camera Access";
"Scan the QR code of the person you'd like to securely message. They can find their QR code by going into Session's in-app settings and tapping \"Show QR Code\"." = "Scan the QR code of the person you'd like to securely message. They can find their QR code by going into Session's in-app settings and tapping \"Show QR Code\".";
"Enter Session ID" = "Enter Session ID";
"Open Group URL" = "Open Group URL";
"Scan QR Code" = "Scan QR Code";
"Scan the QR code of the open group you'd like to join" = "Scan the QR code of the open group you'd like to join";
"Join Open Group" = "Join Open Group";
"Enter an open group URL" = "Enter an open group URL";
"Invalid URL" = "Invalid URL";
"Please check the URL you entered and try again" = "Please check the URL you entered and try again";
"Couldn't Join" = "Couldn't Join";
"Settings" = "Settings";
"Privacy" = "Privacy";
"Notifications" = "Notifications";
"Devices" = "Devices";
"Recovery Phrase" = "Recovery Phrase";
"Clear All Data" = "Clear All Data";
"This will permanently delete your messages, sessions, and contacts." = "This will permanently delete your messages, sessions, and contacts.";
"Delete" = "Delete";
"This is your recovery phrase. With it, you can restore or migrate your Session ID to a new device." = "This is your recovery phrase. With it, you can restore or migrate your Session ID to a new device.";
"The information shown in notifications when your phone is locked." = "The information shown in notifications when your phone is locked.";
"Notifications" = "Notifications";
"Back" = "Back";
"View My QR Code" = "View My QR Code";
"Scan someone's QR code to start a conversation with them" = "Scan someone's QR code to start a conversation with them";
"QR Code" = "QR Code";
"Scan Me" = "Scan Me";
"This is your QR code. Other users can scan it to start a session with you." = "This is your QR code. Other users can scan it to start a session with you.";
"Privacy" = "Privacy";
"Unlock Session's screen using Touch ID, Face ID, or your iOS device passcode. You can still receive message notifications while Screen Lock is enabled. Session's notification settings allow you to customize the information that is displayed." = "Unlock Session's screen using Touch ID, Face ID, or your iOS device passcode. You can still receive message notifications while Screen Lock is enabled. Session's notification settings allow you to customize the information that is displayed.";
"It's a decentralized, encrypted messaging app." = "It's a decentralized, encrypted messaging app.";
"So it doesn't collect my personal information or my conversation metadata? How does it work?" = "So it doesn't collect my personal information or my conversation metadata? How does it work?";
"Using a combination of advanced anonymous routing and end-to-end encryption technologies." = "Using a combination of advanced anonymous routing and end-to-end encryption technologies.";
"Friends don't let friends use compromised messengers. You're welcome." = "Friends don't let friends use compromised messengers. You're welcome.";
"Create Session ID" = "Create Session ID";
"Continue your Session" = "Continue your Session";
"Say hello to your Session ID" = "Say hello to your Session ID";
"Continue" = "Continue";
"Copy Session ID" = "Copy Session ID";
"Pick your display name" = "Pick your display name";
"Enter a display name" = "Enter a display name";
"Restore your account" = "Restore your account";
"Enter your recovery phrase" = "Enter your recovery phrase";
"Message" = "Message";
"You" = "You";
"Encrypting message" = "Encrypting message";
"Tracing a path" = "Tracing a path";
"Sending message" = "Sending message";
"Message sent securely" = "Message sent securely";
"Message failed to send" = "Message failed to send";
"Secure your account by saving your recovery phrase" = "Secure your account by saving your recovery phrase";
"Continue" = "Continue";
"Your Recovery Phrase" = "Your Recovery Phrase";
"Meet your recovery phrase" = "Meet your recovery phrase";
"Your recovery phrase is the master key to your Session ID — you can use it to restore your Session ID if you lose access to your device. Store your recovery phrase in a safe place, and don’t give it to anyone." = "Your recovery phrase is the master key to your Session ID — you can use it to restore your Session ID if you lose access to your device. Store your recovery phrase in a safe place, and don’t give it to anyone.";
"Tap and hold the redacted words to reveal your recovery phrase, then store it safely to secure your Session ID." = "Tap and hold the redacted words to reveal your recovery phrase, then store it safely to secure your Session ID.";
"Hold to reveal" = "Hold to reveal";
"Make sure to store your recovery phrase in a safe place" = "Make sure to store your recovery phrase in a safe place";
"Link to an existing account" = "Link to an existing account";
"Enter your public key" = "Enter your public key";
"Link to your existing account by going into your in-app settings and clicking \"Devices\"." = "Link to your existing account by going into your in-app settings and clicking \"Devices\".";
"Download Session on your other device and tap \"Link to an existing account\" at the bottom of the landing screen. If you have an existing account on your other device already you will have to delete that account first." = "Download Session on your other device and tap \"Link to an existing account\" at the bottom of the landing screen. If you have an existing account on your other device already you will have to delete that account first.";
"Group Settings" = "Group Settings";
"Your Session ID is the unique address people can use to contact you on Session. With no connection to your real identity, your Session ID is totally anonymous and private by design." = "Your Session ID is the unique address people can use to contact you on Session. With no connection to your real identity, your Session ID is totally anonymous and private by design.";
"Enter the recovery phrase that was given to you when you signed up to restore your account." = "Enter the recovery phrase that was given to you when you signed up to restore your account.";
"Enter Session ID" = "Enter Session ID";
"Link your device" = "Link your device";
"Enter your Session ID to start the linking process." = "Enter your Session ID to start the linking process.";
"Enter your Session ID" = "Enter your Session ID";
"Recent Chats" = "Recent Chats";
"Other Chats" = "Other Chats";
"See and share when messages are being typed (applies to all sessions)." = "See and share when messages are being typed (applies to all sessions).";
"Disable Preview in App Switcher" = "Disable Preview in App Switcher";
"Are you sure? This cannot be undone." = "Are you sure? This cannot be undone.";
"When enabled, messages between you and %@ will disappear after they have been seen." = "When enabled, messages between you and %@ will disappear after they have been seen.";
"This will be your name when you use Session. It can be your real name, an alias, or anything else you like." = "This will be your name when you use Session. It can be your real name, an alias, or anything else you like.";
"Session Out of Sync" = "Session Out of Sync";
"Would you like to restore your session? This can help resolve issues. Your messages will be preserved." = "Would you like to restore your session? This can help resolve issues. Your messages will be preserved.";
"Would you like to restore your session with %@? This can help resolve issues. Your messages will be preserved." = "Would you like to restore your session with %@? This can help resolve issues. Your messages will be preserved.";
"Restore" = "Restore";
"Dismiss" = "Dismiss";
"New Closed Group" = "New Closed Group";
"Group Members" = "Group Members";
"You don't have any contacts yet" = "You don't have any contacts yet";
"Start a Session" = "Start a Session";
"Enter a group name" = "Enter a group name";
"Please enter a group name" = "Please enter a group name";
"Please enter a shorter group name" = "Please enter a shorter group name";
"Please pick at least 2 group members" = "Please pick at least 2 group members";
"Enable Link Previews?" = "Enable Link Previews?";
"You will not have full metadata protection when sending or receiving link previews." = "You will not have full metadata protection when sending or receiving link previews.";
"Open groups can be joined by anyone and do not provide full privacy protection" = "Open groups can be joined by anyone and do not provide full privacy protection";
"Search GIFs?" = "Search GIFs?";
"You will not have full metadata protection when sending GIFs." = "You will not have full metadata protection when sending GIFs.";
"The ability to add members to a closed group is coming soon." = "The ability to add members to a closed group is coming soon.";
"A closed group cannot have more than 10 members" = "A closed group cannot have more than 10 members";
"A closed group cannot have more than 50 members" = "A closed group cannot have more than 50 members";
"Closed groups support up to 10 members" = "Closed groups support up to 10 members";
"Closed groups support up to 50 members" = "Closed groups support up to 50 members";
"No messages yet" = "No messages yet";
"Would you like to join the Session Public Chat?" = "Would you like to join the Session Public Chat?";
"Join Public Chat" = "Join Public Chat";
"No, thank you" = "No, thank you";
"Report" = "Report";
"Please Pick an Option" = "Please Pick an Option";
"There are two ways Session can handle push notifications. Make sure to read the descriptions carefully before you choose." = "There are two ways Session can handle push notifications. Make sure to read the descriptions carefully before you choose.";
"Session will use the Apple Push Notification service to receive push notifications. You'll be notified of new messages reliably and immediately. Using APNs means that your IP address and device token will be exposed to Apple. If you use push notifications for other apps, this will already be the case. Your IP address and device token will also be exposed to Loki, but your messages will still be onion-routed and end-to-end encrypted, so the contents of your messages will remain completely private." = "Session will use the Apple Push Notification service to receive push notifications. You'll be notified of new messages reliably and immediately. Using APNs means that your IP address and device token will be exposed to Apple. If you use push notifications for other apps, this will already be the case. Your IP address and device token will also be exposed to Loki, but your messages will still be onion-routed and end-to-end encrypted, so the contents of your messages will remain completely private.";
"Background Polling" = "Background Polling";
"Session will occasionally check for new messages in the background. This guarantees full metadata protection, but message notifications may be significantly delayed." = "Session will occasionally check for new messages in the background. This guarantees full metadata protection, but message notifications may be significantly delayed.";
"Session now features two ways to handle push notifications. Make sure to read the descriptions carefully before you choose." = "Session now features two ways to handle push notifications. Make sure to read the descriptions carefully before you choose.";
"Push Notifications" = "Push Notifications";
"Confirm" = "Confirm";
"Skip" = "Skip";
"Link Previews" = "Link Previews";
"Invalid Session ID" = "Invalid Session ID";
"Please make sure the Session ID you entered is correct and try again." = "Please make sure the Session ID you entered is correct and try again.";
"Please wait while the device link is created. This can take up to a minute." = "Please wait while the device link is created. This can take up to a minute.";
"Path" = "Path";
"Session hides your IP by bouncing your messages through several Service Nodes in Session’s decentralized network. These are the countries your connection is currently being bounced through:" = "Session hides your IP by bouncing your messages through several Service Nodes in Session’s decentralized network. These are the countries your connection is currently being bounced through:";
"Entry Node" = "Entry Node";
"Service Node" = "Service Node";
"You" = "You";
"Destination" = "Destination";
"Learn More" = "Learn More";
"Please ask the open group operator to add you to the group." = "Please ask the open group operator to add you to the group.";
"vc_landing_restore_button_title" = "Continue Your Session";
"vc_landing_link_button_title" = "Link to an existing account";
"vc_landing_device_unlinked_modal_title" = "Your device was unlinked successfully";
"view_fake_chat_bubble_1" = "What's Session?";
"view_fake_chat_bubble_2" = "It's a decentralized, encrypted messaging app";
"view_fake_chat_bubble_3" = "So it doesn't collect my personal information or my conversation metadata? How does it work?";
"view_fake_chat_bubble_4" = "Using a combination of advanced anonymous routing and end-to-end encryption technologies.";
"view_fake_chat_bubble_5" = "Friends don't let friends use compromised messengers. You're welcome.";
"vc_register_title" = "Say hello to your Session ID";
"vc_register_explanation" = "Your Session ID is the unique address people can use to contact you on Session. With no connection to your real identity, your Session ID is totally anonymous and private by design.";
"vc_register_public_key_copied_message" = "Copied to clipboard";
"vc_restore_title" = "Restore your account";
"vc_restore_explanation" = "Enter the recovery phrase that was given to you when you signed up to restore your account.";
"vc_restore_seed_text_field_hint" = "Enter your recovery phrase";
"vc_link_device_scan_qr_code_tab_title" = "Scan QR Code";
"vc_link_device_scan_qr_code_explanation" = "Navigate to \"Settings\" > \"Devices\" > \"Link a Device\" on your other device and then scan the QR code that comes up to start the linking process.";
"vc_enter_session_id_title" = "Link your device";
"vc_enter_session_id_explanation" = "Navigate to \"Settings\" > \"Devices\" > \"Link a Device\" on your other device and then enter your Session ID here to start the linking process.";
"vc_enter_session_id_text_field_hint" = "Enter your Session ID";
"vc_display_name_title_2" = "Pick your display name";
"vc_display_name_explanation" = "This will be your name when you use Session. It can be your real name, an alias, or anything else you like.";
"vc_display_name_text_field_hint" = "Enter a display name";
"vc_display_name_display_name_missing_error" = "Please pick a display name";
"vc_display_name_display_name_invalid_error" = "Please pick a display name that consists of only a-z, A-Z, 0-9 and _ characters";
"vc_display_name_display_name_too_long_error" = "Please pick a shorter display name";
"vc_pn_mode_title" = "Push Notifications";
"vc_pn_mode_explanation" = "There are two ways Session can handle push notifications. Make sure to read the descriptions carefully before you choose.";
"vc_pn_mode_apns_option_explanation" = "Session will use the Apple Push Notification Service service to receive push notifications. You'll be notified of new messages reliably and immediately. Using APNs means that your IP address and device token will be exposed to Apple. If you use push notifications for other apps, this will already be the case. Your IP address and device token will also be exposed to Loki, but your messages will still be onion-routed and end-to-end encrypted, so the contents of your messages will remain completely private.";
"vc_pn_mode_background_polling_option_explanation" = "Session will occasionally check for new messages in the background. This guarantees full metadata protection, but message notifications may be significantly delayed.";
"sheet_pn_mode_explanation" = "Session now features two ways to handle push notifications. Make sure to read the descriptions carefully before you choose.";
"sheet_pn_mode_apns_option_explanation" = "Session will use the Apple Push Notification Service service to receive push notifications. You'll be notified of new messages reliably and immediately. Using APNs means that your IP address and device token will be exposed to Apple. If you use push notifications for other apps, this will already be the case. Your IP address and device token will also be exposed to Loki, but your messages will still be onion-routed and end-to-end encrypted, so the contents of your messages will remain completely private.";
"sheet_pn_mode_background_polling_option_explanation" = "Session will occasionally check for new messages in the background. This guarantees full metadata protection, but message notifications may be significantly delayed.";
"sheet_pn_mode_no_option_picked_modal_title" = "Please Pick an Option";
"sheet_pn_mode_confirm_button_title" = "Confirm";
"sheet_pn_mode_skip_button_title" = "Skip";
"vc_seed_title" = "Your Recovery Phrase";
"vc_seed_title_2" = "Meet your recovery phrase";
"vc_seed_explanation" = "Your recovery phrase is the master key to your Session ID — you can use it to restore your Session ID if you lose access to your device. Store your recovery phrase in a safe place, and don’t give it to anyone.";
"vc_seed_reveal_button_title" = "Hold to reveal";
"view_seed_reminder_subtitle_1" = "Secure your account by saving your recovery phrase";
"view_seed_reminder_subtitle_2" = "Tap and hold the redacted words to reveal your recovery phrase, then store it safely to secure your Session ID.";
"view_seed_reminder_subtitle_3" = "Make sure to store your recovery phrase in a safe place";
"vc_path_title" = "Path";
"vc_path_explanation" = "Session hides your IP by bouncing your messages through several Service Nodes in Session's decentralized network. These are the countries your connection is currently being bounced through:";
"vc_create_private_chat_scan_qr_code_tab_title" = "Scan QR Code";
"vc_create_private_chat_scan_qr_code_explanation" = "Scan a user’s QR code to start a session. QR codes can be found by tapping the QR code icon in account settings.";
"vc_enter_public_key_text_field_hint" = "Enter Session ID of recipient";
"vc_enter_public_key_explanation" = "Users can share their Session ID by going into their account settings and tapping \"Share Session ID\", or by sharing their QR code.";
"vc_scan_qr_code_camera_access_explanation" = "Session needs camera access to scan QR codes";
"vc_scan_qr_code_grant_camera_access_button_title" = "Grant Camera Access";
"vc_create_closed_group_title" = "New Closed Group";
"vc_create_closed_group_text_field_hint" = "Enter a group name";
"vc_create_closed_group_explanation" = "Closed groups support up to 10 members and provide the same privacy protections as one-on-one sessions.";
"vc_create_closed_group_empty_state_message" = "You don't have any contacts yet";
"vc_create_closed_group_empty_state_button_title" = "Start a Session";
"vc_create_closed_group_group_name_missing_error" = "Please enter a group name";
"vc_create_closed_group_group_name_too_long_error" = "Please enter a shorter group name";
"vc_create_closed_group_not_enough_group_members_error" = "Please pick at least 2 group members";
"vc_create_closed_group_too_many_group_members_error" = "A closed group cannot have more than 10 members";
"vc_create_closed_group_invalid_session_id_error" = "One of the members of your group has an invalid Session ID";
"preferences_notifications_use_apns_option_explanation" = "Using Apple Push Notification Service allows for more reliable push notifications, but exposes your IP and device token to Apple and Loki.";
"modal_link_device_slave_mode_title_1" = "Waiting for Authorization";
"modal_link_device_slave_mode_title_2" = "Device Link Authorized";
"modal_link_device_slave_mode_explanation_1" = "Please check that the words below match those shown on your other device.";
"modal_link_device_slave_mode_explanation_2" = "Your device has been linked successfully";
"modal_link_device_master_mode_title_1" = "Waiting for Device";
"modal_link_device_master_mode_explanation_1" = "Download Session on your other device and tap \"Link to an existing account\" at the bottom of the landing screen. If you have an existing account on your other device already you will have to delete that account first.";
"modal_link_device_master_mode_explanation_2" = "Please check that the words below match those shown on your other device.";
"modal_link_device_master_mode_explanation_3" = "Please wait while the device link is created. This can take up to a minute.";