-
Notifications
You must be signed in to change notification settings - Fork 43
/
messages.go
292 lines (244 loc) · 22.1 KB
/
messages.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
package cli
const (
ArgumentCountError = "The command you entered has incorrect number of arguments. Enter '%s %s --help' to see the options."
ArgumentParsingError = "The command you entered is not valid. Enter '%s %s --help' to see the options."
LoginStart = "Please enter your login details."
LoginSuccess = "Welcome to NordVPN! You can now connect to VPN by using '%s connect'."
LoginAttempt = "Attempt %d/%d"
LoginTooManyAttempts = "Too many login attempts. Type '%s login' to start over."
LogoutSuccess = "You are logged out."
LogoutTokenSuccess = "You have been logged out. To keep your account secure, we've revoked your current access token. If you want to reuse your next access token despite the potential risks, use the --" + flagPersistToken + " option when logging out."
LogoutUsageText = "Logs you out"
PersistTokenUsageText = "Keep your current access token valid after logging out."
RateNoArgsMessage = "Type [1–5] to rate your previous connection (1 – poor, 5 – great): "
RateNoConnectionMade = "It seems you haven’t connected to VPN yet. Please rate your experience after your first session."
RateAlreadyRated = "You have already provided a rating for your active/previous connection."
RateSuccess = "Thank you for your feedback!"
SetReconnect = "You are connected to NordVPN. Please reconnect to enable the setting."
MsgNothingToRate = "There was no connection - nothing to rate."
// MsgSetSuccess is a generic success message template.
MsgSetSuccess = "%s is set to '%s' successfully."
// MsgAlreadySet is a generic noop message template.
MsgAlreadySet = "%s is already set to '%s'."
// MsgInUse is a generic dependency error message template.
MsgInUse = "%s is currently used by %s. Disable it first."
MsgSetBoolArgsUsage = `<enabled>|<disabled>`
MsgSetBoolDescription = `%s
Supported values for <disabled>: 0, false, disable, off, disabled
Example: nordvpn set %s off
Supported values for <enabled>: 1, true, enable, on, enabled
Example: nordvpn set %s on`
ObfuscateOnServerNotObfuscated = "We couldn’t turn on obfuscation because the current auto-connect server doesn’t support it. Set a different server for auto-connect to use obfuscation."
ObfuscateOffServerObfuscated = "We couldn’t turn off obfuscation because your current auto-connect server is obfuscated by default. Set a different server for auto-connect, then turn off obfuscation."
AutoConnectOnNonObfuscatedServerObfuscateOn = "Your selected server doesn’t support obfuscation. Choose a different server or turn off obfuscation."
AutoConnectOnObfuscatedServerObfuscateOff = "Turn on obfuscation to connect to obfuscated servers."
SetAutoConnectForceOff = "auto-connect was turned off because the setting change is incompatible with current auto-connect options. If you wish to continue using auto-connect, please enable it again."
SetThreatProtectionLiteDisableDNS = "Disabling DNS."
SetThreatProtectionLiteAlreadySet = "Threat Protection Lite already set to %s."
SetDefaultsSuccess = "Settings were successfully restored to defaults."
FirewallRequired = "Firewall must be enabled to use '%s'."
SetNotifySuccess = "Notifications are set to '%s' successfully."
SetNotifyNothingToSet = "Notifications are already set to '%s'."
SetObfuscateUnavailable = "Obfuscation is not available with the current technology. Change the technology to OpenVPN to use obfuscation."
SetProtocolUnavailable = "Protocol setting is not available when the set technology is not OpenVPN"
SetProtocolAlreadySet = "Protocol is already set to %s"
SetTechnologyDepsError = "Missing %s kernel module or configuration utility."
SetDNSDisableThreatProtectionLite = "Disabling Threat Protection Lite."
SetDNSInvalidAddress = "The provided IP address is invalid."
SetDNSTooManyValues = "More than 3 DNS addresses provided."
SetDNSAlreadySet = "DNS is already set to %s."
SetLANDiscoveryUsage = "Access printers, TVs, and other devices on your local network while connected to a VPN."
SetLANDiscoveryAlreadyEnabled = "LAN discovery is already set to %s."
SetLANDiscoveryAllowlistReset = "Just a little heads-up: Enabling local network discovery will remove your private subnets from the allowlist."
AllowlistAddPortExistsError = "Port %s (%s) is already allowlisted."
AllowlistAddPortSuccess = "Port %s (%s) is allowlisted successfully."
AllowlistAddPortsExistsError = "Ports %s - %s (%s) are already allowlisted."
AllowlistAddPortsSuccess = "Ports %s - %s (%s) are allowlisted successfully."
AllowlistAddSubnetExistsError = "Subnet %s is already allowlisted."
AllowlistAddSubnetSuccess = "Subnet %s is allowlisted successfully."
AllowlistAddSubnetLANDiscovery = "Allowlisting a private subnet is not available while local network discovery is enabled."
AllowlistRemovePortExistsError = "Port %s (%s) is not allowlisted."
AllowlistRemovePortSuccess = "Port %s (%s) is removed from the allowlist successfully."
AllowlistRemovePortsExistsError = "Ports %s - %s (%s) are not allowlisted."
AllowlistRemovePortsSuccess = "Ports %s - %s (%s) are removed from the allowlist successfully."
AllowlistRemoveSubnetExistsError = "Subnet %s is not allowlisted."
AllowlistRemoveSubnetSuccess = "Subnet %s is removed from the allowlist successfully."
AllowlistRemoveAllError = "Allowlist elements could not be removed."
AllowlistRemoveAllSuccess = "All ports and subnets have been removed from the allowlist successfully."
AllowlistPortRangeError = "Port %s value is out of range [%s - %s]."
AllowlistPortsRangeError = "Ports %s - %s value is out of range [%s - %s]."
AccountCreationSuccess = "Account has been successfully created."
// AccountInvalidData is displayed when backend returns bad request (400)
AccountInvalidData = "Invalid email address or password. Please make sure you're entering a valid email address and your password contains at least 8 characters."
// AccountEmailTaken is displayed when backend returns conflict (409)
AccountEmailTaken = "User with the specified email address already exists."
// AccountInternalError is returned when backend returns internal error (500)
AccountInternalError = "It's not you, it's us. We're having trouble with our servers. If the issue persists, please contact our customer support."
AccountTokenUnauthorizedError = "There was a problem with your credentials. Please try to log out and log back in again. If the issue persists, please contact our customer support."
AccountCantFetchVPNService = "We were not able to fetch your VPN service data. If the issue persists, please contact our customer support."
UpdateAvailableMessage = "A new version of NordVPN is available! Please update the application."
DisconnectNotConnected = "You are not connected to NordVPN."
DisconnectConnectionRating = "How would you rate your connection quality on a scale from 1 (poor) to 5 (excellent)? Type '%s rate [1-5]'."
CitiesNotFoundError = "Servers by city are not available for this country."
CheckYourInternetConnMessage = "Please check your internet connection and try again."
ExpiredAccountMessage = "Your account has expired. Renew your subscription now to continue enjoying the ultimate privacy and security with NordVPN."
NoSuchCommand = "Command '%s' doesn't exist."
// Meshnet
MsgSetMeshnetUsage = "Enables or disables Meshnet on this device."
MsgSetMeshnetArgsUsage = `<enabled>|<disabled>`
MsgSetMeshnetDescription = `Use this command to enable or disable Meshnet.
Supported values for <disabled>: 0, false, disable, off, disabled
Example: nordvpn set meshnet off
Supported values for <enabled>: 1, true, enable, on, enabled
Example: nordvpn set meshnet on`
MsgSetMeshnetSuccess = "Meshnet is set to '%s' successfully."
MsgMeshnetAlreadyEnabled = "Meshnet is already enabled."
MsgMeshnetAlreadyDisabled = "Meshnet is already disabled."
MsgMeshnetNotEnabled = "Meshnet is not enabled. Use the \"nordvpn set meshnet on\" command to enable it."
MsgMeshnetNordlynxMustBeEnabled = "NordLynx technology must be set to use this feature."
MsgMeshnetVersionNotSupported = "Current application version does not support the Meshnet feature."
MsgMeshnetUsage = "Meshnet is a way to safely access other devices, no matter where in the world they are. Once set up, Meshnet functions just like a secure local area network (LAN) — it connects devices directly. It also allows securely sending files to other devices. Use the \"nordvpn set meshnet on\" command to enable Meshnet. Learn more: https://meshnet.nordvpn.com/"
MsgMeshnetRefreshUsage = "Refreshes the Meshnet in case it was not updated automatically."
MsgMeshnetPeerUnknown = "Peer '%s' is unknown."
// Invites
MsgMeshnetInviteUsage = "Add other users' devices to your Meshnet."
MsgMeshnetInviteDescription = MsgMeshnetInviteUsage + "\n" + "Learn more: https://meshnet.nordvpn.com/features/linking-devices-in-meshnet"
MsgMeshnetInviteListUsage = "Displays the list of all sent and received Meshnet invitations."
MsgMeshnetInviteAcceptUsage = "Accepts an invitation to join inviter's mesh network."
MsgMeshnetInviteDenyUsage = "Denies an invitation to join inviter's mesh network."
MsgMeshnetInviteRevokeUsage = "Revokes a sent invitation."
MsgMeshnetInviteNoInvitationFound = "no invitation from '%s' was found"
MsgMeshnetInviteArgsUsage = "[email]"
MsgMeshnetInviteAcceptSuccess = "Meshnet invitation from '%s' was accepted."
MsgMeshnetInviteAcceptDeviceCount = "Maximum device count reached. Consider removing one or more of your devices."
MsgMeshnetInviteSentSuccess = "Meshnet invitation to '%s' was sent."
MsgMeshnetInviteDenySuccess = "Meshnet invitation from '%s' was denied."
MsgMeshnetInviteRevokeSuccess = "Meshnet invitation to '%s' was revoked."
MsgMeshnetInviteSendUsage = "Sends an invitation to join the mesh network."
MsgMeshnetInviteSendAlreadyExists = "Meshnet invitation for '%s' already exists."
MsgMeshnetInviteSendInvalidEmail = "Invalid email '%s'."
MsgMeshnetInviteSendSameAccountEmail = "Email should belong to a different user."
MsgMeshnetInviteSendDeviceCount = "The peer you're trying to invite has maximum device count reached."
MsgMeshnetInviteWeeklyLimit = "Weekly invitation limit reached."
MsgMeshnetInviteAllowIncomingTrafficUsage = "Allow incoming traffic from a peer."
MsgMeshnetAllowTrafficRoutingUsage = "Allow the peer to route traffic through this device."
MsgMeshnetAllowLocalNetworkUsage = "Allow the peer to access local network when routing traffic through this device."
MsgMeshnetAllowFileshare = "Allow the peer to send you files."
// Peers
MsgMeshnetPeerListFilters = "Filters list of available peers in a Meshnet. To apply multiple filters, separate them with a comma. Please note that you will see an empty list if you apply contradictory filters."
MsgMeshnetPeerUsage = "Manage Meshnet peers."
MsgMeshnetPeerDescription = `Manage your Meshnet devices.
Learn more:
Managing Meshnet devices - https://meshnet.nordvpn.com/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux#manage-devices
Meshnet permissions explained - https://meshnet.nordvpn.com/features/explaining-permissions
Routing traffic in Meshnet - https://meshnet.nordvpn.com/features/routing-traffic-in-meshnet`
MsgMeshnetPeerArgsUsage = "<public_key>|<hostname>|<ip>"
MsgMeshnetPeerListUsage = "Lists available peers in a Meshnet."
MsgMeshnetPeerRemoveUsage = "Removes a peer from a Meshnet."
MsgMeshnetPeerRemoveSuccess = "Peer '%s' has been removed from the Meshnet."
MsgMeshnetPeerRoutingUsage = "Allows/denies a peer device to route all traffic through this device."
MsgMeshnetPeerRoutingDescription = MsgMeshnetPeerRoutingUsage + "\n" + "Learn more: https://meshnet.nordvpn.com/features/explaining-permissions/traffic-routing-permissions"
MsgMeshnetPeerRoutingAllowUsage = "Allows a Meshnet peer to route its' traffic through this device."
MsgMeshnetPeerRoutingDenyUsage = "Denies a Meshnet peer to route its' traffic through this device."
MsgMeshnetPeerRoutingAlreadyAllowed = "Traffic routing for '%s' is already allowed."
MsgMeshnetPeerRoutingAlreadyDenied = "Traffic routing for '%s' is already denied."
MsgMeshnetPeerRoutingAllowSuccess = "Traffic routing for '%s' has been allowed."
MsgMeshnetPeerRoutingDenySuccess = "Traffic routing for '%s' has been denied."
MsgMeshnetPeerIncomingUsage = "Allows/denies a peer device to access this device remotely (incoming connections)."
MsgMeshnetPeerIncomingDescription = MsgMeshnetPeerIncomingUsage + "\n" + "Learn more: https://meshnet.nordvpn.com/features/explaining-permissions/remote-access-permissions"
MsgMeshnetPeerIncomingAllowUsage = "Allows a Meshnet peer to send traffic to this device."
MsgMeshnetPeerIncomingDenyUsage = "Denies a Meshnet peer to send traffic to this device."
MsgMeshnetPeerIncomingAlreadyAllowed = "Incoming traffic for '%s' is already allowed."
MsgMeshnetPeerIncomingAlreadyDenied = "Incoming traffic for '%s' is already denied."
MsgMeshnetPeerIncomingAllowSuccess = "Incoming traffic for '%s' has been allowed."
MsgMeshnetPeerIncomingDenySuccess = "Incoming traffic for '%s' has been denied."
MsgMeshnetPeerLocalNetworkUsage = "Allows/denies access to your local network when a peer device is routing traffic through this device."
MsgMeshnetPeerLocalNetworkDescription = MsgMeshnetPeerLocalNetworkUsage + "\n" + "Learn more: https://meshnet.nordvpn.com/features/explaining-permissions/local-network-permissions"
MsgMeshnetPeerLocalNetworkAllowUsage = "Allows a Meshnet peer to access local network when routing traffic through this device."
MsgMeshnetPeerLocalNetworkDenyUsage = "Denies a Meshnet peer to access local network when routing traffic through this device."
MsgMeshnetPeerLocalNetworkAlreadyAllowed = "Local network access for '%s' is already allowed."
MsgMeshnetPeerLocalNetworkAlreadyDenied = "Local network access for '%s' is already denied."
MsgMeshnetPeerLocalNetworkAllowSuccess = "Local network access for '%s' has been allowed."
MsgMeshnetPeerLocalNetworkDenySuccess = "Local network access for '%s' has been denied."
MsgMeshnetPeerFileshareUsage = "Allows/denies peer to send files to this device."
MsgMeshnetPeerFileshareDescription = MsgMeshnetPeerFileshareUsage + "\n" + "Learn more: https://meshnet.nordvpn.com/features/explaining-permissions/file-sharing-permissions"
MsgMeshnetPeerFileshareAllowUsage = "Allows a Meshnet peer to send files to this device."
MsgMeshnetPeerFileshareDenyUsage = "Denies a Meshnet peer to send files to this device."
MsgMeshnetPeerFileshareAlreadyAllowed = "Fileshare for '%s' is already allowed."
MsgMeshnetPeerFileshareAlreadyDenied = "Fileshare for '%s' is already denied."
MsgMeshnetPeerFileshareAllowSuccess = "Fileshare for '%s' has been allowed."
MsgMeshnetPeerFileshareDenySuccess = "Fileshare for '%s' has been denied."
MsgMeshnetPeerAutomaticFileshareUsage = "Always accept file transfers from a specific peer. We won’t ask you to approve each transfer – files will start downloading automatically."
MsgMeshnetPeerAutomaticFileshareAllowUsage = "Enables automatic fileshare from device."
MsgMeshnetPeerAutomaticFileshareDenyUsage = "Denies automatic fileshare from device."
MsgMeshnetPeerAutomaticFileshareAlreadyEnabled = "Automatic fileshare for '%s' is already allowed."
MsgMeshnetPeerAutomaticFileshareAlreadyDisabled = "Automatic fileshare for '%s' is already denied."
MsgMeshnetPeerAutomaticFileshareEnableSuccess = "Automatic fileshare for '%s' has been allowed."
MsgMeshnetPeerAutomaticFileshareDisableSuccess = "Automatic fileshare for '%s' has been denied."
MsgMeshnetPeerAutomaticFileshareDefaultDirNotFound = "We couldn't enable auto-accept because the download directory doesn't exist."
MsgMeshnetPeerConnectUsage = "Treats a peer as a VPN server and connects to it if the peer has allowed traffic routing."
MsgMeshnetPeerConnectSuccess = "You are connected to Meshnet exit node '%s'."
MsgMeshnetPeerDoesNotAllowRouting = "Meshnet peer '%s' does not allow traffic routing."
MsgMeshnetPeerAlreadyConnected = "You are already connected."
MsgMeshnetPeerConnectFailed = "Connect to other mesh peer failed - check if peer '%s' is online."
// Fileshare
FileshareName = "fileshare"
FileshareSendName = "send"
FileshareAcceptName = "accept"
FileshareCancelName = "cancel"
FileshareListName = "list"
flagFileshareNoWait = "background"
flagFilesharePath = "path"
flagFileshareListIn = "incoming"
flagFileshareListOut = "outgoing"
MsgFileshareUsage = "Transfer files of any size between Meshnet peers securely and privately"
MsgFileshareDescription = MsgFileshareUsage + "\n" + "Learn more: https://meshnet.nordvpn.com/features/sharing-files-in-meshnet\n\nNote: most arguments (peer name, transfer ID, file name) in fileshare commands can be entered faster using auto-completion. Simply press Tab and the app will suggest valid options for you."
MsgFileshareTransferNotFound = "Transfer not found."
MsgFileshareInvalidPath = "Invalid path provided: %s"
MsgFilesharePathNotFound = "Download directory %q does not exist. Make sure the directory exists or provide an alternative via --" + flagFilesharePath
MsgFileshareAcceptPathIsASymlink = "A download path can’t be a symbolic link. Please provide a directory as a download path to accept the transfer."
MsgFileshareAcceptPathIsNotADirectory = "Please provide a directory as a download path to accept the transfer."
MsgFileshareInvalidPeer = "Peer name is invalid."
MsgFileshareDisconnectedPeer = "Peer is disconnected."
MsgFileshareFileNotFound = "File not found."
MsgFileshareSocketNotFound = "Enable Meshnet to share files. If Meshnet is already enabled, try disabling and enabling it again."
MsgFileshareAcceptHomeError = "Cannot determine default download path. Please provide download path explicitly via --" + flagFilesharePath
MsgFileshareAcceptAllError = "Download couldn't start."
MsgFileshareAcceptOutgoingError = "Can't accept outgoing transfer."
MsgFileshareAlreadyAcceptedError = "This transfer is already completed."
MsgFileshareFileInvalidated = "The transfer of this file is already completed or canceled."
MsgFileshareTransferInvalidated = "This transfer is already completed or canceled."
MsgTooManyFiles = "Number of files in a transfer cannot exceed 1000. Try archiving the directory."
MsgNoFiles = "The directory you’re trying to send is empty. Please choose another one."
MsgDirectoryToDeep = "File depth cannot exceed 5 directories. Try archiving the directory."
MsgSendingNotAllowed = "This peer does not allow file transfers from you."
MsgFileNotInProgress = "This file is not in progress"
MsgNotEnoughSpace = "The transfer can't be accepted because there's not enough storage on your device."
MsgNoPermissions = "You don’t have write permissions for the download directory %s. To receive the file transfer, choose another download directory using the --" + flagFilesharePath + " parameter."
MsgFileshareSendUsage = "Send files or directories to a Meshnet peer."
MsgFileshareSendArgsUsage = "<peer_ip>|<peer_hostname>|<peer_pubkey> <path_1> [path_2...]"
MsgFileshareSendDescription = MsgFileshareSendUsage + "\n\nTo cancel a transfer in progress, press Ctrl+C"
MsgFileshareNoWaitUsage = "Send a file transfer in the background instead of seeing its progress. It allows you to continue using the terminal for other commands while a transfer is in progress."
MsgFileshareSendNoWait = "File transfer %s has started in the background."
MsgFileshareAcceptNoWait = "File transfer has started in the background."
MsgFileshareWaitAccept = "Waiting for the peer to accept your transfer..."
MsgTransferNotCreated = "Can’t send the files. Please check if you have the \"read\" permission for the files you want to send."
MsgFileshareListUsage = "Lists transfers. If transfer ID is provided, lists files in the transfer."
MsgFileshareListArgsUsage = `[transfer_id]`
MsgFileshareListDescription = `Adding no arguments to the command will list transfers.
Provide a [transfer_id] argument to list files in the specified transfer.`
MsgFileshareListInUsage = "Show only incoming transfers."
MsgFileshareListOutUsage = "Show only outgoing transfers."
MsgFileshareCancelUsage = "Cancel a transfer or a single file. To cancel an entire transfer, specify the transfer ID. To cancel a single file, specify the transfer ID and the file ID."
MsgFileshareCancelArgsUsage = "<transfer_id> [file_id]"
MsgFileshareCancelSuccess = "File transfer canceled"
MsgFileshareAcceptUsage = "Accept an incoming file transfer. To download an entire transfer, specify the transfer ID. To download a single file, specify the transfer ID and the file ID."
MsgFileshareAcceptArgsUsage = "<transfer_id> [file_id1] [file_id2...]"
MsgFileshareAcceptDescription = MsgFileshareAcceptUsage + "\n\nTo cancel a transfer in progress, press Ctrl+C"
MsgFileshareAcceptPathUsage = "Specify download path (default: $XDG_DOWNLOAD_DIR or $HOME/Downloads)"
MsgFileshareProgressOngoing = "File transfer [%s] progress [%d%%]"
MsgFileshareProgressFinished = "File transfer [%s] completed. " // Need extra spaces to cover the progress message
MsgFileshareProgressFinishedErrors = "File transfer [%s] completed. Some of the files have failed to transfer."
MsgFileshareProgressCanceledByPeer = "File transfer [%s] canceled by peer."
MsgFileshareProgressCanceled = "File transfer [%s] canceled by other process."
)