// SPDX-License-Identifier: MIT // Copyright © 2018-2021 WireGuard LLC. All Rights Reserved. // Generic alert action names "actionOK" = "OK"; "actionCancel" = "Cancel"; "actionSave" = "Save"; // Tunnels list UI "tunnelsListTitle" = "WireGuard"; "tunnelsListSettingsButtonTitle" = "Settings"; "tunnelsListCenteredAddTunnelButtonTitle" = "Add a tunnel"; "tunnelsListSwipeDeleteButtonTitle" = "Delete"; "tunnelsListSelectButtonTitle" = "Select"; "tunnelsListSelectAllButtonTitle" = "Select All"; "tunnelsListDeleteButtonTitle" = "Delete"; "tunnelsListSelectedTitle (%d)" = "%d selected"; "tunnelListCaptionOnDemand" = "On Demand"; // Tunnels list menu "addTunnelMenuHeader" = "Add a new WireGuard tunnel"; "addTunnelMenuImportFile" = "Create from file or archive"; "addTunnelMenuQRCode" = "Create from QR code"; "addTunnelMenuFromScratch" = "Create from scratch"; // Tunnels list alerts "alertImportedFromMultipleFilesTitle (%d)" = "Created %d tunnels"; "alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "Created %1$d of %2$d tunnels from imported files"; "alertImportedFromZipTitle (%d)" = "Created %d tunnels"; "alertImportedFromZipMessage (%1$d of %2$d)" = "Created %1$d of %2$d tunnels from zip archive"; "alertBadConfigImportTitle" = "Unable to import tunnel"; "alertBadConfigImportMessage (%@)" = "The file ‘%@’ does not contain a valid WireGuard configuration"; "deleteTunnelsConfirmationAlertButtonTitle" = "Delete"; "deleteTunnelConfirmationAlertButtonMessage (%d)" = "Delete %d tunnel?"; "deleteTunnelsConfirmationAlertButtonMessage (%d)" = "Delete %d tunnels?"; // Tunnel detail and edit UI "newTunnelViewTitle" = "New configuration"; "editTunnelViewTitle" = "Edit configuration"; "tunnelSectionTitleStatus" = "Status"; "tunnelStatusInactive" = "Inactive"; "tunnelStatusActivating" = "Activating"; "tunnelStatusActive" = "Active"; "tunnelStatusDeactivating" = "Deactivating"; "tunnelStatusReasserting" = "Reactivating"; "tunnelStatusRestarting" = "Restarting"; "tunnelStatusWaiting" = "Waiting"; "tunnelStatusAddendumOnDemand" = " (On Demand)"; "tunnelStatusOnDemandDisabled" = "On Demand Disabled"; "tunnelStatusAddendumOnDemandEnabled" = ", On Demand Enabled"; "tunnelStatusAddendumOnDemandDisabled" = ", On Demand Disabled"; "macToggleStatusButtonActivate" = "Activate"; "macToggleStatusButtonActivating" = "Activating…"; "macToggleStatusButtonDeactivate" = "Deactivate"; "macToggleStatusButtonDeactivating" = "Deactivating…"; "macToggleStatusButtonReasserting" = "Reactivating…"; "macToggleStatusButtonRestarting" = "Restarting…"; "macToggleStatusButtonWaiting" = "Waiting…"; "tunnelSectionTitleInterface" = "Interface"; "tunnelInterfaceName" = "Name"; "tunnelInterfacePrivateKey" = "Private key"; "tunnelInterfacePublicKey" = "Public key"; "tunnelInterfaceGenerateKeypair" = "Generate keypair"; "tunnelInterfaceAddresses" = "Addresses"; "tunnelInterfaceListenPort" = "Listen port"; "tunnelInterfaceMTU" = "MTU"; "tunnelInterfaceDNS" = "DNS servers"; "tunnelInterfaceStatus" = "Status"; "tunnelSectionTitlePeer" = "Peer"; "tunnelPeerPublicKey" = "Public key"; "tunnelPeerPreSharedKey" = "Preshared key"; "tunnelPeerEndpoint" = "Endpoint"; "tunnelPeerPersistentKeepalive" = "Persistent keepalive"; "tunnelPeerAllowedIPs" = "Allowed IPs"; "tunnelPeerRxBytes" = "Data received"; "tunnelPeerTxBytes" = "Data sent"; "tunnelPeerLastHandshakeTime" = "Latest handshake"; "tunnelPeerExcludePrivateIPs" = "Exclude private IPs"; "tunnelSectionTitleOnDemand" = "On-Demand Activation"; "tunnelOnDemandCellular" = "Cellular"; "tunnelOnDemandEthernet" = "Ethernet"; "tunnelOnDemandWiFi" = "Wi-Fi"; "tunnelOnDemandSSIDsKey" = "SSIDs"; "tunnelOnDemandAnySSID" = "Any SSID"; "tunnelOnDemandOnlyTheseSSIDs" = "Only these SSIDs"; "tunnelOnDemandExceptTheseSSIDs" = "Except these SSIDs"; "tunnelOnDemandOnlySSID (%d)" = "Only %d SSID"; "tunnelOnDemandOnlySSIDs (%d)" = "Only %d SSIDs"; "tunnelOnDemandExceptSSID (%d)" = "Except %d SSID"; "tunnelOnDemandExceptSSIDs (%d)" = "Except %d SSIDs"; "tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@"; "tunnelOnDemandSSIDViewTitle" = "SSIDs"; "tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs"; "tunnelOnDemandNoSSIDs" = "No SSIDs"; "tunnelOnDemandSectionTitleAddSSIDs" = "Add SSIDs"; "tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Add connected: %@"; "tunnelOnDemandAddMessageAddNewSSID" = "Add new"; "tunnelOnDemandSSIDTextFieldPlaceholder" = "SSID"; "tunnelOnDemandKey" = "On demand"; "tunnelOnDemandOptionOff" = "Off"; "tunnelOnDemandOptionWiFiOnly" = "Wi-Fi only"; "tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi or cellular"; "tunnelOnDemandOptionCellularOnly" = "Cellular only"; "tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi or ethernet"; "tunnelOnDemandOptionEthernetOnly" = "Ethernet only"; "addPeerButtonTitle" = "Add peer"; "deletePeerButtonTitle" = "Delete peer"; "deletePeerConfirmationAlertButtonTitle" = "Delete"; "deletePeerConfirmationAlertMessage" = "Delete this peer?"; "deleteTunnelButtonTitle" = "Delete tunnel"; "deleteTunnelConfirmationAlertButtonTitle" = "Delete"; "deleteTunnelConfirmationAlertMessage" = "Delete this tunnel?"; "tunnelEditPlaceholderTextRequired" = "Required"; "tunnelEditPlaceholderTextOptional" = "Optional"; "tunnelEditPlaceholderTextAutomatic" = "Automatic"; "tunnelEditPlaceholderTextStronglyRecommended" = "Strongly recommended"; "tunnelEditPlaceholderTextOff" = "Off"; "tunnelPeerPersistentKeepaliveValue (%@)" = "every %@ seconds"; "tunnelHandshakeTimestampNow" = "Now"; "tunnelHandshakeTimestampSystemClockBackward" = "(System clock wound backwards)"; "tunnelHandshakeTimestampAgo (%@)" = "%@ ago"; "tunnelHandshakeTimestampYear (%d)" = "%d year"; "tunnelHandshakeTimestampYears (%d)" = "%d years"; "tunnelHandshakeTimestampDay (%d)" = "%d day"; "tunnelHandshakeTimestampDays (%d)" = "%d days"; "tunnelHandshakeTimestampHour (%d)" = "%d hour"; "tunnelHandshakeTimestampHours (%d)" = "%d hours"; "tunnelHandshakeTimestampMinute (%d)" = "%d minute"; "tunnelHandshakeTimestampMinutes (%d)" = "%d minutes"; "tunnelHandshakeTimestampSecond (%d)" = "%d second"; "tunnelHandshakeTimestampSeconds (%d)" = "%d seconds"; "tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ hours"; "tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ minutes"; "tunnelPeerPresharedKeyEnabled" = "enabled"; // Error alerts while creating / editing a tunnel configuration /* Alert title for error in the interface data */ "alertInvalidInterfaceTitle" = "Invalid interface"; /* Any one of the following alert messages can go with the above title */ "alertInvalidInterfaceMessageNameRequired" = "Interface name is required"; "alertInvalidInterfaceMessagePrivateKeyRequired" = "Interface’s private key is required"; "alertInvalidInterfaceMessagePrivateKeyInvalid" = "Interface’s private key must be a 32-byte key in base64 encoding"; "alertInvalidInterfaceMessageAddressInvalid" = "Interface addresses must be a list of comma-separated IP addresses, optionally in CIDR notation"; "alertInvalidInterfaceMessageListenPortInvalid" = "Interface’s listen port must be between 0 and 65535, or unspecified"; "alertInvalidInterfaceMessageMTUInvalid" = "Interface’s MTU must be between 576 and 65535, or unspecified"; "alertInvalidInterfaceMessageDNSInvalid" = "Interface’s DNS servers must be a list of comma-separated IP addresses"; /* Alert title for error in the peer data */ "alertInvalidPeerTitle" = "Invalid peer"; /* Any one of the following alert messages can go with the above title */ "alertInvalidPeerMessagePublicKeyRequired" = "Peer’s public key is required"; "alertInvalidPeerMessagePublicKeyInvalid" = "Peer’s public key must be a 32-byte key in base64 encoding"; "alertInvalidPeerMessagePreSharedKeyInvalid" = "Peer’s preshared key must be a 32-byte key in base64 encoding"; "alertInvalidPeerMessageAllowedIPsInvalid" = "Peer’s allowed IPs must be a list of comma-separated IP addresses, optionally in CIDR notation"; "alertInvalidPeerMessageEndpointInvalid" = "Peer’s endpoint must be of the form ‘host:port’ or ‘[host]:port’"; "alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Peer’s persistent keepalive must be between 0 to 65535, or unspecified"; "alertInvalidPeerMessagePublicKeyDuplicated" = "Two or more peers cannot have the same public key"; // Scanning QR code UI "scanQRCodeViewTitle" = "Scan QR code"; "scanQRCodeTipText" = "Tip: Generate with `qrencode -t ansiutf8 < tunnel.conf`"; // Scanning QR code alerts "alertScanQRCodeCameraUnsupportedTitle" = "Camera Unsupported"; "alertScanQRCodeCameraUnsupportedMessage" = "This device is not able to scan QR codes"; "alertScanQRCodeInvalidQRCodeTitle" = "Invalid QR Code"; "alertScanQRCodeInvalidQRCodeMessage" = "The scanned QR code is not a valid WireGuard configuration"; "alertScanQRCodeUnreadableQRCodeTitle" = "Invalid Code"; "alertScanQRCodeUnreadableQRCodeMessage" = "The scanned code could not be read"; "alertScanQRCodeNamePromptTitle" = "Please name the scanned tunnel"; // Settings UI "settingsViewTitle" = "Settings"; "settingsSectionTitleAbout" = "About"; "settingsVersionKeyWireGuardForIOS" = "WireGuard for iOS"; "settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend"; "settingsSectionTitleExportConfigurations" = "Export configurations"; "settingsExportZipButtonTitle" = "Export zip archive"; "settingsSectionTitleTunnelLog" = "Log"; "settingsViewLogButtonTitle" = "View log"; // Log view "logViewTitle" = "Log"; // Log alerts "alertUnableToRemovePreviousLogTitle" = "Log export failed"; "alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared"; "alertUnableToWriteLogTitle" = "Log export failed"; "alertUnableToWriteLogMessage" = "Unable to write logs to file"; // Zip import / export error alerts "alertCantOpenInputZipFileTitle" = "Unable to read zip archive"; "alertCantOpenInputZipFileMessage" = "The zip archive could not be read."; "alertCantOpenOutputZipFileForWritingTitle" = "Unable to create zip archive"; "alertCantOpenOutputZipFileForWritingMessage" = "Could not open zip file for writing."; "alertBadArchiveTitle" = "Unable to read zip archive"; "alertBadArchiveMessage" = "Bad or corrupt zip archive."; "alertNoTunnelsToExportTitle" = "Nothing to export"; "alertNoTunnelsToExportMessage" = "There are no tunnels to export"; "alertNoTunnelsInImportedZipArchiveTitle" = "No tunnels in zip archive"; "alertNoTunnelsInImportedZipArchiveMessage" = "No .conf tunnel files were found inside the zip archive."; // Conf import error alerts "alertCantOpenInputConfFileTitle" = "Unable to import from file"; "alertCantOpenInputConfFileMessage (%@)" = "The file ‘%@’ could not be read."; // Tunnel management error alerts "alertTunnelActivationFailureTitle" = "Activation failure"; "alertTunnelActivationFailureMessage" = "The tunnel could not be activated. Please ensure that you are connected to the Internet."; "alertTunnelActivationSavedConfigFailureMessage" = "Unable to retrieve tunnel information from the saved configuration."; "alertTunnelActivationBackendFailureMessage" = "Unable to turn on Go backend library."; "alertTunnelActivationFileDescriptorFailureMessage" = "Unable to determine TUN device file descriptor."; "alertTunnelActivationSetNetworkSettingsMessage" = "Unable to apply network settings to tunnel object."; "alertTunnelDNSFailureTitle" = "DNS resolution failure"; "alertTunnelDNSFailureMessage" = "One or more endpoint domains could not be resolved."; "alertTunnelNameEmptyTitle" = "No name provided"; "alertTunnelNameEmptyMessage" = "Cannot create tunnel with an empty name"; "alertTunnelAlreadyExistsWithThatNameTitle" = "Name already exists"; "alertTunnelAlreadyExistsWithThatNameMessage" = "A tunnel with that name already exists"; "alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activation in progress"; "alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "The tunnel is already active or in the process of being activated"; // Tunnel management error alerts on system error /* The alert message that goes with the following titles would be one of the alertSystemErrorMessage* listed further down */ "alertSystemErrorOnListingTunnelsTitle" = "Unable to list tunnels"; "alertSystemErrorOnAddTunnelTitle" = "Unable to create tunnel"; "alertSystemErrorOnModifyTunnelTitle" = "Unable to modify tunnel"; "alertSystemErrorOnRemoveTunnelTitle" = "Unable to remove tunnel"; /* The alert message for this alert shall include one of the alertSystemErrorMessage* listed further down */ "alertTunnelActivationSystemErrorTitle" = "Activation failure"; "alertTunnelActivationSystemErrorMessage (%@)" = "The tunnel could not be activated. %@"; /* alertSystemErrorMessage* messages */ "alertSystemErrorMessageTunnelConfigurationInvalid" = "The configuration is invalid."; "alertSystemErrorMessageTunnelConfigurationDisabled" = "The configuration is disabled."; "alertSystemErrorMessageTunnelConnectionFailed" = "The connection failed."; "alertSystemErrorMessageTunnelConfigurationStale" = "The configuration is stale."; "alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Reading or writing the configuration failed."; "alertSystemErrorMessageTunnelConfigurationUnknown" = "Unknown system error."; // Mac status bar menu / pulldown menu / main menu "macMenuNetworks (%@)" = "Networks: %@"; "macMenuNetworksNone" = "Networks: None"; "macMenuTitle" = "WireGuard"; "macTunnelsMenuTitle" = "Tunnels"; "macMenuManageTunnels" = "Manage Tunnels"; "macMenuImportTunnels" = "Import Tunnel(s) from File…"; "macMenuAddEmptyTunnel" = "Add Empty Tunnel…"; "macMenuViewLog" = "View Log"; "macMenuExportTunnels" = "Export Tunnels to Zip…"; "macMenuAbout" = "About WireGuard"; "macMenuQuit" = "Quit WireGuard"; "macMenuHideApp" = "Hide WireGuard"; "macMenuHideOtherApps" = "Hide Others"; "macMenuShowAllApps" = "Show All"; "macMenuFile" = "File"; "macMenuCloseWindow" = "Close Window"; "macMenuEdit" = "Edit"; "macMenuCut" = "Cut"; "macMenuCopy" = "Copy"; "macMenuPaste" = "Paste"; "macMenuSelectAll" = "Select All"; "macMenuTunnel" = "Tunnel"; "macMenuToggleStatus" = "Toggle Status"; "macMenuEditTunnel" = "Edit…"; "macMenuDeleteSelected" = "Delete Selected"; "macMenuWindow" = "Window"; "macMenuMinimize" = "Minimize"; "macMenuZoom" = "Zoom"; // Mac manage tunnels window "macWindowTitleManageTunnels" = "Manage WireGuard Tunnels"; "macDeleteTunnelConfirmationAlertMessage (%@)" = "Are you sure you want to delete ‘%@’?"; "macDeleteMultipleTunnelsConfirmationAlertMessage (%d)" = "Are you sure you want to delete %d tunnels?"; "macDeleteTunnelConfirmationAlertInfo" = "You cannot undo this action."; "macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Delete"; "macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Cancel"; "macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Deleting…"; "macButtonImportTunnels" = "Import tunnel(s) from file"; "macSheetButtonImport" = "Import"; "macNameFieldExportLog" = "Save log to:"; "macSheetButtonExportLog" = "Save"; "macNameFieldExportZip" = "Export tunnels to:"; "macSheetButtonExportZip" = "Save"; "macButtonDeleteTunnels (%d)" = "Delete %d tunnels"; "macButtonEdit" = "Edit"; // Mac detail/edit view fields "macFieldKey (%@)" = "%@:"; "macFieldOnDemand" = "On-Demand:"; "macFieldOnDemandSSIDs" = "SSIDs:"; // Mac status display "macStatus (%@)" = "Status: %@"; // Mac editing config "macEditDiscard" = "Discard"; "macEditSave" = "Save"; "macAlertNameIsEmpty" = "Name is required"; "macAlertDuplicateName (%@)" = "Another tunnel already exists with the name ‘%@’."; "macAlertInvalidLine (%@)" = "Invalid line: ‘%@’."; "macAlertNoInterface" = "Configuration must have an ‘Interface’ section."; "macAlertMultipleInterfaces" = "Configuration must have only one ‘Interface’ section."; "macAlertPrivateKeyInvalid" = "Private key is invalid."; "macAlertListenPortInvalid (%@)" = "Listen port ‘%@’ is invalid."; "macAlertAddressInvalid (%@)" = "Address ‘%@’ is invalid."; "macAlertDNSInvalid (%@)" = "DNS ‘%@’ is invalid."; "macAlertMTUInvalid (%@)" = "MTU ‘%@’ is invalid."; "macAlertUnrecognizedInterfaceKey (%@)" = "Interface contains unrecognized key ‘%@’"; "macAlertInfoUnrecognizedInterfaceKey" = "Valid keys are: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ and ‘MTU’."; "macAlertPublicKeyInvalid" = "Public key is invalid"; "macAlertPreSharedKeyInvalid" = "Preshared key is invalid"; "macAlertAllowedIPInvalid (%@)" = "Allowed IP ‘%@’ is invalid"; "macAlertEndpointInvalid (%@)" = "Endpoint ‘%@’ is invalid"; "macAlertPersistentKeepliveInvalid (%@)" = "Persistent keepalive value ‘%@’ is invalid"; "macAlertUnrecognizedPeerKey (%@)" = "Peer contains unrecognized key ‘%@’"; "macAlertInfoUnrecognizedPeerKey" = "Valid keys are: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’"; "macAlertMultipleEntriesForKey (%@)" = "There should be only one entry per section for key ‘%@’"; // Mac about dialog "macAppVersion (%@)" = "App version: %@"; "macGoBackendVersion (%@)" = "Go backend version: %@"; // Privacy "macExportPrivateData" = "export tunnel private keys"; "macViewPrivateData" = "view tunnel private keys"; "iosExportPrivateData" = "Authenticate to export tunnel private keys."; "iosViewPrivateData" = "Authenticate to view tunnel private keys."; // Mac alert "macConfirmAndQuitAlertMessage" = "Do you want to close the tunnels manager or quit WireGuard entirely?"; "macConfirmAndQuitAlertInfo" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon."; "macConfirmAndQuitInfoWithActiveTunnel (%@)" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon.\n\nNote that if you quit WireGuard entirely the currently active tunnel ('%@') will still remain active until you deactivate it from this application or through the Network panel in System Preferences."; "macConfirmAndQuitAlertQuitWireGuard" = "Quit WireGuard"; "macConfirmAndQuitAlertCloseWindow" = "Close Tunnels Manager"; "macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel"; "macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences."; // Mac tooltip "macToolTipEditTunnel" = "Edit tunnel (⌘E)"; "macToolTipToggleStatus" = "Toggle status (⌘T)"; // Mac log view "macLogColumnTitleTime" = "Time"; "macLogColumnTitleLogMessage" = "Log message"; "macLogButtonTitleClose" = "Close"; "macLogButtonTitleSave" = "Save…"; // Mac unusable tunnel view "macUnusableTunnelMessage" = "The configuration for this tunnel cannot be found in the keychain."; "macUnusableTunnelInfo" = "In case this tunnel was created by another user, only that user can view, edit, or activate this tunnel."; "macUnusableTunnelButtonTitleDeleteTunnel" = "Delete tunnel"; // Mac App Store updating alert "macAppStoreUpdatingAlertMessage" = "App Store would like to update WireGuard"; "macAppStoreUpdatingAlertInfoWithOnDemand (%@)" = "Please disable on-demand for tunnel ‘%@’, deactivate it, and then continue updating in App Store."; "macAppStoreUpdatingAlertInfoWithoutOnDemand (%@)" = "Please deactivate tunnel ‘%@’ and then continue updating in App Store."; // Donation "donateLink" = "♥ Donate to the WireGuard Project";