// SPDX-License-Identifier: MIT // Copyright © 2018-2019 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"; // 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 "alertImportedFromZipTitle (%d)" = "Created %d tunnels"; "alertImportedFromZipMessage (%1$d of %2$d)" = "Created %1$d of %2$d tunnels from zip archive"; "alertUnableToImportTitle" = "Unable to import tunnel"; "alertUnableToImportMessage" = "An error occured when importing the tunnel configuration."; // 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"; "tunnelSectionTitleInterface" = "Interface"; "tunnelInterfaceName" = "Name"; "tunnelInterfacePrivateKey" = "Private key"; "tunnelInterfacePublicKey" = "Public key"; "tunnelInterfaceGenerateKeypair" = "Generate keypair"; "tunnelInterfaceAddresses" = "Addresses"; "tunnelInterfaceListenPort" = "Listen port"; "tunnelInterfaceMTU" = "MTU"; "tunnelInterfaceDNS" = "DNS servers"; "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"; "tunnelOnDemandKey" = "Activate 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" = "Tunnel log"; "settingsExportLogFileButtonTitle" = "Export log file"; // Settings alerts "alertUnableToRemovePreviousLogTitle" = "Log export failed"; "alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared"; "alertUnableToFindExtensionLogPathTitle" = "Log export failed"; "alertUnableToFindExtensionLogPathMessage" = "Unable to determine extension log path"; "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."; // 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."; "alertTunnelActivationFailureOnDemandAddendum" = " This tunnel has Activate On Demand enabled, so this tunnel might be re-activated automatically by the OS. You may turn off Activate On Demand in this app by editing the tunnel configuration."; "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 "macMenuNetworks (%@)" = "Networks: %@"; "macMenuNetworksNone" = "Networks: None"; "macMenuTitle" = "WireGuard"; "macMenuManageTunnels" = "Manage tunnels"; "macMenuImportTunnels" = "Import tunnel(s) from file…"; "macMenuAddEmptyTunnel" = "Add empty tunnel…"; "macMenuExportLog" = "Export log to file…"; "macMenuExportTunnels" = "Export tunnels to zip…"; "macMenuAbout" = "About WireGuard"; "macMenuQuit" = "Quit"; // Mac manage tunnels window "macWindowTitleManageTunnels" = "Manage WireGuard Tunnels"; "macDeleteTunnelConfirmationAlertMessage (%@)" = "Are you sure you want to delete ‘%@’?"; "macDeleteTunnelConfirmationAlertInfo" = "You cannot undo this action."; "macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Delete"; "macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Cancel"; "macButtonImportTunnels" = "Import tunnel(s) from file"; "macSheetButtonImport" = "Import"; "macNameFieldExportLog" = "Export log to"; "macSheetButtonExportLog" = "Save"; "macNameFieldExportZip" = "Export tunnels to"; "macSheetButtonExportZip" = "Save"; // Mac detail/edit view fields "macFieldKey (%@)" = "%@:"; "macFieldOnDemand" = "On-Demand:"; // 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 "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.";