Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a4fc0f64b8 | |||
| 9269c7c1c1 | |||
| 403ee63615 | |||
| b622fde291 | |||
| 386fe4eb12 | |||
| 49b7d083f1 | |||
| db4e2915f3 | |||
| 20bdf46792 |
@@ -1,2 +1,2 @@
|
|||||||
VERSION_NAME = 1.0.10
|
VERSION_NAME = 1.0.11
|
||||||
VERSION_ID = 19
|
VERSION_ID = 21
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ class SettingsTableViewController: UITableViewController {
|
|||||||
case goBackendVersion
|
case goBackendVersion
|
||||||
case exportZipArchive
|
case exportZipArchive
|
||||||
case viewLog
|
case viewLog
|
||||||
case donateLink
|
|
||||||
|
|
||||||
var localizedUIString: String {
|
var localizedUIString: String {
|
||||||
switch self {
|
switch self {
|
||||||
@@ -19,13 +18,12 @@ class SettingsTableViewController: UITableViewController {
|
|||||||
case .goBackendVersion: return tr("settingsVersionKeyWireGuardGoBackend")
|
case .goBackendVersion: return tr("settingsVersionKeyWireGuardGoBackend")
|
||||||
case .exportZipArchive: return tr("settingsExportZipButtonTitle")
|
case .exportZipArchive: return tr("settingsExportZipButtonTitle")
|
||||||
case .viewLog: return tr("settingsViewLogButtonTitle")
|
case .viewLog: return tr("settingsViewLogButtonTitle")
|
||||||
case .donateLink: return tr("donateLink")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let settingsFieldsBySection: [[SettingsFields]] = [
|
let settingsFieldsBySection: [[SettingsFields]] = [
|
||||||
[.iosAppVersion, .goBackendVersion, .donateLink],
|
[.iosAppVersion, .goBackendVersion],
|
||||||
[.exportZipArchive],
|
[.exportZipArchive],
|
||||||
[.viewLog]
|
[.viewLog]
|
||||||
]
|
]
|
||||||
@@ -169,15 +167,6 @@ extension SettingsTableViewController {
|
|||||||
self?.presentLogView()
|
self?.presentLogView()
|
||||||
}
|
}
|
||||||
return cell
|
return cell
|
||||||
} else if field == .donateLink {
|
|
||||||
let cell: ButtonCell = tableView.dequeueReusableCell(for: indexPath)
|
|
||||||
cell.buttonText = field.localizedUIString
|
|
||||||
cell.onTapped = {
|
|
||||||
if let url = URL(string: "https://www.wireguard.com/donations/"), UIApplication.shared.canOpenURL(url) {
|
|
||||||
UIApplication.shared.open(url, options: [:])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cell
|
|
||||||
}
|
}
|
||||||
fatalError()
|
fatalError()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ class ConfTextStorage: NSTextStorage {
|
|||||||
override func replaceCharacters(in range: NSRange, with str: String) {
|
override func replaceCharacters(in range: NSRange, with str: String) {
|
||||||
beginEditing()
|
beginEditing()
|
||||||
backingStore.replaceCharacters(in: range, with: str)
|
backingStore.replaceCharacters(in: range, with: str)
|
||||||
edited(.editedCharacters, range: range, changeInLength: str.count - range.length)
|
edited(.editedCharacters, range: range, changeInLength: str.utf16.count - range.length)
|
||||||
endEditing()
|
endEditing()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,6 +94,7 @@ class ConfTextStorage: NSTextStorage {
|
|||||||
|
|
||||||
func evaluateExcludePrivateIPs(highlightSpans: UnsafePointer<highlight_span>) {
|
func evaluateExcludePrivateIPs(highlightSpans: UnsafePointer<highlight_span>) {
|
||||||
var spans = highlightSpans
|
var spans = highlightSpans
|
||||||
|
let string = backingStore.string
|
||||||
enum FieldType: String {
|
enum FieldType: String {
|
||||||
case dns
|
case dns
|
||||||
case allowedips
|
case allowedips
|
||||||
@@ -102,7 +103,7 @@ class ConfTextStorage: NSTextStorage {
|
|||||||
resetLastPeer()
|
resetLastPeer()
|
||||||
while spans.pointee.type != HighlightEnd {
|
while spans.pointee.type != HighlightEnd {
|
||||||
let span = spans.pointee
|
let span = spans.pointee
|
||||||
var substring = backingStore.attributedSubstring(from: NSRange(location: span.start, length: span.len)).string.lowercased()
|
var substring = String(string.substring(higlightSpan: span)).lowercased()
|
||||||
|
|
||||||
if span.type == HighlightError {
|
if span.type == HighlightError {
|
||||||
resetLastPeer()
|
resetLastPeer()
|
||||||
@@ -123,8 +124,9 @@ class ConfTextStorage: NSTextStorage {
|
|||||||
let next = spans.successor()
|
let next = spans.successor()
|
||||||
let nextnext = next.successor()
|
let nextnext = next.successor()
|
||||||
if next.pointee.type == HighlightDelimiter && nextnext.pointee.type == HighlightCidr {
|
if next.pointee.type == HighlightDelimiter && nextnext.pointee.type == HighlightCidr {
|
||||||
substring += backingStore.attributedSubstring(from: NSRange(location: next.pointee.start, length: next.pointee.len)).string +
|
let delimiter = string.substring(higlightSpan: next.pointee)
|
||||||
backingStore.attributedSubstring(from: NSRange(location: nextnext.pointee.start, length: nextnext.pointee.len)).string
|
let cidr = string.substring(higlightSpan: nextnext.pointee)
|
||||||
|
substring += delimiter + cidr
|
||||||
}
|
}
|
||||||
lastOnePeerAllowedIPs.append(substring)
|
lastOnePeerAllowedIPs.append(substring)
|
||||||
} else if span.type == HighlightPublicKey {
|
} else if span.type == HighlightPublicKey {
|
||||||
@@ -139,7 +141,8 @@ class ConfTextStorage: NSTextStorage {
|
|||||||
hasError = false
|
hasError = false
|
||||||
privateKeyString = nil
|
privateKeyString = nil
|
||||||
|
|
||||||
let fullTextRange = NSRange(location: 0, length: (backingStore.string as NSString).length)
|
let string = backingStore.string
|
||||||
|
let fullTextRange = NSRange(..<string.endIndex, in: string)
|
||||||
|
|
||||||
backingStore.beginEditing()
|
backingStore.beginEditing()
|
||||||
let defaultAttributes: [NSAttributedString.Key: Any] = [
|
let defaultAttributes: [NSAttributedString.Key: Any] = [
|
||||||
@@ -147,15 +150,19 @@ class ConfTextStorage: NSTextStorage {
|
|||||||
.font: defaultFont
|
.font: defaultFont
|
||||||
]
|
]
|
||||||
backingStore.setAttributes(defaultAttributes, range: fullTextRange)
|
backingStore.setAttributes(defaultAttributes, range: fullTextRange)
|
||||||
var spans = highlight_config(backingStore.string)!
|
var spans = highlight_config(string)!
|
||||||
evaluateExcludePrivateIPs(highlightSpans: spans)
|
evaluateExcludePrivateIPs(highlightSpans: spans)
|
||||||
|
|
||||||
let spansStart = spans
|
let spansStart = spans
|
||||||
while spans.pointee.type != HighlightEnd {
|
while spans.pointee.type != HighlightEnd {
|
||||||
let span = spans.pointee
|
let span = spans.pointee
|
||||||
|
|
||||||
let range = NSRange(location: span.start, length: span.len)
|
let startIndex = string.utf8.index(string.startIndex, offsetBy: span.start)
|
||||||
|
let endIndex = string.utf8.index(startIndex, offsetBy: span.len)
|
||||||
|
let range = NSRange(startIndex..<endIndex, in: string)
|
||||||
|
|
||||||
backingStore.setAttributes(nonColorAttributes(for: span.type), range: range)
|
backingStore.setAttributes(nonColorAttributes(for: span.type), range: range)
|
||||||
|
|
||||||
let color = textColorTheme.colorMap[span.type.rawValue, default: textColorTheme.defaultColor]
|
let color = textColorTheme.colorMap[span.type.rawValue, default: textColorTheme.defaultColor]
|
||||||
backingStore.addAttribute(.foregroundColor, value: color, range: range)
|
backingStore.addAttribute(.foregroundColor, value: color, range: range)
|
||||||
|
|
||||||
@@ -164,7 +171,7 @@ class ConfTextStorage: NSTextStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if span.type == HighlightPrivateKey {
|
if span.type == HighlightPrivateKey {
|
||||||
privateKeyString = backingStore.attributedSubstring(from: NSRange(location: span.start, length: span.len)).string
|
privateKeyString = String(string.substring(higlightSpan: span))
|
||||||
}
|
}
|
||||||
|
|
||||||
spans = spans.successor()
|
spans = spans.successor()
|
||||||
@@ -178,3 +185,12 @@ class ConfTextStorage: NSTextStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private extension String {
|
||||||
|
func substring(higlightSpan span: highlight_span) -> Substring {
|
||||||
|
let startIndex = self.utf8.index(self.utf8.startIndex, offsetBy: span.start)
|
||||||
|
let endIndex = self.utf8.index(startIndex, offsetBy: span.len)
|
||||||
|
|
||||||
|
return self[startIndex..<endIndex]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ class ConfTextView: NSTextView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func setConfText(_ text: String) {
|
func setConfText(_ text: String) {
|
||||||
let fullTextRange = NSRange(location: 0, length: (string as NSString).length)
|
let fullTextRange = NSRange(..<string.endIndex, in: string)
|
||||||
if shouldChangeText(in: fullTextRange, replacementString: text) {
|
if shouldChangeText(in: fullTextRange, replacementString: text) {
|
||||||
replaceCharacters(in: fullTextRange, with: text)
|
replaceCharacters(in: fullTextRange, with: text)
|
||||||
didChangeText()
|
didChangeText()
|
||||||
|
|||||||
@@ -95,3 +95,181 @@
|
|||||||
"macMenuManageTunnels" = "Gestiona túnels";
|
"macMenuManageTunnels" = "Gestiona túnels";
|
||||||
"macMenuCut" = "Talla";
|
"macMenuCut" = "Talla";
|
||||||
"macMenuCopy" = "Copia";
|
"macMenuCopy" = "Copia";
|
||||||
|
"newTunnelViewTitle" = "New configuration";
|
||||||
|
"macMenuDeleteSelected" = "Delete Selected";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationInvalid" = "The configuration is invalid.";
|
||||||
|
"tunnelPeerEndpoint" = "Endpoint";
|
||||||
|
"tunnelInterfaceMTU" = "MTU";
|
||||||
|
"alertInvalidInterfaceMessageListenPortInvalid" = "Interface’s listen port must be between 0 and 65535, or unspecified";
|
||||||
|
"addPeerButtonTitle" = "Add peer";
|
||||||
|
"tunnelHandshakeTimestampSystemClockBackward" = "(System clock wound backwards)";
|
||||||
|
"macMenuTitle" = "WireGuard";
|
||||||
|
"macAlertNoInterface" = "Configuration must have an ‘Interface’ section.";
|
||||||
|
"macNameFieldExportZip" = "Export tunnels to:";
|
||||||
|
"editTunnelViewTitle" = "Edit configuration";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationUnknown" = "Unknown system error.";
|
||||||
|
"macEditDiscard" = "Discard";
|
||||||
|
"macSheetButtonExportZip" = "Save";
|
||||||
|
"macWindowTitleManageTunnels" = "Manage WireGuard Tunnels";
|
||||||
|
"tunnelsListTitle" = "WireGuard";
|
||||||
|
"macConfirmAndQuitAlertInfo" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon.";
|
||||||
|
"macUnusableTunnelInfo" = "In case this tunnel was created by another user, only that user can view, edit, or activate this tunnel.";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "The tunnel is already active or in the process of being activated";
|
||||||
|
"alertTunnelActivationSetNetworkSettingsMessage" = "Unable to apply network settings to tunnel object.";
|
||||||
|
"macMenuExportTunnels" = "Export Tunnels to Zip…";
|
||||||
|
"macMenuShowAllApps" = "Show All";
|
||||||
|
"alertCantOpenInputConfFileTitle" = "Unable to import from file";
|
||||||
|
"macMenuHideApp" = "Hide WireGuard";
|
||||||
|
"macDeleteTunnelConfirmationAlertInfo" = "You cannot undo this action.";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Deleting…";
|
||||||
|
"tunnelPeerPersistentKeepalive" = "Persistent keepalive";
|
||||||
|
"alertSystemErrorMessageTunnelConnectionFailed" = "The connection failed.";
|
||||||
|
"macButtonEdit" = "Edit";
|
||||||
|
"macAlertPublicKeyInvalid" = "Public key is invalid";
|
||||||
|
"tunnelOnDemandOptionWiFiOnly" = "Wi-Fi only";
|
||||||
|
"macNameFieldExportLog" = "Save log to:";
|
||||||
|
"alertSystemErrorOnAddTunnelTitle" = "Unable to create tunnel";
|
||||||
|
"macConfirmAndQuitAlertMessage" = "Do you want to close the tunnels manager or quit WireGuard entirely?";
|
||||||
|
"alertTunnelActivationSavedConfigFailureMessage" = "Unable to retrieve tunnel information from the saved configuration.";
|
||||||
|
"tunnelOnDemandOptionOff" = "Off";
|
||||||
|
"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
|
||||||
|
"macAlertInfoUnrecognizedInterfaceKey" = "Valid keys are: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ and ‘MTU’.";
|
||||||
|
"macLogColumnTitleTime" = "Time";
|
||||||
|
"actionOK" = "OK";
|
||||||
|
"alertTunnelNameEmptyMessage" = "Cannot create tunnel with an empty name";
|
||||||
|
"alertInvalidInterfaceMessageMTUInvalid" = "Interface’s MTU must be between 576 and 65535, or unspecified";
|
||||||
|
"tunnelOnDemandWiFi" = "Wi-Fi";
|
||||||
|
"alertTunnelNameEmptyTitle" = "No name provided";
|
||||||
|
"alertUnableToWriteLogMessage" = "Unable to write logs to file";
|
||||||
|
"macToggleStatusButtonActivating" = "Activating…";
|
||||||
|
"macMenuQuit" = "Quit WireGuard";
|
||||||
|
"macMenuAddEmptyTunnel" = "Add Empty Tunnel…";
|
||||||
|
"tunnelStatusDeactivating" = "Deactivating";
|
||||||
|
"alertInvalidInterfaceTitle" = "Invalid interface";
|
||||||
|
"tunnelSectionTitleStatus" = "Status";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Delete";
|
||||||
|
"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.";
|
||||||
|
"alertTunnelActivationFailureTitle" = "Activation failure";
|
||||||
|
"macLogButtonTitleClose" = "Close";
|
||||||
|
"tunnelOnDemandSSIDViewTitle" = "SSIDs";
|
||||||
|
"tunnelOnDemandOptionCellularOnly" = "Cellular only";
|
||||||
|
"tunnelEditPlaceholderTextOptional" = "Optional";
|
||||||
|
"settingsExportZipButtonTitle" = "Export zip archive";
|
||||||
|
"tunnelSectionTitleOnDemand" = "On-Demand Activation";
|
||||||
|
"deleteTunnelsConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"alertInvalidInterfaceMessageNameRequired" = "Interface name is required";
|
||||||
|
"tunnelEditPlaceholderTextAutomatic" = "Automatic";
|
||||||
|
"macViewPrivateData" = "view tunnel private keys";
|
||||||
|
"alertInvalidPeerMessageEndpointInvalid" = "Peer’s endpoint must be of the form ‘host:port’ or ‘[host]:port’";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activation in progress";
|
||||||
|
"addTunnelMenuImportFile" = "Create from file or archive";
|
||||||
|
"deletePeerConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"addTunnelMenuQRCode" = "Create from QR code";
|
||||||
|
"alertInvalidPeerMessagePreSharedKeyInvalid" = "Peer’s preshared key must be a 32-byte key in base64 encoding";
|
||||||
|
"macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences.";
|
||||||
|
"macMenuEdit" = "Edit";
|
||||||
|
"donateLink" = "♥ Donate to the WireGuard Project";
|
||||||
|
"macMenuWindow" = "Window";
|
||||||
|
"tunnelStatusRestarting" = "Restarting";
|
||||||
|
"tunnelHandshakeTimestampNow" = "Now";
|
||||||
|
"alertTunnelActivationFailureMessage" = "The tunnel could not be activated. Please ensure that you are connected to the Internet.";
|
||||||
|
"tunnelInterfaceListenPort" = "Listen port";
|
||||||
|
"tunnelOnDemandOptionEthernetOnly" = "Ethernet only";
|
||||||
|
"macMenuHideOtherApps" = "Hide Others";
|
||||||
|
"alertCantOpenInputZipFileMessage" = "The zip archive could not be read.";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Interface’s private key must be a 32-byte key in base64 encoding";
|
||||||
|
"deleteTunnelButtonTitle" = "Delete tunnel";
|
||||||
|
"alertInvalidInterfaceMessageDNSInvalid" = "Interface’s DNS servers must be a list of comma-separated IP addresses";
|
||||||
|
"tunnelStatusInactive" = "Inactive";
|
||||||
|
"macAlertPrivateKeyInvalid" = "Private key is invalid.";
|
||||||
|
"deleteTunnelConfirmationAlertMessage" = "Delete this tunnel?";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Cancel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationDisabled" = "The configuration is disabled.";
|
||||||
|
"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Peer’s persistent keepalive must be between 0 to 65535, or unspecified";
|
||||||
|
"macMenuNetworksNone" = "Networks: None";
|
||||||
|
"tunnelOnDemandSSIDsKey" = "SSIDs";
|
||||||
|
"alertCantOpenOutputZipFileForWritingMessage" = "Could not open zip file for writing.";
|
||||||
|
"macMenuSelectAll" = "Select All";
|
||||||
|
"alertInvalidPeerMessagePublicKeyInvalid" = "Peer’s public key must be a 32-byte key in base64 encoding";
|
||||||
|
"tunnelOnDemandCellular" = "Cellular";
|
||||||
|
"macConfirmAndQuitAlertQuitWireGuard" = "Quit WireGuard";
|
||||||
|
"alertSystemErrorOnRemoveTunnelTitle" = "Unable to remove tunnel";
|
||||||
|
"macFieldOnDemand" = "On-Demand:";
|
||||||
|
"macMenuCloseWindow" = "Close Window";
|
||||||
|
"macSheetButtonExportLog" = "Save";
|
||||||
|
"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi or cellular";
|
||||||
|
"alertSystemErrorOnModifyTunnelTitle" = "Unable to modify tunnel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Reading or writing the configuration failed.";
|
||||||
|
"macMenuEditTunnel" = "Edit…";
|
||||||
|
"macButtonImportTunnels" = "Import tunnel(s) from file";
|
||||||
|
"macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationStale" = "The configuration is stale.";
|
||||||
|
"tunnelPeerPreSharedKey" = "Preshared key";
|
||||||
|
"alertTunnelDNSFailureMessage" = "One or more endpoint domains could not be resolved.";
|
||||||
|
"alertInvalidInterfaceMessageAddressInvalid" = "Interface addresses must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveTitle" = "No tunnels in zip archive";
|
||||||
|
"alertTunnelDNSFailureTitle" = "DNS resolution failure";
|
||||||
|
"macLogButtonTitleSave" = "Save…";
|
||||||
|
"macMenuToggleStatus" = "Toggle Status";
|
||||||
|
"macMenuMinimize" = "Minimize";
|
||||||
|
"deletePeerButtonTitle" = "Delete peer";
|
||||||
|
"alertCantOpenInputZipFileTitle" = "Unable to read zip archive";
|
||||||
|
"alertSystemErrorOnListingTunnelsTitle" = "Unable to list tunnels";
|
||||||
|
"settingsVersionKeyWireGuardForIOS" = "WireGuard for iOS";
|
||||||
|
"macMenuPaste" = "Paste";
|
||||||
|
"macAlertMultipleInterfaces" = "Configuration must have only one ‘Interface’ section.";
|
||||||
|
"macAppStoreUpdatingAlertMessage" = "App Store would like to update WireGuard";
|
||||||
|
"macUnusableTunnelMessage" = "The configuration for this tunnel cannot be found in the keychain.";
|
||||||
|
"macToolTipEditTunnel" = "Edit tunnel (⌘E)";
|
||||||
|
"tunnelEditPlaceholderTextStronglyRecommended" = "Strongly recommended";
|
||||||
|
"macMenuZoom" = "Zoom";
|
||||||
|
"alertBadArchiveTitle" = "Unable to read zip archive";
|
||||||
|
"macExportPrivateData" = "export tunnel private keys";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameTitle" = "Name already exists";
|
||||||
|
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
||||||
|
"tunnelPeerLastHandshakeTime" = "Latest handshake";
|
||||||
|
"macAlertPreSharedKeyInvalid" = "Preshared key is invalid";
|
||||||
|
"alertBadConfigImportTitle" = "Unable to import tunnel";
|
||||||
|
"macEditSave" = "Save";
|
||||||
|
"macConfirmAndQuitAlertCloseWindow" = "Close Tunnels Manager";
|
||||||
|
"macMenuFile" = "File";
|
||||||
|
"tunnelStatusActivating" = "Activating";
|
||||||
|
"macToolTipToggleStatus" = "Toggle status (⌘T)";
|
||||||
|
"alertTunnelActivationSystemErrorTitle" = "Activation failure";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyRequired" = "Interface’s private key is required";
|
||||||
|
"alertNoTunnelsToExportTitle" = "Nothing to export";
|
||||||
|
"scanQRCodeTipText" = "Tip: Generate with `qrencode -t ansiutf8 < tunnel.conf`";
|
||||||
|
"alertNoTunnelsToExportMessage" = "There are no tunnels to export";
|
||||||
|
"macMenuImportTunnels" = "Import Tunnel(s) from File…";
|
||||||
|
"macMenuViewLog" = "View Log";
|
||||||
|
"macAlertInfoUnrecognizedPeerKey" = "Valid keys are: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’";
|
||||||
|
"tunnelOnDemandNoSSIDs" = "No SSIDs";
|
||||||
|
"deleteTunnelConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"tunnelEditPlaceholderTextOff" = "Off";
|
||||||
|
"addTunnelMenuHeader" = "Add a new WireGuard tunnel";
|
||||||
|
"macUnusableTunnelButtonTitleDeleteTunnel" = "Delete tunnel";
|
||||||
|
"tunnelEditPlaceholderTextRequired" = "Required";
|
||||||
|
"tunnelStatusReasserting" = "Reactivating";
|
||||||
|
"macMenuTunnel" = "Tunnel";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameMessage" = "A tunnel with that name already exists";
|
||||||
|
"macLogColumnTitleLogMessage" = "Log message";
|
||||||
|
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
||||||
|
"macMenuAbout" = "About WireGuard";
|
||||||
|
"macSheetButtonImport" = "Import";
|
||||||
|
"alertScanQRCodeNamePromptTitle" = "Please name the scanned tunnel";
|
||||||
|
"alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared";
|
||||||
|
"alertTunnelActivationBackendFailureMessage" = "Unable to turn on Go backend library.";
|
||||||
|
"settingsSectionTitleExportConfigurations" = "Export configurations";
|
||||||
|
"alertBadArchiveMessage" = "Bad or corrupt zip archive.";
|
||||||
|
"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
|
||||||
|
"macFieldOnDemandSSIDs" = "SSIDs:";
|
||||||
|
"deletePeerConfirmationAlertMessage" = "Delete this peer?";
|
||||||
|
"alertCantOpenOutputZipFileForWritingTitle" = "Unable to create zip archive";
|
||||||
|
"tunnelStatusActive" = "Active";
|
||||||
|
"tunnelStatusWaiting" = "Waiting";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveMessage" = "No .conf tunnel files were found inside the zip archive.";
|
||||||
|
"alertTunnelActivationFileDescriptorFailureMessage" = "Unable to determine TUN device file descriptor.";
|
||||||
|
"addTunnelMenuFromScratch" = "Create from scratch";
|
||||||
|
"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi or ethernet";
|
||||||
|
"macToggleStatusButtonActivate" = "Activate";
|
||||||
|
"macAlertNameIsEmpty" = "Name is required";
|
||||||
|
|||||||
@@ -189,3 +189,130 @@
|
|||||||
"alertUnableToRemovePreviousLogTitle" = "Exportación de registros fallida";
|
"alertUnableToRemovePreviousLogTitle" = "Exportación de registros fallida";
|
||||||
|
|
||||||
"alertNoTunnelsToExportTitle" = "Nada para exportar";
|
"alertNoTunnelsToExportTitle" = "Nada para exportar";
|
||||||
|
"settingsSectionTitleAbout" = "About";
|
||||||
|
"macMenuDeleteSelected" = "Delete Selected";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationInvalid" = "The configuration is invalid.";
|
||||||
|
"macMenuTitle" = "WireGuard";
|
||||||
|
"macAlertNoInterface" = "Configuration must have an ‘Interface’ section.";
|
||||||
|
"macNameFieldExportZip" = "Export tunnels to:";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationUnknown" = "Unknown system error.";
|
||||||
|
"macMenuCut" = "Cut";
|
||||||
|
"macEditDiscard" = "Discard";
|
||||||
|
"alertScanQRCodeCameraUnsupportedMessage" = "This device is not able to scan QR codes";
|
||||||
|
"macSheetButtonExportZip" = "Save";
|
||||||
|
"macWindowTitleManageTunnels" = "Manage WireGuard Tunnels";
|
||||||
|
"macConfirmAndQuitAlertInfo" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon.";
|
||||||
|
"macUnusableTunnelInfo" = "In case this tunnel was created by another user, only that user can view, edit, or activate this tunnel.";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "The tunnel is already active or in the process of being activated";
|
||||||
|
"alertTunnelActivationSetNetworkSettingsMessage" = "Unable to apply network settings to tunnel object.";
|
||||||
|
"macMenuExportTunnels" = "Export Tunnels to Zip…";
|
||||||
|
"macMenuShowAllApps" = "Show All";
|
||||||
|
"alertCantOpenInputConfFileTitle" = "Unable to import from file";
|
||||||
|
"alertScanQRCodeInvalidQRCodeMessage" = "The scanned QR code is not a valid WireGuard configuration";
|
||||||
|
"macMenuHideApp" = "Hide WireGuard";
|
||||||
|
"settingsViewTitle" = "Settings";
|
||||||
|
"macDeleteTunnelConfirmationAlertInfo" = "You cannot undo this action.";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Deleting…";
|
||||||
|
"settingsViewLogButtonTitle" = "View log";
|
||||||
|
"alertSystemErrorMessageTunnelConnectionFailed" = "The connection failed.";
|
||||||
|
"macButtonEdit" = "Edit";
|
||||||
|
"macAlertPublicKeyInvalid" = "Public key is invalid";
|
||||||
|
"macNameFieldExportLog" = "Save log to:";
|
||||||
|
"alertSystemErrorOnAddTunnelTitle" = "Unable to create tunnel";
|
||||||
|
"macConfirmAndQuitAlertMessage" = "Do you want to close the tunnels manager or quit WireGuard entirely?";
|
||||||
|
"alertTunnelActivationSavedConfigFailureMessage" = "Unable to retrieve tunnel information from the saved configuration.";
|
||||||
|
"macAlertInfoUnrecognizedInterfaceKey" = "Valid keys are: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ and ‘MTU’.";
|
||||||
|
"macLogColumnTitleTime" = "Time";
|
||||||
|
"alertTunnelNameEmptyMessage" = "Cannot create tunnel with an empty name";
|
||||||
|
"alertTunnelNameEmptyTitle" = "No name provided";
|
||||||
|
"alertUnableToWriteLogMessage" = "Unable to write logs to file";
|
||||||
|
"macMenuQuit" = "Quit WireGuard";
|
||||||
|
"macMenuAddEmptyTunnel" = "Add Empty Tunnel…";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Delete";
|
||||||
|
"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.";
|
||||||
|
"alertTunnelActivationFailureTitle" = "Activation failure";
|
||||||
|
"macLogButtonTitleClose" = "Close";
|
||||||
|
"settingsExportZipButtonTitle" = "Export zip archive";
|
||||||
|
"macViewPrivateData" = "view tunnel private keys";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activation in progress";
|
||||||
|
"macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences.";
|
||||||
|
"macMenuEdit" = "Edit";
|
||||||
|
"donateLink" = "♥ Donate to the WireGuard Project";
|
||||||
|
"alertScanQRCodeCameraUnsupportedTitle" = "Camera Unsupported";
|
||||||
|
"macMenuWindow" = "Window";
|
||||||
|
"alertTunnelActivationFailureMessage" = "The tunnel could not be activated. Please ensure that you are connected to the Internet.";
|
||||||
|
"macMenuHideOtherApps" = "Hide Others";
|
||||||
|
"alertCantOpenInputZipFileMessage" = "The zip archive could not be read.";
|
||||||
|
"macAlertPrivateKeyInvalid" = "Private key is invalid.";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Cancel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationDisabled" = "The configuration is disabled.";
|
||||||
|
"alertUnableToWriteLogTitle" = "Log export failed";
|
||||||
|
"macMenuNetworksNone" = "Networks: None";
|
||||||
|
"alertCantOpenOutputZipFileForWritingMessage" = "Could not open zip file for writing.";
|
||||||
|
"macMenuSelectAll" = "Select All";
|
||||||
|
"logViewTitle" = "Log";
|
||||||
|
"macConfirmAndQuitAlertQuitWireGuard" = "Quit WireGuard";
|
||||||
|
"alertSystemErrorOnRemoveTunnelTitle" = "Unable to remove tunnel";
|
||||||
|
"macFieldOnDemand" = "On-Demand:";
|
||||||
|
"macMenuCloseWindow" = "Close Window";
|
||||||
|
"macSheetButtonExportLog" = "Save";
|
||||||
|
"alertSystemErrorOnModifyTunnelTitle" = "Unable to modify tunnel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Reading or writing the configuration failed.";
|
||||||
|
"macMenuEditTunnel" = "Edit…";
|
||||||
|
"settingsSectionTitleTunnelLog" = "Log";
|
||||||
|
"macMenuManageTunnels" = "Manage Tunnels";
|
||||||
|
"macButtonImportTunnels" = "Import tunnel(s) from file";
|
||||||
|
"macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationStale" = "The configuration is stale.";
|
||||||
|
"alertTunnelDNSFailureMessage" = "One or more endpoint domains could not be resolved.";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveTitle" = "No tunnels in zip archive";
|
||||||
|
"alertTunnelDNSFailureTitle" = "DNS resolution failure";
|
||||||
|
"macLogButtonTitleSave" = "Save…";
|
||||||
|
"macMenuToggleStatus" = "Toggle Status";
|
||||||
|
"macMenuMinimize" = "Minimize";
|
||||||
|
"alertCantOpenInputZipFileTitle" = "Unable to read zip archive";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeMessage" = "The scanned code could not be read";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeTitle" = "Invalid Code";
|
||||||
|
"alertSystemErrorOnListingTunnelsTitle" = "Unable to list tunnels";
|
||||||
|
"settingsVersionKeyWireGuardForIOS" = "WireGuard for iOS";
|
||||||
|
"macMenuPaste" = "Paste";
|
||||||
|
"macAlertMultipleInterfaces" = "Configuration must have only one ‘Interface’ section.";
|
||||||
|
"macAppStoreUpdatingAlertMessage" = "App Store would like to update WireGuard";
|
||||||
|
"macUnusableTunnelMessage" = "The configuration for this tunnel cannot be found in the keychain.";
|
||||||
|
"macToolTipEditTunnel" = "Edit tunnel (⌘E)";
|
||||||
|
"macMenuZoom" = "Zoom";
|
||||||
|
"alertBadArchiveTitle" = "Unable to read zip archive";
|
||||||
|
"macExportPrivateData" = "export tunnel private keys";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameTitle" = "Name already exists";
|
||||||
|
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
||||||
|
"macAlertPreSharedKeyInvalid" = "Preshared key is invalid";
|
||||||
|
"macEditSave" = "Save";
|
||||||
|
"macConfirmAndQuitAlertCloseWindow" = "Close Tunnels Manager";
|
||||||
|
"macMenuFile" = "File";
|
||||||
|
"macToolTipToggleStatus" = "Toggle status (⌘T)";
|
||||||
|
"alertTunnelActivationSystemErrorTitle" = "Activation failure";
|
||||||
|
"scanQRCodeTipText" = "Tip: Generate with `qrencode -t ansiutf8 < tunnel.conf`";
|
||||||
|
"alertNoTunnelsToExportMessage" = "There are no tunnels to export";
|
||||||
|
"macMenuImportTunnels" = "Import Tunnel(s) from File…";
|
||||||
|
"alertScanQRCodeInvalidQRCodeTitle" = "Invalid QR Code";
|
||||||
|
"macMenuViewLog" = "View Log";
|
||||||
|
"macAlertInfoUnrecognizedPeerKey" = "Valid keys are: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’";
|
||||||
|
"macUnusableTunnelButtonTitleDeleteTunnel" = "Delete tunnel";
|
||||||
|
"macMenuTunnel" = "Tunnel";
|
||||||
|
"macMenuCopy" = "Copy";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameMessage" = "A tunnel with that name already exists";
|
||||||
|
"macLogColumnTitleLogMessage" = "Log message";
|
||||||
|
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
||||||
|
"macMenuAbout" = "About WireGuard";
|
||||||
|
"macSheetButtonImport" = "Import";
|
||||||
|
"alertScanQRCodeNamePromptTitle" = "Please name the scanned tunnel";
|
||||||
|
"alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared";
|
||||||
|
"alertTunnelActivationBackendFailureMessage" = "Unable to turn on Go backend library.";
|
||||||
|
"settingsSectionTitleExportConfigurations" = "Export configurations";
|
||||||
|
"alertBadArchiveMessage" = "Bad or corrupt zip archive.";
|
||||||
|
"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
|
||||||
|
"macFieldOnDemandSSIDs" = "SSIDs:";
|
||||||
|
"alertCantOpenOutputZipFileForWritingTitle" = "Unable to create zip archive";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveMessage" = "No .conf tunnel files were found inside the zip archive.";
|
||||||
|
"alertTunnelActivationFileDescriptorFailureMessage" = "Unable to determine TUN device file descriptor.";
|
||||||
|
"macAlertNameIsEmpty" = "Name is required";
|
||||||
|
|||||||
@@ -347,3 +347,58 @@
|
|||||||
// Donation
|
// Donation
|
||||||
|
|
||||||
"donateLink" = "♥ کمک مالی به پروژه WireGuard";
|
"donateLink" = "♥ کمک مالی به پروژه WireGuard";
|
||||||
|
"alertInvalidInterfaceMessageListenPortInvalid" = "Interface’s listen port must be between 0 and 65535, or unspecified";
|
||||||
|
"tunnelHandshakeTimestampSystemClockBackward" = "(System clock wound backwards)";
|
||||||
|
"macAlertNoInterface" = "Configuration must have an ‘Interface’ section.";
|
||||||
|
"alertScanQRCodeCameraUnsupportedMessage" = "This device is not able to scan QR codes";
|
||||||
|
"macConfirmAndQuitAlertInfo" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon.";
|
||||||
|
"macUnusableTunnelInfo" = "In case this tunnel was created by another user, only that user can view, edit, or activate this tunnel.";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "The tunnel is already active or in the process of being activated";
|
||||||
|
"alertTunnelActivationSetNetworkSettingsMessage" = "Unable to apply network settings to tunnel object.";
|
||||||
|
"alertCantOpenInputConfFileTitle" = "Unable to import from file";
|
||||||
|
"alertScanQRCodeInvalidQRCodeMessage" = "The scanned QR code is not a valid WireGuard configuration";
|
||||||
|
"macConfirmAndQuitAlertMessage" = "Do you want to close the tunnels manager or quit WireGuard entirely?";
|
||||||
|
"alertTunnelActivationSavedConfigFailureMessage" = "Unable to retrieve tunnel information from the saved configuration.";
|
||||||
|
"macAlertInfoUnrecognizedInterfaceKey" = "Valid keys are: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ and ‘MTU’.";
|
||||||
|
"alertTunnelNameEmptyMessage" = "Cannot create tunnel with an empty name";
|
||||||
|
"alertInvalidInterfaceMessageMTUInvalid" = "Interface’s MTU must be between 576 and 65535, or unspecified";
|
||||||
|
"alertUnableToWriteLogMessage" = "Unable to write logs to file";
|
||||||
|
"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.";
|
||||||
|
"alertInvalidPeerMessageEndpointInvalid" = "Peer’s endpoint must be of the form ‘host:port’ or ‘[host]:port’";
|
||||||
|
"alertInvalidPeerMessagePublicKeyDuplicated" = "Two or more peers cannot have the same public key";
|
||||||
|
"alertInvalidPeerMessagePreSharedKeyInvalid" = "Peer’s preshared key must be a 32-byte key in base64 encoding";
|
||||||
|
"macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences.";
|
||||||
|
"alertTunnelActivationFailureMessage" = "The tunnel could not be activated. Please ensure that you are connected to the Internet.";
|
||||||
|
"alertCantOpenInputZipFileMessage" = "The zip archive could not be read.";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Interface’s private key must be a 32-byte key in base64 encoding";
|
||||||
|
"alertInvalidInterfaceMessageDNSInvalid" = "Interface’s DNS servers must be a list of comma-separated IP addresses";
|
||||||
|
"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Peer’s persistent keepalive must be between 0 to 65535, or unspecified";
|
||||||
|
"alertInvalidPeerMessagePublicKeyRequired" = "Peer’s public key is required";
|
||||||
|
"alertCantOpenOutputZipFileForWritingMessage" = "Could not open zip file for writing.";
|
||||||
|
"alertInvalidPeerMessagePublicKeyInvalid" = "Peer’s public key must be a 32-byte key in base64 encoding";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Reading or writing the configuration failed.";
|
||||||
|
"macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel";
|
||||||
|
"alertTunnelDNSFailureMessage" = "One or more endpoint domains could not be resolved.";
|
||||||
|
"alertInvalidInterfaceMessageAddressInvalid" = "Interface addresses must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"alertTunnelDNSFailureTitle" = "DNS resolution failure";
|
||||||
|
"macMenuToggleStatus" = "Toggle Status";
|
||||||
|
"alertCantOpenInputZipFileTitle" = "Unable to read zip archive";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeMessage" = "The scanned code could not be read";
|
||||||
|
"macAlertMultipleInterfaces" = "Configuration must have only one ‘Interface’ section.";
|
||||||
|
"macAppStoreUpdatingAlertMessage" = "App Store would like to update WireGuard";
|
||||||
|
"macUnusableTunnelMessage" = "The configuration for this tunnel cannot be found in the keychain.";
|
||||||
|
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
||||||
|
"macToolTipToggleStatus" = "Toggle status (⌘T)";
|
||||||
|
"scanQRCodeTipText" = "Tip: Generate with `qrencode -t ansiutf8 < tunnel.conf`";
|
||||||
|
"macAlertInfoUnrecognizedPeerKey" = "Valid keys are: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’";
|
||||||
|
"alertInvalidPeerMessageAllowedIPsInvalid" = "Peer’s allowed IPs must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameMessage" = "A tunnel with that name already exists";
|
||||||
|
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
||||||
|
"alertScanQRCodeNamePromptTitle" = "Please name the scanned tunnel";
|
||||||
|
"alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared";
|
||||||
|
"alertTunnelActivationBackendFailureMessage" = "Unable to turn on Go backend library.";
|
||||||
|
"settingsSectionTitleExportConfigurations" = "Export configurations";
|
||||||
|
"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
|
||||||
|
"alertCantOpenOutputZipFileForWritingTitle" = "Unable to create zip archive";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveMessage" = "No .conf tunnel files were found inside the zip archive.";
|
||||||
|
"alertTunnelActivationFileDescriptorFailureMessage" = "Unable to determine TUN device file descriptor.";
|
||||||
|
|||||||
@@ -44,3 +44,205 @@
|
|||||||
"tunnelEditPlaceholderTextAutomatic" = "Automaattinen";
|
"tunnelEditPlaceholderTextAutomatic" = "Automaattinen";
|
||||||
"tunnelEditPlaceholderTextOff" = "Pois päältä";
|
"tunnelEditPlaceholderTextOff" = "Pois päältä";
|
||||||
"tunnelHandshakeTimestampNow" = "Nyt";
|
"tunnelHandshakeTimestampNow" = "Nyt";
|
||||||
|
"settingsSectionTitleAbout" = "About";
|
||||||
|
"newTunnelViewTitle" = "New configuration";
|
||||||
|
"macMenuDeleteSelected" = "Delete Selected";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationInvalid" = "The configuration is invalid.";
|
||||||
|
"tunnelInterfaceDNS" = "DNS servers";
|
||||||
|
"tunnelPeerEndpoint" = "Endpoint";
|
||||||
|
"tunnelInterfaceMTU" = "MTU";
|
||||||
|
"alertInvalidInterfaceMessageListenPortInvalid" = "Interface’s listen port must be between 0 and 65535, or unspecified";
|
||||||
|
"addPeerButtonTitle" = "Add peer";
|
||||||
|
"tunnelHandshakeTimestampSystemClockBackward" = "(System clock wound backwards)";
|
||||||
|
"tunnelsListSwipeDeleteButtonTitle" = "Delete";
|
||||||
|
"macMenuTitle" = "WireGuard";
|
||||||
|
"macAlertNoInterface" = "Configuration must have an ‘Interface’ section.";
|
||||||
|
"macNameFieldExportZip" = "Export tunnels to:";
|
||||||
|
"editTunnelViewTitle" = "Edit configuration";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationUnknown" = "Unknown system error.";
|
||||||
|
"macMenuCut" = "Cut";
|
||||||
|
"macEditDiscard" = "Discard";
|
||||||
|
"tunnelPeerPresharedKeyEnabled" = "enabled";
|
||||||
|
"alertScanQRCodeCameraUnsupportedMessage" = "This device is not able to scan QR codes";
|
||||||
|
"macSheetButtonExportZip" = "Save";
|
||||||
|
"macWindowTitleManageTunnels" = "Manage WireGuard Tunnels";
|
||||||
|
"macConfirmAndQuitAlertInfo" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon.";
|
||||||
|
"macUnusableTunnelInfo" = "In case this tunnel was created by another user, only that user can view, edit, or activate this tunnel.";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "The tunnel is already active or in the process of being activated";
|
||||||
|
"macToggleStatusButtonReasserting" = "Reactivating…";
|
||||||
|
"alertTunnelActivationSetNetworkSettingsMessage" = "Unable to apply network settings to tunnel object.";
|
||||||
|
"macMenuExportTunnels" = "Export Tunnels to Zip…";
|
||||||
|
"macMenuShowAllApps" = "Show All";
|
||||||
|
"alertCantOpenInputConfFileTitle" = "Unable to import from file";
|
||||||
|
"alertScanQRCodeInvalidQRCodeMessage" = "The scanned QR code is not a valid WireGuard configuration";
|
||||||
|
"macMenuHideApp" = "Hide WireGuard";
|
||||||
|
"settingsViewTitle" = "Settings";
|
||||||
|
"tunnelsListSelectAllButtonTitle" = "Select All";
|
||||||
|
"macDeleteTunnelConfirmationAlertInfo" = "You cannot undo this action.";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Deleting…";
|
||||||
|
"tunnelPeerPersistentKeepalive" = "Persistent keepalive";
|
||||||
|
"settingsViewLogButtonTitle" = "View log";
|
||||||
|
"alertSystemErrorMessageTunnelConnectionFailed" = "The connection failed.";
|
||||||
|
"macButtonEdit" = "Edit";
|
||||||
|
"macAlertPublicKeyInvalid" = "Public key is invalid";
|
||||||
|
"macNameFieldExportLog" = "Save log to:";
|
||||||
|
"alertSystemErrorOnAddTunnelTitle" = "Unable to create tunnel";
|
||||||
|
"macConfirmAndQuitAlertMessage" = "Do you want to close the tunnels manager or quit WireGuard entirely?";
|
||||||
|
"alertTunnelActivationSavedConfigFailureMessage" = "Unable to retrieve tunnel information from the saved configuration.";
|
||||||
|
"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
|
||||||
|
"macAlertInfoUnrecognizedInterfaceKey" = "Valid keys are: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ and ‘MTU’.";
|
||||||
|
"macLogColumnTitleTime" = "Time";
|
||||||
|
"alertTunnelNameEmptyMessage" = "Cannot create tunnel with an empty name";
|
||||||
|
"alertInvalidInterfaceMessageMTUInvalid" = "Interface’s MTU must be between 576 and 65535, or unspecified";
|
||||||
|
"alertTunnelNameEmptyTitle" = "No name provided";
|
||||||
|
"macToggleStatusButtonRestarting" = "Restarting…";
|
||||||
|
"alertUnableToWriteLogMessage" = "Unable to write logs to file";
|
||||||
|
"macToggleStatusButtonActivating" = "Activating…";
|
||||||
|
"macMenuQuit" = "Quit WireGuard";
|
||||||
|
"macMenuAddEmptyTunnel" = "Add Empty Tunnel…";
|
||||||
|
"tunnelStatusDeactivating" = "Deactivating";
|
||||||
|
"alertInvalidInterfaceTitle" = "Invalid interface";
|
||||||
|
"tunnelSectionTitleStatus" = "Status";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Delete";
|
||||||
|
"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.";
|
||||||
|
"alertTunnelActivationFailureTitle" = "Activation failure";
|
||||||
|
"tunnelPeerTxBytes" = "Data sent";
|
||||||
|
"macLogButtonTitleClose" = "Close";
|
||||||
|
"tunnelOnDemandSSIDViewTitle" = "SSIDs";
|
||||||
|
"settingsExportZipButtonTitle" = "Export zip archive";
|
||||||
|
"tunnelSectionTitleOnDemand" = "On-Demand Activation";
|
||||||
|
"deleteTunnelsConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"alertInvalidInterfaceMessageNameRequired" = "Interface name is required";
|
||||||
|
"macViewPrivateData" = "view tunnel private keys";
|
||||||
|
"alertInvalidPeerTitle" = "Invalid peer";
|
||||||
|
"alertInvalidPeerMessageEndpointInvalid" = "Peer’s endpoint must be of the form ‘host:port’ or ‘[host]:port’";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activation in progress";
|
||||||
|
"tunnelPeerAllowedIPs" = "Allowed IPs";
|
||||||
|
"alertInvalidPeerMessagePublicKeyDuplicated" = "Two or more peers cannot have the same public key";
|
||||||
|
"macToggleStatusButtonDeactivate" = "Deactivate";
|
||||||
|
"addTunnelMenuImportFile" = "Create from file or archive";
|
||||||
|
"deletePeerConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"addTunnelMenuQRCode" = "Create from QR code";
|
||||||
|
"alertInvalidPeerMessagePreSharedKeyInvalid" = "Peer’s preshared key must be a 32-byte key in base64 encoding";
|
||||||
|
"macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences.";
|
||||||
|
"macMenuEdit" = "Edit";
|
||||||
|
"donateLink" = "♥ Donate to the WireGuard Project";
|
||||||
|
"alertScanQRCodeCameraUnsupportedTitle" = "Camera Unsupported";
|
||||||
|
"macMenuWindow" = "Window";
|
||||||
|
"tunnelStatusRestarting" = "Restarting";
|
||||||
|
"alertUnableToRemovePreviousLogTitle" = "Log export failed";
|
||||||
|
"alertTunnelActivationFailureMessage" = "The tunnel could not be activated. Please ensure that you are connected to the Internet.";
|
||||||
|
"tunnelInterfaceListenPort" = "Listen port";
|
||||||
|
"macToggleStatusButtonWaiting" = "Waiting…";
|
||||||
|
"tunnelInterfaceStatus" = "Status";
|
||||||
|
"macMenuHideOtherApps" = "Hide Others";
|
||||||
|
"alertCantOpenInputZipFileMessage" = "The zip archive could not be read.";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Interface’s private key must be a 32-byte key in base64 encoding";
|
||||||
|
"tunnelSectionTitleInterface" = "Interface";
|
||||||
|
"alertInvalidInterfaceMessageDNSInvalid" = "Interface’s DNS servers must be a list of comma-separated IP addresses";
|
||||||
|
"tunnelStatusInactive" = "Inactive";
|
||||||
|
"macAlertPrivateKeyInvalid" = "Private key is invalid.";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Cancel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationDisabled" = "The configuration is disabled.";
|
||||||
|
"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Peer’s persistent keepalive must be between 0 to 65535, or unspecified";
|
||||||
|
"alertUnableToWriteLogTitle" = "Log export failed";
|
||||||
|
"alertInvalidPeerMessagePublicKeyRequired" = "Peer’s public key is required";
|
||||||
|
"macMenuNetworksNone" = "Networks: None";
|
||||||
|
"alertCantOpenOutputZipFileForWritingMessage" = "Could not open zip file for writing.";
|
||||||
|
"macMenuSelectAll" = "Select All";
|
||||||
|
"logViewTitle" = "Log";
|
||||||
|
"alertInvalidPeerMessagePublicKeyInvalid" = "Peer’s public key must be a 32-byte key in base64 encoding";
|
||||||
|
"tunnelOnDemandCellular" = "Cellular";
|
||||||
|
"macConfirmAndQuitAlertQuitWireGuard" = "Quit WireGuard";
|
||||||
|
"alertSystemErrorOnRemoveTunnelTitle" = "Unable to remove tunnel";
|
||||||
|
"macFieldOnDemand" = "On-Demand:";
|
||||||
|
"macMenuCloseWindow" = "Close Window";
|
||||||
|
"macSheetButtonExportLog" = "Save";
|
||||||
|
"alertSystemErrorOnModifyTunnelTitle" = "Unable to modify tunnel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Reading or writing the configuration failed.";
|
||||||
|
"macMenuEditTunnel" = "Edit…";
|
||||||
|
"settingsSectionTitleTunnelLog" = "Log";
|
||||||
|
"macMenuManageTunnels" = "Manage Tunnels";
|
||||||
|
"macButtonImportTunnels" = "Import tunnel(s) from file";
|
||||||
|
"macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel";
|
||||||
|
"tunnelSectionTitlePeer" = "Peer";
|
||||||
|
"tunnelsListSelectButtonTitle" = "Select";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationStale" = "The configuration is stale.";
|
||||||
|
"tunnelPeerPreSharedKey" = "Preshared key";
|
||||||
|
"alertTunnelDNSFailureMessage" = "One or more endpoint domains could not be resolved.";
|
||||||
|
"tunnelOnDemandAddMessageAddNewSSID" = "Add new";
|
||||||
|
"alertInvalidInterfaceMessageAddressInvalid" = "Interface addresses must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"tunnelOnDemandSectionTitleAddSSIDs" = "Add SSIDs";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveTitle" = "No tunnels in zip archive";
|
||||||
|
"alertTunnelDNSFailureTitle" = "DNS resolution failure";
|
||||||
|
"tunnelOnDemandEthernet" = "Ethernet";
|
||||||
|
"macLogButtonTitleSave" = "Save…";
|
||||||
|
"macMenuToggleStatus" = "Toggle Status";
|
||||||
|
"macMenuMinimize" = "Minimize";
|
||||||
|
"deletePeerButtonTitle" = "Delete peer";
|
||||||
|
"tunnelPeerRxBytes" = "Data received";
|
||||||
|
"alertCantOpenInputZipFileTitle" = "Unable to read zip archive";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeMessage" = "The scanned code could not be read";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeTitle" = "Invalid Code";
|
||||||
|
"alertSystemErrorOnListingTunnelsTitle" = "Unable to list tunnels";
|
||||||
|
"tunnelPeerExcludePrivateIPs" = "Exclude private IPs";
|
||||||
|
"settingsVersionKeyWireGuardForIOS" = "WireGuard for iOS";
|
||||||
|
"macMenuPaste" = "Paste";
|
||||||
|
"macAlertMultipleInterfaces" = "Configuration must have only one ‘Interface’ section.";
|
||||||
|
"scanQRCodeViewTitle" = "Scan QR code";
|
||||||
|
"macAppStoreUpdatingAlertMessage" = "App Store would like to update WireGuard";
|
||||||
|
"macUnusableTunnelMessage" = "The configuration for this tunnel cannot be found in the keychain.";
|
||||||
|
"macToolTipEditTunnel" = "Edit tunnel (⌘E)";
|
||||||
|
"tunnelEditPlaceholderTextStronglyRecommended" = "Strongly recommended";
|
||||||
|
"macMenuZoom" = "Zoom";
|
||||||
|
"alertBadArchiveTitle" = "Unable to read zip archive";
|
||||||
|
"macExportPrivateData" = "export tunnel private keys";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameTitle" = "Name already exists";
|
||||||
|
"macToggleStatusButtonDeactivating" = "Deactivating…";
|
||||||
|
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
||||||
|
"tunnelPeerLastHandshakeTime" = "Latest handshake";
|
||||||
|
"macAlertPreSharedKeyInvalid" = "Preshared key is invalid";
|
||||||
|
"alertBadConfigImportTitle" = "Unable to import tunnel";
|
||||||
|
"macEditSave" = "Save";
|
||||||
|
"macConfirmAndQuitAlertCloseWindow" = "Close Tunnels Manager";
|
||||||
|
"macMenuFile" = "File";
|
||||||
|
"tunnelStatusActivating" = "Activating";
|
||||||
|
"macToolTipToggleStatus" = "Toggle status (⌘T)";
|
||||||
|
"alertTunnelActivationSystemErrorTitle" = "Activation failure";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyRequired" = "Interface’s private key is required";
|
||||||
|
"alertNoTunnelsToExportTitle" = "Nothing to export";
|
||||||
|
"scanQRCodeTipText" = "Tip: Generate with `qrencode -t ansiutf8 < tunnel.conf`";
|
||||||
|
"alertNoTunnelsToExportMessage" = "There are no tunnels to export";
|
||||||
|
"macMenuImportTunnels" = "Import Tunnel(s) from File…";
|
||||||
|
"alertScanQRCodeInvalidQRCodeTitle" = "Invalid QR Code";
|
||||||
|
"macMenuViewLog" = "View Log";
|
||||||
|
"macAlertInfoUnrecognizedPeerKey" = "Valid keys are: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’";
|
||||||
|
"tunnelOnDemandNoSSIDs" = "No SSIDs";
|
||||||
|
"addTunnelMenuHeader" = "Add a new WireGuard tunnel";
|
||||||
|
"macUnusableTunnelButtonTitleDeleteTunnel" = "Delete tunnel";
|
||||||
|
"tunnelStatusReasserting" = "Reactivating";
|
||||||
|
"alertInvalidPeerMessageAllowedIPsInvalid" = "Peer’s allowed IPs must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"macMenuTunnel" = "Tunnel";
|
||||||
|
"macMenuCopy" = "Copy";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameMessage" = "A tunnel with that name already exists";
|
||||||
|
"macLogColumnTitleLogMessage" = "Log message";
|
||||||
|
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
||||||
|
"macMenuAbout" = "About WireGuard";
|
||||||
|
"macSheetButtonImport" = "Import";
|
||||||
|
"alertScanQRCodeNamePromptTitle" = "Please name the scanned tunnel";
|
||||||
|
"alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared";
|
||||||
|
"alertTunnelActivationBackendFailureMessage" = "Unable to turn on Go backend library.";
|
||||||
|
"settingsSectionTitleExportConfigurations" = "Export configurations";
|
||||||
|
"alertBadArchiveMessage" = "Bad or corrupt zip archive.";
|
||||||
|
"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
|
||||||
|
"macFieldOnDemandSSIDs" = "SSIDs:";
|
||||||
|
"deletePeerConfirmationAlertMessage" = "Delete this peer?";
|
||||||
|
"alertCantOpenOutputZipFileForWritingTitle" = "Unable to create zip archive";
|
||||||
|
"tunnelStatusActive" = "Active";
|
||||||
|
"tunnelStatusWaiting" = "Waiting";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveMessage" = "No .conf tunnel files were found inside the zip archive.";
|
||||||
|
"alertTunnelActivationFileDescriptorFailureMessage" = "Unable to determine TUN device file descriptor.";
|
||||||
|
"addTunnelMenuFromScratch" = "Create from scratch";
|
||||||
|
"macToggleStatusButtonActivate" = "Activate";
|
||||||
|
"macAlertNameIsEmpty" = "Name is required";
|
||||||
|
"tunnelsListDeleteButtonTitle" = "Delete";
|
||||||
|
|||||||
@@ -92,3 +92,180 @@
|
|||||||
"tunnelOnDemandCellular" = "Cellular";
|
"tunnelOnDemandCellular" = "Cellular";
|
||||||
"tunnelOnDemandEthernet" = "Ethernet";
|
"tunnelOnDemandEthernet" = "Ethernet";
|
||||||
"tunnelOnDemandWiFi" = "Wi-Fi";
|
"tunnelOnDemandWiFi" = "Wi-Fi";
|
||||||
|
"settingsSectionTitleAbout" = "About";
|
||||||
|
"macMenuDeleteSelected" = "Delete Selected";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationInvalid" = "The configuration is invalid.";
|
||||||
|
"alertInvalidInterfaceMessageListenPortInvalid" = "Interface’s listen port must be between 0 and 65535, or unspecified";
|
||||||
|
"addPeerButtonTitle" = "Add peer";
|
||||||
|
"tunnelHandshakeTimestampSystemClockBackward" = "(System clock wound backwards)";
|
||||||
|
"macMenuTitle" = "WireGuard";
|
||||||
|
"macAlertNoInterface" = "Configuration must have an ‘Interface’ section.";
|
||||||
|
"macNameFieldExportZip" = "Export tunnels to:";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationUnknown" = "Unknown system error.";
|
||||||
|
"macMenuCut" = "Cut";
|
||||||
|
"macEditDiscard" = "Discard";
|
||||||
|
"tunnelPeerPresharedKeyEnabled" = "enabled";
|
||||||
|
"alertScanQRCodeCameraUnsupportedMessage" = "This device is not able to scan QR codes";
|
||||||
|
"macSheetButtonExportZip" = "Save";
|
||||||
|
"macWindowTitleManageTunnels" = "Manage WireGuard Tunnels";
|
||||||
|
"macConfirmAndQuitAlertInfo" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon.";
|
||||||
|
"macUnusableTunnelInfo" = "In case this tunnel was created by another user, only that user can view, edit, or activate this tunnel.";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "The tunnel is already active or in the process of being activated";
|
||||||
|
"alertTunnelActivationSetNetworkSettingsMessage" = "Unable to apply network settings to tunnel object.";
|
||||||
|
"macMenuExportTunnels" = "Export Tunnels to Zip…";
|
||||||
|
"macMenuShowAllApps" = "Show All";
|
||||||
|
"alertCantOpenInputConfFileTitle" = "Unable to import from file";
|
||||||
|
"alertScanQRCodeInvalidQRCodeMessage" = "The scanned QR code is not a valid WireGuard configuration";
|
||||||
|
"macMenuHideApp" = "Hide WireGuard";
|
||||||
|
"settingsViewTitle" = "Settings";
|
||||||
|
"macDeleteTunnelConfirmationAlertInfo" = "You cannot undo this action.";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Deleting…";
|
||||||
|
"settingsViewLogButtonTitle" = "View log";
|
||||||
|
"alertSystemErrorMessageTunnelConnectionFailed" = "The connection failed.";
|
||||||
|
"macButtonEdit" = "Edit";
|
||||||
|
"macAlertPublicKeyInvalid" = "Public key is invalid";
|
||||||
|
"tunnelOnDemandOptionWiFiOnly" = "Wi-Fi only";
|
||||||
|
"macNameFieldExportLog" = "Save log to:";
|
||||||
|
"alertSystemErrorOnAddTunnelTitle" = "Unable to create tunnel";
|
||||||
|
"macConfirmAndQuitAlertMessage" = "Do you want to close the tunnels manager or quit WireGuard entirely?";
|
||||||
|
"alertTunnelActivationSavedConfigFailureMessage" = "Unable to retrieve tunnel information from the saved configuration.";
|
||||||
|
"tunnelOnDemandOptionOff" = "Off";
|
||||||
|
"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
|
||||||
|
"macAlertInfoUnrecognizedInterfaceKey" = "Valid keys are: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ and ‘MTU’.";
|
||||||
|
"macLogColumnTitleTime" = "Time";
|
||||||
|
"alertTunnelNameEmptyMessage" = "Cannot create tunnel with an empty name";
|
||||||
|
"alertInvalidInterfaceMessageMTUInvalid" = "Interface’s MTU must be between 576 and 65535, or unspecified";
|
||||||
|
"alertTunnelNameEmptyTitle" = "No name provided";
|
||||||
|
"tunnelOnDemandOnlyTheseSSIDs" = "Only these SSIDs";
|
||||||
|
"tunnelOnDemandExceptTheseSSIDs" = "Except these SSIDs";
|
||||||
|
"alertUnableToWriteLogMessage" = "Unable to write logs to file";
|
||||||
|
"macMenuQuit" = "Quit WireGuard";
|
||||||
|
"macMenuAddEmptyTunnel" = "Add Empty Tunnel…";
|
||||||
|
"alertInvalidInterfaceTitle" = "Invalid interface";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Delete";
|
||||||
|
"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.";
|
||||||
|
"alertTunnelActivationFailureTitle" = "Activation failure";
|
||||||
|
"macLogButtonTitleClose" = "Close";
|
||||||
|
"tunnelOnDemandSSIDViewTitle" = "SSIDs";
|
||||||
|
"tunnelOnDemandOptionCellularOnly" = "Cellular only";
|
||||||
|
"tunnelEditPlaceholderTextOptional" = "Optional";
|
||||||
|
"settingsExportZipButtonTitle" = "Export zip archive";
|
||||||
|
"alertInvalidInterfaceMessageNameRequired" = "Interface name is required";
|
||||||
|
"tunnelEditPlaceholderTextAutomatic" = "Automatic";
|
||||||
|
"macViewPrivateData" = "view tunnel private keys";
|
||||||
|
"alertInvalidPeerTitle" = "Invalid peer";
|
||||||
|
"alertInvalidPeerMessageEndpointInvalid" = "Peer’s endpoint must be of the form ‘host:port’ or ‘[host]:port’";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activation in progress";
|
||||||
|
"alertInvalidPeerMessagePublicKeyDuplicated" = "Two or more peers cannot have the same public key";
|
||||||
|
"deletePeerConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"alertInvalidPeerMessagePreSharedKeyInvalid" = "Peer’s preshared key must be a 32-byte key in base64 encoding";
|
||||||
|
"macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences.";
|
||||||
|
"macMenuEdit" = "Edit";
|
||||||
|
"donateLink" = "♥ Donate to the WireGuard Project";
|
||||||
|
"alertScanQRCodeCameraUnsupportedTitle" = "Camera Unsupported";
|
||||||
|
"macMenuWindow" = "Window";
|
||||||
|
"alertUnableToRemovePreviousLogTitle" = "Log export failed";
|
||||||
|
"tunnelHandshakeTimestampNow" = "Now";
|
||||||
|
"alertTunnelActivationFailureMessage" = "The tunnel could not be activated. Please ensure that you are connected to the Internet.";
|
||||||
|
"tunnelOnDemandOptionEthernetOnly" = "Ethernet only";
|
||||||
|
"macMenuHideOtherApps" = "Hide Others";
|
||||||
|
"alertCantOpenInputZipFileMessage" = "The zip archive could not be read.";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Interface’s private key must be a 32-byte key in base64 encoding";
|
||||||
|
"deleteTunnelButtonTitle" = "Delete tunnel";
|
||||||
|
"alertInvalidInterfaceMessageDNSInvalid" = "Interface’s DNS servers must be a list of comma-separated IP addresses";
|
||||||
|
"macAlertPrivateKeyInvalid" = "Private key is invalid.";
|
||||||
|
"deleteTunnelConfirmationAlertMessage" = "Delete this tunnel?";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Cancel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationDisabled" = "The configuration is disabled.";
|
||||||
|
"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Peer’s persistent keepalive must be between 0 to 65535, or unspecified";
|
||||||
|
"alertUnableToWriteLogTitle" = "Log export failed";
|
||||||
|
"alertInvalidPeerMessagePublicKeyRequired" = "Peer’s public key is required";
|
||||||
|
"macMenuNetworksNone" = "Networks: None";
|
||||||
|
"tunnelOnDemandSSIDsKey" = "SSIDs";
|
||||||
|
"alertCantOpenOutputZipFileForWritingMessage" = "Could not open zip file for writing.";
|
||||||
|
"macMenuSelectAll" = "Select All";
|
||||||
|
"logViewTitle" = "Log";
|
||||||
|
"alertInvalidPeerMessagePublicKeyInvalid" = "Peer’s public key must be a 32-byte key in base64 encoding";
|
||||||
|
"tunnelOnDemandKey" = "On demand";
|
||||||
|
"macConfirmAndQuitAlertQuitWireGuard" = "Quit WireGuard";
|
||||||
|
"alertSystemErrorOnRemoveTunnelTitle" = "Unable to remove tunnel";
|
||||||
|
"macFieldOnDemand" = "On-Demand:";
|
||||||
|
"macMenuCloseWindow" = "Close Window";
|
||||||
|
"macSheetButtonExportLog" = "Save";
|
||||||
|
"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi or cellular";
|
||||||
|
"alertSystemErrorOnModifyTunnelTitle" = "Unable to modify tunnel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Reading or writing the configuration failed.";
|
||||||
|
"macMenuEditTunnel" = "Edit…";
|
||||||
|
"settingsSectionTitleTunnelLog" = "Log";
|
||||||
|
"macMenuManageTunnels" = "Manage Tunnels";
|
||||||
|
"macButtonImportTunnels" = "Import tunnel(s) from file";
|
||||||
|
"macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationStale" = "The configuration is stale.";
|
||||||
|
"alertTunnelDNSFailureMessage" = "One or more endpoint domains could not be resolved.";
|
||||||
|
"tunnelOnDemandAddMessageAddNewSSID" = "Add new";
|
||||||
|
"alertInvalidInterfaceMessageAddressInvalid" = "Interface addresses must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"tunnelOnDemandSectionTitleAddSSIDs" = "Add SSIDs";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveTitle" = "No tunnels in zip archive";
|
||||||
|
"alertTunnelDNSFailureTitle" = "DNS resolution failure";
|
||||||
|
"macLogButtonTitleSave" = "Save…";
|
||||||
|
"macMenuToggleStatus" = "Toggle Status";
|
||||||
|
"macMenuMinimize" = "Minimize";
|
||||||
|
"deletePeerButtonTitle" = "Delete peer";
|
||||||
|
"alertCantOpenInputZipFileTitle" = "Unable to read zip archive";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeMessage" = "The scanned code could not be read";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeTitle" = "Invalid Code";
|
||||||
|
"alertSystemErrorOnListingTunnelsTitle" = "Unable to list tunnels";
|
||||||
|
"settingsVersionKeyWireGuardForIOS" = "WireGuard for iOS";
|
||||||
|
"macMenuPaste" = "Paste";
|
||||||
|
"macAlertMultipleInterfaces" = "Configuration must have only one ‘Interface’ section.";
|
||||||
|
"scanQRCodeViewTitle" = "Scan QR code";
|
||||||
|
"macAppStoreUpdatingAlertMessage" = "App Store would like to update WireGuard";
|
||||||
|
"macUnusableTunnelMessage" = "The configuration for this tunnel cannot be found in the keychain.";
|
||||||
|
"macToolTipEditTunnel" = "Edit tunnel (⌘E)";
|
||||||
|
"tunnelEditPlaceholderTextStronglyRecommended" = "Strongly recommended";
|
||||||
|
"macMenuZoom" = "Zoom";
|
||||||
|
"alertBadArchiveTitle" = "Unable to read zip archive";
|
||||||
|
"macExportPrivateData" = "export tunnel private keys";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameTitle" = "Name already exists";
|
||||||
|
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
||||||
|
"macAlertPreSharedKeyInvalid" = "Preshared key is invalid";
|
||||||
|
"macEditSave" = "Save";
|
||||||
|
"macConfirmAndQuitAlertCloseWindow" = "Close Tunnels Manager";
|
||||||
|
"macMenuFile" = "File";
|
||||||
|
"macToolTipToggleStatus" = "Toggle status (⌘T)";
|
||||||
|
"alertTunnelActivationSystemErrorTitle" = "Activation failure";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyRequired" = "Interface’s private key is required";
|
||||||
|
"tunnelOnDemandAnySSID" = "Any SSID";
|
||||||
|
"alertNoTunnelsToExportTitle" = "Nothing to export";
|
||||||
|
"scanQRCodeTipText" = "Tip: Generate with `qrencode -t ansiutf8 < tunnel.conf`";
|
||||||
|
"alertNoTunnelsToExportMessage" = "There are no tunnels to export";
|
||||||
|
"macMenuImportTunnels" = "Import Tunnel(s) from File…";
|
||||||
|
"alertScanQRCodeInvalidQRCodeTitle" = "Invalid QR Code";
|
||||||
|
"macMenuViewLog" = "View Log";
|
||||||
|
"macAlertInfoUnrecognizedPeerKey" = "Valid keys are: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’";
|
||||||
|
"tunnelOnDemandNoSSIDs" = "No SSIDs";
|
||||||
|
"deleteTunnelConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"tunnelEditPlaceholderTextOff" = "Off";
|
||||||
|
"macUnusableTunnelButtonTitleDeleteTunnel" = "Delete tunnel";
|
||||||
|
"tunnelEditPlaceholderTextRequired" = "Required";
|
||||||
|
"alertInvalidPeerMessageAllowedIPsInvalid" = "Peer’s allowed IPs must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"macMenuTunnel" = "Tunnel";
|
||||||
|
"macMenuCopy" = "Copy";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameMessage" = "A tunnel with that name already exists";
|
||||||
|
"macLogColumnTitleLogMessage" = "Log message";
|
||||||
|
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
||||||
|
"macMenuAbout" = "About WireGuard";
|
||||||
|
"macSheetButtonImport" = "Import";
|
||||||
|
"alertScanQRCodeNamePromptTitle" = "Please name the scanned tunnel";
|
||||||
|
"alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared";
|
||||||
|
"alertTunnelActivationBackendFailureMessage" = "Unable to turn on Go backend library.";
|
||||||
|
"settingsSectionTitleExportConfigurations" = "Export configurations";
|
||||||
|
"alertBadArchiveMessage" = "Bad or corrupt zip archive.";
|
||||||
|
"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
|
||||||
|
"macFieldOnDemandSSIDs" = "SSIDs:";
|
||||||
|
"deletePeerConfirmationAlertMessage" = "Delete this peer?";
|
||||||
|
"alertCantOpenOutputZipFileForWritingTitle" = "Unable to create zip archive";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveMessage" = "No .conf tunnel files were found inside the zip archive.";
|
||||||
|
"alertTunnelActivationFileDescriptorFailureMessage" = "Unable to determine TUN device file descriptor.";
|
||||||
|
"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi or ethernet";
|
||||||
|
"macAlertNameIsEmpty" = "Name is required";
|
||||||
|
|||||||
@@ -36,3 +36,217 @@
|
|||||||
// Settings UI
|
// Settings UI
|
||||||
|
|
||||||
"settingsViewTitle" = "설정";
|
"settingsViewTitle" = "설정";
|
||||||
|
"settingsSectionTitleAbout" = "About";
|
||||||
|
"newTunnelViewTitle" = "New configuration";
|
||||||
|
"macMenuDeleteSelected" = "Delete Selected";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationInvalid" = "The configuration is invalid.";
|
||||||
|
"tunnelPeerPublicKey" = "Public key";
|
||||||
|
"tunnelPeerEndpoint" = "Endpoint";
|
||||||
|
"tunnelInterfaceMTU" = "MTU";
|
||||||
|
"alertInvalidInterfaceMessageListenPortInvalid" = "Interface’s listen port must be between 0 and 65535, or unspecified";
|
||||||
|
"addPeerButtonTitle" = "Add peer";
|
||||||
|
"tunnelHandshakeTimestampSystemClockBackward" = "(System clock wound backwards)";
|
||||||
|
"macMenuTitle" = "WireGuard";
|
||||||
|
"macAlertNoInterface" = "Configuration must have an ‘Interface’ section.";
|
||||||
|
"macNameFieldExportZip" = "Export tunnels to:";
|
||||||
|
"editTunnelViewTitle" = "Edit configuration";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationUnknown" = "Unknown system error.";
|
||||||
|
"macMenuCut" = "Cut";
|
||||||
|
"macEditDiscard" = "Discard";
|
||||||
|
"tunnelPeerPresharedKeyEnabled" = "enabled";
|
||||||
|
"macSheetButtonExportZip" = "Save";
|
||||||
|
"macWindowTitleManageTunnels" = "Manage WireGuard Tunnels";
|
||||||
|
"macConfirmAndQuitAlertInfo" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon.";
|
||||||
|
"macUnusableTunnelInfo" = "In case this tunnel was created by another user, only that user can view, edit, or activate this tunnel.";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "The tunnel is already active or in the process of being activated";
|
||||||
|
"macToggleStatusButtonReasserting" = "Reactivating…";
|
||||||
|
"alertTunnelActivationSetNetworkSettingsMessage" = "Unable to apply network settings to tunnel object.";
|
||||||
|
"macMenuExportTunnels" = "Export Tunnels to Zip…";
|
||||||
|
"macMenuShowAllApps" = "Show All";
|
||||||
|
"alertCantOpenInputConfFileTitle" = "Unable to import from file";
|
||||||
|
"macMenuHideApp" = "Hide WireGuard";
|
||||||
|
"macDeleteTunnelConfirmationAlertInfo" = "You cannot undo this action.";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Deleting…";
|
||||||
|
"tunnelPeerPersistentKeepalive" = "Persistent keepalive";
|
||||||
|
"settingsViewLogButtonTitle" = "View log";
|
||||||
|
"alertSystemErrorMessageTunnelConnectionFailed" = "The connection failed.";
|
||||||
|
"macButtonEdit" = "Edit";
|
||||||
|
"macAlertPublicKeyInvalid" = "Public key is invalid";
|
||||||
|
"tunnelOnDemandOptionWiFiOnly" = "Wi-Fi only";
|
||||||
|
"macNameFieldExportLog" = "Save log to:";
|
||||||
|
"alertSystemErrorOnAddTunnelTitle" = "Unable to create tunnel";
|
||||||
|
"macConfirmAndQuitAlertMessage" = "Do you want to close the tunnels manager or quit WireGuard entirely?";
|
||||||
|
"alertTunnelActivationSavedConfigFailureMessage" = "Unable to retrieve tunnel information from the saved configuration.";
|
||||||
|
"tunnelOnDemandOptionOff" = "Off";
|
||||||
|
"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
|
||||||
|
"macAlertInfoUnrecognizedInterfaceKey" = "Valid keys are: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ and ‘MTU’.";
|
||||||
|
"macLogColumnTitleTime" = "Time";
|
||||||
|
"alertTunnelNameEmptyMessage" = "Cannot create tunnel with an empty name";
|
||||||
|
"alertInvalidInterfaceMessageMTUInvalid" = "Interface’s MTU must be between 576 and 65535, or unspecified";
|
||||||
|
"alertTunnelNameEmptyTitle" = "No name provided";
|
||||||
|
"tunnelOnDemandOnlyTheseSSIDs" = "Only these SSIDs";
|
||||||
|
"macToggleStatusButtonRestarting" = "Restarting…";
|
||||||
|
"tunnelOnDemandExceptTheseSSIDs" = "Except these SSIDs";
|
||||||
|
"alertUnableToWriteLogMessage" = "Unable to write logs to file";
|
||||||
|
"macToggleStatusButtonActivating" = "Activating…";
|
||||||
|
"macMenuQuit" = "Quit WireGuard";
|
||||||
|
"macMenuAddEmptyTunnel" = "Add Empty Tunnel…";
|
||||||
|
"tunnelStatusDeactivating" = "Deactivating";
|
||||||
|
"alertInvalidInterfaceTitle" = "Invalid interface";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Delete";
|
||||||
|
"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.";
|
||||||
|
"alertTunnelActivationFailureTitle" = "Activation failure";
|
||||||
|
"tunnelPeerTxBytes" = "Data sent";
|
||||||
|
"macLogButtonTitleClose" = "Close";
|
||||||
|
"tunnelOnDemandSSIDViewTitle" = "SSIDs";
|
||||||
|
"tunnelOnDemandOptionCellularOnly" = "Cellular only";
|
||||||
|
"tunnelEditPlaceholderTextOptional" = "Optional";
|
||||||
|
"settingsExportZipButtonTitle" = "Export zip archive";
|
||||||
|
"tunnelSectionTitleOnDemand" = "On-Demand Activation";
|
||||||
|
"tunnelInterfaceGenerateKeypair" = "Generate keypair";
|
||||||
|
"deleteTunnelsConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"alertInvalidInterfaceMessageNameRequired" = "Interface name is required";
|
||||||
|
"tunnelEditPlaceholderTextAutomatic" = "Automatic";
|
||||||
|
"macViewPrivateData" = "view tunnel private keys";
|
||||||
|
"alertInvalidPeerTitle" = "Invalid peer";
|
||||||
|
"alertInvalidPeerMessageEndpointInvalid" = "Peer’s endpoint must be of the form ‘host:port’ or ‘[host]:port’";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activation in progress";
|
||||||
|
"tunnelPeerAllowedIPs" = "Allowed IPs";
|
||||||
|
"alertInvalidPeerMessagePublicKeyDuplicated" = "Two or more peers cannot have the same public key";
|
||||||
|
"macToggleStatusButtonDeactivate" = "Deactivate";
|
||||||
|
"addTunnelMenuImportFile" = "Create from file or archive";
|
||||||
|
"deletePeerConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"addTunnelMenuQRCode" = "Create from QR code";
|
||||||
|
"alertInvalidPeerMessagePreSharedKeyInvalid" = "Peer’s preshared key must be a 32-byte key in base64 encoding";
|
||||||
|
"macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences.";
|
||||||
|
"macMenuEdit" = "Edit";
|
||||||
|
"donateLink" = "♥ Donate to the WireGuard Project";
|
||||||
|
"macMenuWindow" = "Window";
|
||||||
|
"tunnelStatusRestarting" = "Restarting";
|
||||||
|
"alertUnableToRemovePreviousLogTitle" = "Log export failed";
|
||||||
|
"tunnelHandshakeTimestampNow" = "Now";
|
||||||
|
"alertTunnelActivationFailureMessage" = "The tunnel could not be activated. Please ensure that you are connected to the Internet.";
|
||||||
|
"tunnelInterfaceListenPort" = "Listen port";
|
||||||
|
"tunnelOnDemandOptionEthernetOnly" = "Ethernet only";
|
||||||
|
"tunnelInterfaceName" = "Name";
|
||||||
|
"macToggleStatusButtonWaiting" = "Waiting…";
|
||||||
|
"tunnelInterfaceStatus" = "Status";
|
||||||
|
"macMenuHideOtherApps" = "Hide Others";
|
||||||
|
"alertCantOpenInputZipFileMessage" = "The zip archive could not be read.";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Interface’s private key must be a 32-byte key in base64 encoding";
|
||||||
|
"deleteTunnelButtonTitle" = "Delete tunnel";
|
||||||
|
"tunnelSectionTitleInterface" = "Interface";
|
||||||
|
"alertInvalidInterfaceMessageDNSInvalid" = "Interface’s DNS servers must be a list of comma-separated IP addresses";
|
||||||
|
"tunnelStatusInactive" = "Inactive";
|
||||||
|
"macAlertPrivateKeyInvalid" = "Private key is invalid.";
|
||||||
|
"tunnelsListCenteredAddTunnelButtonTitle" = "Add a tunnel";
|
||||||
|
"deleteTunnelConfirmationAlertMessage" = "Delete this tunnel?";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Cancel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationDisabled" = "The configuration is disabled.";
|
||||||
|
"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Peer’s persistent keepalive must be between 0 to 65535, or unspecified";
|
||||||
|
"alertUnableToWriteLogTitle" = "Log export failed";
|
||||||
|
"alertInvalidPeerMessagePublicKeyRequired" = "Peer’s public key is required";
|
||||||
|
"macMenuNetworksNone" = "Networks: None";
|
||||||
|
"tunnelOnDemandSSIDsKey" = "SSIDs";
|
||||||
|
"alertCantOpenOutputZipFileForWritingMessage" = "Could not open zip file for writing.";
|
||||||
|
"macMenuSelectAll" = "Select All";
|
||||||
|
"logViewTitle" = "Log";
|
||||||
|
"alertInvalidPeerMessagePublicKeyInvalid" = "Peer’s public key must be a 32-byte key in base64 encoding";
|
||||||
|
"tunnelOnDemandCellular" = "Cellular";
|
||||||
|
"tunnelOnDemandKey" = "On demand";
|
||||||
|
"macConfirmAndQuitAlertQuitWireGuard" = "Quit WireGuard";
|
||||||
|
"alertSystemErrorOnRemoveTunnelTitle" = "Unable to remove tunnel";
|
||||||
|
"macFieldOnDemand" = "On-Demand:";
|
||||||
|
"macMenuCloseWindow" = "Close Window";
|
||||||
|
"macSheetButtonExportLog" = "Save";
|
||||||
|
"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi or cellular";
|
||||||
|
"alertSystemErrorOnModifyTunnelTitle" = "Unable to modify tunnel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Reading or writing the configuration failed.";
|
||||||
|
"macMenuEditTunnel" = "Edit…";
|
||||||
|
"settingsSectionTitleTunnelLog" = "Log";
|
||||||
|
"macMenuManageTunnels" = "Manage Tunnels";
|
||||||
|
"macButtonImportTunnels" = "Import tunnel(s) from file";
|
||||||
|
"macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel";
|
||||||
|
"tunnelSectionTitlePeer" = "Peer";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationStale" = "The configuration is stale.";
|
||||||
|
"tunnelPeerPreSharedKey" = "Preshared key";
|
||||||
|
"alertTunnelDNSFailureMessage" = "One or more endpoint domains could not be resolved.";
|
||||||
|
"tunnelOnDemandAddMessageAddNewSSID" = "Add new";
|
||||||
|
"alertInvalidInterfaceMessageAddressInvalid" = "Interface addresses must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"tunnelOnDemandSectionTitleAddSSIDs" = "Add SSIDs";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveTitle" = "No tunnels in zip archive";
|
||||||
|
"alertTunnelDNSFailureTitle" = "DNS resolution failure";
|
||||||
|
"tunnelOnDemandEthernet" = "Ethernet";
|
||||||
|
"macLogButtonTitleSave" = "Save…";
|
||||||
|
"macMenuToggleStatus" = "Toggle Status";
|
||||||
|
"macMenuMinimize" = "Minimize";
|
||||||
|
"deletePeerButtonTitle" = "Delete peer";
|
||||||
|
"tunnelPeerRxBytes" = "Data received";
|
||||||
|
"alertCantOpenInputZipFileTitle" = "Unable to read zip archive";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeMessage" = "The scanned code could not be read";
|
||||||
|
"alertSystemErrorOnListingTunnelsTitle" = "Unable to list tunnels";
|
||||||
|
"tunnelPeerExcludePrivateIPs" = "Exclude private IPs";
|
||||||
|
"settingsVersionKeyWireGuardForIOS" = "WireGuard for iOS";
|
||||||
|
"macMenuPaste" = "Paste";
|
||||||
|
"tunnelInterfaceAddresses" = "Addresses";
|
||||||
|
"macAlertMultipleInterfaces" = "Configuration must have only one ‘Interface’ section.";
|
||||||
|
"scanQRCodeViewTitle" = "Scan QR code";
|
||||||
|
"macAppStoreUpdatingAlertMessage" = "App Store would like to update WireGuard";
|
||||||
|
"macUnusableTunnelMessage" = "The configuration for this tunnel cannot be found in the keychain.";
|
||||||
|
"macToolTipEditTunnel" = "Edit tunnel (⌘E)";
|
||||||
|
"tunnelEditPlaceholderTextStronglyRecommended" = "Strongly recommended";
|
||||||
|
"macMenuZoom" = "Zoom";
|
||||||
|
"alertBadArchiveTitle" = "Unable to read zip archive";
|
||||||
|
"macExportPrivateData" = "export tunnel private keys";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameTitle" = "Name already exists";
|
||||||
|
"macToggleStatusButtonDeactivating" = "Deactivating…";
|
||||||
|
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
||||||
|
"tunnelPeerLastHandshakeTime" = "Latest handshake";
|
||||||
|
"macAlertPreSharedKeyInvalid" = "Preshared key is invalid";
|
||||||
|
"alertBadConfigImportTitle" = "Unable to import tunnel";
|
||||||
|
"macEditSave" = "Save";
|
||||||
|
"macConfirmAndQuitAlertCloseWindow" = "Close Tunnels Manager";
|
||||||
|
"macMenuFile" = "File";
|
||||||
|
"tunnelStatusActivating" = "Activating";
|
||||||
|
"macToolTipToggleStatus" = "Toggle status (⌘T)";
|
||||||
|
"alertTunnelActivationSystemErrorTitle" = "Activation failure";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyRequired" = "Interface’s private key is required";
|
||||||
|
"tunnelOnDemandAnySSID" = "Any SSID";
|
||||||
|
"alertNoTunnelsToExportTitle" = "Nothing to export";
|
||||||
|
"scanQRCodeTipText" = "Tip: Generate with `qrencode -t ansiutf8 < tunnel.conf`";
|
||||||
|
"alertNoTunnelsToExportMessage" = "There are no tunnels to export";
|
||||||
|
"macMenuImportTunnels" = "Import Tunnel(s) from File…";
|
||||||
|
"macMenuViewLog" = "View Log";
|
||||||
|
"macAlertInfoUnrecognizedPeerKey" = "Valid keys are: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’";
|
||||||
|
"tunnelOnDemandNoSSIDs" = "No SSIDs";
|
||||||
|
"deleteTunnelConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"tunnelEditPlaceholderTextOff" = "Off";
|
||||||
|
"addTunnelMenuHeader" = "Add a new WireGuard tunnel";
|
||||||
|
"macUnusableTunnelButtonTitleDeleteTunnel" = "Delete tunnel";
|
||||||
|
"tunnelEditPlaceholderTextRequired" = "Required";
|
||||||
|
"tunnelStatusReasserting" = "Reactivating";
|
||||||
|
"alertInvalidPeerMessageAllowedIPsInvalid" = "Peer’s allowed IPs must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"macMenuTunnel" = "Tunnel";
|
||||||
|
"macMenuCopy" = "Copy";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameMessage" = "A tunnel with that name already exists";
|
||||||
|
"macLogColumnTitleLogMessage" = "Log message";
|
||||||
|
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
||||||
|
"macMenuAbout" = "About WireGuard";
|
||||||
|
"macSheetButtonImport" = "Import";
|
||||||
|
"alertScanQRCodeNamePromptTitle" = "Please name the scanned tunnel";
|
||||||
|
"alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared";
|
||||||
|
"alertTunnelActivationBackendFailureMessage" = "Unable to turn on Go backend library.";
|
||||||
|
"settingsSectionTitleExportConfigurations" = "Export configurations";
|
||||||
|
"alertBadArchiveMessage" = "Bad or corrupt zip archive.";
|
||||||
|
"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
|
||||||
|
"macFieldOnDemandSSIDs" = "SSIDs:";
|
||||||
|
"deletePeerConfirmationAlertMessage" = "Delete this peer?";
|
||||||
|
"alertCantOpenOutputZipFileForWritingTitle" = "Unable to create zip archive";
|
||||||
|
"tunnelStatusActive" = "Active";
|
||||||
|
"tunnelStatusWaiting" = "Waiting";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveMessage" = "No .conf tunnel files were found inside the zip archive.";
|
||||||
|
"alertTunnelActivationFileDescriptorFailureMessage" = "Unable to determine TUN device file descriptor.";
|
||||||
|
"addTunnelMenuFromScratch" = "Create from scratch";
|
||||||
|
"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi or ethernet";
|
||||||
|
"macToggleStatusButtonActivate" = "Activate";
|
||||||
|
"macAlertNameIsEmpty" = "Name is required";
|
||||||
|
|||||||
@@ -188,3 +188,136 @@
|
|||||||
"macLogButtonTitleClose" = "Zamknij";
|
"macLogButtonTitleClose" = "Zamknij";
|
||||||
"macLogButtonTitleSave" = "Zapisz…";
|
"macLogButtonTitleSave" = "Zapisz…";
|
||||||
"macUnusableTunnelButtonTitleDeleteTunnel" = "Usuń tunel";
|
"macUnusableTunnelButtonTitleDeleteTunnel" = "Usuń tunel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationInvalid" = "The configuration is invalid.";
|
||||||
|
"tunnelPeerEndpoint" = "Endpoint";
|
||||||
|
"alertInvalidInterfaceMessageListenPortInvalid" = "Interface’s listen port must be between 0 and 65535, or unspecified";
|
||||||
|
"addPeerButtonTitle" = "Add peer";
|
||||||
|
"tunnelHandshakeTimestampSystemClockBackward" = "(System clock wound backwards)";
|
||||||
|
"macAlertNoInterface" = "Configuration must have an ‘Interface’ section.";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationUnknown" = "Unknown system error.";
|
||||||
|
"macEditDiscard" = "Discard";
|
||||||
|
"alertScanQRCodeCameraUnsupportedMessage" = "This device is not able to scan QR codes";
|
||||||
|
"macConfirmAndQuitAlertInfo" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon.";
|
||||||
|
"macUnusableTunnelInfo" = "In case this tunnel was created by another user, only that user can view, edit, or activate this tunnel.";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "The tunnel is already active or in the process of being activated";
|
||||||
|
"macToggleStatusButtonReasserting" = "Reactivating…";
|
||||||
|
"alertTunnelActivationSetNetworkSettingsMessage" = "Unable to apply network settings to tunnel object.";
|
||||||
|
"macMenuShowAllApps" = "Show All";
|
||||||
|
"alertCantOpenInputConfFileTitle" = "Unable to import from file";
|
||||||
|
"alertScanQRCodeInvalidQRCodeMessage" = "The scanned QR code is not a valid WireGuard configuration";
|
||||||
|
"tunnelPeerPersistentKeepalive" = "Persistent keepalive";
|
||||||
|
"alertSystemErrorMessageTunnelConnectionFailed" = "The connection failed.";
|
||||||
|
"macConfirmAndQuitAlertMessage" = "Do you want to close the tunnels manager or quit WireGuard entirely?";
|
||||||
|
"alertTunnelActivationSavedConfigFailureMessage" = "Unable to retrieve tunnel information from the saved configuration.";
|
||||||
|
"tunnelOnDemandOptionOff" = "Off";
|
||||||
|
"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
|
||||||
|
"macAlertInfoUnrecognizedInterfaceKey" = "Valid keys are: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ and ‘MTU’.";
|
||||||
|
"macLogColumnTitleTime" = "Time";
|
||||||
|
"alertTunnelNameEmptyMessage" = "Cannot create tunnel with an empty name";
|
||||||
|
"alertInvalidInterfaceMessageMTUInvalid" = "Interface’s MTU must be between 576 and 65535, or unspecified";
|
||||||
|
"alertTunnelNameEmptyTitle" = "No name provided";
|
||||||
|
"tunnelOnDemandOnlyTheseSSIDs" = "Only these SSIDs";
|
||||||
|
"macToggleStatusButtonRestarting" = "Restarting…";
|
||||||
|
"tunnelOnDemandExceptTheseSSIDs" = "Except these SSIDs";
|
||||||
|
"alertUnableToWriteLogMessage" = "Unable to write logs to file";
|
||||||
|
"macToggleStatusButtonActivating" = "Activating…";
|
||||||
|
"tunnelStatusDeactivating" = "Deactivating";
|
||||||
|
"alertInvalidInterfaceTitle" = "Invalid interface";
|
||||||
|
"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.";
|
||||||
|
"alertTunnelActivationFailureTitle" = "Activation failure";
|
||||||
|
"tunnelPeerTxBytes" = "Data sent";
|
||||||
|
"tunnelOnDemandSSIDViewTitle" = "SSIDs";
|
||||||
|
"tunnelEditPlaceholderTextOptional" = "Optional";
|
||||||
|
"settingsExportZipButtonTitle" = "Export zip archive";
|
||||||
|
"tunnelSectionTitleOnDemand" = "On-Demand Activation";
|
||||||
|
"tunnelInterfaceGenerateKeypair" = "Generate keypair";
|
||||||
|
"deleteTunnelsConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"alertInvalidInterfaceMessageNameRequired" = "Interface name is required";
|
||||||
|
"tunnelEditPlaceholderTextAutomatic" = "Automatic";
|
||||||
|
"macViewPrivateData" = "view tunnel private keys";
|
||||||
|
"alertInvalidPeerTitle" = "Invalid peer";
|
||||||
|
"alertInvalidPeerMessageEndpointInvalid" = "Peer’s endpoint must be of the form ‘host:port’ or ‘[host]:port’";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activation in progress";
|
||||||
|
"alertInvalidPeerMessagePublicKeyDuplicated" = "Two or more peers cannot have the same public key";
|
||||||
|
"macToggleStatusButtonDeactivate" = "Deactivate";
|
||||||
|
"alertInvalidPeerMessagePreSharedKeyInvalid" = "Peer’s preshared key must be a 32-byte key in base64 encoding";
|
||||||
|
"macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences.";
|
||||||
|
"donateLink" = "♥ Donate to the WireGuard Project";
|
||||||
|
"alertScanQRCodeCameraUnsupportedTitle" = "Camera Unsupported";
|
||||||
|
"macMenuWindow" = "Window";
|
||||||
|
"tunnelStatusRestarting" = "Restarting";
|
||||||
|
"alertUnableToRemovePreviousLogTitle" = "Log export failed";
|
||||||
|
"tunnelHandshakeTimestampNow" = "Now";
|
||||||
|
"alertTunnelActivationFailureMessage" = "The tunnel could not be activated. Please ensure that you are connected to the Internet.";
|
||||||
|
"macToggleStatusButtonWaiting" = "Waiting…";
|
||||||
|
"macMenuHideOtherApps" = "Hide Others";
|
||||||
|
"alertCantOpenInputZipFileMessage" = "The zip archive could not be read.";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Interface’s private key must be a 32-byte key in base64 encoding";
|
||||||
|
"tunnelSectionTitleInterface" = "Interface";
|
||||||
|
"alertInvalidInterfaceMessageDNSInvalid" = "Interface’s DNS servers must be a list of comma-separated IP addresses";
|
||||||
|
"tunnelStatusInactive" = "Inactive";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationDisabled" = "The configuration is disabled.";
|
||||||
|
"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Peer’s persistent keepalive must be between 0 to 65535, or unspecified";
|
||||||
|
"alertUnableToWriteLogTitle" = "Log export failed";
|
||||||
|
"alertInvalidPeerMessagePublicKeyRequired" = "Peer’s public key is required";
|
||||||
|
"macMenuNetworksNone" = "Networks: None";
|
||||||
|
"tunnelOnDemandSSIDsKey" = "SSIDs";
|
||||||
|
"alertInvalidPeerMessagePublicKeyInvalid" = "Peer’s public key must be a 32-byte key in base64 encoding";
|
||||||
|
"tunnelOnDemandCellular" = "Cellular";
|
||||||
|
"macFieldOnDemand" = "On-Demand:";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Reading or writing the configuration failed.";
|
||||||
|
"macMenuManageTunnels" = "Manage Tunnels";
|
||||||
|
"macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel";
|
||||||
|
"tunnelSectionTitlePeer" = "Peer";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationStale" = "The configuration is stale.";
|
||||||
|
"tunnelPeerPreSharedKey" = "Preshared key";
|
||||||
|
"alertTunnelDNSFailureMessage" = "One or more endpoint domains could not be resolved.";
|
||||||
|
"tunnelOnDemandAddMessageAddNewSSID" = "Add new";
|
||||||
|
"alertInvalidInterfaceMessageAddressInvalid" = "Interface addresses must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"tunnelOnDemandSectionTitleAddSSIDs" = "Add SSIDs";
|
||||||
|
"alertTunnelDNSFailureTitle" = "DNS resolution failure";
|
||||||
|
"macMenuToggleStatus" = "Toggle Status";
|
||||||
|
"macMenuMinimize" = "Minimize";
|
||||||
|
"deletePeerButtonTitle" = "Delete peer";
|
||||||
|
"tunnelPeerRxBytes" = "Data received";
|
||||||
|
"alertCantOpenInputZipFileTitle" = "Unable to read zip archive";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeMessage" = "The scanned code could not be read";
|
||||||
|
"alertSystemErrorOnListingTunnelsTitle" = "Unable to list tunnels";
|
||||||
|
"tunnelPeerExcludePrivateIPs" = "Exclude private IPs";
|
||||||
|
"macAlertMultipleInterfaces" = "Configuration must have only one ‘Interface’ section.";
|
||||||
|
"macAppStoreUpdatingAlertMessage" = "App Store would like to update WireGuard";
|
||||||
|
"macUnusableTunnelMessage" = "The configuration for this tunnel cannot be found in the keychain.";
|
||||||
|
"tunnelEditPlaceholderTextStronglyRecommended" = "Strongly recommended";
|
||||||
|
"macMenuZoom" = "Zoom";
|
||||||
|
"macExportPrivateData" = "export tunnel private keys";
|
||||||
|
"macToggleStatusButtonDeactivating" = "Deactivating…";
|
||||||
|
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
||||||
|
"tunnelPeerLastHandshakeTime" = "Latest handshake";
|
||||||
|
"macAlertPreSharedKeyInvalid" = "Preshared key is invalid";
|
||||||
|
"alertBadConfigImportTitle" = "Unable to import tunnel";
|
||||||
|
"macConfirmAndQuitAlertCloseWindow" = "Close Tunnels Manager";
|
||||||
|
"tunnelStatusActivating" = "Activating";
|
||||||
|
"alertTunnelActivationSystemErrorTitle" = "Activation failure";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyRequired" = "Interface’s private key is required";
|
||||||
|
"tunnelOnDemandAnySSID" = "Any SSID";
|
||||||
|
"macAlertInfoUnrecognizedPeerKey" = "Valid keys are: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’";
|
||||||
|
"tunnelOnDemandNoSSIDs" = "No SSIDs";
|
||||||
|
"tunnelEditPlaceholderTextOff" = "Off";
|
||||||
|
"tunnelEditPlaceholderTextRequired" = "Required";
|
||||||
|
"tunnelStatusReasserting" = "Reactivating";
|
||||||
|
"alertInvalidPeerMessageAllowedIPsInvalid" = "Peer’s allowed IPs must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"macLogColumnTitleLogMessage" = "Log message";
|
||||||
|
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
||||||
|
"macSheetButtonImport" = "Import";
|
||||||
|
"alertScanQRCodeNamePromptTitle" = "Please name the scanned tunnel";
|
||||||
|
"alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared";
|
||||||
|
"alertTunnelActivationBackendFailureMessage" = "Unable to turn on Go backend library.";
|
||||||
|
"settingsSectionTitleExportConfigurations" = "Export configurations";
|
||||||
|
"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
|
||||||
|
"macFieldOnDemandSSIDs" = "SSIDs:";
|
||||||
|
"deletePeerConfirmationAlertMessage" = "Delete this peer?";
|
||||||
|
"tunnelStatusActive" = "Active";
|
||||||
|
"tunnelStatusWaiting" = "Waiting";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveMessage" = "No .conf tunnel files were found inside the zip archive.";
|
||||||
|
"alertTunnelActivationFileDescriptorFailureMessage" = "Unable to determine TUN device file descriptor.";
|
||||||
|
"macToggleStatusButtonActivate" = "Activate";
|
||||||
|
|||||||
@@ -86,3 +86,184 @@
|
|||||||
"macMenuPaste" = "貼上";
|
"macMenuPaste" = "貼上";
|
||||||
"macMenuSelectAll" = "全選";
|
"macMenuSelectAll" = "全選";
|
||||||
"macMenuMinimize" = "最小化";
|
"macMenuMinimize" = "最小化";
|
||||||
|
"macMenuDeleteSelected" = "Delete Selected";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationInvalid" = "The configuration is invalid.";
|
||||||
|
"tunnelPeerPublicKey" = "Public key";
|
||||||
|
"tunnelPeerEndpoint" = "Endpoint";
|
||||||
|
"alertInvalidInterfaceMessageListenPortInvalid" = "Interface’s listen port must be between 0 and 65535, or unspecified";
|
||||||
|
"addPeerButtonTitle" = "Add peer";
|
||||||
|
"tunnelHandshakeTimestampSystemClockBackward" = "(System clock wound backwards)";
|
||||||
|
"macMenuTitle" = "WireGuard";
|
||||||
|
"macAlertNoInterface" = "Configuration must have an ‘Interface’ section.";
|
||||||
|
"macNameFieldExportZip" = "Export tunnels to:";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationUnknown" = "Unknown system error.";
|
||||||
|
"macEditDiscard" = "Discard";
|
||||||
|
"tunnelPeerPresharedKeyEnabled" = "enabled";
|
||||||
|
"alertScanQRCodeCameraUnsupportedMessage" = "This device is not able to scan QR codes";
|
||||||
|
"macSheetButtonExportZip" = "Save";
|
||||||
|
"macWindowTitleManageTunnels" = "Manage WireGuard Tunnels";
|
||||||
|
"macConfirmAndQuitAlertInfo" = "If you close the tunnels manager, WireGuard will continue to be available from the menu bar icon.";
|
||||||
|
"macUnusableTunnelInfo" = "In case this tunnel was created by another user, only that user can view, edit, or activate this tunnel.";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "The tunnel is already active or in the process of being activated";
|
||||||
|
"alertTunnelActivationSetNetworkSettingsMessage" = "Unable to apply network settings to tunnel object.";
|
||||||
|
"macMenuExportTunnels" = "Export Tunnels to Zip…";
|
||||||
|
"macMenuShowAllApps" = "Show All";
|
||||||
|
"alertCantOpenInputConfFileTitle" = "Unable to import from file";
|
||||||
|
"alertScanQRCodeInvalidQRCodeMessage" = "The scanned QR code is not a valid WireGuard configuration";
|
||||||
|
"macDeleteTunnelConfirmationAlertInfo" = "You cannot undo this action.";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Deleting…";
|
||||||
|
"tunnelPeerPersistentKeepalive" = "Persistent keepalive";
|
||||||
|
"settingsViewLogButtonTitle" = "View log";
|
||||||
|
"alertSystemErrorMessageTunnelConnectionFailed" = "The connection failed.";
|
||||||
|
"macButtonEdit" = "Edit";
|
||||||
|
"macAlertPublicKeyInvalid" = "Public key is invalid";
|
||||||
|
"tunnelOnDemandOptionWiFiOnly" = "Wi-Fi only";
|
||||||
|
"macNameFieldExportLog" = "Save log to:";
|
||||||
|
"alertSystemErrorOnAddTunnelTitle" = "Unable to create tunnel";
|
||||||
|
"macConfirmAndQuitAlertMessage" = "Do you want to close the tunnels manager or quit WireGuard entirely?";
|
||||||
|
"alertTunnelActivationSavedConfigFailureMessage" = "Unable to retrieve tunnel information from the saved configuration.";
|
||||||
|
"tunnelOnDemandOptionOff" = "Off";
|
||||||
|
"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
|
||||||
|
"macAlertInfoUnrecognizedInterfaceKey" = "Valid keys are: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ and ‘MTU’.";
|
||||||
|
"macLogColumnTitleTime" = "Time";
|
||||||
|
"alertTunnelNameEmptyMessage" = "Cannot create tunnel with an empty name";
|
||||||
|
"alertInvalidInterfaceMessageMTUInvalid" = "Interface’s MTU must be between 576 and 65535, or unspecified";
|
||||||
|
"tunnelOnDemandWiFi" = "Wi-Fi";
|
||||||
|
"alertTunnelNameEmptyTitle" = "No name provided";
|
||||||
|
"tunnelOnDemandOnlyTheseSSIDs" = "Only these SSIDs";
|
||||||
|
"tunnelOnDemandExceptTheseSSIDs" = "Except these SSIDs";
|
||||||
|
"alertUnableToWriteLogMessage" = "Unable to write logs to file";
|
||||||
|
"macMenuAddEmptyTunnel" = "Add Empty Tunnel…";
|
||||||
|
"alertInvalidInterfaceTitle" = "Invalid interface";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Delete";
|
||||||
|
"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.";
|
||||||
|
"alertTunnelActivationFailureTitle" = "Activation failure";
|
||||||
|
"tunnelPeerTxBytes" = "Data sent";
|
||||||
|
"macLogButtonTitleClose" = "Close";
|
||||||
|
"tunnelOnDemandSSIDViewTitle" = "SSIDs";
|
||||||
|
"tunnelOnDemandOptionCellularOnly" = "Cellular only";
|
||||||
|
"tunnelEditPlaceholderTextOptional" = "Optional";
|
||||||
|
"settingsExportZipButtonTitle" = "Export zip archive";
|
||||||
|
"tunnelSectionTitleOnDemand" = "On-Demand Activation";
|
||||||
|
"alertInvalidInterfaceMessageNameRequired" = "Interface name is required";
|
||||||
|
"macViewPrivateData" = "view tunnel private keys";
|
||||||
|
"alertInvalidPeerTitle" = "Invalid peer";
|
||||||
|
"alertInvalidPeerMessageEndpointInvalid" = "Peer’s endpoint must be of the form ‘host:port’ or ‘[host]:port’";
|
||||||
|
"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activation in progress";
|
||||||
|
"tunnelPeerAllowedIPs" = "Allowed IPs";
|
||||||
|
"alertInvalidPeerMessagePublicKeyDuplicated" = "Two or more peers cannot have the same public key";
|
||||||
|
"deletePeerConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"alertInvalidPeerMessagePreSharedKeyInvalid" = "Peer’s preshared key must be a 32-byte key in base64 encoding";
|
||||||
|
"macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences.";
|
||||||
|
"macMenuEdit" = "Edit";
|
||||||
|
"donateLink" = "♥ Donate to the WireGuard Project";
|
||||||
|
"alertScanQRCodeCameraUnsupportedTitle" = "Camera Unsupported";
|
||||||
|
"macMenuWindow" = "Window";
|
||||||
|
"alertUnableToRemovePreviousLogTitle" = "Log export failed";
|
||||||
|
"alertTunnelActivationFailureMessage" = "The tunnel could not be activated. Please ensure that you are connected to the Internet.";
|
||||||
|
"tunnelOnDemandOptionEthernetOnly" = "Ethernet only";
|
||||||
|
"tunnelInterfaceStatus" = "Status";
|
||||||
|
"macMenuHideOtherApps" = "Hide Others";
|
||||||
|
"alertCantOpenInputZipFileMessage" = "The zip archive could not be read.";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Interface’s private key must be a 32-byte key in base64 encoding";
|
||||||
|
"deleteTunnelButtonTitle" = "Delete tunnel";
|
||||||
|
"alertInvalidInterfaceMessageDNSInvalid" = "Interface’s DNS servers must be a list of comma-separated IP addresses";
|
||||||
|
"macAlertPrivateKeyInvalid" = "Private key is invalid.";
|
||||||
|
"deleteTunnelConfirmationAlertMessage" = "Delete this tunnel?";
|
||||||
|
"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Cancel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationDisabled" = "The configuration is disabled.";
|
||||||
|
"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Peer’s persistent keepalive must be between 0 to 65535, or unspecified";
|
||||||
|
"alertUnableToWriteLogTitle" = "Log export failed";
|
||||||
|
"alertInvalidPeerMessagePublicKeyRequired" = "Peer’s public key is required";
|
||||||
|
"macMenuNetworksNone" = "Networks: None";
|
||||||
|
"tunnelOnDemandSSIDsKey" = "SSIDs";
|
||||||
|
"alertCantOpenOutputZipFileForWritingMessage" = "Could not open zip file for writing.";
|
||||||
|
"logViewTitle" = "Log";
|
||||||
|
"alertInvalidPeerMessagePublicKeyInvalid" = "Peer’s public key must be a 32-byte key in base64 encoding";
|
||||||
|
"tunnelOnDemandCellular" = "Cellular";
|
||||||
|
"tunnelOnDemandKey" = "On demand";
|
||||||
|
"macConfirmAndQuitAlertQuitWireGuard" = "Quit WireGuard";
|
||||||
|
"alertSystemErrorOnRemoveTunnelTitle" = "Unable to remove tunnel";
|
||||||
|
"macFieldOnDemand" = "On-Demand:";
|
||||||
|
"macMenuCloseWindow" = "Close Window";
|
||||||
|
"macSheetButtonExportLog" = "Save";
|
||||||
|
"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi or cellular";
|
||||||
|
"alertSystemErrorOnModifyTunnelTitle" = "Unable to modify tunnel";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Reading or writing the configuration failed.";
|
||||||
|
"macMenuEditTunnel" = "Edit…";
|
||||||
|
"settingsSectionTitleTunnelLog" = "Log";
|
||||||
|
"macMenuManageTunnels" = "Manage Tunnels";
|
||||||
|
"macButtonImportTunnels" = "Import tunnel(s) from file";
|
||||||
|
"macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel";
|
||||||
|
"tunnelSectionTitlePeer" = "Peer";
|
||||||
|
"alertSystemErrorMessageTunnelConfigurationStale" = "The configuration is stale.";
|
||||||
|
"tunnelPeerPreSharedKey" = "Preshared key";
|
||||||
|
"alertTunnelDNSFailureMessage" = "One or more endpoint domains could not be resolved.";
|
||||||
|
"tunnelOnDemandAddMessageAddNewSSID" = "Add new";
|
||||||
|
"alertInvalidInterfaceMessageAddressInvalid" = "Interface addresses must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"tunnelOnDemandSectionTitleAddSSIDs" = "Add SSIDs";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveTitle" = "No tunnels in zip archive";
|
||||||
|
"alertTunnelDNSFailureTitle" = "DNS resolution failure";
|
||||||
|
"tunnelOnDemandEthernet" = "Ethernet";
|
||||||
|
"macLogButtonTitleSave" = "Save…";
|
||||||
|
"macMenuToggleStatus" = "Toggle Status";
|
||||||
|
"deletePeerButtonTitle" = "Delete peer";
|
||||||
|
"tunnelPeerRxBytes" = "Data received";
|
||||||
|
"alertCantOpenInputZipFileTitle" = "Unable to read zip archive";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeMessage" = "The scanned code could not be read";
|
||||||
|
"alertScanQRCodeUnreadableQRCodeTitle" = "Invalid Code";
|
||||||
|
"alertSystemErrorOnListingTunnelsTitle" = "Unable to list tunnels";
|
||||||
|
"tunnelPeerExcludePrivateIPs" = "Exclude private IPs";
|
||||||
|
"settingsVersionKeyWireGuardForIOS" = "WireGuard for iOS";
|
||||||
|
"tunnelInterfaceAddresses" = "Addresses";
|
||||||
|
"macAlertMultipleInterfaces" = "Configuration must have only one ‘Interface’ section.";
|
||||||
|
"scanQRCodeViewTitle" = "Scan QR code";
|
||||||
|
"macAppStoreUpdatingAlertMessage" = "App Store would like to update WireGuard";
|
||||||
|
"macUnusableTunnelMessage" = "The configuration for this tunnel cannot be found in the keychain.";
|
||||||
|
"macToolTipEditTunnel" = "Edit tunnel (⌘E)";
|
||||||
|
"tunnelEditPlaceholderTextStronglyRecommended" = "Strongly recommended";
|
||||||
|
"macMenuZoom" = "Zoom";
|
||||||
|
"alertBadArchiveTitle" = "Unable to read zip archive";
|
||||||
|
"macExportPrivateData" = "export tunnel private keys";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameTitle" = "Name already exists";
|
||||||
|
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
||||||
|
"tunnelPeerLastHandshakeTime" = "Latest handshake";
|
||||||
|
"macAlertPreSharedKeyInvalid" = "Preshared key is invalid";
|
||||||
|
"macEditSave" = "Save";
|
||||||
|
"macConfirmAndQuitAlertCloseWindow" = "Close Tunnels Manager";
|
||||||
|
"macMenuFile" = "File";
|
||||||
|
"macToolTipToggleStatus" = "Toggle status (⌘T)";
|
||||||
|
"alertTunnelActivationSystemErrorTitle" = "Activation failure";
|
||||||
|
"alertInvalidInterfaceMessagePrivateKeyRequired" = "Interface’s private key is required";
|
||||||
|
"tunnelOnDemandAnySSID" = "Any SSID";
|
||||||
|
"alertNoTunnelsToExportTitle" = "Nothing to export";
|
||||||
|
"scanQRCodeTipText" = "Tip: Generate with `qrencode -t ansiutf8 < tunnel.conf`";
|
||||||
|
"alertNoTunnelsToExportMessage" = "There are no tunnels to export";
|
||||||
|
"macMenuImportTunnels" = "Import Tunnel(s) from File…";
|
||||||
|
"alertScanQRCodeInvalidQRCodeTitle" = "Invalid QR Code";
|
||||||
|
"macMenuViewLog" = "View Log";
|
||||||
|
"macAlertInfoUnrecognizedPeerKey" = "Valid keys are: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’";
|
||||||
|
"tunnelOnDemandNoSSIDs" = "No SSIDs";
|
||||||
|
"deleteTunnelConfirmationAlertButtonTitle" = "Delete";
|
||||||
|
"tunnelEditPlaceholderTextOff" = "Off";
|
||||||
|
"macUnusableTunnelButtonTitleDeleteTunnel" = "Delete tunnel";
|
||||||
|
"tunnelEditPlaceholderTextRequired" = "Required";
|
||||||
|
"alertInvalidPeerMessageAllowedIPsInvalid" = "Peer’s allowed IPs must be a list of comma-separated IP addresses, optionally in CIDR notation";
|
||||||
|
"macMenuTunnel" = "Tunnel";
|
||||||
|
"alertTunnelAlreadyExistsWithThatNameMessage" = "A tunnel with that name already exists";
|
||||||
|
"macLogColumnTitleLogMessage" = "Log message";
|
||||||
|
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
||||||
|
"macSheetButtonImport" = "Import";
|
||||||
|
"alertScanQRCodeNamePromptTitle" = "Please name the scanned tunnel";
|
||||||
|
"alertUnableToRemovePreviousLogMessage" = "The pre-existing log could not be cleared";
|
||||||
|
"alertTunnelActivationBackendFailureMessage" = "Unable to turn on Go backend library.";
|
||||||
|
"settingsSectionTitleExportConfigurations" = "Export configurations";
|
||||||
|
"alertBadArchiveMessage" = "Bad or corrupt zip archive.";
|
||||||
|
"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
|
||||||
|
"macFieldOnDemandSSIDs" = "SSIDs:";
|
||||||
|
"deletePeerConfirmationAlertMessage" = "Delete this peer?";
|
||||||
|
"alertCantOpenOutputZipFileForWritingTitle" = "Unable to create zip archive";
|
||||||
|
"alertNoTunnelsInImportedZipArchiveMessage" = "No .conf tunnel files were found inside the zip archive.";
|
||||||
|
"alertTunnelActivationFileDescriptorFailureMessage" = "Unable to determine TUN device file descriptor.";
|
||||||
|
"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi or ethernet";
|
||||||
|
"macAlertNameIsEmpty" = "Name is required";
|
||||||
|
|||||||
@@ -83,11 +83,15 @@ class PacketTunnelSettingsGenerator {
|
|||||||
*/
|
*/
|
||||||
let networkSettings = NEPacketTunnelNetworkSettings(tunnelRemoteAddress: "127.0.0.1")
|
let networkSettings = NEPacketTunnelNetworkSettings(tunnelRemoteAddress: "127.0.0.1")
|
||||||
|
|
||||||
let dnsServerStrings = tunnelConfiguration.interface.dns.map { $0.stringRepresentation }
|
if !tunnelConfiguration.interface.dnsSearch.isEmpty || !tunnelConfiguration.interface.dns.isEmpty {
|
||||||
let dnsSettings = NEDNSSettings(servers: dnsServerStrings)
|
let dnsServerStrings = tunnelConfiguration.interface.dns.map { $0.stringRepresentation }
|
||||||
dnsSettings.searchDomains = tunnelConfiguration.interface.dnsSearch
|
let dnsSettings = NEDNSSettings(servers: dnsServerStrings)
|
||||||
dnsSettings.matchDomains = [""] // All DNS queries must first go through the tunnel's DNS
|
dnsSettings.searchDomains = tunnelConfiguration.interface.dnsSearch
|
||||||
networkSettings.dnsSettings = dnsSettings
|
if !tunnelConfiguration.interface.dns.isEmpty {
|
||||||
|
dnsSettings.matchDomains = [""] // All DNS queries must first go through the tunnel's DNS
|
||||||
|
}
|
||||||
|
networkSettings.dnsSettings = dnsSettings
|
||||||
|
}
|
||||||
|
|
||||||
let mtu = tunnelConfiguration.interface.mtu ?? 0
|
let mtu = tunnelConfiguration.interface.mtu ?? 0
|
||||||
|
|
||||||
|
|||||||
@@ -21,9 +21,6 @@ public enum WireGuardAdapterError: Error {
|
|||||||
/// Failure to set network settings.
|
/// Failure to set network settings.
|
||||||
case setNetworkSettings(Error)
|
case setNetworkSettings(Error)
|
||||||
|
|
||||||
/// Timeout when calling to set network settings.
|
|
||||||
case setNetworkSettingsTimeout
|
|
||||||
|
|
||||||
/// Failure to start WireGuard backend.
|
/// Failure to start WireGuard backend.
|
||||||
case startWireGuardBackend(Int32)
|
case startWireGuardBackend(Int32)
|
||||||
}
|
}
|
||||||
@@ -304,7 +301,7 @@ public class WireGuardAdapter {
|
|||||||
throw WireGuardAdapterError.setNetworkSettings(systemError)
|
throw WireGuardAdapterError.setNetworkSettings(systemError)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw WireGuardAdapterError.setNetworkSettingsTimeout
|
self.logHandler(.error, "setTunnelNetworkSettings timed out after 5 seconds; proceeding anyway")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,11 +57,6 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
|||||||
errorNotifier.notify(PacketTunnelProviderError.couldNotSetNetworkSettings)
|
errorNotifier.notify(PacketTunnelProviderError.couldNotSetNetworkSettings)
|
||||||
completionHandler(PacketTunnelProviderError.couldNotSetNetworkSettings)
|
completionHandler(PacketTunnelProviderError.couldNotSetNetworkSettings)
|
||||||
|
|
||||||
case .setNetworkSettingsTimeout:
|
|
||||||
wg_log(.error, message: "Starting tunnel failed with setTunnelNetworkSettings timing out")
|
|
||||||
errorNotifier.notify(PacketTunnelProviderError.couldNotSetNetworkSettings)
|
|
||||||
completionHandler(PacketTunnelProviderError.couldNotSetNetworkSettings)
|
|
||||||
|
|
||||||
case .startWireGuardBackend(let errorCode):
|
case .startWireGuardBackend(let errorCode):
|
||||||
wg_log(.error, message: "Starting tunnel failed with wgTurnOn returning \(errorCode)")
|
wg_log(.error, message: "Starting tunnel failed with wgTurnOn returning \(errorCode)")
|
||||||
errorNotifier.notify(PacketTunnelProviderError.couldNotStartBackend)
|
errorNotifier.notify(PacketTunnelProviderError.couldNotStartBackend)
|
||||||
|
|||||||
@@ -399,24 +399,24 @@
|
|||||||
6FDEF801218646B900D8FBF6 /* ZipArchive.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZipArchive.swift; sourceTree = "<group>"; };
|
6FDEF801218646B900D8FBF6 /* ZipArchive.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZipArchive.swift; sourceTree = "<group>"; };
|
||||||
6FDEF805218725D200D8FBF6 /* SettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewController.swift; sourceTree = "<group>"; };
|
6FDEF805218725D200D8FBF6 /* SettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewController.swift; sourceTree = "<group>"; };
|
||||||
6FE1765521C90BBE002690EA /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Sources/WireGuardApp/Base.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6FE1765521C90BBE002690EA /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Sources/WireGuardApp/Base.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
A8FAC495E119A787EE15828E /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh-Hant; path = Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFC6 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh-Hant; path = Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
30E6E11BE16FC85D1D0D01A4 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh-Hans; path = Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFBA /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh-Hans; path = Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
F061DB3DF45406C134EB447E /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = Sources/WireGuardApp/id.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFC5 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = Sources/WireGuardApp/id.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
798AA59731469050BB67A452 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = Sources/WireGuardApp/it.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFBC /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = Sources/WireGuardApp/it.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
2B3036C208ACF4E06D7DA53F /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = Sources/WireGuardApp/de.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFC3 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = Sources/WireGuardApp/de.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
43D66D9909C915207158175F /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = Sources/WireGuardApp/fr.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFB5 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = Sources/WireGuardApp/fr.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
7644A930B7CB3B8882BC52FD /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = Sources/WireGuardApp/fi.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFBF /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = Sources/WireGuardApp/fi.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
937E473CD10EEFE3BC376098 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = Sources/WireGuardApp/fa.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFBE /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = Sources/WireGuardApp/fa.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
E4EE4FEC7423A6BEBDE429BC /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = Sources/WireGuardApp/sl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFC4 /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = Sources/WireGuardApp/sl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
854D4F78352DD4455C410962 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = Sources/WireGuardApp/pl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFB6 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = Sources/WireGuardApp/pl.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
8215B3EF8B68F0A53E6D8122 /* pa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pa; path = Sources/WireGuardApp/pa.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFB9 /* pa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pa; path = Sources/WireGuardApp/pa.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
795E9FCC698E54371188E366 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = Sources/WireGuardApp/ko.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFC1 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = Sources/WireGuardApp/ko.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
E60BA3A8E202323CDD363B2B /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = Sources/WireGuardApp/ca.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFB8 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = Sources/WireGuardApp/ca.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
1D38E2B7D24EC0ACEF2C5734 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = Sources/WireGuardApp/ru.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFC0 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = Sources/WireGuardApp/ru.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
EE7D06A3CCB7DAEF13330651 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = Sources/WireGuardApp/ro.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFBD /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = Sources/WireGuardApp/ro.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
6F24475E40CC51CC6CC27993 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = Sources/WireGuardApp/tr.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFC2 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = Sources/WireGuardApp/tr.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
31C0BC9131C140B617CA6713 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = Sources/WireGuardApp/ja.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFBB /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = Sources/WireGuardApp/ja.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
2F19992DF3CB32BB376853A0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Sources/WireGuardApp/es.lproj/Localizable.strings; sourceTree = "<group>"; };
|
6F70E20D221058DF008BDFB7 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Sources/WireGuardApp/es.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
6FE1765921C90E87002690EA /* LocalizationHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizationHelper.swift; sourceTree = "<group>"; };
|
6FE1765921C90E87002690EA /* LocalizationHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizationHelper.swift; sourceTree = "<group>"; };
|
||||||
6FE254FA219C10800028284D /* ZipImporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZipImporter.swift; sourceTree = "<group>"; };
|
6FE254FA219C10800028284D /* ZipImporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZipImporter.swift; sourceTree = "<group>"; };
|
||||||
6FE254FE219C60290028284D /* ZipExporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZipExporter.swift; sourceTree = "<group>"; };
|
6FE254FE219C60290028284D /* ZipExporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZipExporter.swift; sourceTree = "<group>"; };
|
||||||
@@ -1021,8 +1021,8 @@
|
|||||||
knownRegions = (
|
knownRegions = (
|
||||||
Base,
|
Base,
|
||||||
en,
|
en,
|
||||||
zh-Hant,
|
"zh-Hant",
|
||||||
zh-Hans,
|
"zh-Hans",
|
||||||
id,
|
id,
|
||||||
it,
|
it,
|
||||||
de,
|
de,
|
||||||
@@ -1501,24 +1501,24 @@
|
|||||||
6FE1765421C90BBE002690EA /* Localizable.strings */ = {
|
6FE1765421C90BBE002690EA /* Localizable.strings */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
children = (
|
children = (
|
||||||
A8FAC495E119A787EE15828E /* zh-Hant */,
|
6F70E20D221058DF008BDFC6 /* zh-Hant */,
|
||||||
30E6E11BE16FC85D1D0D01A4 /* zh-Hans */,
|
6F70E20D221058DF008BDFBA /* zh-Hans */,
|
||||||
F061DB3DF45406C134EB447E /* id */,
|
6F70E20D221058DF008BDFC5 /* id */,
|
||||||
798AA59731469050BB67A452 /* it */,
|
6F70E20D221058DF008BDFBC /* it */,
|
||||||
2B3036C208ACF4E06D7DA53F /* de */,
|
6F70E20D221058DF008BDFC3 /* de */,
|
||||||
43D66D9909C915207158175F /* fr */,
|
6F70E20D221058DF008BDFB5 /* fr */,
|
||||||
7644A930B7CB3B8882BC52FD /* fi */,
|
6F70E20D221058DF008BDFBF /* fi */,
|
||||||
937E473CD10EEFE3BC376098 /* fa */,
|
6F70E20D221058DF008BDFBE /* fa */,
|
||||||
E4EE4FEC7423A6BEBDE429BC /* sl */,
|
6F70E20D221058DF008BDFC4 /* sl */,
|
||||||
854D4F78352DD4455C410962 /* pl */,
|
6F70E20D221058DF008BDFB6 /* pl */,
|
||||||
8215B3EF8B68F0A53E6D8122 /* pa */,
|
6F70E20D221058DF008BDFB9 /* pa */,
|
||||||
795E9FCC698E54371188E366 /* ko */,
|
6F70E20D221058DF008BDFC1 /* ko */,
|
||||||
E60BA3A8E202323CDD363B2B /* ca */,
|
6F70E20D221058DF008BDFB8 /* ca */,
|
||||||
1D38E2B7D24EC0ACEF2C5734 /* ru */,
|
6F70E20D221058DF008BDFC0 /* ru */,
|
||||||
EE7D06A3CCB7DAEF13330651 /* ro */,
|
6F70E20D221058DF008BDFBD /* ro */,
|
||||||
6F24475E40CC51CC6CC27993 /* tr */,
|
6F70E20D221058DF008BDFC2 /* tr */,
|
||||||
31C0BC9131C140B617CA6713 /* ja */,
|
6F70E20D221058DF008BDFBB /* ja */,
|
||||||
2F19992DF3CB32BB376853A0 /* es */,
|
6F70E20D221058DF008BDFB7 /* es */,
|
||||||
6FE1765521C90BBE002690EA /* Base */,
|
6FE1765521C90BBE002690EA /* Base */,
|
||||||
);
|
);
|
||||||
name = Localizable.strings;
|
name = Localizable.strings;
|
||||||
@@ -1612,6 +1612,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Sources/WireGuardApp/UI/macOS/WireGuard.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Sources/WireGuardApp/UI/macOS/WireGuard.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = Sources/WireGuardApp/UI/macOS/Info.plist;
|
INFOPLIST_FILE = Sources/WireGuardApp/UI/macOS/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@@ -1632,6 +1633,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Sources/WireGuardApp/UI/macOS/WireGuard.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Sources/WireGuardApp/UI/macOS/WireGuard.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = Sources/WireGuardApp/UI/macOS/Info.plist;
|
INFOPLIST_FILE = Sources/WireGuardApp/UI/macOS/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@@ -1651,6 +1653,7 @@
|
|||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||||
CODE_SIGN_ENTITLEMENTS = Sources/WireGuardNetworkExtension/WireGuardNetworkExtension_macOS.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Sources/WireGuardNetworkExtension/WireGuardNetworkExtension_macOS.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||||
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = Sources/WireGuardNetworkExtension/Info.plist;
|
INFOPLIST_FILE = Sources/WireGuardNetworkExtension/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@@ -1673,6 +1676,7 @@
|
|||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
|
||||||
CODE_SIGN_ENTITLEMENTS = Sources/WireGuardNetworkExtension/WireGuardNetworkExtension_macOS.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Sources/WireGuardNetworkExtension/WireGuardNetworkExtension_macOS.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||||
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
INFOPLIST_FILE = Sources/WireGuardNetworkExtension/Info.plist;
|
INFOPLIST_FILE = Sources/WireGuardNetworkExtension/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
@@ -1759,7 +1763,6 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
@@ -1827,7 +1830,6 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
|||||||
+23
-2
@@ -3,14 +3,34 @@ set -e
|
|||||||
curl -Lo - https://crowdin.com/backend/download/project/wireguard.zip | bsdtar -C Sources/WireGuardApp -x -f - --strip-components 3 wireguard-apple
|
curl -Lo - https://crowdin.com/backend/download/project/wireguard.zip | bsdtar -C Sources/WireGuardApp -x -f - --strip-components 3 wireguard-apple
|
||||||
find Sources/WireGuardApp/*.lproj -type f -empty -delete
|
find Sources/WireGuardApp/*.lproj -type f -empty -delete
|
||||||
find Sources/WireGuardApp/*.lproj -type d -empty -delete
|
find Sources/WireGuardApp/*.lproj -type d -empty -delete
|
||||||
|
declare -A ALL_BASE
|
||||||
|
while read -r key eq rest; do
|
||||||
|
[[ $key == \"* && $key == *\" && $eq == = ]] || continue
|
||||||
|
ALL_BASE["$key"]="$rest"
|
||||||
|
done < Sources/WireGuardApp/Base.lproj/Localizable.strings
|
||||||
|
for f in Sources/WireGuardApp/*.lproj/Localizable.strings; do
|
||||||
|
unset FOUND
|
||||||
|
declare -A FOUND
|
||||||
|
while read -r key eq _; do
|
||||||
|
[[ $key == \"* && $key == *\" && $eq == = ]] || continue
|
||||||
|
FOUND["$key"]=1
|
||||||
|
done < "$f"
|
||||||
|
for key in "${!ALL_BASE[@]}"; do
|
||||||
|
[[ ${FOUND["$key"]} -eq 1 ]] && continue
|
||||||
|
echo "$key = ${ALL_BASE["$key"]}"
|
||||||
|
done >> "$f"
|
||||||
|
done < Sources/WireGuardApp/Base.lproj/Localizable.strings
|
||||||
git add Sources/WireGuardApp/*.lproj
|
git add Sources/WireGuardApp/*.lproj
|
||||||
|
|
||||||
declare -A LOCALE_MAP
|
declare -A LOCALE_MAP
|
||||||
|
[[ $(< WireGuard.xcodeproj/project.pbxproj) =~ [[:space:]]([0-9A-F]{24})\ /\*\ Base\ \*/, ]]
|
||||||
|
base_id="${BASH_REMATCH[1]:0:16}"
|
||||||
|
idx=$(( "0x${BASH_REMATCH[1]:16}" ))
|
||||||
while read -r filename; do
|
while read -r filename; do
|
||||||
l="$(basename "$(dirname "$filename")" .lproj)"
|
l="$(basename "$(dirname "$filename")" .lproj)"
|
||||||
[[ $l == Base ]] && continue
|
[[ $l == Base ]] && continue
|
||||||
read -r -n 24 hex < <(LC_ALL=C tr -dc "A-F0-9" < /dev/urandom)
|
((++idx))
|
||||||
LOCALE_MAP["$l"]="$hex"
|
LOCALE_MAP["$l"]="$(printf '%s%08X' "$base_id" $idx)"
|
||||||
done < <(find Sources/WireGuardApp -name Localizable.strings -type f)
|
done < <(find Sources/WireGuardApp -name Localizable.strings -type f)
|
||||||
|
|
||||||
inkr=0 inls=0 inlsc=0
|
inkr=0 inls=0 inlsc=0
|
||||||
@@ -26,6 +46,7 @@ while IFS= read -r line; do
|
|||||||
echo "$line"
|
echo "$line"
|
||||||
printf '\t\t\t\tBase,\n\t\t\t\ten,\n'
|
printf '\t\t\t\tBase,\n\t\t\t\ten,\n'
|
||||||
for l in "${!LOCALE_MAP[@]}"; do
|
for l in "${!LOCALE_MAP[@]}"; do
|
||||||
|
[[ $l == *-* ]] && l="\"$l\""
|
||||||
printf '\t\t\t\t%s,\n' "$l"
|
printf '\t\t\t\t%s,\n' "$l"
|
||||||
done
|
done
|
||||||
inkr=1
|
inkr=1
|
||||||
|
|||||||
Reference in New Issue
Block a user