aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-12-11 11:33:59 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2020-12-11 11:34:19 +0100
commit54e3333b725eb3a09fd5139b33450d2d9844704d (patch)
treeb2727b8015484c14cfa104e63b78f792968cdeff
parentWireGuardKit: Conditionally turn on/off wireguard-go (diff)
downloadwireguard-apple-54e3333b725eb3a09fd5139b33450d2d9844704d.tar.xz
wireguard-apple-54e3333b725eb3a09fd5139b33450d2d9844704d.zip
WireGuardApp: add CrowdIn syncer and run it
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--Sources/WireGuardApp/ca.lproj/Localizable.strings97
-rw-r--r--Sources/WireGuardApp/de.lproj/Localizable.strings4
-rw-r--r--Sources/WireGuardApp/es.lproj/Localizable.strings191
-rw-r--r--Sources/WireGuardApp/fa.lproj/Localizable.strings349
-rw-r--r--Sources/WireGuardApp/fi.lproj/Localizable.strings46
-rw-r--r--Sources/WireGuardApp/fr.lproj/Localizable.strings445
-rw-r--r--Sources/WireGuardApp/id.lproj/Localizable.strings94
-rw-r--r--Sources/WireGuardApp/it.lproj/Localizable.strings30
-rw-r--r--Sources/WireGuardApp/ja.lproj/Localizable.strings6
-rw-r--r--Sources/WireGuardApp/ko.lproj/Localizable.strings38
-rw-r--r--Sources/WireGuardApp/pa.lproj/Localizable.strings445
-rw-r--r--Sources/WireGuardApp/pl.lproj/Localizable.strings190
-rw-r--r--Sources/WireGuardApp/ro.lproj/Localizable.strings445
-rw-r--r--Sources/WireGuardApp/ru.lproj/Localizable.strings445
-rw-r--r--Sources/WireGuardApp/sl.lproj/Localizable.strings445
-rw-r--r--Sources/WireGuardApp/tr.lproj/Localizable.strings445
-rw-r--r--Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings445
-rw-r--r--Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings88
-rwxr-xr-xsync-translations.sh6
19 files changed, 4234 insertions, 20 deletions
diff --git a/Sources/WireGuardApp/ca.lproj/Localizable.strings b/Sources/WireGuardApp/ca.lproj/Localizable.strings
new file mode 100644
index 0000000..a77be60
--- /dev/null
+++ b/Sources/WireGuardApp/ca.lproj/Localizable.strings
@@ -0,0 +1,97 @@
+"actionCancel" = "Cancel·la";
+"actionSave" = "Guarda";
+"tunnelsListSettingsButtonTitle" = "Configuració";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Afegir un túnel";
+"tunnelsListSwipeDeleteButtonTitle" = "Elimina";
+"tunnelsListSelectButtonTitle" = "Selecciona";
+"tunnelsListSelectAllButtonTitle" = "Selecciona tots";
+"tunnelsListDeleteButtonTitle" = "Elimina";
+"tunnelsListSelectedTitle (%d)" = "%d seleccionat(s)";
+"macToggleStatusButtonDeactivate" = "Desactiva";
+"macToggleStatusButtonDeactivating" = "Desactivant…";
+"macToggleStatusButtonReasserting" = "Reactivant…";
+"macToggleStatusButtonRestarting" = "S'està reiniciant…";
+"macToggleStatusButtonWaiting" = "Esperant…";
+
+"tunnelSectionTitleInterface" = "Interfície";
+
+"tunnelInterfaceName" = "Nom";
+"tunnelInterfacePrivateKey" = "Clau privada";
+"tunnelInterfacePublicKey" = "Clau pública";
+"tunnelInterfaceGenerateKeypair" = "Genera una parella de claus";
+"tunnelInterfaceAddresses" = "Adreces";
+"tunnelInterfaceDNS" = "Servidors DNS";
+"tunnelInterfaceStatus" = "Estat";
+
+"tunnelSectionTitlePeer" = "Parell";
+
+"tunnelPeerPublicKey" = "Clau pública";
+"tunnelPeerAllowedIPs" = "IPs permeses";
+"tunnelPeerRxBytes" = "Dades rebudes";
+"tunnelPeerTxBytes" = "Dades enviades";
+"tunnelPeerExcludePrivateIPs" = "Exclou IPs privades";
+"tunnelOnDemandEthernet" = "Ethernet";
+
+"tunnelOnDemandAnySSID" = "Qualsevol SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "Només aquestes SSIDs";
+"tunnelOnDemandExceptTheseSSIDs" = "Excepte aquestes SSIDs";
+"tunnelOnDemandOnlySSID (%d)" = "Només %d SSID";
+"tunnelOnDemandOnlySSIDs (%d)" = "Només %d SSIDs";
+"tunnelOnDemandExceptSSID (%d)" = "Excepte %d SSID";
+"tunnelOnDemandExceptSSIDs (%d)" = "Excepte %d SSIDs";
+"tunnelOnDemandSectionTitleAddSSIDs" = "Afegir SSIDs";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Afegir connectada: %@";
+"tunnelOnDemandAddMessageAddNewSSID" = "Afegir nova";
+
+"tunnelOnDemandKey" = "Sota demanda";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d segons";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ hores";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ minuts";
+
+"tunnelPeerPresharedKeyEnabled" = "activat";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "Parell no vàlid";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidPeerMessagePublicKeyRequired" = "Clau pública del parell requerida";
+"alertInvalidPeerMessageAllowedIPsInvalid" = "Les IPs permeses de parells han de ser una llista separada per comes, opcionalment en notació CIDR";
+"alertInvalidPeerMessagePublicKeyDuplicated" = "Dos o més parells no poden tindre la mateixa clau pública";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "Escaneja un codi QR";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "Càmera no suportada";
+"alertScanQRCodeCameraUnsupportedMessage" = "Aquest dispositiu no pot escanejar codis QR";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "Codi QR no vàlid";
+"alertScanQRCodeInvalidQRCodeMessage" = "El QR escanejat no és una configuració de WireGuard vàlida";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "Codi no vàlid";
+"alertScanQRCodeUnreadableQRCodeMessage" = "El codi escanejat no s'ha pogut llegir";
+
+// Settings UI
+
+"settingsViewTitle" = "Configuració";
+
+"settingsSectionTitleAbout" = "Quant a";
+
+"settingsSectionTitleTunnelLog" = "Registre";
+"settingsViewLogButtonTitle" = "Mostra el registre";
+
+// Log view
+
+"logViewTitle" = "Registre";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "Ha fallat l'exportació";
+
+"alertUnableToWriteLogTitle" = "Ha fallat l'exportació";
+"macMenuManageTunnels" = "Gestiona túnels";
+"macMenuCut" = "Talla";
+"macMenuCopy" = "Copia";
diff --git a/Sources/WireGuardApp/de.lproj/Localizable.strings b/Sources/WireGuardApp/de.lproj/Localizable.strings
index 5bb0db4..4573672 100644
--- a/Sources/WireGuardApp/de.lproj/Localizable.strings
+++ b/Sources/WireGuardApp/de.lproj/Localizable.strings
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MIT
-// Copyright © 2018-2020 WireGuard LLC. All Rights Reserved.
-
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
// Generic alert action names
+
"actionOK" = "OK";
"actionCancel" = "Abbrechen";
"actionSave" = "Speichern";
diff --git a/Sources/WireGuardApp/es.lproj/Localizable.strings b/Sources/WireGuardApp/es.lproj/Localizable.strings
new file mode 100644
index 0000000..d10ff26
--- /dev/null
+++ b/Sources/WireGuardApp/es.lproj/Localizable.strings
@@ -0,0 +1,191 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "Aceptar";
+"actionCancel" = "Cancelar";
+"actionSave" = "Guardar";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "Preferencias";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Agregar un túnel";
+"tunnelsListSwipeDeleteButtonTitle" = "Eliminar";
+"tunnelsListSelectButtonTitle" = "Seleccionar";
+"tunnelsListSelectAllButtonTitle" = "Seleccionar todo";
+"tunnelsListDeleteButtonTitle" = "Eliminar";
+"tunnelsListSelectedTitle (%d)" = "%d seleccionado";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "Añadir un nuevo túnel WireGuard";
+"addTunnelMenuImportFile" = "Crear desde archivo";
+"addTunnelMenuQRCode" = "Crear desde código QR";
+"addTunnelMenuFromScratch" = "Crear desde cero";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "%d túneles creados";
+"alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "Creado %1$d de %2$d túneles desde archivos importados";
+
+"alertImportedFromZipTitle (%d)" = "Creados %d túneles";
+"alertImportedFromZipMessage (%1$d of %2$d)" = "Creado %1$d de %2$d túneles a partir del archivo zip";
+
+"alertBadConfigImportTitle" = "No se puede importar túnel";
+"alertBadConfigImportMessage (%@)" = "El archivo ‘%@’ no contiene una configuración válida de WireGuard";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "Eliminar";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "¿Eliminar túnel %d?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "¿Eliminar %d túneles?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "Nueva configuración";
+"editTunnelViewTitle" = "Editar configuración";
+
+"tunnelSectionTitleStatus" = "Estado";
+
+"tunnelStatusInactive" = "Inactivo";
+"tunnelStatusActivating" = "Activando";
+"tunnelStatusActive" = "Activo";
+"tunnelStatusDeactivating" = "Desactivando";
+"tunnelStatusReasserting" = "Reactivando";
+"tunnelStatusRestarting" = "Reiniciando";
+"tunnelStatusWaiting" = "Esperando";
+
+"macToggleStatusButtonActivate" = "Activo";
+"macToggleStatusButtonActivating" = "Activando…";
+"macToggleStatusButtonDeactivate" = "Desactivar";
+"macToggleStatusButtonDeactivating" = "Desactivando…";
+"macToggleStatusButtonReasserting" = "Reactivando…";
+"macToggleStatusButtonRestarting" = "Reiniciando…";
+"macToggleStatusButtonWaiting" = "Esperando…";
+
+"tunnelSectionTitleInterface" = "Interfaz";
+
+"tunnelInterfaceName" = "Nombre";
+"tunnelInterfacePrivateKey" = "Clave privada";
+"tunnelInterfacePublicKey" = "Clave pública";
+"tunnelInterfaceGenerateKeypair" = "Generar par de claves";
+"tunnelInterfaceAddresses" = "Direcciones";
+"tunnelInterfaceListenPort" = "Puerto de escucha";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "Servidores DNS";
+"tunnelInterfaceStatus" = "Estado";
+
+"tunnelSectionTitlePeer" = "Par";
+
+"tunnelPeerPublicKey" = "Clave pública";
+"tunnelPeerPreSharedKey" = "Clave precompartida";
+"tunnelPeerEndpoint" = "Punto final";
+"tunnelPeerPersistentKeepalive" = "Mantenimiento persistente";
+"tunnelPeerAllowedIPs" = "IPs permitidas";
+"tunnelPeerRxBytes" = "Datos recibidos";
+"tunnelPeerTxBytes" = "Datos enviados";
+"tunnelPeerLastHandshakeTime" = "Último saludo de manos";
+"tunnelPeerExcludePrivateIPs" = "Excluir direcciones privadas";
+
+"tunnelSectionTitleOnDemand" = "Activación bajo demanda";
+
+"tunnelOnDemandCellular" = "Celular";
+"tunnelOnDemandEthernet" = "Ethernet";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+"tunnelOnDemandSSIDsKey" = "SSIDs";
+
+"tunnelOnDemandAnySSID" = "Cualquier SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "Sólo estos SSIDs";
+"tunnelOnDemandExceptTheseSSIDs" = "Excepto estos SSIDs";
+"tunnelOnDemandOnlySSID (%d)" = "Sólo %d SSID";
+"tunnelOnDemandOnlySSIDs (%d)" = "Sólo %d SSIDs";
+"tunnelOnDemandExceptSSID (%d)" = "Excepto %d SSID";
+"tunnelOnDemandExceptSSIDs (%d)" = "Excepto %d SSIDs";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@";
+
+"tunnelOnDemandSSIDViewTitle" = "SSIDs";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
+"tunnelOnDemandNoSSIDs" = "Sin SSIDs";
+"tunnelOnDemandSectionTitleAddSSIDs" = "Añadir SSIDs";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Añadir conectado: %@";
+"tunnelOnDemandAddMessageAddNewSSID" = "Añadir nuevo";
+
+"tunnelOnDemandKey" = "Bajo demanda";
+"tunnelOnDemandOptionOff" = "Desactivado";
+"tunnelOnDemandOptionWiFiOnly" = "Sólo Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi o celular";
+"tunnelOnDemandOptionCellularOnly" = "Solo celular";
+"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi o ethernet";
+"tunnelOnDemandOptionEthernetOnly" = "Sólo Ethernet";
+
+"addPeerButtonTitle" = "Añadir par";
+
+"deletePeerButtonTitle" = "Eliminar par";
+"deletePeerConfirmationAlertButtonTitle" = "Eliminar";
+"deletePeerConfirmationAlertMessage" = "¿Eliminar este par?";
+
+"deleteTunnelButtonTitle" = "Eliminar túnel";
+"deleteTunnelConfirmationAlertButtonTitle" = "Eliminar";
+"deleteTunnelConfirmationAlertMessage" = "¿Eliminar túnel %d?";
+
+"tunnelEditPlaceholderTextRequired" = "Requerido";
+"tunnelEditPlaceholderTextOptional" = "Opcional";
+"tunnelEditPlaceholderTextAutomatic" = "Automático";
+"tunnelEditPlaceholderTextStronglyRecommended" = "Altamente recomendado";
+"tunnelEditPlaceholderTextOff" = "Desactivado";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "cada %@ segundos";
+"tunnelHandshakeTimestampNow" = "Ahora";
+"tunnelHandshakeTimestampSystemClockBackward" = "(Sistema de reloj herido hacia atrás)";
+"tunnelHandshakeTimestampAgo (%@)" = "hace %@";
+"tunnelHandshakeTimestampYear (%d)" = "%d año";
+"tunnelHandshakeTimestampYears (%d)" = "%d años";
+"tunnelHandshakeTimestampDay (%d)" = "%d día";
+"tunnelHandshakeTimestampDays (%d)" = "%d dias";
+"tunnelHandshakeTimestampHour (%d)" = "%d hora";
+"tunnelHandshakeTimestampHours (%d)" = "%d horas";
+"tunnelHandshakeTimestampMinute (%d)" = "%d minuto";
+"tunnelHandshakeTimestampMinutes (%d)" = "%d minutos";
+"tunnelHandshakeTimestampSecond (%d)" = "%d segundo";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d segundos";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ horas";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ minutos";
+
+"tunnelPeerPresharedKeyEnabled" = "activado";
+
+// Error alerts while creating / editing a tunnel configuration
+/* Alert title for error in the interface data */
+
+"alertInvalidInterfaceTitle" = "Interfaz inválida";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidInterfaceMessageNameRequired" = "Se requiere nombre de interfaz";
+"alertInvalidInterfaceMessagePrivateKeyRequired" = "La clave privada de la interfaz es necesaria";
+"alertInvalidInterfaceMessagePrivateKeyInvalid" = "La clave privada de interfaz debe ser una clave de 32 bytes en la codificación base64";
+"alertInvalidInterfaceMessageAddressInvalid" = "Las direcciones de la interfaz deben ser una lista de direcciones IP separadas por comas, opcionalmente en notaciòn CIDR";
+"alertInvalidInterfaceMessageListenPortInvalid" = "El puerto de escucha de la interfaz debe estar entre 0 y 65535, o no especificado";
+"alertInvalidInterfaceMessageMTUInvalid" = "La MTU de la interfaz debe estar entre 576 y 65535, o no especificada";
+"alertInvalidInterfaceMessageDNSInvalid" = "Los servidores DNS de la interfaz deben ser una lista de direcciones IP separadas por comas";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "Par inválido";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidPeerMessagePublicKeyRequired" = "La clave pública del par es necesaria";
+"alertInvalidPeerMessagePublicKeyInvalid" = "La clave pública del par debe ser de 32 bytes en codificación base64";
+"alertInvalidPeerMessagePreSharedKeyInvalid" = "La clave precompartida del par debe ser de 32 bytes en codificación base64";
+"alertInvalidPeerMessageAllowedIPsInvalid" = "Las IPs permitidas del par deben ser una lista de direcciones IP separadas por comas, opcionalmente en notación CIDR";
+"alertInvalidPeerMessageEndpointInvalid" = "El punto final del par debe ser de la forma ‘host:port’ o ‘[host]:port’";
+"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "El keepalive persistente del par debe estar entre 0 y 65535, o no especificado";
+"alertInvalidPeerMessagePublicKeyDuplicated" = "Dos o mas pares no pueden tener la misma llave pùblica";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "Escanear código QR";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "Exportación de registros fallida";
+
+"alertNoTunnelsToExportTitle" = "Nada para exportar";
diff --git a/Sources/WireGuardApp/fa.lproj/Localizable.strings b/Sources/WireGuardApp/fa.lproj/Localizable.strings
new file mode 100644
index 0000000..65d5cf0
--- /dev/null
+++ b/Sources/WireGuardApp/fa.lproj/Localizable.strings
@@ -0,0 +1,349 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "باشه";
+"actionCancel" = "لغو";
+"actionSave" = "ذخیره";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "تنظیمات";
+"tunnelsListCenteredAddTunnelButtonTitle" = "اضافه کردن تونل";
+"tunnelsListSwipeDeleteButtonTitle" = "حذف";
+"tunnelsListSelectButtonTitle" = "انتخاب";
+"tunnelsListSelectAllButtonTitle" = "انتخاب همه";
+"tunnelsListDeleteButtonTitle" = "حذف";
+"tunnelsListSelectedTitle (%d)" = "%d انتخاب شد";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "اضافه کردن تونل جدید وایرگارد";
+"addTunnelMenuImportFile" = "ساختن از طریق پرونده یا آرشیو";
+"addTunnelMenuQRCode" = "ساختن از طریق QR کد";
+"addTunnelMenuFromScratch" = "ساختن از طریق خراش دادن";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "تونل %d ساخته شد";
+
+"alertImportedFromZipTitle (%d)" = "%d تونل ایجاد شد";
+
+"alertBadConfigImportTitle" = "نمی‌توان تونل را وارد کرد";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "حذف";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "تونل %d حذف شود؟";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "%d تونل حذف شود؟";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "پیکربندی جدید";
+"editTunnelViewTitle" = "ویرایش پیکربندی";
+
+"tunnelSectionTitleStatus" = "وضعیت";
+
+"tunnelStatusInactive" = "غیرفعال";
+"tunnelStatusActivating" = "در حال فعال‌سازی";
+"tunnelStatusActive" = "فعال";
+"tunnelStatusDeactivating" = "در حال غیرفعال‌سازی";
+"tunnelStatusReasserting" = "در حال فعال‌سازی مجدد";
+"tunnelStatusRestarting" = "در حال راه‌اندازی مجدد";
+"tunnelStatusWaiting" = "در حال انتظار";
+
+"macToggleStatusButtonActivate" = "فعال‌سازی";
+"macToggleStatusButtonActivating" = "در حال فعال‌سازی…";
+"macToggleStatusButtonDeactivate" = "غیر فعال‌سازی";
+"macToggleStatusButtonDeactivating" = "در حال غیرفعال‌سازی…";
+"macToggleStatusButtonReasserting" = "در حال فعال‌سازی مجدد…";
+"macToggleStatusButtonRestarting" = "در حال راه‌اندازی دوباره…";
+"macToggleStatusButtonWaiting" = "در حال انتظار…";
+
+"tunnelSectionTitleInterface" = "رابط";
+
+"tunnelInterfaceName" = "نام";
+"tunnelInterfacePrivateKey" = "کلید خصوصی";
+"tunnelInterfacePublicKey" = "کلید عمومی";
+"tunnelInterfaceGenerateKeypair" = "ساختن جفت‌کلید";
+"tunnelInterfaceAddresses" = "نشانی‌ها";
+"tunnelInterfaceListenPort" = "پورت شنود";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "سرورهای DNS";
+"tunnelInterfaceStatus" = "وضعیت";
+
+"tunnelSectionTitlePeer" = "همتا";
+
+"tunnelPeerPublicKey" = "کلید عمومی";
+"tunnelPeerPreSharedKey" = "کلید از پیش تقسیم شده";
+"tunnelPeerEndpoint" = "نقطه پایان";
+"tunnelPeerPersistentKeepalive" = "زنده نگه‌داشتن پیوسته";
+"tunnelPeerAllowedIPs" = "IPهای مجاز";
+"tunnelPeerRxBytes" = "داده دریافت شد";
+"tunnelPeerTxBytes" = "داده فرستاده شده";
+"tunnelPeerLastHandshakeTime" = "آخرین handshake";
+"tunnelPeerExcludePrivateIPs" = "مستثنی کردن IPهای خصوصی";
+
+"tunnelSectionTitleOnDemand" = "فعال‌سازی هنگام-درخواست";
+
+"tunnelOnDemandCellular" = "داده همراه";
+"tunnelOnDemandEthernet" = "اترنت";
+"tunnelOnDemandWiFi" = "وای-فای";
+"tunnelOnDemandSSIDsKey" = "SSIDها";
+
+"tunnelOnDemandAnySSID" = "هر SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "فقط این SSIDها";
+"tunnelOnDemandExceptTheseSSIDs" = "به‌جز این SSIDها";
+"tunnelOnDemandOnlySSID (%d)" = "تنها %d SSID";
+"tunnelOnDemandOnlySSIDs (%d)" = "تنها %d SSID";
+"tunnelOnDemandExceptSSID (%d)" = "به‌جز %d SSID";
+"tunnelOnDemandExceptSSIDs (%d)" = "به‌جز %d SSID";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@";
+
+"tunnelOnDemandSSIDViewTitle" = "SSIDها";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDها";
+"tunnelOnDemandNoSSIDs" = "هیچ SSIDای";
+"tunnelOnDemandSectionTitleAddSSIDs" = "افزودن SSIDها";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "افزودن متصل: %@";
+"tunnelOnDemandAddMessageAddNewSSID" = "افزودن جدید";
+
+"tunnelOnDemandKey" = "هنگام درخواست";
+"tunnelOnDemandOptionOff" = "خاموش";
+"tunnelOnDemandOptionWiFiOnly" = "فقط هنگام استفاده از Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "وای‌فای یا داده همراه";
+"tunnelOnDemandOptionCellularOnly" = "فقط داده همراه";
+"tunnelOnDemandOptionWiFiOrEthernet" = "وای‌فای یا اترنت";
+"tunnelOnDemandOptionEthernetOnly" = "تنها اترنت";
+
+"addPeerButtonTitle" = "افزودن همتا";
+
+"deletePeerButtonTitle" = "حذف همتا";
+"deletePeerConfirmationAlertButtonTitle" = "حذف";
+"deletePeerConfirmationAlertMessage" = "این همتا حذف شود؟";
+
+"deleteTunnelButtonTitle" = "حذف تونل";
+"deleteTunnelConfirmationAlertButtonTitle" = "حذف";
+"deleteTunnelConfirmationAlertMessage" = "این تونل حذف شود؟";
+
+"tunnelEditPlaceholderTextRequired" = "الزامی است";
+"tunnelEditPlaceholderTextOptional" = "دلخواه";
+"tunnelEditPlaceholderTextAutomatic" = "خودکار";
+"tunnelEditPlaceholderTextStronglyRecommended" = "بسیار پیشنهاد می‌شود";
+"tunnelEditPlaceholderTextOff" = "خاموش";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "هر %@ ثانیه";
+"tunnelHandshakeTimestampNow" = "هم اکنون";
+"tunnelHandshakeTimestampAgo (%@)" = "%@ پیش";
+"tunnelHandshakeTimestampYear (%d)" = "%d سال";
+"tunnelHandshakeTimestampYears (%d)" = "%d سال";
+"tunnelHandshakeTimestampDay (%d)" = "%d روز";
+"tunnelHandshakeTimestampDays (%d)" = "%d روز";
+"tunnelHandshakeTimestampHour (%d)" = "%d ساعت";
+"tunnelHandshakeTimestampHours (%d)" = "%d ساعت";
+"tunnelHandshakeTimestampMinute (%d)" = "%d دقیقه";
+"tunnelHandshakeTimestampMinutes (%d)" = "%d دقیقه";
+"tunnelHandshakeTimestampSecond (%d)" = "%d ثانیه";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d ثانیه";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ ساعت";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ دقیقه";
+
+"tunnelPeerPresharedKeyEnabled" = "فعال شده";
+
+// Error alerts while creating / editing a tunnel configuration
+/* Alert title for error in the interface data */
+
+"alertInvalidInterfaceTitle" = "رابط نامعتبر است";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidInterfaceMessageNameRequired" = "نام رابط الزامی است";
+"alertInvalidInterfaceMessagePrivateKeyRequired" = "کلید خصوصی رابط الزامی است";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "همتای نامعتبر";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "اسکن کد QR";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "دوربین پشتیبانی نمی‌شود";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "کد QR نامعتبر";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "کد نامعتبر";
+
+// Settings UI
+
+"settingsViewTitle" = "تنظیمات";
+
+"settingsSectionTitleAbout" = "درباره ما";
+"settingsVersionKeyWireGuardForIOS" = "WireGuard برای iOS";
+"settingsExportZipButtonTitle" = "برون‌بری بایگانی زیپ";
+
+"settingsSectionTitleTunnelLog" = "گزارش رویداد";
+"settingsViewLogButtonTitle" = "مشاهده‌ی گزارش رویداد";
+
+// Log view
+
+"logViewTitle" = "گزارش وقایع";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "برون‌برد گزارش رویداد ناموفق بود";
+
+"alertUnableToWriteLogTitle" = "برون‌برد گزارش رویداد ناموفق بود";
+
+"alertBadArchiveTitle" = "نمی‌توان آرشیو زیپ را خواند";
+"alertBadArchiveMessage" = "آرشیو زیپ، بد یا خراب است.";
+
+"alertNoTunnelsToExportTitle" = "چیزی برای برون‌بری نیست";
+"alertNoTunnelsToExportMessage" = "تونلی برای برون‌بری نیست";
+
+"alertNoTunnelsInImportedZipArchiveTitle" = "هیچ تونلی در آرشیو زیپ نیست";
+
+// Tunnel management error alerts
+
+"alertTunnelActivationFailureTitle" = "شکست در فعال‌سازی";
+
+"alertTunnelNameEmptyTitle" = "نامی افزوده نشده";
+
+"alertTunnelAlreadyExistsWithThatNameTitle" = "نام از قبل وجود دارد";
+
+"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "در حال فعال‌سازی";
+
+// Tunnel management error alerts on system error
+/* The alert message that goes with the following titles would be
+ one of the alertSystemErrorMessage* listed further down */
+
+"alertSystemErrorOnListingTunnelsTitle" = "نمی‌توان تونل‌ها را فهرست کرد";
+"alertSystemErrorOnAddTunnelTitle" = "نمی‌توان تونل را ساخت";
+"alertSystemErrorOnModifyTunnelTitle" = "نمی‌توان تونل را ویرایش کرد";
+"alertSystemErrorOnRemoveTunnelTitle" = "نمی‌توان تونل را حذف کرد";
+
+/* The alert message for this alert shall include
+ one of the alertSystemErrorMessage* listed further down */
+"alertTunnelActivationSystemErrorTitle" = "شکست در فعال‌سازی";
+
+/* alertSystemErrorMessage* messages */
+"alertSystemErrorMessageTunnelConfigurationInvalid" = "پیکربندی نامعتبر است.";
+"alertSystemErrorMessageTunnelConfigurationDisabled" = "پیکربندی غیرفعال است.";
+"alertSystemErrorMessageTunnelConnectionFailed" = "ﺍﺗﺼﺎﻝ ﻧﺎﻣﻮﻓﻖ ﺑﻮﺩ.";
+"alertSystemErrorMessageTunnelConfigurationStale" = "پیکربندی کهنه است.";
+"alertSystemErrorMessageTunnelConfigurationUnknown" = "خطای ناشناخته سیستم.";
+
+// Mac status bar menu / pulldown menu / main menu
+
+"macMenuNetworks (%@)" = "شبکه‌ها: %@";
+"macMenuNetworksNone" = "شبکه‌ها: هیچی";
+
+"macMenuTitle" = "WireGuard";
+"macMenuManageTunnels" = "مدیریت تونل‌ها";
+"macMenuImportTunnels" = "وارد کردن تونل(ها) از پرونده…";
+"macMenuAddEmptyTunnel" = "افزودن تونل خالی…";
+"macMenuViewLog" = "مشاهده گزارش رویداد";
+"macMenuExportTunnels" = "برون‌بری تونل‌ها در پرونده زیپ…";
+"macMenuAbout" = "درباره WireGuard";
+"macMenuQuit" = "خروج از WireGuard";
+
+"macMenuHideApp" = "WireGuard را پنهان کن";
+"macMenuHideOtherApps" = "پنهان کردن دیگران";
+"macMenuShowAllApps" = "نمایش همه";
+
+"macMenuFile" = "پرونده";
+"macMenuCloseWindow" = "بستن پنجره";
+
+"macMenuEdit" = "ویرایش";
+"macMenuCut" = "برش";
+"macMenuCopy" = "روگرفت";
+"macMenuPaste" = "جای‌گذاری";
+"macMenuSelectAll" = "انتخاب همه";
+
+"macMenuTunnel" = "تونل";
+"macMenuEditTunnel" = "ویرایش…";
+"macMenuDeleteSelected" = "حذف انتخاب شده‌ها";
+
+"macMenuWindow" = "پنجره";
+"macMenuMinimize" = "کوچک‌سازی";
+"macMenuZoom" = "بزرگ‌نمايی";
+
+// Mac manage tunnels window
+
+"macWindowTitleManageTunnels" = "مدیریت تونل‌های WireGuard";
+"macDeleteTunnelConfirmationAlertInfo" = "شما نمی‌توانید این عمل را خنثی کنید.";
+"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "حذف";
+"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "لغو";
+"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "در حال حذف…";
+
+"macButtonImportTunnels" = "وارد کردن تونل(ها) از پرونده";
+"macSheetButtonImport" = "واردکردن";
+
+"macNameFieldExportLog" = "ذخیره گزارش رویداد به:";
+"macSheetButtonExportLog" = "ذخیره";
+
+"macNameFieldExportZip" = "برون‌بری تونل‌ها به:";
+"macSheetButtonExportZip" = "ذخیره";
+
+"macButtonDeleteTunnels (%d)" = "حذف %d تونل";
+
+"macButtonEdit" = "ویرایش";
+
+// Mac detail/edit view fields
+
+"macFieldKey (%@)" = "%@:";
+"macFieldOnDemand" = "هنگام-درخواست:";
+"macFieldOnDemandSSIDs" = "SSIDها:";
+
+// Mac status display
+
+"macStatus (%@)" = "وضعیت: %@";
+
+// Mac editing config
+
+"macEditDiscard" = "لغو";
+"macEditSave" = "ذخیره";
+
+"macAlertNameIsEmpty" = "نام الزامی است";
+"macAlertDuplicateName (%@)" = "تونلی دیگر با این نام موجود است ‘%@’.";
+
+"macAlertInvalidLine (%@)" = "خط نامعتبر: ‘%@’.";
+"macAlertPrivateKeyInvalid" = "کلید خصوصی نامعتبر است.";
+"macAlertListenPortInvalid (%@)" = "پورت شنود ‘%@’ نامعتبر است.";
+"macAlertAddressInvalid (%@)" = "نشانی ‘%@’ نامعتبر است.";
+"macAlertDNSInvalid (%@)" = "DNS ‘%@’ نامعتبر است.";
+"macAlertMTUInvalid (%@)" = "MTU ‘%@’ نامعتبر است.";
+
+"macAlertUnrecognizedInterfaceKey (%@)" = "رابط دارای کلید ناشناخته می‌باشد ‘%@’";
+
+"macAlertPublicKeyInvalid" = "کلید عمومی نامعتبر است";
+"macAlertPreSharedKeyInvalid" = "کلید از پیش تقسیم شده نامعتبر است";
+"macAlertAllowedIPInvalid (%@)" = "IP مجاز ‘%@’ نامعتبر است";
+"macAlertEndpointInvalid (%@)" = "نقطه پایان ‘%@’ نامعتبر است";
+
+// Mac about dialog
+
+"macAppVersion (%@)" = "نگارش برنامه: %@";
+
+// Privacy
+
+"macExportPrivateData" = "برو‌ن‌بری کلید‌های خصوصی تونل";
+"macViewPrivateData" = "مشاهده کلید‌های خصوصی تونل";
+"macConfirmAndQuitAlertQuitWireGuard" = "خروج از WireGuard";
+"macConfirmAndQuitAlertCloseWindow" = "بستن مدیر تونل‌ها";
+
+// Mac tooltip
+
+"macToolTipEditTunnel" = "ویرایش تونل (⌘E)";
+
+// Mac log view
+
+"macLogColumnTitleTime" = "زمان";
+"macLogColumnTitleLogMessage" = "پیام گزارش رویداد";
+"macLogButtonTitleClose" = "بستن";
+"macLogButtonTitleSave" = "ذخیره…";
+"macUnusableTunnelButtonTitleDeleteTunnel" = "حذف تونل";
+
+// Donation
+
+"donateLink" = "♥ کمک مالی به پروژه WireGuard";
diff --git a/Sources/WireGuardApp/fi.lproj/Localizable.strings b/Sources/WireGuardApp/fi.lproj/Localizable.strings
new file mode 100644
index 0000000..77231f3
--- /dev/null
+++ b/Sources/WireGuardApp/fi.lproj/Localizable.strings
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "OK";
+"actionCancel" = "Peruuta";
+"actionSave" = "Tallenna";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "Asetukset";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Lisää tunneli";
+
+"tunnelInterfaceName" = "Nimi";
+"tunnelInterfacePrivateKey" = "Yksityinen avain";
+"tunnelInterfacePublicKey" = "Julkinen avain";
+"tunnelInterfaceGenerateKeypair" = "Luo avainpari";
+"tunnelInterfaceAddresses" = "Osoitteet";
+
+"tunnelPeerPublicKey" = "Julkinen avain";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+"tunnelOnDemandSSIDsKey" = "SSID:t";
+
+"tunnelOnDemandAnySSID" = "Mikä tahansa SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "Vain nämä SSID:t";
+"tunnelOnDemandExceptTheseSSIDs" = "Poislukien SSID:t";
+
+"tunnelOnDemandKey" = "Tarvittaessa";
+"tunnelOnDemandOptionOff" = "Pois päältä";
+"tunnelOnDemandOptionWiFiOnly" = "Vain Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi tai mobiiliverkko";
+"tunnelOnDemandOptionCellularOnly" = "Vain mobiilidata";
+"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi tai Ethernet";
+"tunnelOnDemandOptionEthernetOnly" = "Vain Ethernet";
+
+"deleteTunnelButtonTitle" = "Poista tunneli";
+"deleteTunnelConfirmationAlertButtonTitle" = "Poista";
+"deleteTunnelConfirmationAlertMessage" = "Poistetaanko tämä tunneli?";
+
+"tunnelEditPlaceholderTextRequired" = "Pakollinen";
+"tunnelEditPlaceholderTextOptional" = "Valinnainen";
+"tunnelEditPlaceholderTextAutomatic" = "Automaattinen";
+"tunnelEditPlaceholderTextOff" = "Pois päältä";
+"tunnelHandshakeTimestampNow" = "Nyt";
diff --git a/Sources/WireGuardApp/fr.lproj/Localizable.strings b/Sources/WireGuardApp/fr.lproj/Localizable.strings
new file mode 100644
index 0000000..73d772a
--- /dev/null
+++ b/Sources/WireGuardApp/fr.lproj/Localizable.strings
@@ -0,0 +1,445 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "Valider";
+"actionCancel" = "Annuler";
+"actionSave" = "Enregistrer";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "Réglages";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Ajouter un tunnel";
+"tunnelsListSwipeDeleteButtonTitle" = "Supprimer";
+"tunnelsListSelectButtonTitle" = "Sélectionner";
+"tunnelsListSelectAllButtonTitle" = "Tout sélectionner";
+"tunnelsListDeleteButtonTitle" = "Supprimer";
+"tunnelsListSelectedTitle (%d)" = "%d sélectionné(s)";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "Ajouter un nouveau tunnel WireGuard";
+"addTunnelMenuImportFile" = "Créer depuis un fichier ou une archive";
+"addTunnelMenuQRCode" = "Créer à partir d'un code QR";
+"addTunnelMenuFromScratch" = "Créer à partir de rien";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "%d tunnels ont été créés";
+"alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "%1$d des %2$d tunnels ont étés créés à partir des fichiers importés";
+
+"alertImportedFromZipTitle (%d)" = "%d tunnels ont été créés";
+"alertImportedFromZipMessage (%1$d of %2$d)" = "%1$d des %2$d tunnels ont étés créés à partir de l'archive zip";
+
+"alertBadConfigImportTitle" = "Impossible d'importer le tunnel";
+"alertBadConfigImportMessage (%@)" = "Le fichier ‘%@’ contient une de configuration WireGuard invalide";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "Supprimer";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "Supprimer %d tunnel?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "Supprimer %d tunnels?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "Nouvelle configuration";
+"editTunnelViewTitle" = "Editer la configuration";
+
+"tunnelSectionTitleStatus" = "Statut";
+
+"tunnelStatusInactive" = "Inactif";
+"tunnelStatusActivating" = "Activation";
+"tunnelStatusActive" = "Actif";
+"tunnelStatusDeactivating" = "Désactivation";
+"tunnelStatusReasserting" = "Réactivation";
+"tunnelStatusRestarting" = "Redémarrage";
+"tunnelStatusWaiting" = "En attente";
+
+"macToggleStatusButtonActivate" = "Activer";
+"macToggleStatusButtonActivating" = "Activation…";
+"macToggleStatusButtonDeactivate" = "Désactiver";
+"macToggleStatusButtonDeactivating" = "Désactivation…";
+"macToggleStatusButtonReasserting" = "Réactivation…";
+"macToggleStatusButtonRestarting" = "Redémarrage…";
+"macToggleStatusButtonWaiting" = "En attente…";
+
+"tunnelSectionTitleInterface" = "Interface";
+
+"tunnelInterfaceName" = "Nom";
+"tunnelInterfacePrivateKey" = "Clé privée";
+"tunnelInterfacePublicKey" = "Clé publique";
+"tunnelInterfaceGenerateKeypair" = "Générer une paire de clés";
+"tunnelInterfaceAddresses" = "Adresses";
+"tunnelInterfaceListenPort" = "Port d'écoute";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "Serveurs DNS";
+"tunnelInterfaceStatus" = "Statut";
+
+"tunnelSectionTitlePeer" = "Pair";
+
+"tunnelPeerPublicKey" = "Cléf public";
+"tunnelPeerPreSharedKey" = "Clef prépartagée";
+"tunnelPeerEndpoint" = "Point de terminaison";
+"tunnelPeerPersistentKeepalive" = "Garde en vie persistante";
+"tunnelPeerAllowedIPs" = "Adresses IP autorisées";
+"tunnelPeerRxBytes" = "Données reçues";
+"tunnelPeerTxBytes" = "Données envoyées";
+"tunnelPeerLastHandshakeTime" = "Dernier établissement d'une liaison";
+"tunnelPeerExcludePrivateIPs" = "Exclure les IPs privées";
+
+"tunnelSectionTitleOnDemand" = "Activation à la demande";
+
+"tunnelOnDemandCellular" = "Cellulaire";
+"tunnelOnDemandEthernet" = "Ethernet";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+"tunnelOnDemandSSIDsKey" = "SSIDs";
+
+"tunnelOnDemandAnySSID" = "N’importe quel SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "Seulement ces SSIDs";
+"tunnelOnDemandExceptTheseSSIDs" = "Sauf ces SSIDs";
+"tunnelOnDemandOnlySSID (%d)" = "Uniquement %d SSID";
+"tunnelOnDemandOnlySSIDs (%d)" = "Uniquement %d SSID";
+"tunnelOnDemandExceptSSID (%d)" = "Sauf %d SSID";
+"tunnelOnDemandExceptSSIDs (%d)" = "Sauf %d SSIDs";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@ : %2$@";
+
+"tunnelOnDemandSSIDViewTitle" = "SSIDs";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
+"tunnelOnDemandNoSSIDs" = "Pas de SSIDs";
+"tunnelOnDemandSectionTitleAddSSIDs" = "Ajouter des SSIDs";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Ajouter les connectés: %@";
+"tunnelOnDemandAddMessageAddNewSSID" = "Ajouter un nouveau";
+
+"tunnelOnDemandKey" = "À la demande";
+"tunnelOnDemandOptionOff" = "Désactivé";
+"tunnelOnDemandOptionWiFiOnly" = "Wi-Fi uniquement";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi ou cellulaire";
+"tunnelOnDemandOptionCellularOnly" = "Cellulaire uniquement";
+"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi ou ethernet";
+"tunnelOnDemandOptionEthernetOnly" = "Ethernet uniquement";
+
+"addPeerButtonTitle" = "Ajouter un pair";
+
+"deletePeerButtonTitle" = "Supprimer le pair";
+"deletePeerConfirmationAlertButtonTitle" = "Supprimer";
+"deletePeerConfirmationAlertMessage" = "Supprimer ce pair ?";
+
+"deleteTunnelButtonTitle" = "Supprimer le tunnel";
+"deleteTunnelConfirmationAlertButtonTitle" = "Supprimer";
+"deleteTunnelConfirmationAlertMessage" = "Supprimer ce tunnel ?";
+
+"tunnelEditPlaceholderTextRequired" = "Obligatoire";
+"tunnelEditPlaceholderTextOptional" = "Facultatif";
+"tunnelEditPlaceholderTextAutomatic" = "Automatique";
+"tunnelEditPlaceholderTextStronglyRecommended" = "Fortement recommandé";
+"tunnelEditPlaceholderTextOff" = "Désactivé";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "tous les %@ secondes";
+"tunnelHandshakeTimestampNow" = "Maintenant";
+"tunnelHandshakeTimestampSystemClockBackward" = "(L’horloge système est inversé)";
+"tunnelHandshakeTimestampAgo (%@)" = "Il y a %@";
+"tunnelHandshakeTimestampYear (%d)" = "%d année";
+"tunnelHandshakeTimestampYears (%d)" = "%d années";
+"tunnelHandshakeTimestampDay (%d)" = "%d jour";
+"tunnelHandshakeTimestampDays (%d)" = "%d jours";
+"tunnelHandshakeTimestampHour (%d)" = "%d heure";
+"tunnelHandshakeTimestampHours (%d)" = "%d heures";
+"tunnelHandshakeTimestampMinute (%d)" = "%d minute";
+"tunnelHandshakeTimestampMinutes (%d)" = "%d minutes";
+"tunnelHandshakeTimestampSecond (%d)" = "%d seconde";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d secondes";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ heures";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ minutes";
+
+"tunnelPeerPresharedKeyEnabled" = "activée";
+
+// Error alerts while creating / editing a tunnel configuration
+/* Alert title for error in the interface data */
+
+"alertInvalidInterfaceTitle" = "Interface invalide";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidInterfaceMessageNameRequired" = "Le nom de l'interface est requis";
+"alertInvalidInterfaceMessagePrivateKeyRequired" = "La clef privée de l'interface est requise";
+"alertInvalidInterfaceMessagePrivateKeyInvalid" = "La clef privée de l'interface doit être une clé de 32 octets dans l'encodage base64";
+"alertInvalidInterfaceMessageAddressInvalid" = "Les adresses d'interface doivent être une liste d'adresses IP séparées par des virgules, optionnellement en notation CIDR";
+"alertInvalidInterfaceMessageListenPortInvalid" = "Le port d'écoute de l'interface doit être compris entre 0 et 65535, ou non spécifié";
+"alertInvalidInterfaceMessageMTUInvalid" = "Le port d'écoute de l'interface doit être compris entre 576 et 65535, ou non spécifié";
+"alertInvalidInterfaceMessageDNSInvalid" = "Les serveurs DNS de l'interface doivent être une liste d'adresses IP séparées par des virgules";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "Pair non valide";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidPeerMessagePublicKeyRequired" = "La clef publique du pair est requise";
+"alertInvalidPeerMessagePublicKeyInvalid" = "La clef publique du pair doit être une clé de 32 octets dans l'encodage base64";
+"alertInvalidPeerMessagePreSharedKeyInvalid" = "La clef pré-partagée par le pair doit être une clef de 32 octets dans l'encodage base64";
+"alertInvalidPeerMessageAllowedIPsInvalid" = "Les adresses IP autorisées par le pair doivent être une liste d'adresses IP séparées par des virgules, éventuellement dans la notation CIDR";
+"alertInvalidPeerMessageEndpointInvalid" = "Le point de terminaison du pair doit être de la forme « host:port» ou «[host]:port»";
+"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Le maintien persistant du pair doit être compris entre 0 et 65535, ou non spécifié";
+"alertInvalidPeerMessagePublicKeyDuplicated" = "Deux ou plusieurs pairs ne peuvent pas avoir la même clef publique";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "Scanner le code QR";
+"scanQRCodeTipText" = "Conseil: générez avec `qrencode -t ansiutf8 < tunnel.conf`";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "Caméra non prise en charge";
+"alertScanQRCodeCameraUnsupportedMessage" = "Cet appareil n'est pas en mesure de scanner des codes QR";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "Code QR non valide";
+"alertScanQRCodeInvalidQRCodeMessage" = "Le code QR scanné est une configuration WireGuard invalide";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "Code invalide";
+"alertScanQRCodeUnreadableQRCodeMessage" = "Le code scanné n'a pas pu être lu";
+
+"alertScanQRCodeNamePromptTitle" = "Veuillez nommer le tunnel scanné";
+
+// Settings UI
+
+"settingsViewTitle" = "Réglages";
+
+"settingsSectionTitleAbout" = "A propos";
+"settingsVersionKeyWireGuardForIOS" = "WireGuard pour iOS";
+"settingsVersionKeyWireGuardGoBackend" = "Backend de l'application WireGuard en Go";
+
+"settingsSectionTitleExportConfigurations" = "Exporter les configurations";
+"settingsExportZipButtonTitle" = "Exporter l'archive zip";
+
+"settingsSectionTitleTunnelLog" = "Journal";
+"settingsViewLogButtonTitle" = "Voir le journal";
+
+// Log view
+
+"logViewTitle" = "Journal";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "L'exportation du journal a échoué";
+"alertUnableToRemovePreviousLogMessage" = "Le journal préexistant n'a pas pu être effacé";
+
+"alertUnableToWriteLogTitle" = "L'exportation du journal a échoué";
+"alertUnableToWriteLogMessage" = "Impossible d'écrire les journaux dans un fichier";
+
+// Zip import / export error alerts
+
+"alertCantOpenInputZipFileTitle" = "Impossible de lire l'archive zip";
+"alertCantOpenInputZipFileMessage" = "L'archive zip n'a pas pu être lue.";
+
+"alertCantOpenOutputZipFileForWritingTitle" = "Impossible de créer l'archive zip";
+"alertCantOpenOutputZipFileForWritingMessage" = "Impossible d'ouvrir le fichier zip en écriture.";
+
+"alertBadArchiveTitle" = "Impossible de lire l'archive zip";
+"alertBadArchiveMessage" = "Archive zip incorrecte ou corrompue.";
+
+"alertNoTunnelsToExportTitle" = "Rien à exporter";
+"alertNoTunnelsToExportMessage" = "Il n'y a aucun tunnel à exporter";
+
+"alertNoTunnelsInImportedZipArchiveTitle" = "Aucun tunnel dans l'archive zip";
+"alertNoTunnelsInImportedZipArchiveMessage" = "Aucun fichier tunnel .conf n'a été trouvé dans l'archive zip.";
+
+// Conf import error alerts
+
+"alertCantOpenInputConfFileTitle" = "Impossible d'importer depuis le fichier";
+"alertCantOpenInputConfFileMessage (%@)" = "Le fichier ‘%@’ n’a pas pu être lu.";
+
+// Tunnel management error alerts
+
+"alertTunnelActivationFailureTitle" = "Échec de l'activation";
+"alertTunnelActivationFailureMessage" = "Le tunnel n'a pas pu être activé. Veuillez vous assurer que vous êtes connecté à Internet.";
+"alertTunnelActivationSavedConfigFailureMessage" = "Impossible de récupérer les informations du tunnel depuis la configuration enregistrée.";
+"alertTunnelActivationBackendFailureMessage" = "Impossible d'activer la bibliothèque Go.";
+"alertTunnelActivationFileDescriptorFailureMessage" = "Impossible de déterminer le descripteur de fichier TUN.";
+"alertTunnelActivationSetNetworkSettingsMessage" = "Impossible d'appliquer les paramètres réseau à l'objet tunnel.";
+
+"alertTunnelActivationFailureOnDemandAddendum" = " Ce tunnel a été activé à la demande, donc ce tunnel pourrait être réactivé automatiquement par l'OS. Vous pouvez désactiver l'activation à la demande dans cette application en modifiant la configuration du tunnel.";
+
+"alertTunnelDNSFailureTitle" = "Échec de la résolution DNS";
+"alertTunnelDNSFailureMessage" = "Un ou plusieurs domaines de terminaison n'ont pas pu être résolus.";
+
+"alertTunnelNameEmptyTitle" = "Pas de nom fourni";
+"alertTunnelNameEmptyMessage" = "Impossible de créer le tunnel avec un nom vide";
+
+"alertTunnelAlreadyExistsWithThatNameTitle" = "Le nom existe déjà";
+"alertTunnelAlreadyExistsWithThatNameMessage" = "Un tunnel portant ce nom existe déjà";
+
+"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activation en cours";
+"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "Le tunnel est déjà actif ou en cours d'activation";
+
+// Tunnel management error alerts on system error
+/* The alert message that goes with the following titles would be
+ one of the alertSystemErrorMessage* listed further down */
+
+"alertSystemErrorOnListingTunnelsTitle" = "Impossible de créer une liste des tunnels existants";
+"alertSystemErrorOnAddTunnelTitle" = "Impossible de créer le tunnel";
+"alertSystemErrorOnModifyTunnelTitle" = "Impossible de modifier le tunnel";
+"alertSystemErrorOnRemoveTunnelTitle" = "Impossible de supprimer le tunnel";
+
+/* The alert message for this alert shall include
+ one of the alertSystemErrorMessage* listed further down */
+"alertTunnelActivationSystemErrorTitle" = "Échec de l'activation";
+"alertTunnelActivationSystemErrorMessage (%@)" = "Le tunnel '%@' n'a pas pu être activé";
+
+/* alertSystemErrorMessage* messages */
+"alertSystemErrorMessageTunnelConfigurationInvalid" = "La configuration est invalide.";
+"alertSystemErrorMessageTunnelConfigurationDisabled" = "La configuration est désactivée.";
+"alertSystemErrorMessageTunnelConnectionFailed" = "La connexion a échoué.";
+"alertSystemErrorMessageTunnelConfigurationStale" = "La configuration est obsolète.";
+"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "La lecture ou l'écriture de la configuration a échoué.";
+"alertSystemErrorMessageTunnelConfigurationUnknown" = "Erreur du système inconnue.";
+
+// Mac status bar menu / pulldown menu / main menu
+
+"macMenuNetworks (%@)" = "Réseaux: %@";
+"macMenuNetworksNone" = "Réseaux: Aucun";
+
+"macMenuTitle" = "WireGuard";
+"macMenuManageTunnels" = "Gestion des tunnels";
+"macMenuImportTunnels" = "Importer le(s) tunnel(s) à partir du fichier…";
+"macMenuAddEmptyTunnel" = "Ajouter un tunnel vide…";
+"macMenuViewLog" = "Voir le journal";
+"macMenuExportTunnels" = "Exporter les tunnels en Zip…";
+"macMenuAbout" = "À propos du WireGuard";
+"macMenuQuit" = "Quitter WireGuard";
+
+"macMenuHideApp" = "Masquer WireGuard";
+"macMenuHideOtherApps" = "Masquer les autres";
+"macMenuShowAllApps" = "Tout afficher";
+
+"macMenuFile" = "Fichier";
+"macMenuCloseWindow" = "Fermer la fenêtre";
+
+"macMenuEdit" = "Modifier";
+"macMenuCut" = "Couper";
+"macMenuCopy" = "Copier";
+"macMenuPaste" = "Coller";
+"macMenuSelectAll" = "Tout sélectionner";
+
+"macMenuTunnel" = "Tunnel";
+"macMenuToggleStatus" = "Changer le statut";
+"macMenuEditTunnel" = "Modifier…";
+"macMenuDeleteSelected" = "Supprimer la sélection";
+
+"macMenuWindow" = "Fenêtre";
+"macMenuMinimize" = "Minimiser";
+"macMenuZoom" = "Réduire/Agrandir";
+
+// Mac manage tunnels window
+
+"macWindowTitleManageTunnels" = "Gérer les tunnels WireGuard";
+
+"macDeleteTunnelConfirmationAlertMessage (%@)" = "Êtes-vous sûr de vouloir supprimer \"%@\" ?";
+"macDeleteMultipleTunnelsConfirmationAlertMessage (%d)" = "Voulez-vous vraiment supprimer %d tunnels?";
+"macDeleteTunnelConfirmationAlertInfo" = "Vous ne pouvez pas annuler cette action.";
+"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Supprimer";
+"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Annuler";
+"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Suppression…";
+
+"macButtonImportTunnels" = "Importer le(s) tunnel(s) à partir du fichier";
+"macSheetButtonImport" = "Importer";
+
+"macNameFieldExportLog" = "Enregistrer le journal dans :";
+"macSheetButtonExportLog" = "Enregistrer";
+
+"macNameFieldExportZip" = "Exporter les tunnels vers :";
+"macSheetButtonExportZip" = "Enregistrer";
+
+"macButtonDeleteTunnels (%d)" = "Supprimer %d tunnels";
+
+"macButtonEdit" = "Modifier";
+
+// Mac detail/edit view fields
+
+"macFieldKey (%@)" = "%@:";
+"macFieldOnDemand" = "Sur demande:";
+"macFieldOnDemandSSIDs" = "SSIDs:";
+
+// Mac status display
+
+"macStatus (%@)" = "Statut : %@";
+
+// Mac editing config
+
+"macEditDiscard" = "Annuler";
+"macEditSave" = "Enregistrer";
+
+"macAlertNameIsEmpty" = "Le nom est requis";
+"macAlertDuplicateName (%@)" = "Un autre tunnel portant le nom «%@» existe déjà.";
+
+"macAlertInvalidLine (%@)" = "Ligne invalide : ‘%@’.";
+
+"macAlertNoInterface" = "La configuration doit avoir une section « Interface».";
+"macAlertMultipleInterfaces" = "La configuration ne doit avoir qu'une seule section 'Interface'.";
+"macAlertPrivateKeyInvalid" = "La clef privée est invalide.";
+"macAlertListenPortInvalid (%@)" = "Le port d'écoute ‘%@’ est invalide.";
+"macAlertAddressInvalid (%@)" = "L'adresse ‘%@’ est invalide.";
+"macAlertDNSInvalid (%@)" = "Le DNS ‘%@’ est invalide.";
+"macAlertMTUInvalid (%@)" = "La MTU ‘%@’ n’est pas valide.";
+
+"macAlertUnrecognizedInterfaceKey (%@)" = "L’interface contient une clef «%@» non reconnue";
+"macAlertInfoUnrecognizedInterfaceKey" = "Les clefs valides sont : ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ et ‘MTU’.";
+
+"macAlertPublicKeyInvalid" = "La clef publique est invalide";
+"macAlertPreSharedKeyInvalid" = "La clef prépartagée est invalide";
+"macAlertAllowedIPInvalid (%@)" = "L'adresse IP autorisée ‘%@’ est invalide";
+"macAlertEndpointInvalid (%@)" = "Le point de terminaison ‘%@’ est invalide";
+"macAlertPersistentKeepliveInvalid (%@)" = "La valeur du Keepalive persistant ‘%@’ est invalide";
+
+"macAlertUnrecognizedPeerKey (%@)" = "Le pair contient une clef «%@» non reconnue";
+"macAlertInfoUnrecognizedPeerKey" = "Les clefs valides sont : ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ and ‘PersistentKeepalive’";
+
+"macAlertMultipleEntriesForKey (%@)" = "Il ne devrait y avoir qu'une seule entrée par section pour la clef ‘%@’";
+
+// Mac about dialog
+
+"macAppVersion (%@)" = "Version de l’application: %@";
+"macGoBackendVersion (%@)" = "Version de Go: %@";
+
+// Privacy
+
+"macExportPrivateData" = "exporter les clefs privées du tunnel";
+"macViewPrivateData" = "voir les clefs privées du tunnel";
+"iosExportPrivateData" = "Authentifiez-vous pour exporter les clefs privées du tunnel.";
+"iosViewPrivateData" = "Authentifiez-vous pour voir les clefs privées du tunnel.";
+
+// Mac alert
+
+"macConfirmAndQuitAlertMessage" = "Voulez-vous fermer le gestionnaire de tunnels ou quitter WireGuard complètement ?";
+"macConfirmAndQuitAlertInfo" = "Si vous fermez le gestionnaire de tunnels, WireGuard continuera d'être disponible à partir de l'icône de la barre de menus.";
+"macConfirmAndQuitInfoWithActiveTunnel (%@)" = "Si vous fermez le gestionnaire de tunnels, WireGuard continuera d'être disponible à partir de l'icône de la barre de menus.\n\nNotez que si vous quittez WireGuard entièrement le tunnel actuellement actif ('%@') restera actif jusqu'à ce que vous le désactiviez de cette application ou via le panneau Réseau dans les Préférences Système.";
+"macConfirmAndQuitAlertQuitWireGuard" = "Quitter WireGuard";
+"macConfirmAndQuitAlertCloseWindow" = "Fermer le gestionnaire de tunnels";
+
+"macAppExitingWithActiveTunnelMessage" = "WireGuard se termine avec un tunnel actif";
+"macAppExitingWithActiveTunnelInfo" = "Le tunnel restera actif après la fermeture. Vous pouvez le désactiver en rouvrant cette application ou via le panneau Réseau dans Préférences Système.";
+
+// Mac tooltip
+
+"macToolTipEditTunnel" = "Modifier le tunnel (⌘E)";
+"macToolTipToggleStatus" = "Basculer le statut (⌘T)";
+
+// Mac log view
+
+"macLogColumnTitleTime" = "Temps";
+"macLogColumnTitleLogMessage" = "Message du journal";
+"macLogButtonTitleClose" = "Fermer";
+"macLogButtonTitleSave" = "Enregistrer…";
+
+// Mac unusable tunnel view
+
+"macUnusableTunnelMessage" = "La configuration de ce tunnel est introuvable dans le trousseau.";
+"macUnusableTunnelInfo" = "Si ce tunnel a été créé par un autre utilisateur, seul cet utilisateur peut visualiser, modifier ou activer ce tunnel.";
+"macUnusableTunnelButtonTitleDeleteTunnel" = "Supprimer le tunnel";
+
+// Mac App Store updating alert
+
+"macAppStoreUpdatingAlertMessage" = "App Store aimerait mettre à jour WireGuard";
+"macAppStoreUpdatingAlertInfoWithOnDemand (%@)" = "Veuillez désactiver 'à la demande' pour le tunnel ‘%@’, désactivez-le, puis continuez la mise à jour dans l'App Store.";
+"macAppStoreUpdatingAlertInfoWithoutOnDemand (%@)" = "Veuillez désactiver le tunnel ‘%@’ puis continuer la mise à jour dans l’App Store.";
+
+// Donation
+
+"donateLink" = "♥ Faire un don au projet WireGuard";
diff --git a/Sources/WireGuardApp/id.lproj/Localizable.strings b/Sources/WireGuardApp/id.lproj/Localizable.strings
new file mode 100644
index 0000000..2e89ade
--- /dev/null
+++ b/Sources/WireGuardApp/id.lproj/Localizable.strings
@@ -0,0 +1,94 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "OK";
+"actionCancel" = "Batal";
+"actionSave" = "Simpan";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "Pengaturan";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Tambahkan Tunnel (terowongan bawah tanah digital)";
+"tunnelsListSwipeDeleteButtonTitle" = "Hapus";
+"tunnelsListSelectButtonTitle" = "Pilih";
+"tunnelsListSelectAllButtonTitle" = "Pilih Semua";
+"tunnelsListDeleteButtonTitle" = "Hapus";
+"tunnelsListSelectedTitle (%d)" = "%d dipilih";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "Tambahkan tunnel Wireguard";
+"addTunnelMenuImportFile" = "Tambahkan dari file yang sudah ada";
+"addTunnelMenuQRCode" = "Tambahkan dengan memindai QR code";
+"addTunnelMenuFromScratch" = "Buat dari awal";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "Dibuat %d tunnel";
+"alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "Telah dibuat %1$d dari %2$d tunel yang ada pada file";
+
+"alertImportedFromZipTitle (%d)" = "Telah dibuat %d tunel";
+"alertImportedFromZipMessage (%1$d of %2$d)" = "Telah dibuat %1$d dari %2$d tunel pada file terkompresi";
+
+"alertBadConfigImportTitle" = "Tidak dapat membuat tunel";
+"alertBadConfigImportMessage (%@)" = "File ini ‘%@’ tidak terdapat pengaturan WireGuard yang benar";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "Hapus";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "Hapus %d tunel?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "Hapus %d tunel?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "Pengaturan Baru";
+"editTunnelViewTitle" = "Mengubah pengaturan";
+
+"tunnelSectionTitleStatus" = "Status";
+
+"tunnelStatusInactive" = "Tidak aktif";
+"tunnelStatusActivating" = "Mengaktifkan";
+"tunnelStatusActive" = "Aktif";
+"tunnelStatusDeactivating" = "Menonaktifkan";
+"tunnelStatusReasserting" = "Mengaktifkan ulang";
+"tunnelStatusRestarting" = "Memulai kembali";
+"tunnelStatusWaiting" = "Menunggu";
+
+"macToggleStatusButtonActivate" = "Mengaktifkan";
+"macToggleStatusButtonActivating" = "Mengaktifkan…";
+"macToggleStatusButtonDeactivate" = "Menonaktifkan";
+"macToggleStatusButtonDeactivating" = "Menonaktifkan…";
+"macToggleStatusButtonReasserting" = "Mengaktifkan ulang…";
+"macToggleStatusButtonRestarting" = "Memulai kembali…";
+"macToggleStatusButtonWaiting" = "Menunggu…";
+
+"tunnelSectionTitleInterface" = "Antarmuka";
+
+"tunnelInterfaceName" = "Nama";
+"tunnelInterfacePrivateKey" = "Private key (Kunci Pribadi)";
+"tunnelInterfacePublicKey" = "Public key";
+"tunnelInterfaceGenerateKeypair" = "Membuat keypair";
+"tunnelInterfaceAddresses" = "Alamat";
+"tunnelInterfaceListenPort" = "Memantau port";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "Server DNS";
+"tunnelInterfaceStatus" = "Status";
+
+"tunnelSectionTitlePeer" = "Peer";
+
+"tunnelPeerPublicKey" = "Public key";
+"tunnelPeerPreSharedKey" = "Preshared key";
+"tunnelPeerEndpoint" = "Endpoint";
+"tunnelPeerPersistentKeepalive" = "Persistent keepalive";
+"tunnelPeerAllowedIPs" = "IP yang diperbolehkan";
+"tunnelPeerRxBytes" = "Data diterima";
+"tunnelPeerTxBytes" = "Data terkirim";
+"tunnelPeerLastHandshakeTime" = "Handshake Terakhir";
+"tunnelPeerExcludePrivateIPs" = "Tanpa IP private";
+
+"tunnelSectionTitleOnDemand" = "Aktivasi Sesuai Permintaan";
+
+"tunnelOnDemandCellular" = "Cellular";
+"tunnelOnDemandEthernet" = "Ethernet";
+"tunnelOnDemandWiFi" = "Wi-Fi";
diff --git a/Sources/WireGuardApp/it.lproj/Localizable.strings b/Sources/WireGuardApp/it.lproj/Localizable.strings
index d90745a..7ff6be6 100644
--- a/Sources/WireGuardApp/it.lproj/Localizable.strings
+++ b/Sources/WireGuardApp/it.lproj/Localizable.strings
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MIT
-// Copyright © 2018-2020 WireGuard LLC. All Rights Reserved.
-
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
// Generic alert action names
+
"actionOK" = "OK";
"actionCancel" = "Annulla";
"actionSave" = "Salva";
@@ -78,13 +78,13 @@
"tunnelSectionTitlePeer" = "Peer";
"tunnelPeerPublicKey" = "Chiave pubblica";
-"tunnelPeerPreSharedKey" = "Chiave condivisa";
+"tunnelPeerPreSharedKey" = "Chiave pre-condivisa";
"tunnelPeerEndpoint" = "Endpoint";
-"tunnelPeerPersistentKeepalive" = "Tieni sempre attivo";
+"tunnelPeerPersistentKeepalive" = "Keepalive permanente";
"tunnelPeerAllowedIPs" = "IP consentiti";
"tunnelPeerRxBytes" = "Dati ricevuti";
"tunnelPeerTxBytes" = "Dati inviati";
-"tunnelPeerLastHandshakeTime" = "Ultimo handshake";
+"tunnelPeerLastHandshakeTime" = "Ultima negoziazione";
"tunnelPeerExcludePrivateIPs" = "Escludi IP privati";
"tunnelSectionTitleOnDemand" = "Attivazione su richiesta";
@@ -103,18 +103,18 @@
"tunnelOnDemandExceptSSIDs (%d)" = "Tranne %d SSID";
"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@";
-"tunnelOnDemandSSIDViewTitle" = "SSIDs";
-"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
-"tunnelOnDemandNoSSIDs" = "Nessun SSIDs";
-"tunnelOnDemandSectionTitleAddSSIDs" = "Aggiungi SSIDs";
-"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Aggiungi connessione %@";
+"tunnelOnDemandSSIDViewTitle" = "SSID";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSID";
+"tunnelOnDemandNoSSIDs" = "Nessun SSID";
+"tunnelOnDemandSectionTitleAddSSIDs" = "Aggiungi SSID";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Aggiungi connessione: %@";
"tunnelOnDemandAddMessageAddNewSSID" = "Aggiungi nuovo";
"tunnelOnDemandKey" = "Su richiesta";
"tunnelOnDemandOptionOff" = "Off";
-"tunnelOnDemandOptionWiFiOnly" = "Solo Wi-1Fi";
-"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi o dati";
-"tunnelOnDemandOptionCellularOnly" = "Solo dati";
+"tunnelOnDemandOptionWiFiOnly" = "Solo Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi o cellulare";
+"tunnelOnDemandOptionCellularOnly" = "Solo cellulare";
"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi o ethernet";
"tunnelOnDemandOptionEthernetOnly" = "Solo ethernet";
@@ -122,7 +122,7 @@
"deletePeerButtonTitle" = "Elimina peer";
"deletePeerConfirmationAlertButtonTitle" = "Elimina";
-"deletePeerConfirmationAlertMessage" = "Eliminare questo peer?";
+"deletePeerConfirmationAlertMessage" = "Vuoi eliminare questo peer?";
"deleteTunnelButtonTitle" = "Elimina tunnel";
"deleteTunnelConfirmationAlertButtonTitle" = "Elimina";
@@ -253,7 +253,7 @@
"alertTunnelActivationSavedConfigFailureMessage" = "Impossibile recuperare le Informazioni del tunnel dalla configurazione salvata.";
"alertTunnelActivationBackendFailureMessage" = "Impossibile attivare la libreria del backend Go.";
"alertTunnelActivationFileDescriptorFailureMessage" = "Impossibile determinare il descrittore file del dispositivo TUN.";
-"alertTunnelActivationSetNetworkSettingsMessage" = "Impossibile applicare le Impostazioni di rete all'oggetto del tunnel.";
+"alertTunnelActivationSetNetworkSettingsMessage" = "Impossibile applicare le impostazioni di rete all'oggetto del tunnel.";
"alertTunnelActivationFailureOnDemandAddendum" = " Questo tunnel è stato attivato su richiesta, per cui potrebbe essere riattivato automaticamente dal sistema operativo. Puoi disabilitare Attiva su richiesta in questa applicazione modificando la configurazione del tunnel.";
diff --git a/Sources/WireGuardApp/ja.lproj/Localizable.strings b/Sources/WireGuardApp/ja.lproj/Localizable.strings
index 66de5b7..04d4463 100644
--- a/Sources/WireGuardApp/ja.lproj/Localizable.strings
+++ b/Sources/WireGuardApp/ja.lproj/Localizable.strings
@@ -1,8 +1,8 @@
// SPDX-License-Identifier: MIT
-// Copyright © 2018-2020 WireGuard LLC. All Rights Reserved.
-
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
// Generic alert action names
+
"actionOK" = "OK";
"actionCancel" = "キャンセル";
"actionSave" = "保存";
@@ -270,9 +270,9 @@
"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "トンネルはすでに有効になっているか、有効化処理中です";
// Tunnel management error alerts on system error
-
/* The alert message that goes with the following titles would be
one of the alertSystemErrorMessage* listed further down */
+
"alertSystemErrorOnListingTunnelsTitle" = "トンネル表示不可";
"alertSystemErrorOnAddTunnelTitle" = "トンネル作成不可";
"alertSystemErrorOnModifyTunnelTitle" = "トンネル編集不可";
diff --git a/Sources/WireGuardApp/ko.lproj/Localizable.strings b/Sources/WireGuardApp/ko.lproj/Localizable.strings
new file mode 100644
index 0000000..c3dbf18
--- /dev/null
+++ b/Sources/WireGuardApp/ko.lproj/Localizable.strings
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "예";
+"actionCancel" = "취소";
+"actionSave" = "저장";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "설정";
+"tunnelsListSwipeDeleteButtonTitle" = "삭제";
+"tunnelsListSelectButtonTitle" = "선택";
+"tunnelsListSelectAllButtonTitle" = "모두 선택";
+"tunnelsListDeleteButtonTitle" = "삭제";
+"tunnelsListSelectedTitle (%d)" = "%d 선택됨";
+
+"tunnelSectionTitleStatus" = "상태";
+"tunnelInterfacePrivateKey" = "비밀키";
+"tunnelInterfacePublicKey" = "공개키";
+"tunnelInterfaceDNS" = "DNS 서버";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "카메라 지원 안 됨";
+"alertScanQRCodeCameraUnsupportedMessage" = "이 장치로는 QR코드를 스캔할 수 없습니다";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "유효하지 않은 QR코드";
+"alertScanQRCodeInvalidQRCodeMessage" = "스캔된 QR코드는 유효한 WireGuard 설정이 아닙니다";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "유효하지 않은 코드입니다";
+
+// Settings UI
+
+"settingsViewTitle" = "설정";
diff --git a/Sources/WireGuardApp/pa.lproj/Localizable.strings b/Sources/WireGuardApp/pa.lproj/Localizable.strings
new file mode 100644
index 0000000..10a7623
--- /dev/null
+++ b/Sources/WireGuardApp/pa.lproj/Localizable.strings
@@ -0,0 +1,445 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "ਠੀਕ ਹੈ";
+"actionCancel" = "ਰੱਦ ਕਰੋ";
+"actionSave" = "ਸੰਭਾਲੋ";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "ਵਾਇਰਗਾਰਡ";
+"tunnelsListSettingsButtonTitle" = "ਸੈਟਿੰਗਾਂ";
+"tunnelsListCenteredAddTunnelButtonTitle" = "ਟਨਲ ਜੋੜੋ";
+"tunnelsListSwipeDeleteButtonTitle" = "ਹਟਾਓ";
+"tunnelsListSelectButtonTitle" = "ਚੁਣੋ";
+"tunnelsListSelectAllButtonTitle" = "ਸਭ ਚੁਣੋ";
+"tunnelsListDeleteButtonTitle" = "ਹਟਾਓ";
+"tunnelsListSelectedTitle (%d)" = "%d ਚੁਣੇ ਗਏ";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "ਨਵੀਂ ਵਾਇਰਗਾਰਡ ਟਨਲ ਬਣਾਓ";
+"addTunnelMenuImportFile" = "ਫ਼ਾਇਲ ਜਾਂ ਅਕਾਇਵ ਤੋਂ ਬਣਾਓ";
+"addTunnelMenuQRCode" = "QR ਕੋਡ ਤੋਂ ਬਣਾਓ";
+"addTunnelMenuFromScratch" = "ਮੁੱਢ ਤੋਂ ਬਣਾਓ";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "%d ਟਨਲ ਬਣਾਈਆਂ";
+"alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "ਇੰਪੋਰਟ ਕੀਤੀਆਂ ਫ਼ਾਇਲਾਂ ਤੋਂ %2$d ਟਨਲਾਂ ਵਿੱਚੋਂ %1$d ਬਣਾਈਆਂ";
+
+"alertImportedFromZipTitle (%d)" = "%d ਟਨਲ ਬਣਾਈਆਂ";
+"alertImportedFromZipMessage (%1$d of %2$d)" = "ਜ਼ਿੱਪ ਅਕਾਇਵ ਤੋਂ %2$d ਟਨਲਾਂ ਵਿੱਚੋਂ %1$d ਬਣਾਈਆਂ";
+
+"alertBadConfigImportTitle" = "ਟਨਲ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ";
+"alertBadConfigImportMessage (%@)" = "ਫ਼ਾਇਲ ‘%@’ ਵਿੱਚ ਵਾਜਬ WireGuard ਸੰਰਚਨਾ ਨਹੀਂ ਰੱਖਦੀ ਹੈ";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "ਹਟਾਓ";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "%d ਟਨਲ ਹਟਾਉਣੀ ਹੈ?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "%d ਟਨਲਾਂ ਹਟਾਉਣੀਆਂ ਹਨ?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "ਨਵੀਂ ਸੰਰਚਨਾ";
+"editTunnelViewTitle" = "ਸੰਰਚਨਾ ਨੂੰ ਸੋਧੋ";
+
+"tunnelSectionTitleStatus" = "ਸਥਿਤੀ";
+
+"tunnelStatusInactive" = "ਨਾ-ਸਰਗਰਮ";
+"tunnelStatusActivating" = "ਸਰਗਰਮ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ";
+"tunnelStatusActive" = "ਸਰਗਰਮ";
+"tunnelStatusDeactivating" = "ਨਾ-ਸਰਗਰਮ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ";
+"tunnelStatusReasserting" = "ਮੁੜ-ਸਰਗਰਮ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ";
+"tunnelStatusRestarting" = "ਮੁੜ-ਸ਼ੁਰੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ";
+"tunnelStatusWaiting" = "ਉਡੀਕ ਹੋ ਰਹੀ ਹੈ";
+
+"macToggleStatusButtonActivate" = "ਸਰਗਰਮ ਕਰੋ";
+"macToggleStatusButtonActivating" = "ਸਰਗਰਮ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…";
+"macToggleStatusButtonDeactivate" = "ਨਾ-ਸਰਗਰਮ";
+"macToggleStatusButtonDeactivating" = "ਨਾ-ਸਰਗਰਮ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…";
+"macToggleStatusButtonReasserting" = "ਮੁੜ-ਸਰਗਰਮ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…";
+"macToggleStatusButtonRestarting" = "ਮੁੜ-ਸ਼ੁਰੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…";
+"macToggleStatusButtonWaiting" = "ਉਡੀਕ ਹੋ ਰਹੀ ਹੈ…";
+
+"tunnelSectionTitleInterface" = "ਇੰਟਰਫੇਸ";
+
+"tunnelInterfaceName" = "ਨਾਂ";
+"tunnelInterfacePrivateKey" = "ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ";
+"tunnelInterfacePublicKey" = "ਪਬਲਿਕ ਕੁੰਜੀ";
+"tunnelInterfaceGenerateKeypair" = "ਕੁੰਜੀ-ਜੋੜਾ ਤਿਆਰ ਕਰੋ";
+"tunnelInterfaceAddresses" = "ਸਿਰਨਾਵੇ";
+"tunnelInterfaceListenPort" = "ਸੁਣਨ ਵਾਲੀ ਪੋਰਟ";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "DNS ਸਰਵਰ";
+"tunnelInterfaceStatus" = "ਸਥਿਤੀ";
+
+"tunnelSectionTitlePeer" = "ਪੀਅਰ";
+
+"tunnelPeerPublicKey" = "ਪਬਲਿਕ ਕੁੰਜੀ";
+"tunnelPeerPreSharedKey" = "ਤਰਜੀਹੀ ਕੁੰਜੀ";
+"tunnelPeerEndpoint" = "ਐਂਡ-ਪੁਆਇੰਟ";
+"tunnelPeerPersistentKeepalive" = "ਸਥਿਰ ਲਗਾਤਾਰ ਜਾਰੀ ਰੱਖੋ";
+"tunnelPeerAllowedIPs" = "ਮਨਜ਼ੂਰ ਕੀਤੇ IP";
+"tunnelPeerRxBytes" = "ਮਿਲਿਆ ਡਾਟਾ";
+"tunnelPeerTxBytes" = "ਭੇਜਿਆ ਡਾਟਾ";
+"tunnelPeerLastHandshakeTime" = "ਆਖਰੀ ਹੈਂਡ-ਸ਼ੇਕ";
+"tunnelPeerExcludePrivateIPs" = "ਪ੍ਰਾਈਵੇਟ IP ਅਲਹਿਦਾ ਰੱਖੋ";
+
+"tunnelSectionTitleOnDemand" = "ਲੋੜ ਸਮੇਂ ਸਰਗਰਮ ਕਰੋ";
+
+"tunnelOnDemandCellular" = "ਸੈਲੂਲਰ";
+"tunnelOnDemandEthernet" = "ਈਥਰਨੈੱਟ";
+"tunnelOnDemandWiFi" = "ਵਾਈ-ਫ਼ਾਈ";
+"tunnelOnDemandSSIDsKey" = "SSID";
+
+"tunnelOnDemandAnySSID" = "ਕੋਈ ਵੀ SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "ਸਿਰਫ਼ ਇਹੀ SSID ਹੀ";
+"tunnelOnDemandExceptTheseSSIDs" = "ਇਹਨਾਂ SSID ਤੋਂ ਬਿਨਾਂ";
+"tunnelOnDemandOnlySSID (%d)" = "ਸਿਰਫ਼ %d SSID ਹੀ";
+"tunnelOnDemandOnlySSIDs (%d)" = "ਸਿਰਫ਼ %d SSID ਹੀ";
+"tunnelOnDemandExceptSSID (%d)" = "%d SSID ਤੋਂ ਬਿਨਾਂ";
+"tunnelOnDemandExceptSSIDs (%d)" = "%d SSID ਤੋਂ ਬਿਨਾਂ";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@";
+
+"tunnelOnDemandSSIDViewTitle" = "SSID";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSID";
+"tunnelOnDemandNoSSIDs" = "ਕੋਈ SSID ਨਹੀਂ ਹੈ";
+"tunnelOnDemandSectionTitleAddSSIDs" = "SSID ਜੋੜੋ";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "ਕਨੈਕਟ ਹੋਏ ਜੋੜੋ: %@";
+"tunnelOnDemandAddMessageAddNewSSID" = "ਨਵਾਂ SSID ਜੋੜੋ";
+
+"tunnelOnDemandKey" = "ਲੋੜ ਮੁਤਾਬਕ";
+"tunnelOnDemandOptionOff" = "ਬੰਦ";
+"tunnelOnDemandOptionWiFiOnly" = "ਸਿਰਫ਼ ਵਾਈ-ਫ਼ਾਈ";
+"tunnelOnDemandOptionWiFiOrCellular" = "ਵਾਈ-ਫ਼ਾਈ ਜਾਂ ਸੈਲੂਲਰ";
+"tunnelOnDemandOptionCellularOnly" = "ਸਿਰਫ਼ ਸੈਲੂਲਰ ਹੀ";
+"tunnelOnDemandOptionWiFiOrEthernet" = "ਵਾਈ-ਫ਼ਾਈ ਜਾਂ ਈਥਰਨੈੱਟ";
+"tunnelOnDemandOptionEthernetOnly" = "ਸਿਰਫ਼ ਈਥਰਨੈੱਟ ਹੀ";
+
+"addPeerButtonTitle" = "ਪੀਅਰ ਜੋੜੋ";
+
+"deletePeerButtonTitle" = "ਪੀਅਰ ਨੂੰ ਹਟਾਓ";
+"deletePeerConfirmationAlertButtonTitle" = "ਹਟਾਓ";
+"deletePeerConfirmationAlertMessage" = "ਇਹ ਪੀਅਰ ਹਟਾਉਣਾ ਹੈ?";
+
+"deleteTunnelButtonTitle" = "ਟਨਲ ਨੂੰ ਹਟਾਓ";
+"deleteTunnelConfirmationAlertButtonTitle" = "ਹਟਾਓ";
+"deleteTunnelConfirmationAlertMessage" = "ਇਹ ਟਨਲ ਹਟਾਉਣੀ ਹੈ?";
+
+"tunnelEditPlaceholderTextRequired" = "ਲੋੜੀਂਦਾ";
+"tunnelEditPlaceholderTextOptional" = "ਚੋਣਵਾਂ";
+"tunnelEditPlaceholderTextAutomatic" = "ਆਪਣੇ-ਆਪ";
+"tunnelEditPlaceholderTextStronglyRecommended" = "ਜ਼ੋਰਦਾਰ ਸਿਫਾਰਸ਼ ਕੀਤੀ";
+"tunnelEditPlaceholderTextOff" = "ਬੰਦ";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "ਹਰ %@ ਸਕਿੰਟ";
+"tunnelHandshakeTimestampNow" = "ਹੁਣ";
+"tunnelHandshakeTimestampSystemClockBackward" = "(ਸਿਸਟਮ ਘੜੀ ਪੁੱਠੀ ਮੋੜੀ ਜਾਂਦੀ ਹੈ)";
+"tunnelHandshakeTimestampAgo (%@)" = "%@ ਪਹਿਲਾਂ";
+"tunnelHandshakeTimestampYear (%d)" = "%d ਸਾਲ";
+"tunnelHandshakeTimestampYears (%d)" = "%d ਸਾਲ";
+"tunnelHandshakeTimestampDay (%d)" = "%d ਦਿਨ";
+"tunnelHandshakeTimestampDays (%d)" = "%d ਦਿਨ";
+"tunnelHandshakeTimestampHour (%d)" = "%d ਘੰਟਾ";
+"tunnelHandshakeTimestampHours (%d)" = "%d ਘੰਟੇ";
+"tunnelHandshakeTimestampMinute (%d)" = "%d ਮਿੰਟ";
+"tunnelHandshakeTimestampMinutes (%d)" = "%d ਮਿੰਟ";
+"tunnelHandshakeTimestampSecond (%d)" = "%d ਸਕਿੰਟ";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d ਸਕਿੰਟ";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ ਘੰਟੇ";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ ਮਿੰਟ";
+
+"tunnelPeerPresharedKeyEnabled" = "ਸਮਰੱਥ ਹੈ";
+
+// Error alerts while creating / editing a tunnel configuration
+/* Alert title for error in the interface data */
+
+"alertInvalidInterfaceTitle" = "ਅਵੈਧ ਇੰਟਰਫੇਸ";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidInterfaceMessageNameRequired" = "ਇੰਟਰਫੇਸ ਦਾ ਨਾਂ ਚਾਹੀਦਾ ਹੈ";
+"alertInvalidInterfaceMessagePrivateKeyRequired" = "ਇੰਟਰਫੇਸ ਦੀ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਚਾਹੀਦੀ ਹੈ";
+"alertInvalidInterfaceMessagePrivateKeyInvalid" = "ਇੰਟਰਫੇਸ ਦੀ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ base64 ਇੰਕੋਡਿੰਗ ਵਿੱਚ 32-ਬਾਈਟ ਕੁੰਜੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ";
+"alertInvalidInterfaceMessageAddressInvalid" = "ਇੰਟਰਫੇਸ ਐਡਰੈਸ ਕਾਮਿਆਂ ਰਾਹੀਂ ਵੱਖ ਕੀਤੇ ਹੋਏ IP ਐਡਰੈਸ, ਚੋਣਵੇਂ ਵਿੱਚ CIDR ਰੂਪ ਵਿੱਚ ਸੂਚੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ";
+"alertInvalidInterfaceMessageListenPortInvalid" = "ਇੰਟਰਪੇਸ ਦੀ ਸੁਣਨ ਪੋਰਟ 0 ਤੋਂ 65535 ਵਿੱਚ ਜਾਂ ਨਾ ਦਿੱਤੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ";
+"alertInvalidInterfaceMessageMTUInvalid" = "ਇੰਟਰਫੇਸ ਦਾ MTU 576 ਤੋਂ 65535 ਦੇ ਵਿਚਾਲੇ ਜਾਂ ਨਾ ਦਿੱਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ";
+"alertInvalidInterfaceMessageDNSInvalid" = "ਇੰਟਰਫੇਸ ਦੇ DNS ਸਰਵਰ ਕਾਮਿਆਂ ਰਾਹੀਂ ਵੱਖ ਕੀਤੇ IP ਐਡਰੈਸ ਦੀ ਸੂਚੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "ਗ਼ੈਰਵਾਜਬ ਪੀਅਰ";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidPeerMessagePublicKeyRequired" = "ਪੀਅਰ ਦੀ ਪਬਲਿਕ ਕੁੰਜੀ ਚਾਹੀਦੀ ਹੈ";
+"alertInvalidPeerMessagePublicKeyInvalid" = "ਪੀਅਰ ਦੀ ਪਬਲਿਕ ਕੁੰਜੀ base64 ਇੰਕੋਡਿੰਗ ਵਿੱਚ 32-ਬਾਈਟ ਕੁੰਜੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ";
+"alertInvalidPeerMessagePreSharedKeyInvalid" = "ਪੀਅਰ ਦੀ ਪਹਿਲਾਂ-ਸਾਂਝੀ ਕੀਤੀ ਕੁੰਜੀ base64 ਇੰਕੋਡਿੰਗ ਵਿੱਚ 32-ਬਾਈਟ ਕੁੰਜੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ";
+"alertInvalidPeerMessageAllowedIPsInvalid" = "ਪੀਅਰ ਦੇ ਮਨਜ਼ੂਰ ਕੀਤੇ IP ਕਾਮਿਆਂ ਰਾਹੀਂ ਵੱਖ ਕੀਤੇ ਹੋਏ IP ਐਡਰੈਸ, ਚੋਣਵੇਂ ਵਿੱਚ CIDR ਰੂਪ ਵਿੱਚ ਸੂਚੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ";
+"alertInvalidPeerMessageEndpointInvalid" = "ਪੀਅਰ ਦਾ ਐਂਡ-ਪੁਆਇੰਟ ‘host:port’ ਜਾਂ ‘[host]:port’ ਰੂਪ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ";
+"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "ਪੀਅਰ ਦਾ ਅਟੱਲ keepalive 0 ਤੋਂ 65535 ਵਿਚਾਲੇ ਜਾਂ ਨਾ ਦਿੱਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ";
+"alertInvalidPeerMessagePublicKeyDuplicated" = "ਦੋ ਜਾਂ ਵੱਧ ਪੀਅਰਾਂ ਦੀ ਇੱਕ ਪਬਲਿਕ ਕੁੰਜੀ ਨਹੀਂ ਹੋ ਸਕਦੀ ਹੈ";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "QR ਕੋਡ ਸਕੈਨ ਕਰੋ";
+"scanQRCodeTipText" = "ਟੋਟਕਾ: `qrencode -t ansiutf8 < tunnel.conf` ਨਾਲ ਬਣਾਓ";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "ਕੈਮਰਾ ਗ਼ੈਰ-ਸਹਾਇਕ ਹੈ";
+"alertScanQRCodeCameraUnsupportedMessage" = "ਇਹ ਡਿਵਾਈਸ QR ਕੋਡ ਸਕੈਨ ਨਹੀਂ ਕਰਨ ਸਕਦਾ ਹੈ";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "ਅਯੋਗ QR ਕੋਡ";
+"alertScanQRCodeInvalidQRCodeMessage" = "ਸਕੈਨ ਕੀਤਾ QR ਕੋਡ ਵਾਜਬ ਵਾਇਰਗਾਰਡ ਸੰਰਚਨਾ ਨਹੀਂ ਹੈ";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "ਅਯੋਗ ਕੋਡ";
+"alertScanQRCodeUnreadableQRCodeMessage" = "ਸਕੈਨ ਕੀਤਾ ਕੋਡ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ";
+
+"alertScanQRCodeNamePromptTitle" = "ਸਕੈਨ ਕੀਤੀ ਟਨਲ ਲਈ ਨਾਂ ਦਿਓ";
+
+// Settings UI
+
+"settingsViewTitle" = "ਸੈਟਿੰਗਾਂ";
+
+"settingsSectionTitleAbout" = "ਇਸ ਬਾਰੇ";
+"settingsVersionKeyWireGuardForIOS" = "iOS ਲਈ ਵਾਇਰਗਾਰਡ";
+"settingsVersionKeyWireGuardGoBackend" = "ਵਾਇਰਗਾਰਡ ਗੋ ਬੈਕਐਂਡ";
+
+"settingsSectionTitleExportConfigurations" = "ਸੰਰਚਨਾ ਬਰਾਮਦ ਕਰੋ";
+"settingsExportZipButtonTitle" = "ਜ਼ਿੱਪ ਅਕਾਇਵ ਬਰਾਮਦ ਕਰੋ";
+
+"settingsSectionTitleTunnelLog" = "ਲਾਗ";
+"settingsViewLogButtonTitle" = "ਲਾਗ ਵੇਖੋ";
+
+// Log view
+
+"logViewTitle" = "ਲਾਗ";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "ਲਾਗ ਬਰਾਮਦ ਕਰਨਾ ਅਸਫ਼ਲ ਹੈ";
+"alertUnableToRemovePreviousLogMessage" = "ਪਹਿਲਾਂ-ਮੌਜੂਦਾ ਲਾਗ ਨੂੰ ਸਾਫ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ";
+
+"alertUnableToWriteLogTitle" = "ਲਾਗ ਬਰਾਮਦ ਕਰਨਾ ਅਸਫ਼ਲ ਹੈ";
+"alertUnableToWriteLogMessage" = "ਲਾਗ ਫ਼ਾਇਲ ਵਿੱਚ ਲਿਖਣ ਲਈ ਅਸਮਰੱਥ ਹੈ";
+
+// Zip import / export error alerts
+
+"alertCantOpenInputZipFileTitle" = "ਜ਼ਿਪ ਅਕਾਇਵ ਪੜ੍ਹਨ ਲਈ ਅਸਮਰੱਥ ਹੈ";
+"alertCantOpenInputZipFileMessage" = "ਜ਼ਿੱਪ ਅਕਾਇਵ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।";
+
+"alertCantOpenOutputZipFileForWritingTitle" = "ਜ਼ਿੱਪ ਅਕਾਇਵ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹੈ";
+"alertCantOpenOutputZipFileForWritingMessage" = "ਲਿਖਣ ਲਈ ਜ਼ਿੱਪ ਫ਼ਾਇਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ।";
+
+"alertBadArchiveTitle" = "ਜ਼ਿੱਪ ਅਕਾਇਵ ਪੜ੍ਹਨ ਲਈ ਅਸਮਰੱਥ";
+"alertBadArchiveMessage" = "ਖ਼ਰਾਬ ਜਾਂ ਨਿਕਾਰਾ ਜ਼ਿੱਪ ਅਕਾਇਵ ਹੈ।";
+
+"alertNoTunnelsToExportTitle" = "ਬਰਾਮਦ ਕਰਨ ਲਈ ਕੁਝ ਨਹੀਂ ਹੈ";
+"alertNoTunnelsToExportMessage" = "ਬਰਾਮਦ ਕਰਨ ਲਈ ਕੋਈ ਟਨਲ ਨਹੀਂ ਹੈ";
+
+"alertNoTunnelsInImportedZipArchiveTitle" = "ਜ਼ਿੱਪ ਅਕਾਇਵ ਵਿੱਚ ਕੋਈ ਟਨਲ ਨਹੀਂ ਹੈ";
+"alertNoTunnelsInImportedZipArchiveMessage" = "ਜ਼ਿੱਪ ਅਕਾਇਵ ਵਿੱਚ ਕੋਈ .conf ਟਨਲ ਫ਼ਾਇਲਾਂ ਨਹੀਂ ਲੱਭੀਆਂ।";
+
+// Conf import error alerts
+
+"alertCantOpenInputConfFileTitle" = "ਫ਼ਾਇਲ ਤੋਂ ਦਰਾਮਦ ਕਰਨ ਲਈ ਅਸਮਰੱਥ";
+"alertCantOpenInputConfFileMessage (%@)" = "ਫ਼ਾਇਲ ‘%@’ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।";
+
+// Tunnel management error alerts
+
+"alertTunnelActivationFailureTitle" = "ਸਰਗਰਮ ਕਰਨਾ ਅਸਫ਼ਲ ਹੈ";
+"alertTunnelActivationFailureMessage" = "ਟਨਲ ਨੂੰ ਸਰਗਰਮ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਇੰਟਰਨੈੱਟ ਨਾਲ ਕਨੈਕਟ ਹੈ।";
+"alertTunnelActivationSavedConfigFailureMessage" = "ਸੰਭਾਲੀ ਸੰਰਚਨਾ ਤੋਂ ਟਨਲ ਜਾਣਕਾਰੀ ਲੈਣ ਲਈ ਅਸਮਰੱਥ ਹੈ।";
+"alertTunnelActivationBackendFailureMessage" = "Go ਬੈਕਐਂਡ ਲਾਇਬਰੇਰੀ ਚਾਲੂ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ।";
+"alertTunnelActivationFileDescriptorFailureMessage" = "TUN ਡਿਵਾਈਸ ਫ਼ਾਇਲ ਵਰਣਨ ਪਤਾ ਲਗਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹੈ।";
+"alertTunnelActivationSetNetworkSettingsMessage" = "ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ ਟਨਲ ਆਬਜੈਕਟ ਉੱਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ।";
+
+"alertTunnelActivationFailureOnDemandAddendum" = " ਇਹ ਟਨਲ ਲਈ ਲੋੜ ਮਤੁਾਬਕ ਸਰਗਰਮ ਕਰਨ ਲਈ ਸਮਰੱਥ ਕੀਤਾ ਹੈ, ਇਸਕਰਕੇ ਇਹ ਟਨਲ ਨੂੰ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਵਲੋਂ ਆਪਣੇ-ਆਪ ਹੀ ਮੁੜ-ਸਰਗਰਮ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਤੁਸੀਂ ਟਨਲ ਸੰਰਚਨਾ ਨੂੰ ਸੋਧ ਕੇ ਇਸ ਐਪ ਵਿੱਚ ਲੋੜ ਮੁਤਾਬਕ ਸਰਗਰਮ ਨੂੰ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ।";
+
+"alertTunnelDNSFailureTitle" = "DNS ਹੱਲ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ";
+"alertTunnelDNSFailureMessage" = "ਇੱਕ ਜਾਂ ਵੱਧ ਐਂਡ-ਪੁਆਇੰਟ ਡੋਮੇਨ ਹੱਲ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕੀਆਂ।";
+
+"alertTunnelNameEmptyTitle" = "ਕੋਈ ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ";
+"alertTunnelNameEmptyMessage" = "ਖਾਲੀ ਨਾਂ ਨਾਲ ਟਨਲ ਨਹੀਂ ਬਣਾਈ ਜਾ ਸਕਦੀ ਹੈ";
+
+"alertTunnelAlreadyExistsWithThatNameTitle" = "ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ";
+"alertTunnelAlreadyExistsWithThatNameMessage" = "ਉਸ ਨਾਂ ਨਾਲ ਟਨਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ";
+
+"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "ਸਰਗਰਮ ਕਰਨਾ ਜਾਰੀ ਹੈ";
+"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "ਟਨਲ ਪਹਿਲਾਂ ਹੀ ਸਰਗਰਮ ਹੈ ਜਾਂ ਸਰਗਰਮ ਕਰਨ ਦੀ ਕਾਰਵਾਈ ਜਾਰੀ ਹੈ";
+
+// Tunnel management error alerts on system error
+/* The alert message that goes with the following titles would be
+ one of the alertSystemErrorMessage* listed further down */
+
+"alertSystemErrorOnListingTunnelsTitle" = "ਟਨਲਾਂ ਦੀ ਸੂਚੀ ਦਿਖਾਉਣ ਲਈ ਅਸਮਰੱਥ";
+"alertSystemErrorOnAddTunnelTitle" = "ਟਨਲ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ";
+"alertSystemErrorOnModifyTunnelTitle" = "ਟਨਲ ਸੋਧਣ ਲਈ ਅਸਮਰੱਥ";
+"alertSystemErrorOnRemoveTunnelTitle" = "ਟਨਲ ਹਟਾਉਣ ਲਈ ਅਸਮਰੱਥ";
+
+/* The alert message for this alert shall include
+ one of the alertSystemErrorMessage* listed further down */
+"alertTunnelActivationSystemErrorTitle" = "ਸਰਗਰਮ ਕਰਨਾ ਅਸਫ਼ਲ ਹੈ";
+"alertTunnelActivationSystemErrorMessage (%@)" = "ਟਨਲ ਨੂੰ ਸਰਗਰਮ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। %@";
+
+/* alertSystemErrorMessage* messages */
+"alertSystemErrorMessageTunnelConfigurationInvalid" = "ਸੰਰਚਨਾ ਅਵੈਧ ਹੈ।";
+"alertSystemErrorMessageTunnelConfigurationDisabled" = "ਸੰਰਚਨਾ ਅਸਮਰੱਥ ਹੈ।";
+"alertSystemErrorMessageTunnelConnectionFailed" = "ਕਨੈਕਸ਼ਨ ਅਸਫ਼ਲ ਹੈ।";
+"alertSystemErrorMessageTunnelConfigurationStale" = "ਸੰਰਚਨਾ ਅਟਕ ਗਈ ਹੈ।";
+"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "ਸੰਰਚਨਾ ਪੜ੍ਹਨ ਜਾਂ ਲਿਖਣ ਲਈ ਅਸਫ਼ਲ ਹੈ।";
+"alertSystemErrorMessageTunnelConfigurationUnknown" = "ਅਣਪਛਾਤੀ ਸਿਸਟਮ ਗਲਤੀ ਹੈ।";
+
+// Mac status bar menu / pulldown menu / main menu
+
+"macMenuNetworks (%@)" = "ਨੈੱਟਵਰਕ: %@";
+"macMenuNetworksNone" = "ਨੈੱਟਵਰਕ: ਕੋਈ ਨਹੀਂ";
+
+"macMenuTitle" = "ਵਾਇਰਗਾਰਡ";
+"macMenuManageTunnels" = "ਟਨਲ ਦਾ ਇੰਤਜ਼ਾਮ ਕਰੋ";
+"macMenuImportTunnels" = "ਫ਼ਾਇਲ ਤੋਂ ਟਨਲ ਦਰਾਮਦ ਕਰੋ…";
+"macMenuAddEmptyTunnel" = "…ਖਾਲੀ ਟਨਲ ਜੋੜੋ";
+"macMenuViewLog" = "ਲਾਗ ਵੇਖੋ";
+"macMenuExportTunnels" = "ਟਨਲ ਨੂੰ ਜ਼ਿੱਪ ਵਜੋਂ ਬਰਾਮਦ ਕਰੋ…";
+"macMenuAbout" = "ਵਾਇਰਗਾਰਡ ਬਾਰੇ";
+"macMenuQuit" = "ਵਾਇਰਗਾਰਡ ਚੋਂ ਬਾਹਰ ਜਾਓ";
+
+"macMenuHideApp" = "ਵਾਇਰਗਾਰਡ ਲੁਕਾਓ";
+"macMenuHideOtherApps" = "ਹੋਰ ਲੁਕਾਓ";
+"macMenuShowAllApps" = "ਸਭ ਵੇਖਾਓ";
+
+"macMenuFile" = "ਫ਼ਾਇਲ";
+"macMenuCloseWindow" = "ਵਿੰਡੋ ਨੂੰ ਬੰਦ ਕਰੋ";
+
+"macMenuEdit" = "ਸੋਧੋ";
+"macMenuCut" = "ਕੱਟੋ";
+"macMenuCopy" = "ਕਾਪੀ ਕਰੋ";
+"macMenuPaste" = "ਚੇਪੋ";
+"macMenuSelectAll" = "ਸਭ ਚੁਣੋ";
+
+"macMenuTunnel" = "ਟਨਲ";
+"macMenuToggleStatus" = "ਸਥਿਤੀ ਪਲਟੋ";
+"macMenuEditTunnel" = "ਸੋਧੋ…";
+"macMenuDeleteSelected" = "ਚੁਣੇ ਨੂੰ ਹਟਾਓ";
+
+"macMenuWindow" = "ਵਿੰਡੋ";
+"macMenuMinimize" = "ਘੱਟੋ-ਘੱਟ";
+"macMenuZoom" = "ਜ਼ੂਮ";
+
+// Mac manage tunnels window
+
+"macWindowTitleManageTunnels" = "ਵਾਇਰਗਰਾਡ ਟਨਲਾਂ ਦਾ ਇੰਤਜ਼ਾਮ ਕਰੋ";
+
+"macDeleteTunnelConfirmationAlertMessage (%@)" = "ਕੀ ਤੁਸੀਂ ‘%@’ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?";
+"macDeleteMultipleTunnelsConfirmationAlertMessage (%d)" = "ਕੀ ਤੁਸੀਂ %d ਟਨਲਾਂ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?";
+"macDeleteTunnelConfirmationAlertInfo" = "ਤੁਸੀ ਇਹ ਕਾਰਵਾਈ ਵਾਪਸ ਨਹੀਂ ਲੈ ਸਕਦੇ ਹੋ।";
+"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "ਹਟਾਓ";
+"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "ਰੱਦ ਕਰੋ";
+"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "ਹਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ…";
+
+"macButtonImportTunnels" = "ਫ਼ਾਇਲ ਤੋਂ ਟਨਲ ਦਰਾਮਦ ਕਰੋ";
+"macSheetButtonImport" = "ਦਰਾਮਦ";
+
+"macNameFieldExportLog" = "ਲਾਗ ਸੰਭਾਲੋ:";
+"macSheetButtonExportLog" = "ਸੰਭਾਲੋ";
+
+"macNameFieldExportZip" = "ਟਨਲ ਬਰਾਮਦ ਕਰੋ:";
+"macSheetButtonExportZip" = "ਸੰਭਾਲੋ";
+
+"macButtonDeleteTunnels (%d)" = "%d ਟਨਲਾਂ ਹਟਾਓ";
+
+"macButtonEdit" = "ਸੋਧੋ";
+
+// Mac detail/edit view fields
+
+"macFieldKey (%@)" = "%@:";
+"macFieldOnDemand" = "ਲੋੜ ਮੁਤਾਬਕ:";
+"macFieldOnDemandSSIDs" = "SSID:";
+
+// Mac status display
+
+"macStatus (%@)" = "ਸਥਿਤੀ: %@";
+
+// Mac editing config
+
+"macEditDiscard" = "ਖਾਰਜ ਕਰੋ";
+"macEditSave" = "ਸੰਭਾਲੋ";
+
+"macAlertNameIsEmpty" = "ਨਾਂ ਚਾਹੀਦਾ ਹੈ।";
+"macAlertDuplicateName (%@)" = "ਨਾਂ ‘%@’ ਨਾਲ ਟਨਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।";
+
+"macAlertInvalidLine (%@)" = "ਗ਼ੈਰਵਾਜਬ ਲਾਈਨ: ‘%@’।";
+
+"macAlertNoInterface" = "ਸੰਰਚਨਾ ਵਿੱਚ ‘Interface’ ਭਾਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।";
+"macAlertMultipleInterfaces" = "ਸੰਰਚਨਾ ਵਿੱਚ ਸਿਰਫ਼ ਇੱਕ ਹੀ ‘Interface’ ਭਾਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।";
+"macAlertPrivateKeyInvalid" = "ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਗ਼ੈਰਵਾਜਬ ਹੈ।";
+"macAlertListenPortInvalid (%@)" = "ਸੁਣਨ ਵਾਲੀ ਪੋਰਟ ‘%@’ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ।";
+"macAlertAddressInvalid (%@)" = "ਸਿਰਨਾਵਾਂ ‘%@’ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ।";
+"macAlertDNSInvalid (%@)" = "DNS ‘%@’ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ।";
+"macAlertMTUInvalid (%@)" = "MTU ‘%@’ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ।";
+
+"macAlertUnrecognizedInterfaceKey (%@)" = "ਇੰਟਰਫੇਸ ਵਿੱਚ ਬੇਪਛਾਣ ਸ਼ਬਦ ‘%@’";
+"macAlertInfoUnrecognizedInterfaceKey" = "ਵਾਜਬ ਸ਼ਬਦ ਹਨ: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ ਅਤੇ ‘MTU’।";
+
+"macAlertPublicKeyInvalid" = "ਪਬਲਿਕ ਕੁੰਜੀ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ";
+"macAlertPreSharedKeyInvalid" = "ਪ੍ਰੀ-ਸ਼ੇਅਰ ਕੀਤੀ ਕੁੰਜੀ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ।";
+"macAlertAllowedIPInvalid (%@)" = "ਮਨਜ਼ੂਰ ਕੀਤਾ IP ‘%@’ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ";
+"macAlertEndpointInvalid (%@)" = "ਐਂਡ-ਪੁਆਇੰਟ ‘%@’ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ";
+"macAlertPersistentKeepliveInvalid (%@)" = "Persistent keepalive ਮੁੱਲ ‘%@’ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ";
+
+"macAlertUnrecognizedPeerKey (%@)" = "ਪੀਅਰ ਵਿੱਚ ਬੇਪਛਾਣ ਸ਼ਬਦ ‘%@’";
+"macAlertInfoUnrecognizedPeerKey" = "ਵਾਜਬ ਸ਼ਬਦ ਹਨ: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ ਅਤੇ ‘PersistentKeepalive’";
+
+"macAlertMultipleEntriesForKey (%@)" = "ਸ਼ਬਦ ‘%@’ ਲਈ ਹਰ ਭਾਗ ਵਿੱਚ ਇੱਕ ਹੀ ਐਂਟਰੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ";
+
+// Mac about dialog
+
+"macAppVersion (%@)" = "ਐਪ ਵਰਜ਼ਨ: %@";
+"macGoBackendVersion (%@)" = "Go ਬੈਕਐਂਡ ਵਰਜ਼ਨ: %@";
+
+// Privacy
+
+"macExportPrivateData" = "ਟਨਲ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀਆਂ ਬਰਾਮਦ ਕਰੋ";
+"macViewPrivateData" = "ਟਨਲ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀਆਂ ਵੇਖੋ";
+"iosExportPrivateData" = "ਟਨਲ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀਆਂ ਨੂੰ ਬਰਾਮਦ ਕਰਨ ਲਈ ਪਰਮਾਣਕਿਤਾ।";
+"iosViewPrivateData" = "ਟਨਲ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀਆਂ ਨੂੰ ਵੇਖਣ ਲਈ ਪਰਮਾਣਕਿਤਾ।";
+
+// Mac alert
+
+"macConfirmAndQuitAlertMessage" = "ਕੀ ਤੁਸੀਂ ਟਨਲ ਮੈਨੇਜਰ ਨੂੰ ਬੰਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਜਾਂ ਪੂਰੇ ਵਾਇਰਗਾਰਡ ਤੋਂ ਬਾਹਰ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ?";
+"macConfirmAndQuitAlertInfo" = "ਜੇ ਤੁਸੀਂ ਟਨਲ ਮੈਨੇਜਰ ਬੰਦ ਕਰਦੇ ਹੋ ਤਾਂ ਵਾਇਰਗਾਰਡ ਮੇਨੂ ਪੱਟੀ ਆਈਕਾਨ ਵਿੱਚ ਉਪਲੱਬਧ ਰਹੇਗਾ।";
+"macConfirmAndQuitInfoWithActiveTunnel (%@)" = "ਜੇ ਤੁਸੀਂ ਟਨਲ ਮੈਨੇਜਰ ਬੰਦ ਕਰਦੇ ਹੋ ਤਾਂ ਵਾਇਰਗਾਰਡ ਮੇਨੂ ਪੱਟੀ ਆਈਕਾਨ ਵਿੱਚ ਉਪਲੱਬਧ ਰਹੇਗਾ।\n\nਯਾਦ ਰੱਕੋ ਕਿ ਜੇ ਤੁਸੀਂ ਪੂਰੇ ਵਾਇਰਗਾਰਡ ਨੂੰ ਬੰਦ ਕਰਦੇ ਹੋ ਤਾਂ ਪੂਰੀ ਸਰਗਰਮ ਟਨਲ ('%@') ਫੇਰ ਵੀ ਸਰਗਰਮ ਰਹੇਗਾ, ਜਦੋਂ ਤੱਕ ਕਿ ਤੁਸੀਂ ਇਸ ਨੂੰ ਐਪਲੀਕੇਸ਼ਨ ਤੋਂ ਜਾਂ ਸਿਸਟਮ ਪਸੰਦਾਂ (System Preferences) ਵਿੱਚ ਨੈੱਟਵਰਕ (Network) ਪੈਨਲ ਰਾਹੀਂ ਨਾ-ਸਰਗਰਮ ਕਰ ਦਿੰਦੇ ਹੋ।";
+"macConfirmAndQuitAlertQuitWireGuard" = "ਵਾਇਰਗਾਰਡ ਚੋਂ ਬਾਹਰ ਜਾਓ";
+"macConfirmAndQuitAlertCloseWindow" = "ਟਨਲ ਮੈਨੇਜਰ ਬੰਦ ਕਰੋ";
+
+"macAppExitingWithActiveTunnelMessage" = "ਵਾਇਰਗਾਰਡ ਸਰਗਰਮ ਟਨਲ ਨਾਲ ਮੌਜੂਦ ਹੈ";
+"macAppExitingWithActiveTunnelInfo" = "ਟਨਲ ਬੰਦ ਕਰਨ ਦੇ ਬਾਅਦ ਵੀ ਸਰਗਰਮ ਰਹੇਗੀ। ਤੁਸੀਂ ਇਸ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਮੁੜ ਖੋਲ੍ਹ ਕੇ ਜਾਂ ਸਿਸਟਮ ਪਸੰਦਾਂ (System Preferences) ਵਿੱਚੋਂ ਨੈੱਟਵਰਕ ਪੈਨਲ (Network) ਰਾਹੀਂ ਇਹਨੂੰ ਅਸਮਰੱਥ ਕਰ ਸਕਦੇ ਹੋ।";
+
+// Mac tooltip
+
+"macToolTipEditTunnel" = "ਟਨਲ ਨੂੰ ਸੋਧੋ (⌘E)";
+"macToolTipToggleStatus" = "ਸਥਿਤੀ ਪਲਟੋ (⌘T)";
+
+// Mac log view
+
+"macLogColumnTitleTime" = "ਸਮਾਂ";
+"macLogColumnTitleLogMessage" = "ਲਾਗ ਸੁਨੇਹੇ";
+"macLogButtonTitleClose" = "ਬੰਦ ਕਰੋ";
+"macLogButtonTitleSave" = "ਸੰਭਾਲੋ…";
+
+// Mac unusable tunnel view
+
+"macUnusableTunnelMessage" = "ਇਸ ਟਨਲ ਲਈ ਸੰਰਚਨਾ ਨੂੰ ਕੀ-ਚੇਨ ਵਿੱਚ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ।";
+"macUnusableTunnelInfo" = "ਜੇ ਇਹ ਟਨਲ ਨੂੰ ਹੋਰ ਵਰਤੋਂਕਾਰ ਵਜੋਂ ਬਣਾਇਆ ਗਿਆ ਤਾਂ ਸਿਰਫ਼ ਉਹੀ ਵਰਤੋਂਕਾਰ ਇਸ ਟਨਲ ਨੂੰ ਵੇਖ, ਸੋਧ ਜਾਂ ਸਰਗਰਮ ਕਰ ਸਕਦਾ ਹੈ।";
+"macUnusableTunnelButtonTitleDeleteTunnel" = "ਟਨਲ ਨੂੰ ਹਟਾਓ";
+
+// Mac App Store updating alert
+
+"macAppStoreUpdatingAlertMessage" = "App Store ਵਾਇਰਗਾਰਡ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ";
+"macAppStoreUpdatingAlertInfoWithOnDemand (%@)" = "ਟਨਲ ‘%@’ ਲਈ ਲੋੜ ਮੁਤਾਬਕ ਅਸਮਰੱਥ ਕਰੋ, ਇਸ ਨੂੰ ਨਾ-ਸਰਗਰਮ ਕਰੋ ਅਤੇ ਤਦ App Store ਰਾਹੀਂ ਅੱਪਡੇਟ ਕਰਨਾ ਜਾਰੀ ਰੱਖੋ।";
+"macAppStoreUpdatingAlertInfoWithoutOnDemand (%@)" = "ਟਨਲ ‘%@’ ਨੂੰ ਨਾ-ਸਰਗਰਮ ਕਰੋ ਅਤੇ ਤਦ App Store ਰਾਹੀਂ ਅੱਪਡੇਟ ਕਰਨਾ ਜਾਰੀ ਰੱਖੋ।";
+
+// Donation
+
+"donateLink" = "♥ ਵਾਇਰਗਾਰਡ ਪਰੋਜੈਕਟ ਨੂੰ ਦਾਨ ਦਿਓ";
diff --git a/Sources/WireGuardApp/pl.lproj/Localizable.strings b/Sources/WireGuardApp/pl.lproj/Localizable.strings
new file mode 100644
index 0000000..554de77
--- /dev/null
+++ b/Sources/WireGuardApp/pl.lproj/Localizable.strings
@@ -0,0 +1,190 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "OK";
+"actionCancel" = "Anuluj";
+"actionSave" = "Zapisz";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "Ustawienia";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Dodaj tunel";
+"tunnelsListSwipeDeleteButtonTitle" = "Usuń";
+"tunnelsListSelectButtonTitle" = "Wybierz";
+"tunnelsListSelectAllButtonTitle" = "Wybierz wszystko";
+"tunnelsListDeleteButtonTitle" = "Usuń";
+"tunnelsListSelectedTitle (%d)" = "%d wybrano";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "Dodaj nowy tunel WireGuard";
+"addTunnelMenuImportFile" = "Utwórz z pliku lub archiwum";
+"addTunnelMenuQRCode" = "Utwórz za pomocą kodu QR";
+"addTunnelMenuFromScratch" = "Utwórz od podstaw";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "Usunąć %d tunel?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "Usunąć %d tunele(i)?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "Nowa konfiguracja";
+"editTunnelViewTitle" = "Edytuj konfigurację";
+
+"tunnelSectionTitleStatus" = "Status";
+
+"tunnelInterfaceName" = "Nazwa";
+"tunnelInterfacePrivateKey" = "Klucz prywatny";
+"tunnelInterfacePublicKey" = "Klucz publiczny";
+"tunnelInterfaceAddresses" = "Adresy";
+"tunnelInterfaceListenPort" = "Port nasłuchu";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "Serwery DNS";
+"tunnelInterfaceStatus" = "Status";
+
+"tunnelPeerPublicKey" = "Klucz publiczny";
+"tunnelPeerAllowedIPs" = "Dozwolone adresy IP";
+"tunnelOnDemandEthernet" = "Ethernet";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@";
+
+"tunnelOnDemandKey" = "Na żądanie";
+"tunnelOnDemandOptionWiFiOnly" = "Tylko Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi i dane sieci komórkowej";
+"tunnelOnDemandOptionCellularOnly" = "Tylko dane sieci komórkowej";
+"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi lub sieć ethernet";
+"tunnelOnDemandOptionEthernetOnly" = "Tylko sieć ethernet";
+"deletePeerConfirmationAlertButtonTitle" = "Usuń";
+
+"deleteTunnelButtonTitle" = "Usuń tunel";
+"deleteTunnelConfirmationAlertButtonTitle" = "Usuń";
+"deleteTunnelConfirmationAlertMessage" = "Usunąć ten tunel?";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "co %@ sekund";
+"tunnelHandshakeTimestampAgo (%@)" = "%@ temu";
+"tunnelHandshakeTimestampYear (%d)" = "%d rok";
+"tunnelHandshakeTimestampYears (%d)" = "%d lat/lata";
+"tunnelHandshakeTimestampDay (%d)" = "%d dzień";
+"tunnelHandshakeTimestampDays (%d)" = "%d dni";
+"tunnelHandshakeTimestampHour (%d)" = "%d godzina";
+"tunnelHandshakeTimestampHours (%d)" = "%d godzin";
+"tunnelHandshakeTimestampMinute (%d)" = "%d minuta";
+"tunnelHandshakeTimestampMinutes (%d)" = "%d minut";
+"tunnelHandshakeTimestampSecond (%d)" = "%d sekunda";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d sekund";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ godziny";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ minuty";
+
+"tunnelPeerPresharedKeyEnabled" = "włączony";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "Skanuj kod QR";
+"scanQRCodeTipText" = "Wskazówka: wygeneruj za pomocą `qrencode -t ansiutf8 < tunnel.conf`";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "Nieprawidłowy kod QR";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "Nieprawidłowy kod";
+
+// Settings UI
+
+"settingsViewTitle" = "Ustawienia";
+
+"settingsSectionTitleAbout" = "O programie";
+"settingsVersionKeyWireGuardForIOS" = "WireGuard dla iOS";
+
+"settingsSectionTitleTunnelLog" = "Log";
+"settingsViewLogButtonTitle" = "Wyświetl log";
+
+// Log view
+
+"logViewTitle" = "Log";
+
+"alertCantOpenOutputZipFileForWritingTitle" = "Nie można utworzyć archiwum ZIP";
+"alertCantOpenOutputZipFileForWritingMessage" = "Nie udało się otworzyć pliku ZIP do zapisu.";
+
+"alertBadArchiveTitle" = "Nie można odczytać archiwum ZIP";
+"alertBadArchiveMessage" = "Niewłaściwe lub uszkodzone archiwum ZIP.";
+
+"alertNoTunnelsToExportTitle" = "Nie ma nic do wyeksportowania";
+"alertNoTunnelsToExportMessage" = "Nie ma żadnych tuneli do wyeksportowania";
+
+"alertNoTunnelsInImportedZipArchiveTitle" = "Brak tuneli w archiwum ZIP";
+
+"alertTunnelAlreadyExistsWithThatNameTitle" = "Nazwa już istnieje";
+"alertTunnelAlreadyExistsWithThatNameMessage" = "Tunel o tej nazwie już istnieje";
+"alertSystemErrorOnAddTunnelTitle" = "Nie można utworzyć tunelu";
+"alertSystemErrorOnModifyTunnelTitle" = "Nie można zmodyfikować tunelu";
+"alertSystemErrorOnRemoveTunnelTitle" = "Nie można usunąć tunelu";
+
+"macMenuTitle" = "WireGuard";
+"macMenuImportTunnels" = "Importuj tunel(e) z pliku…";
+"macMenuAddEmptyTunnel" = "Dodaj pusty tunel…";
+"macMenuViewLog" = "Wyświetl log";
+"macMenuExportTunnels" = "Wyeksportuj tunele do pliku ZIP…";
+"macMenuAbout" = "Informacje o WireGuard";
+"macMenuQuit" = "Wyjdź z programu WireGuard";
+
+"macMenuHideApp" = "Ukryj program WireGuard";
+
+"macMenuFile" = "Plik";
+"macMenuCloseWindow" = "Zamknij okno";
+
+"macMenuEdit" = "Edycja";
+"macMenuCut" = "Wytnij";
+"macMenuCopy" = "Kopiuj";
+"macMenuPaste" = "Wklej";
+"macMenuSelectAll" = "Wybierz wszystko";
+
+"macMenuTunnel" = "Tunel";
+"macMenuEditTunnel" = "Edytuj…";
+"macMenuDeleteSelected" = "Usuń wybrane";
+
+// Mac manage tunnels window
+
+"macWindowTitleManageTunnels" = "Zarządzaj tunelami WireGuard";
+
+"macDeleteTunnelConfirmationAlertMessage (%@)" = "Czy na pewno chcesz usunąć ‘%@’?";
+"macDeleteMultipleTunnelsConfirmationAlertMessage (%d)" = "Czy na pewno chcesz usunąć %d tunele(i)?";
+"macDeleteTunnelConfirmationAlertInfo" = "Nie możesz cofnąć tej czynności.";
+"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Usuń";
+"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Anuluj";
+"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Usuwanie…";
+
+"macButtonImportTunnels" = "Importuj tunel(e) z pliku";
+
+"macNameFieldExportLog" = "Zapisz log do:";
+"macSheetButtonExportLog" = "Zapisz";
+
+"macNameFieldExportZip" = "Wyeksportuj tunele do:";
+"macSheetButtonExportZip" = "Zapisz";
+
+"macButtonEdit" = "Edytuj";
+
+// Mac detail/edit view fields
+
+"macFieldKey (%@)" = "%@:";
+"macEditSave" = "Zapisz";
+
+"macAlertNameIsEmpty" = "Nazwa jest wymagana";
+"macAlertPrivateKeyInvalid" = "Klucz prywatny jest nieprawidłowy.";
+"macAlertAddressInvalid (%@)" = "Adres \"%@\" jest nieprawidłowy.";
+"macAlertMTUInvalid (%@)" = "Wartość MTU ‘%@’ jest nieprawidłowa.";
+
+"macAlertPublicKeyInvalid" = "Klucz publiczny jest nieprawidłowy";
+
+// Mac about dialog
+
+"macAppVersion (%@)" = "Wersja aplikacji: %@";
+"macGoBackendVersion (%@)" = "Wersja backend'u Go: %@";
+"macConfirmAndQuitAlertQuitWireGuard" = "Wyjdź z programu WireGuard";
+
+// Mac tooltip
+
+"macToolTipEditTunnel" = "Edytuj tunel (⌘E)";
+"macToolTipToggleStatus" = "Przełącz stan (⌘T)";
+"macLogButtonTitleClose" = "Zamknij";
+"macLogButtonTitleSave" = "Zapisz…";
+"macUnusableTunnelButtonTitleDeleteTunnel" = "Usuń tunel";
diff --git a/Sources/WireGuardApp/ro.lproj/Localizable.strings b/Sources/WireGuardApp/ro.lproj/Localizable.strings
new file mode 100644
index 0000000..7b976bd
--- /dev/null
+++ b/Sources/WireGuardApp/ro.lproj/Localizable.strings
@@ -0,0 +1,445 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "OK";
+"actionCancel" = "Anulare";
+"actionSave" = "Salvare";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "Setări";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Adaugă un tunel";
+"tunnelsListSwipeDeleteButtonTitle" = "Ștergere";
+"tunnelsListSelectButtonTitle" = "Selectare";
+"tunnelsListSelectAllButtonTitle" = "Selectează tot";
+"tunnelsListDeleteButtonTitle" = "Ștergere";
+"tunnelsListSelectedTitle (%d)" = "%d selectat";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "Adaugă un nou tunel WireGuard";
+"addTunnelMenuImportFile" = "Creare din fișier sau arhivă";
+"addTunnelMenuQRCode" = "Creare din cod QR";
+"addTunnelMenuFromScratch" = "Creare de la zero";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "S-au creat %d tuneluri";
+"alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "S-au creat %1$d din %2$d tuneluri din fișiere importate";
+
+"alertImportedFromZipTitle (%d)" = "S-au creat %d tuneluri";
+"alertImportedFromZipMessage (%1$d of %2$d)" = "S-au creat %1$d din %2$d tuneluri din arhiva zip";
+
+"alertBadConfigImportTitle" = "Tunelul nu poate fi importat";
+"alertBadConfigImportMessage (%@)" = "Fișierul „%@” nu conține o configurație WireGuard validă";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "Ștergere";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "Ștergi %d tunel?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "Ștergi %d tunele?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "Configurație nouă";
+"editTunnelViewTitle" = "Editare configurație";
+
+"tunnelSectionTitleStatus" = "Stare";
+
+"tunnelStatusInactive" = "Inactiv";
+"tunnelStatusActivating" = "Se activează";
+"tunnelStatusActive" = "Activ";
+"tunnelStatusDeactivating" = "Se dezactivează";
+"tunnelStatusReasserting" = "Se reactivează";
+"tunnelStatusRestarting" = "Se repornește";
+"tunnelStatusWaiting" = "În așteptare";
+
+"macToggleStatusButtonActivate" = "Activare";
+"macToggleStatusButtonActivating" = "Se activează…";
+"macToggleStatusButtonDeactivate" = "Dezactivare";
+"macToggleStatusButtonDeactivating" = "Se dezactivează…";
+"macToggleStatusButtonReasserting" = "Se reactivează…";
+"macToggleStatusButtonRestarting" = "Se repornește…";
+"macToggleStatusButtonWaiting" = "În așteptare…";
+
+"tunnelSectionTitleInterface" = "Interfață";
+
+"tunnelInterfaceName" = "Nume";
+"tunnelInterfacePrivateKey" = "Cheie privată";
+"tunnelInterfacePublicKey" = "Cheie publică";
+"tunnelInterfaceGenerateKeypair" = "Generare pereche de chei";
+"tunnelInterfaceAddresses" = "Adrese";
+"tunnelInterfaceListenPort" = "Port de ascultare";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "Servere DNS";
+"tunnelInterfaceStatus" = "Stare";
+
+"tunnelSectionTitlePeer" = "Pereche";
+
+"tunnelPeerPublicKey" = "Cheie publică";
+"tunnelPeerPreSharedKey" = "Cheie predistribuită";
+"tunnelPeerEndpoint" = "Punct final";
+"tunnelPeerPersistentKeepalive" = "Mesaj keepalive persistent";
+"tunnelPeerAllowedIPs" = "IP-uri permise";
+"tunnelPeerRxBytes" = "Date primite";
+"tunnelPeerTxBytes" = "Date trimise";
+"tunnelPeerLastHandshakeTime" = "Ultimul acord de interogare";
+"tunnelPeerExcludePrivateIPs" = "Exclude IP-urile private";
+
+"tunnelSectionTitleOnDemand" = "Activare la cerere";
+
+"tunnelOnDemandCellular" = "Mobil";
+"tunnelOnDemandEthernet" = "Ethernet";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+"tunnelOnDemandSSIDsKey" = "SSID-uri";
+
+"tunnelOnDemandAnySSID" = "Orice SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "Doar aceste SSID-uri";
+"tunnelOnDemandExceptTheseSSIDs" = "Cu excepția acestor SSID-uri";
+"tunnelOnDemandOnlySSID (%d)" = "Doar %d SSID";
+"tunnelOnDemandOnlySSIDs (%d)" = "Doar %d SSID-uri";
+"tunnelOnDemandExceptSSID (%d)" = "Cu excepția %d SSID";
+"tunnelOnDemandExceptSSIDs (%d)" = "Cu excepția %d SSID-uri";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@";
+
+"tunnelOnDemandSSIDViewTitle" = "SSID-uri";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSID-uri";
+"tunnelOnDemandNoSSIDs" = "Niciun SSID";
+"tunnelOnDemandSectionTitleAddSSIDs" = "Adăugare SSID-uri";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Adăugare conectată: %@";
+"tunnelOnDemandAddMessageAddNewSSID" = "Adăugare nou";
+
+"tunnelOnDemandKey" = "La cerere";
+"tunnelOnDemandOptionOff" = "Oprit";
+"tunnelOnDemandOptionWiFiOnly" = "Doar Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi sau mobil";
+"tunnelOnDemandOptionCellularOnly" = "Doar mobil";
+"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi sau ethernet";
+"tunnelOnDemandOptionEthernetOnly" = "Doar ethernet";
+
+"addPeerButtonTitle" = "Adăugare pereche";
+
+"deletePeerButtonTitle" = "Ștergere pereche";
+"deletePeerConfirmationAlertButtonTitle" = "Ștergere";
+"deletePeerConfirmationAlertMessage" = "Ștergi această pereche?";
+
+"deleteTunnelButtonTitle" = "Ștergere tunel";
+"deleteTunnelConfirmationAlertButtonTitle" = "Ștergere";
+"deleteTunnelConfirmationAlertMessage" = "Ștergi acest tunel?";
+
+"tunnelEditPlaceholderTextRequired" = "Necesar";
+"tunnelEditPlaceholderTextOptional" = "Opțional";
+"tunnelEditPlaceholderTextAutomatic" = "Automat";
+"tunnelEditPlaceholderTextStronglyRecommended" = "Ferm recomandat";
+"tunnelEditPlaceholderTextOff" = "Oprit";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "la fiecare %@ secunde";
+"tunnelHandshakeTimestampNow" = "Acum";
+"tunnelHandshakeTimestampSystemClockBackward" = "(Ceasul de sistem a fost dat în spate)";
+"tunnelHandshakeTimestampAgo (%@)" = "acum %@";
+"tunnelHandshakeTimestampYear (%d)" = "%d an";
+"tunnelHandshakeTimestampYears (%d)" = "%d ani";
+"tunnelHandshakeTimestampDay (%d)" = "%d zi";
+"tunnelHandshakeTimestampDays (%d)" = "%d zile";
+"tunnelHandshakeTimestampHour (%d)" = "%d oră";
+"tunnelHandshakeTimestampHours (%d)" = "%d ore";
+"tunnelHandshakeTimestampMinute (%d)" = "%d minut";
+"tunnelHandshakeTimestampMinutes (%d)" = "%d minute";
+"tunnelHandshakeTimestampSecond (%d)" = "%d secundă";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d secunde";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ ore";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ minute";
+
+"tunnelPeerPresharedKeyEnabled" = "activat";
+
+// Error alerts while creating / editing a tunnel configuration
+/* Alert title for error in the interface data */
+
+"alertInvalidInterfaceTitle" = "Interfață invalidă";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidInterfaceMessageNameRequired" = "Este necesar numele interfeței";
+"alertInvalidInterfaceMessagePrivateKeyRequired" = "Este necesară cheia privată a interfeței";
+"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Cheia privată a interfeței trebuie să fie o cheie de 32 de octeți în codificarea base64";
+"alertInvalidInterfaceMessageAddressInvalid" = "Adresele interfeței trebuie să reprezinte o listă cu adrese IP separate prin virgulă, opțional în notația CIDR";
+"alertInvalidInterfaceMessageListenPortInvalid" = "Portul de ascultare al interfeței trebuie să fie între 0 și 65535 sau să fie nespecificat";
+"alertInvalidInterfaceMessageMTUInvalid" = "Valoarea MTU a interfeței trebuie să fie cuprinsă între 576 și 65535 sau să fie nespecificată";
+"alertInvalidInterfaceMessageDNSInvalid" = "Serverele DNS ale interfeței trebuie să fie o listă de adrese IP separate prin virgulă";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "Pereche invalidă";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidPeerMessagePublicKeyRequired" = "Este necesară cheia publică a perechii";
+"alertInvalidPeerMessagePublicKeyInvalid" = "Cheia publică a perechii trebuie să fie o cheie de 32 de octeți în codificarea base64";
+"alertInvalidPeerMessagePreSharedKeyInvalid" = "Cheia predistribuită a perechii trebuie să fie o cheie de 32 de octeți în codificarea base64";
+"alertInvalidPeerMessageAllowedIPsInvalid" = "IP-urile permise ale perechii trebuie să reprezinte o listă cu adrese IP separate prin virgulă, opțional în notația CIDR";
+"alertInvalidPeerMessageEndpointInvalid" = "Punctul final al perechii trebuie să fie sub forma „gazdă:port” sau „[host]:port”";
+"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Mesajul keepalive persistent al perechii trebuie să fie între 0 și 65535 sau să fie nespecificat";
+"alertInvalidPeerMessagePublicKeyDuplicated" = "Două sau mai multe perechi nu pot avea aceeași cheie publică";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "Scanare cod QR";
+"scanQRCodeTipText" = "Sfat: generează cu `qrencode -t ansiutf8 < tunnel.conf`";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "Cameră video neacceptată";
+"alertScanQRCodeCameraUnsupportedMessage" = "Acest dispozitiv nu poate scana coduri QR";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "Cod QR invalid";
+"alertScanQRCodeInvalidQRCodeMessage" = "Codul QR scanat nu este o configurație WireGuard validă";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "Cod invalid";
+"alertScanQRCodeUnreadableQRCodeMessage" = "Codul scanat nu a putut fi citit";
+
+"alertScanQRCodeNamePromptTitle" = "Denumește tunelul scanat";
+
+// Settings UI
+
+"settingsViewTitle" = "Setări";
+
+"settingsSectionTitleAbout" = "Despre";
+"settingsVersionKeyWireGuardForIOS" = "WireGuard pentru iOS";
+"settingsVersionKeyWireGuardGoBackend" = "Bibliotecă Go WireGuard";
+
+"settingsSectionTitleExportConfigurations" = "Exportare configurații";
+"settingsExportZipButtonTitle" = "Exportare arhivă zip";
+
+"settingsSectionTitleTunnelLog" = "Jurnal";
+"settingsViewLogButtonTitle" = "Vizualizare jurnal";
+
+// Log view
+
+"logViewTitle" = "Jurnal";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "Exportarea jurnalului a eșuat";
+"alertUnableToRemovePreviousLogMessage" = "Jurnalul preexistent nu a putut fi șters";
+
+"alertUnableToWriteLogTitle" = "Exportarea jurnalului a eșuat";
+"alertUnableToWriteLogMessage" = "Nu pot fi scrise jurnale în fișier";
+
+// Zip import / export error alerts
+
+"alertCantOpenInputZipFileTitle" = "Arhiva zip nu poate fi citită";
+"alertCantOpenInputZipFileMessage" = "Arhiva zip nu a putut fi citită.";
+
+"alertCantOpenOutputZipFileForWritingTitle" = "Arhiva zip nu poate fi creată";
+"alertCantOpenOutputZipFileForWritingMessage" = "Fișierul zip nu a putut fi deschis în vederea scrierii.";
+
+"alertBadArchiveTitle" = "Arhiva zip nu poate fi citită";
+"alertBadArchiveMessage" = "Arhivă zip incorectă sau deteriorată.";
+
+"alertNoTunnelsToExportTitle" = "Nimic de exportat";
+"alertNoTunnelsToExportMessage" = "Nu există tuneluri de exportat";
+
+"alertNoTunnelsInImportedZipArchiveTitle" = "Nu există tuneluri în arhiva zip";
+"alertNoTunnelsInImportedZipArchiveMessage" = "Nu au fost găsite fișiere de tunel .conf în interiorul arhivei zip.";
+
+// Conf import error alerts
+
+"alertCantOpenInputConfFileTitle" = "Nu se poate importa din fișier";
+"alertCantOpenInputConfFileMessage (%@)" = "Fișierul „%@” nu a putut fi citit.";
+
+// Tunnel management error alerts
+
+"alertTunnelActivationFailureTitle" = "Activare eșuată";
+"alertTunnelActivationFailureMessage" = "Tunelul nu a putut fi activat. Asigură-te că dispui de conexiune la internet.";
+"alertTunnelActivationSavedConfigFailureMessage" = "Informațiile despre tunel nu au putut fi obținute din configurația salvată.";
+"alertTunnelActivationBackendFailureMessage" = "Biblioteca Go nu poate fi pornită.";
+"alertTunnelActivationFileDescriptorFailureMessage" = "Nu se poate determina descriptorul fișierului dispozitivului TUN.";
+"alertTunnelActivationSetNetworkSettingsMessage" = "Nu se pot aplica setările de rețea la elementul de tunel.";
+
+"alertTunnelActivationFailureOnDemandAddendum" = " Pentru acest tunel este activată funcția Activare la cerere, astfel că este posibil ca tunelul să fie reactivat automat de sistemul de operare. Poți dezactiva funcția Activare la cerere în această aplicație prin editarea configurației tunelului.";
+
+"alertTunnelDNSFailureTitle" = "Eroare de rezolvare DNS";
+"alertTunnelDNSFailureMessage" = "Unul sau mai multe puncte finale nu au putut fi rezolvate.";
+
+"alertTunnelNameEmptyTitle" = "Nu este furnizat niciun nume";
+"alertTunnelNameEmptyMessage" = "Nu se poate crea un tunel fără nume";
+
+"alertTunnelAlreadyExistsWithThatNameTitle" = "Numele există deja";
+"alertTunnelAlreadyExistsWithThatNameMessage" = "Un tunel cu acest nume există deja";
+
+"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Activare în curs";
+"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "Tunelul este deja activ sau în curs de a fi activat";
+
+// Tunnel management error alerts on system error
+/* The alert message that goes with the following titles would be
+ one of the alertSystemErrorMessage* listed further down */
+
+"alertSystemErrorOnListingTunnelsTitle" = "Tunelurile nu pot fi listate";
+"alertSystemErrorOnAddTunnelTitle" = "Tunelul nu poate fi creat";
+"alertSystemErrorOnModifyTunnelTitle" = "Tunelul nu poate fi modificat";
+"alertSystemErrorOnRemoveTunnelTitle" = "Tunelul nu poate fi eliminat";
+
+/* The alert message for this alert shall include
+ one of the alertSystemErrorMessage* listed further down */
+"alertTunnelActivationSystemErrorTitle" = "Activare eșuată";
+"alertTunnelActivationSystemErrorMessage (%@)" = "Tunelul nu a putut fi activat. %@";
+
+/* alertSystemErrorMessage* messages */
+"alertSystemErrorMessageTunnelConfigurationInvalid" = "Configurația este invalidă.";
+"alertSystemErrorMessageTunnelConfigurationDisabled" = "Configurația este dezactivată.";
+"alertSystemErrorMessageTunnelConnectionFailed" = "Conexiunea a eșuat.";
+"alertSystemErrorMessageTunnelConfigurationStale" = "Configurația este perimată.";
+"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Citirea sau scrierea configurației a eșuat.";
+"alertSystemErrorMessageTunnelConfigurationUnknown" = "Eroare necunoscută de sistem.";
+
+// Mac status bar menu / pulldown menu / main menu
+
+"macMenuNetworks (%@)" = "Rețele: %@";
+"macMenuNetworksNone" = "Rețele: niciuna";
+
+"macMenuTitle" = "WireGuard";
+"macMenuManageTunnels" = "Gestionare tuneluri";
+"macMenuImportTunnels" = "Importare tunel(uri) din fișier…";
+"macMenuAddEmptyTunnel" = "Adăugare tunel gol…";
+"macMenuViewLog" = "Vizualizare jurnal";
+"macMenuExportTunnels" = "Exportare tuneluri în zip…";
+"macMenuAbout" = "Despre WireGuard";
+"macMenuQuit" = "Ieși din WireGuard";
+
+"macMenuHideApp" = "Ascunde WireGuard";
+"macMenuHideOtherApps" = "Ascunde restul";
+"macMenuShowAllApps" = "Afișare toate";
+
+"macMenuFile" = "Fișier";
+"macMenuCloseWindow" = "Închidere fereastră";
+
+"macMenuEdit" = "Editare";
+"macMenuCut" = "Tăiere";
+"macMenuCopy" = "Copiere";
+"macMenuPaste" = "Lipire";
+"macMenuSelectAll" = "Selectare totală";
+
+"macMenuTunnel" = "Tunel";
+"macMenuToggleStatus" = "Comutare stare";
+"macMenuEditTunnel" = "Editare…";
+"macMenuDeleteSelected" = "Șterge tunelurile selectate";
+
+"macMenuWindow" = "Fereastră";
+"macMenuMinimize" = "Minimizare";
+"macMenuZoom" = "Panoramare";
+
+// Mac manage tunnels window
+
+"macWindowTitleManageTunnels" = "Gestionare tuneluri WireGuard";
+
+"macDeleteTunnelConfirmationAlertMessage (%@)" = "Ești sigur că dorești să ștergi „%@”?";
+"macDeleteMultipleTunnelsConfirmationAlertMessage (%d)" = "Ești sigur că dorești să ștergi %d tuneluri?";
+"macDeleteTunnelConfirmationAlertInfo" = "Nu poți anula această secțiune.";
+"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Ștergere";
+"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Anulare";
+"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Se șterge…";
+
+"macButtonImportTunnels" = "Importare tunel(uri) din fișier";
+"macSheetButtonImport" = "Importare";
+
+"macNameFieldExportLog" = "Salvare jurnal în:";
+"macSheetButtonExportLog" = "Salvare";
+
+"macNameFieldExportZip" = "Exportare tuneluri în:";
+"macSheetButtonExportZip" = "Salvare";
+
+"macButtonDeleteTunnels (%d)" = "Ștergere %d tuneluri";
+
+"macButtonEdit" = "Editare";
+
+// Mac detail/edit view fields
+
+"macFieldKey (%@)" = "%@:";
+"macFieldOnDemand" = "La cerere:";
+"macFieldOnDemandSSIDs" = "SSID-uri:";
+
+// Mac status display
+
+"macStatus (%@)" = "Stare: %@";
+
+// Mac editing config
+
+"macEditDiscard" = "Renunțare";
+"macEditSave" = "Salvare";
+
+"macAlertNameIsEmpty" = "Numele este necesar";
+"macAlertDuplicateName (%@)" = "Există deja un alt tunel cu numele „%@”.";
+
+"macAlertInvalidLine (%@)" = "Linie invalidă: „%@”.";
+
+"macAlertNoInterface" = "Configurația trebuie să aibă o secțiune „Interfață”.";
+"macAlertMultipleInterfaces" = "Configurația trebuie să aibă o singură secțiune „Interfață”.";
+"macAlertPrivateKeyInvalid" = "Cheia privată este invalidă.";
+"macAlertListenPortInvalid (%@)" = "Portul de ascultare „%@” este invalid.";
+"macAlertAddressInvalid (%@)" = "Adresa „%@” este invalidă.";
+"macAlertDNSInvalid (%@)" = "DNS „%@” este invalid.";
+"macAlertMTUInvalid (%@)" = "MTU „%@” este invalidă.";
+
+"macAlertUnrecognizedInterfaceKey (%@)" = "Interfața conține cheia nerecunoscută „%@”";
+"macAlertInfoUnrecognizedInterfaceKey" = "Cheile valide sunt: „PrivateKey”, „ListenPort”, „Address”, „DNS” și „MTU”.";
+
+"macAlertPublicKeyInvalid" = "Cheia publică este invalidă";
+"macAlertPreSharedKeyInvalid" = "Cheia predistribuită este invalidă";
+"macAlertAllowedIPInvalid (%@)" = "IP-ul permis „%@” este invalid";
+"macAlertEndpointInvalid (%@)" = "Punctul final „%@” este invalid";
+"macAlertPersistentKeepliveInvalid (%@)" = "Valoarea mesajului keepalive persistent „%@” este invalid";
+
+"macAlertUnrecognizedPeerKey (%@)" = "Perechea conține cheia nerecunoscută „%@”";
+"macAlertInfoUnrecognizedPeerKey" = "Cheile valide sunt: „PublicKey”, „PresharedKey”, „AllowedIPs”, „Endpoint” și „PersistentKeepalive”";
+
+"macAlertMultipleEntriesForKey (%@)" = "Trebuie să existe o singură înregistrare pe secțiune pentru cheia „%@”";
+
+// Mac about dialog
+
+"macAppVersion (%@)" = "Versiunea aplicației: %@";
+"macGoBackendVersion (%@)" = "Versiunea bibliotecii Go: %@";
+
+// Privacy
+
+"macExportPrivateData" = "exportare chei private de tunel";
+"macViewPrivateData" = "vizualizare chei private de tunel";
+"iosExportPrivateData" = "Autentifică-te pentru a exporta cheile private de tunel.";
+"iosViewPrivateData" = "Autentifică-te pentru a vizualiza cheile private de tunel.";
+
+// Mac alert
+
+"macConfirmAndQuitAlertMessage" = "Dorești să închizi managerul de tuneluri sau să ieși complet din WireGuard?";
+"macConfirmAndQuitAlertInfo" = "Dacă închizi managerul de tuneluri, WireGuard va fi în continuare disponibil din pictograma barei de meniu.";
+"macConfirmAndQuitInfoWithActiveTunnel (%@)" = "Dacă închizi managerul de tuneluri, WireGuard va fi în continuare disponibil din pictograma barei de meniu.\n\nReține că dacă ieși complet din WireGuard, tunelul activ în prezent („%@”) va rămâne activ până îl dezactivezi din această aplicație sau prin intermediul panoului Rețea din preferințele de sistem.";
+"macConfirmAndQuitAlertQuitWireGuard" = "Ieși din WireGuard";
+"macConfirmAndQuitAlertCloseWindow" = "Închide managerul de tuneluri";
+
+"macAppExitingWithActiveTunnelMessage" = "WireGuard iese cu un tunel activ";
+"macAppExitingWithActiveTunnelInfo" = "Tunelul va rămâne activ după ieșire. Îl poți dezactiva prin redeschiderea acestei aplicații sau prin intermediul panoului Rețea din preferințele de sistem.";
+
+// Mac tooltip
+
+"macToolTipEditTunnel" = "Editare tunel (⌘E)";
+"macToolTipToggleStatus" = "Comutare stare (⌘T)";
+
+// Mac log view
+
+"macLogColumnTitleTime" = "Timp";
+"macLogColumnTitleLogMessage" = "Mesaj de jurnal";
+"macLogButtonTitleClose" = "Închidere";
+"macLogButtonTitleSave" = "Salvare…";
+
+// Mac unusable tunnel view
+
+"macUnusableTunnelMessage" = "Configurația pentru acest tunel nu poate fi găsită în portchei.";
+"macUnusableTunnelInfo" = "În cazul în care acest tunel a fost creat de către un alt utilizator, doar respectivul utilizator poate vizualiza, edita sau activa acest tunel.";
+"macUnusableTunnelButtonTitleDeleteTunnel" = "Ștergere tunel";
+
+// Mac App Store updating alert
+
+"macAppStoreUpdatingAlertMessage" = "App Store dorește să actualizeze WireGuard";
+"macAppStoreUpdatingAlertInfoWithOnDemand (%@)" = "Oprește opțiunea „la cerere” pentru tunelul „%@”. Dezactiveaz-o, apoi continuă cu actualizarea în App Store.";
+"macAppStoreUpdatingAlertInfoWithoutOnDemand (%@)" = "Dezactivează tunelul „%@”, iar apoi continuă cu actualizarea în App Store.";
+
+// Donation
+
+"donateLink" = "♥ Donează pentru proiectul WireGuard";
diff --git a/Sources/WireGuardApp/ru.lproj/Localizable.strings b/Sources/WireGuardApp/ru.lproj/Localizable.strings
new file mode 100644
index 0000000..7c762d1
--- /dev/null
+++ b/Sources/WireGuardApp/ru.lproj/Localizable.strings
@@ -0,0 +1,445 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "ОК";
+"actionCancel" = "Отмена";
+"actionSave" = "Сохранить";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "Настройки";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Добавить туннель";
+"tunnelsListSwipeDeleteButtonTitle" = "Удалить";
+"tunnelsListSelectButtonTitle" = "Выбрать";
+"tunnelsListSelectAllButtonTitle" = "Выбрать всё";
+"tunnelsListDeleteButtonTitle" = "Удалить";
+"tunnelsListSelectedTitle (%d)" = "Выбрано: %d";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "Добавить новый туннель WireGuard";
+"addTunnelMenuImportFile" = "Создать из файла или архива";
+"addTunnelMenuQRCode" = "Создать из QR-кода";
+"addTunnelMenuFromScratch" = "Создать с нуля";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "Создано туннелей: %d";
+"alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "Создано туннелей из импортированных файлов: %1$d из %2$d";
+
+"alertImportedFromZipTitle (%d)" = "Создано туннелей: %d";
+"alertImportedFromZipMessage (%1$d of %2$d)" = "Создано туннелей из zip-архива: %1$d из %2$d";
+
+"alertBadConfigImportTitle" = "Не удалось импортировать туннель";
+"alertBadConfigImportMessage (%@)" = "Файл ‘%@’ не содержит корректной конфигурации WireGuard";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "Удалить";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "Удалить выбранный туннель?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "Удалить выбранные туннели?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "Новая конфигурация";
+"editTunnelViewTitle" = "Редактировать конфигурацию";
+
+"tunnelSectionTitleStatus" = "Статус";
+
+"tunnelStatusInactive" = "Отключен";
+"tunnelStatusActivating" = "Подключение";
+"tunnelStatusActive" = "Подключен";
+"tunnelStatusDeactivating" = "Отключение";
+"tunnelStatusReasserting" = "Переподключение";
+"tunnelStatusRestarting" = "Перезапуск";
+"tunnelStatusWaiting" = "Ожидание";
+
+"macToggleStatusButtonActivate" = "Подключен";
+"macToggleStatusButtonActivating" = "Подключение…";
+"macToggleStatusButtonDeactivate" = "Отключен";
+"macToggleStatusButtonDeactivating" = "Отключение…";
+"macToggleStatusButtonReasserting" = "Переподключение…";
+"macToggleStatusButtonRestarting" = "Перезапуск…";
+"macToggleStatusButtonWaiting" = "Ожидание…";
+
+"tunnelSectionTitleInterface" = "Интерфейс";
+
+"tunnelInterfaceName" = "Имя";
+"tunnelInterfacePrivateKey" = "Приватный ключ";
+"tunnelInterfacePublicKey" = "Публичный ключ";
+"tunnelInterfaceGenerateKeypair" = "Сгенерировать ключи";
+"tunnelInterfaceAddresses" = "IP-адреса";
+"tunnelInterfaceListenPort" = "Порт";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "DNS-серверы";
+"tunnelInterfaceStatus" = "Статус";
+
+"tunnelSectionTitlePeer" = "Пир";
+
+"tunnelPeerPublicKey" = "Публичный ключ";
+"tunnelPeerPreSharedKey" = "Общий ключ";
+"tunnelPeerEndpoint" = "IP-адрес сервера";
+"tunnelPeerPersistentKeepalive" = "Поддерживание соединения";
+"tunnelPeerAllowedIPs" = "Разрешенные IP-адреса";
+"tunnelPeerRxBytes" = "Получено данных";
+"tunnelPeerTxBytes" = "Отправлено данных";
+"tunnelPeerLastHandshakeTime" = "Последнее рукопожатие";
+"tunnelPeerExcludePrivateIPs" = "Исключить частные IP-адреса";
+
+"tunnelSectionTitleOnDemand" = "Автоподключение";
+
+"tunnelOnDemandCellular" = "Сотовая сеть";
+"tunnelOnDemandEthernet" = "Ethernet";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+"tunnelOnDemandSSIDsKey" = "SSIDs";
+
+"tunnelOnDemandAnySSID" = "Любой SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "Только эти SSIDs";
+"tunnelOnDemandExceptTheseSSIDs" = "Кроме этих SSIDs";
+"tunnelOnDemandOnlySSID (%d)" = "Только %d SSID";
+"tunnelOnDemandOnlySSIDs (%d)" = "Только %d SSIDs";
+"tunnelOnDemandExceptSSID (%d)" = "Кроме %d SSID";
+"tunnelOnDemandExceptSSIDs (%d)" = "Кроме %d SSIDs";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@";
+
+"tunnelOnDemandSSIDViewTitle" = "SSIDs";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs";
+"tunnelOnDemandNoSSIDs" = "Нет SSIDs";
+"tunnelOnDemandSectionTitleAddSSIDs" = "Добавить SSIDs";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Добавлено соединение: %@";
+"tunnelOnDemandAddMessageAddNewSSID" = "Добавить новый";
+
+"tunnelOnDemandKey" = "Автоподключение";
+"tunnelOnDemandOptionOff" = "Выключить";
+"tunnelOnDemandOptionWiFiOnly" = "Только Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi или сотовая сеть";
+"tunnelOnDemandOptionCellularOnly" = "Только Сотовая сеть";
+"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi или Ethernet";
+"tunnelOnDemandOptionEthernetOnly" = "Только Ethernet";
+
+"addPeerButtonTitle" = "Добавить пира";
+
+"deletePeerButtonTitle" = "Удалить пира";
+"deletePeerConfirmationAlertButtonTitle" = "Удалить";
+"deletePeerConfirmationAlertMessage" = "Удалить этого пира?";
+
+"deleteTunnelButtonTitle" = "Удалить туннель";
+"deleteTunnelConfirmationAlertButtonTitle" = "Удалить";
+"deleteTunnelConfirmationAlertMessage" = "Удалить этот туннель?";
+
+"tunnelEditPlaceholderTextRequired" = "Обязательно";
+"tunnelEditPlaceholderTextOptional" = "Необязательно";
+"tunnelEditPlaceholderTextAutomatic" = "Автоматически";
+"tunnelEditPlaceholderTextStronglyRecommended" = "Настоятельно рекомендуется";
+"tunnelEditPlaceholderTextOff" = "Выключить";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "каждые %@ - интервал в секундах";
+"tunnelHandshakeTimestampNow" = "Сейчас";
+"tunnelHandshakeTimestampSystemClockBackward" = "(Системные часы переведены назад)";
+"tunnelHandshakeTimestampAgo (%@)" = "%@ назад";
+"tunnelHandshakeTimestampYear (%d)" = "%dг";
+"tunnelHandshakeTimestampYears (%d)" = "%dг";
+"tunnelHandshakeTimestampDay (%d)" = "%dд";
+"tunnelHandshakeTimestampDays (%d)" = "%dд";
+"tunnelHandshakeTimestampHour (%d)" = "%dч";
+"tunnelHandshakeTimestampHours (%d)" = "%dч";
+"tunnelHandshakeTimestampMinute (%d)" = "%dмин";
+"tunnelHandshakeTimestampMinutes (%d)" = "%dмин";
+"tunnelHandshakeTimestampSecond (%d)" = "%dсек";
+"tunnelHandshakeTimestampSeconds (%d)" = "%dс";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ч";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@мин";
+
+"tunnelPeerPresharedKeyEnabled" = "включен";
+
+// Error alerts while creating / editing a tunnel configuration
+/* Alert title for error in the interface data */
+
+"alertInvalidInterfaceTitle" = "Недопустимый интерфейс";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidInterfaceMessageNameRequired" = "Введите имя интерфейса";
+"alertInvalidInterfaceMessagePrivateKeyRequired" = "Введите приватный ключ интерфейса";
+"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Приватный ключ интерфейса должен быть 32-байтным в кодировке base64";
+"alertInvalidInterfaceMessageAddressInvalid" = "IP-адреса интерфейса должны быть списком, разделенные запятыми, желательно с комментариями CIDR";
+"alertInvalidInterfaceMessageListenPortInvalid" = "Порт интерфейса должен быть от 0 до 65535, или не указан";
+"alertInvalidInterfaceMessageMTUInvalid" = "MTU интерфейса должен быть между 576 и 65535, или не указан";
+"alertInvalidInterfaceMessageDNSInvalid" = "DNS-серверы интерфейса должны быть списком, разделенные запятыми";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "Недопустимый пир";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidPeerMessagePublicKeyRequired" = "Необходимо указать публичный ключ пира";
+"alertInvalidPeerMessagePublicKeyInvalid" = "Публичный ключ пира должен быть 32-байтным в кодировке base64";
+"alertInvalidPeerMessagePreSharedKeyInvalid" = "Общий ключ пира должен быть 32-байтным в кодировке base64";
+"alertInvalidPeerMessageAllowedIPsInvalid" = "Разрешенные IP-адреса пиров должны быть списком, разделенные запятыми, желательно с комментариями CIDR";
+"alertInvalidPeerMessageEndpointInvalid" = "IP-адрес сервера должен быть в формате ’host:port’ или ’[host]:port’";
+"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Значение поддерживания соединения пира должно быть от 0 до 65535, или не указано";
+"alertInvalidPeerMessagePublicKeyDuplicated" = "Два или более пиров не могут иметь один и тот же публичный ключ";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "Сканирование QR-кода";
+"scanQRCodeTipText" = "Совет: сгенерируйте с `qrencode -t ansiutf8 < tunnel.conf`";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "Камера не поддерживается";
+"alertScanQRCodeCameraUnsupportedMessage" = "Это устройство не может сканировать QR-коды";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "Недопустимый QR-код";
+"alertScanQRCodeInvalidQRCodeMessage" = "Отсканированный QR-код не является конфигурацией WireGuard";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "Недопустимый код";
+"alertScanQRCodeUnreadableQRCodeMessage" = "Не удалось прочитать отсканированный код";
+
+"alertScanQRCodeNamePromptTitle" = "Задайте имя отсканированному туннелю";
+
+// Settings UI
+
+"settingsViewTitle" = "Настройки";
+
+"settingsSectionTitleAbout" = "О программе";
+"settingsVersionKeyWireGuardForIOS" = "WireGuard для iOS";
+"settingsVersionKeyWireGuardGoBackend" = "Бэкенд WireGuard";
+
+"settingsSectionTitleExportConfigurations" = "Экспорт конфигураций";
+"settingsExportZipButtonTitle" = "Экспорт zip-архива";
+
+"settingsSectionTitleTunnelLog" = "Журнал";
+"settingsViewLogButtonTitle" = "Просмотреть журнал";
+
+// Log view
+
+"logViewTitle" = "Журнал";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "Ошибка экспорта журнала";
+"alertUnableToRemovePreviousLogMessage" = "Не удалось очистить уже существующий журнал";
+
+"alertUnableToWriteLogTitle" = "Ошибка экспорта журнала";
+"alertUnableToWriteLogMessage" = "Невозможно записать журнал в файл";
+
+// Zip import / export error alerts
+
+"alertCantOpenInputZipFileTitle" = "Невозможно прочитать zip-архив";
+"alertCantOpenInputZipFileMessage" = "Невозможно прочитать zip-архив.";
+
+"alertCantOpenOutputZipFileForWritingTitle" = "Невозможно создать zip-архив";
+"alertCantOpenOutputZipFileForWritingMessage" = "Не удалось открыть zip-архив для записи.";
+
+"alertBadArchiveTitle" = "Невозможно прочитать zip-архив";
+"alertBadArchiveMessage" = "Некорректный или поврежденный zip-архив.";
+
+"alertNoTunnelsToExportTitle" = "Нет данных для экспорта";
+"alertNoTunnelsToExportMessage" = "Нет туннелей для экспорта";
+
+"alertNoTunnelsInImportedZipArchiveTitle" = "В zip-архиве нет туннелей";
+"alertNoTunnelsInImportedZipArchiveMessage" = "В zip-архиве не найдено файлов туннеля .conf.";
+
+// Conf import error alerts
+
+"alertCantOpenInputConfFileTitle" = "Невозможно импортировать из файла";
+"alertCantOpenInputConfFileMessage (%@)" = "Не удалось прочитать файл ’%@’.";
+
+// Tunnel management error alerts
+
+"alertTunnelActivationFailureTitle" = "Ошибка подключения";
+"alertTunnelActivationFailureMessage" = "Туннель не может быть подключен. Убедитесь, что вы подключены к Интернету.";
+"alertTunnelActivationSavedConfigFailureMessage" = "Не удается получить информацию о туннеле из сохраненной конфигурации.";
+"alertTunnelActivationBackendFailureMessage" = "Не удалось включить библиотеку бэкэнд.";
+"alertTunnelActivationFileDescriptorFailureMessage" = "Не удалось определить дескриптор файла TUN устройства.";
+"alertTunnelActivationSetNetworkSettingsMessage" = "Невозможно применить сетевые настройки к объекту туннеля.";
+
+"alertTunnelActivationFailureOnDemandAddendum" = " Включено автоподключение этого туннеля, поэтому этот туннель может быть автоматически переподключен операционной системой. Вы можете отключить автоподключение в этом приложении, отредактировав конфигурацию туннеля.";
+
+"alertTunnelDNSFailureTitle" = "Ошибка при разрешении DNS";
+"alertTunnelDNSFailureMessage" = "Один или несколько IP-адресов серверов не могут быть разрешены.";
+
+"alertTunnelNameEmptyTitle" = "Имя не указано";
+"alertTunnelNameEmptyMessage" = "Невозможно создать туннель с пустым именем";
+
+"alertTunnelAlreadyExistsWithThatNameTitle" = "Такое имя уже существует";
+"alertTunnelAlreadyExistsWithThatNameMessage" = "Туннель с таким именем уже существует";
+
+"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Подключение в процессе";
+"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "Туннель уже подключен или в процессе подключения";
+
+// Tunnel management error alerts on system error
+/* The alert message that goes with the following titles would be
+ one of the alertSystemErrorMessage* listed further down */
+
+"alertSystemErrorOnListingTunnelsTitle" = "Не удалось отобразить туннели";
+"alertSystemErrorOnAddTunnelTitle" = "Невозможно создать туннель";
+"alertSystemErrorOnModifyTunnelTitle" = "Не удалось изменить туннель";
+"alertSystemErrorOnRemoveTunnelTitle" = "Не удалось удалить туннель";
+
+/* The alert message for this alert shall include
+ one of the alertSystemErrorMessage* listed further down */
+"alertTunnelActivationSystemErrorTitle" = "Ошибка подключения";
+"alertTunnelActivationSystemErrorMessage (%@)" = "Не удалось подключить туннель. %@";
+
+/* alertSystemErrorMessage* messages */
+"alertSystemErrorMessageTunnelConfigurationInvalid" = "Недопустимая конфигурация.";
+"alertSystemErrorMessageTunnelConfigurationDisabled" = "Конфигурация отключена.";
+"alertSystemErrorMessageTunnelConnectionFailed" = "Ошибка соединения.";
+"alertSystemErrorMessageTunnelConfigurationStale" = "Конфигурация устарела.";
+"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Ошибка чтения или записи конфигурации.";
+"alertSystemErrorMessageTunnelConfigurationUnknown" = "Неизвестная системная ошибка.";
+
+// Mac status bar menu / pulldown menu / main menu
+
+"macMenuNetworks (%@)" = "Сети: %@";
+"macMenuNetworksNone" = "Сети отсутствуют";
+
+"macMenuTitle" = "WireGuard";
+"macMenuManageTunnels" = "Управление туннелями";
+"macMenuImportTunnels" = "Импорт туннелей из файла…";
+"macMenuAddEmptyTunnel" = "Добавить пустой туннель…";
+"macMenuViewLog" = "Просмотреть журнал";
+"macMenuExportTunnels" = "Экспорт туннелей в zip-архив…";
+"macMenuAbout" = "О WireGuard";
+"macMenuQuit" = "Выйти из WireGuard";
+
+"macMenuHideApp" = "Скрыть WireGuard";
+"macMenuHideOtherApps" = "Скрыть другие";
+"macMenuShowAllApps" = "Показать всё";
+
+"macMenuFile" = "Файл";
+"macMenuCloseWindow" = "Закрыть окно";
+
+"macMenuEdit" = "Редактировать";
+"macMenuCut" = "Вырезать";
+"macMenuCopy" = "Копировать";
+"macMenuPaste" = "Вставить";
+"macMenuSelectAll" = "Выбрать всё";
+
+"macMenuTunnel" = "Туннель";
+"macMenuToggleStatus" = "Переключить статус";
+"macMenuEditTunnel" = "Редактировать…";
+"macMenuDeleteSelected" = "Удалить выбранное";
+
+"macMenuWindow" = "Окно";
+"macMenuMinimize" = "Свернуть";
+"macMenuZoom" = "Изменить масштаб";
+
+// Mac manage tunnels window
+
+"macWindowTitleManageTunnels" = "Управлять туннелями WireGuard";
+
+"macDeleteTunnelConfirmationAlertMessage (%@)" = "Вы уверены, что хотите удалить ‘%@’?";
+"macDeleteMultipleTunnelsConfirmationAlertMessage (%d)" = "Вы уверены, что хотите удалить выбранные туннели?";
+"macDeleteTunnelConfirmationAlertInfo" = "Данное действие невозможно отменить.";
+"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Удалить";
+"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Отмена";
+"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Удаление…";
+
+"macButtonImportTunnels" = "Импорт туннелей из файла…";
+"macSheetButtonImport" = "Импорт";
+
+"macNameFieldExportLog" = "Сохранить журнал в:";
+"macSheetButtonExportLog" = "Сохранить";
+
+"macNameFieldExportZip" = "Экспортировать туннели в:";
+"macSheetButtonExportZip" = "Сохранить";
+
+"macButtonDeleteTunnels (%d)" = "Удалить выбранные туннели?";
+
+"macButtonEdit" = "Редактировать";
+
+// Mac detail/edit view fields
+
+"macFieldKey (%@)" = "%@:";
+"macFieldOnDemand" = "Автоподключение:";
+"macFieldOnDemandSSIDs" = "SSIDs:";
+
+// Mac status display
+
+"macStatus (%@)" = "Статус: %@";
+
+// Mac editing config
+
+"macEditDiscard" = "Отменить";
+"macEditSave" = "Сохранить";
+
+"macAlertNameIsEmpty" = "Имя обязательно";
+"macAlertDuplicateName (%@)" = "Туннель с именем ’%@’ уже существует.";
+
+"macAlertInvalidLine (%@)" = "Недопустимая строка: ’%@’.";
+
+"macAlertNoInterface" = "Конфигурация должна иметь раздел ’Интерфейс’.";
+"macAlertMultipleInterfaces" = "Конфигурация должна иметь только одну секцию ’Интерфейс’.";
+"macAlertPrivateKeyInvalid" = "Недопустимый приватный ключ.";
+"macAlertListenPortInvalid (%@)" = "Недопустимый порт ’%@’.";
+"macAlertAddressInvalid (%@)" = "IP-адрес ’%@’ недопустим.";
+"macAlertDNSInvalid (%@)" = "DNS-сервер ’%@’ недопустим.";
+"macAlertMTUInvalid (%@)" = "MTU ’%@’ недопустим.";
+
+"macAlertUnrecognizedInterfaceKey (%@)" = "Интерфейс содержит нераспознанный ключ ‘%@’";
+"macAlertInfoUnrecognizedInterfaceKey" = "Допустимые ключи: «Приветный ключ», «Порт», «IP-адрес», «DNS» и «MTU».";
+
+"macAlertPublicKeyInvalid" = "Недопустимый публичный ключ";
+"macAlertPreSharedKeyInvalid" = "Общий ключ недопустим";
+"macAlertAllowedIPInvalid (%@)" = "Разрешенный IP-адрес ‘%@’ недопустим";
+"macAlertEndpointInvalid (%@)" = "IP-адрес сервера ’%@’ недопустим";
+"macAlertPersistentKeepliveInvalid (%@)" = "Значение поддерживания соединения ‘%@’ недопустимо";
+
+"macAlertUnrecognizedPeerKey (%@)" = "Пир содержит нераспознанный ключ ‘%@’";
+"macAlertInfoUnrecognizedPeerKey" = "Допустимые ключи: «Публичный ключ», «Общий ключ», «Разрешенные IP-адреса», «IP-адрес сервера» и «Поддерживание соединения»";
+
+"macAlertMultipleEntriesForKey (%@)" = "В секции пира должна быть только одна запись ключа ‘%@’";
+
+// Mac about dialog
+
+"macAppVersion (%@)" = "Версия приложения: %@";
+"macGoBackendVersion (%@)" = "Версия Бэкенд: %@";
+
+// Privacy
+
+"macExportPrivateData" = "экспорт приватных ключей туннеля";
+"macViewPrivateData" = "просмотр приватных ключей туннеля";
+"iosExportPrivateData" = "Аутентификация для экспорта приватных ключей туннеля.";
+"iosViewPrivateData" = "Аутентификация для просмотра приватных ключей туннеля.";
+
+// Mac alert
+
+"macConfirmAndQuitAlertMessage" = "Вы хотите закрыть менеджер туннелей или полностью выйти из WireGuard?";
+"macConfirmAndQuitAlertInfo" = "Если вы закроете менеджер туннелей, WireGuard будет по-прежнему доступен из значка в строке меню.";
+"macConfirmAndQuitInfoWithActiveTunnel (%@)" = "Если вы закроете менеджер туннелей, WireGuard будет по-прежнему доступен из значка в строке меню.\n\nОбратите внимание, что если вы выйдете из WireGuard полностью, текущий активный туннель (’%@’) будет оставаться активным до тех пор, пока вы не отключите его из этого приложения или через панель «Сеть» в Системных настройках.";
+"macConfirmAndQuitAlertQuitWireGuard" = "Выйти из WireGuard";
+"macConfirmAndQuitAlertCloseWindow" = "Закрыть менеджер туннелей";
+
+"macAppExitingWithActiveTunnelMessage" = "Выход из WireGuard с активным туннелем";
+"macAppExitingWithActiveTunnelInfo" = "После выхода туннель будет оставаться подключенным. Вы можете отключить его повторно открыв это приложение или через панель \"Сеть\" в Системных настройках.";
+
+// Mac tooltip
+
+"macToolTipEditTunnel" = "Редактировать туннель (⌘E)";
+"macToolTipToggleStatus" = "Переключить статус (⌘T)";
+
+// Mac log view
+
+"macLogColumnTitleTime" = "Время";
+"macLogColumnTitleLogMessage" = "Сообщение Журнала";
+"macLogButtonTitleClose" = "Закрыть";
+"macLogButtonTitleSave" = "Сохранить…";
+
+// Mac unusable tunnel view
+
+"macUnusableTunnelMessage" = "Конфигурация для этого туннеля не найдена в связке ключей.";
+"macUnusableTunnelInfo" = "В случае, если этот туннель был создан другим пользователем, только тот пользователь может просматривать, редактировать или активировать этот туннель.";
+"macUnusableTunnelButtonTitleDeleteTunnel" = "Удалить туннель";
+
+// Mac App Store updating alert
+
+"macAppStoreUpdatingAlertMessage" = "App Store хотел бы обновить WireGuard";
+"macAppStoreUpdatingAlertInfoWithOnDemand (%@)" = "Пожалуйста, отключите автоподключение туннеля ‘%@’, а затем продолжите обновление в App Store.";
+"macAppStoreUpdatingAlertInfoWithoutOnDemand (%@)" = "Пожалуйста, отключите туннель ‘%@’ и затем продолжите обновление в App Store.";
+
+// Donation
+
+"donateLink" = "♥ Пожертвовать проекту WireGuard";
diff --git a/Sources/WireGuardApp/sl.lproj/Localizable.strings b/Sources/WireGuardApp/sl.lproj/Localizable.strings
new file mode 100644
index 0000000..2a8066b
--- /dev/null
+++ b/Sources/WireGuardApp/sl.lproj/Localizable.strings
@@ -0,0 +1,445 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "V redu";
+"actionCancel" = "Prekliči";
+"actionSave" = "Shrani";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "Nastavitve";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Dodaj tunel";
+"tunnelsListSwipeDeleteButtonTitle" = "Izbriši";
+"tunnelsListSelectButtonTitle" = "Izberi";
+"tunnelsListSelectAllButtonTitle" = "Izberi vse";
+"tunnelsListDeleteButtonTitle" = "Izbriši";
+"tunnelsListSelectedTitle (%d)" = "Izbranih: %d";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "Dodaj nov tunel WireGuard";
+"addTunnelMenuImportFile" = "Uvozi iz datoteke ali arhiva";
+"addTunnelMenuQRCode" = "Skeniraj kodo QR";
+"addTunnelMenuFromScratch" = "Ustvari na novo";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "Ustvarjenih tunelov: %d";
+"alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "Ustvarjenih tunelov iz uvoženih datotek: %1$d od %2$d";
+
+"alertImportedFromZipTitle (%d)" = "Ustvarjenih tunelov: %d";
+"alertImportedFromZipMessage (%1$d of %2$d)" = "Ustvarjenih tunelov iz arhiva zip: %1$d od %2$d";
+
+"alertBadConfigImportTitle" = "Tunela ni mogoče uvoziti";
+"alertBadConfigImportMessage (%@)" = "Datoteka \"%@\" ne vsebuje veljavne konfiguracije WireGuard";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "Izbriši";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "Izbrišem %d tunel?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "Izbrišem izbrane tunele?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "Nova konfiguracija";
+"editTunnelViewTitle" = "Uredi konfiguracijo";
+
+"tunnelSectionTitleStatus" = "Preklopi status";
+
+"tunnelStatusInactive" = "Neaktivno";
+"tunnelStatusActivating" = "Se aktivira";
+"tunnelStatusActive" = "Aktivno";
+"tunnelStatusDeactivating" = "Se deaktivira";
+"tunnelStatusReasserting" = "Se reaktivira";
+"tunnelStatusRestarting" = "Se ponovno zaganja";
+"tunnelStatusWaiting" = "Čaka";
+
+"macToggleStatusButtonActivate" = "Aktviraj";
+"macToggleStatusButtonActivating" = "Aktiviram …";
+"macToggleStatusButtonDeactivate" = "Deaktiviraj";
+"macToggleStatusButtonDeactivating" = "Deaktiviram …";
+"macToggleStatusButtonReasserting" = "Reaktiviram …";
+"macToggleStatusButtonRestarting" = "Ponovno zaganjam …";
+"macToggleStatusButtonWaiting" = "Čakam …";
+
+"tunnelSectionTitleInterface" = "Vmesnik";
+
+"tunnelInterfaceName" = "Ime";
+"tunnelInterfacePrivateKey" = "Zasebni ključ";
+"tunnelInterfacePublicKey" = "Javni ključ";
+"tunnelInterfaceGenerateKeypair" = "Naredi nov par ključev";
+"tunnelInterfaceAddresses" = "Naslovi";
+"tunnelInterfaceListenPort" = "Vrata poslušanja";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "Strežniki DNS";
+"tunnelInterfaceStatus" = "Status";
+
+"tunnelSectionTitlePeer" = "Vrstnik";
+
+"tunnelPeerPublicKey" = "Javni ključ";
+"tunnelPeerPreSharedKey" = "Ključ v skupni rabi";
+"tunnelPeerEndpoint" = "Končna točka";
+"tunnelPeerPersistentKeepalive" = "Trajno ohranjanje povezave";
+"tunnelPeerAllowedIPs" = "Dovoljeni IP-ji";
+"tunnelPeerRxBytes" = "Prejeti podatki";
+"tunnelPeerTxBytes" = "Poslani podatki";
+"tunnelPeerLastHandshakeTime" = "Zadnje rokovanje";
+"tunnelPeerExcludePrivateIPs" = "Izključi zasebne IP-je";
+
+"tunnelSectionTitleOnDemand" = "Aktivacija na zahtevo";
+
+"tunnelOnDemandCellular" = "Mobilni podatki";
+"tunnelOnDemandEthernet" = "Ethernet";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+"tunnelOnDemandSSIDsKey" = "SSID-ji";
+
+"tunnelOnDemandAnySSID" = "Katerikoli SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "Samo ti SSID-ji";
+"tunnelOnDemandExceptTheseSSIDs" = "Razen teh SSID-jev";
+"tunnelOnDemandOnlySSID (%d)" = "Samo %d SSID";
+"tunnelOnDemandOnlySSIDs (%d)" = "Samo SSID-jev: %d";
+"tunnelOnDemandExceptSSID (%d)" = "Razen %d SSID";
+"tunnelOnDemandExceptSSIDs (%d)" = "Razen SSID-jev: %d";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@";
+
+"tunnelOnDemandSSIDViewTitle" = "SSID-ji";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSID-ji";
+"tunnelOnDemandNoSSIDs" = "Brez SSID-jev";
+"tunnelOnDemandSectionTitleAddSSIDs" = "Dodaj SSID-je";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Dodaj povezane: %@";
+"tunnelOnDemandAddMessageAddNewSSID" = "Dodaj nov";
+
+"tunnelOnDemandKey" = "Na zahtevo";
+"tunnelOnDemandOptionOff" = "Izklopljeno";
+"tunnelOnDemandOptionWiFiOnly" = "Samo Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi ali mobilni podatki";
+"tunnelOnDemandOptionCellularOnly" = "Samo mobilni podatki";
+"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi ali Ethernet";
+"tunnelOnDemandOptionEthernetOnly" = "Samo Ethernet";
+
+"addPeerButtonTitle" = "Dodaj vrstnika";
+
+"deletePeerButtonTitle" = "Izbriši vrstnika";
+"deletePeerConfirmationAlertButtonTitle" = "Izbriši";
+"deletePeerConfirmationAlertMessage" = "Izbrišem tega vrstnika?";
+
+"deleteTunnelButtonTitle" = "Izbriši tunel";
+"deleteTunnelConfirmationAlertButtonTitle" = "Izbriši";
+"deleteTunnelConfirmationAlertMessage" = "Izbrišem za tunel?";
+
+"tunnelEditPlaceholderTextRequired" = "Zahtevano";
+"tunnelEditPlaceholderTextOptional" = "Izbirno";
+"tunnelEditPlaceholderTextAutomatic" = "Samodejno";
+"tunnelEditPlaceholderTextStronglyRecommended" = "Toplo priporočeno";
+"tunnelEditPlaceholderTextOff" = "Izklopljeno";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "v %@-sekundnih intervalih";
+"tunnelHandshakeTimestampNow" = "Zdaj";
+"tunnelHandshakeTimestampSystemClockBackward" = "(Sistemska ura prevrtena nazaj)";
+"tunnelHandshakeTimestampAgo (%@)" = "%@ nazaj";
+"tunnelHandshakeTimestampYear (%d)" = "%d leto";
+"tunnelHandshakeTimestampYears (%d)" = "%d let";
+"tunnelHandshakeTimestampDay (%d)" = "%d dan";
+"tunnelHandshakeTimestampDays (%d)" = "%d dni";
+"tunnelHandshakeTimestampHour (%d)" = "%d uro";
+"tunnelHandshakeTimestampHours (%d)" = "%d ur";
+"tunnelHandshakeTimestampMinute (%d)" = "%d minuto";
+"tunnelHandshakeTimestampMinutes (%d)" = "%d minut";
+"tunnelHandshakeTimestampSecond (%d)" = "%d sekundo";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d sekund";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ ur";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ minut";
+
+"tunnelPeerPresharedKeyEnabled" = "omogočen";
+
+// Error alerts while creating / editing a tunnel configuration
+/* Alert title for error in the interface data */
+
+"alertInvalidInterfaceTitle" = "Neveljaven vmesnik";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidInterfaceMessageNameRequired" = "Ime vmesnika je obvezno";
+"alertInvalidInterfaceMessagePrivateKeyRequired" = "Zasebni ključ vmesnika je obvezen";
+"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Zasebni ključ vmesnika mora biti 32-bajtni ključ v zapisu Base64";
+"alertInvalidInterfaceMessageAddressInvalid" = "Omrežni naslovi vmesnikov morajo biti v seznamu ločeni z vejico, izbirno v zapisu CIDR";
+"alertInvalidInterfaceMessageListenPortInvalid" = "Vrata na katerih vmesnik posluša morajo biti med 0 in 65535 ali nedoločena";
+"alertInvalidInterfaceMessageMTUInvalid" = "Največja transportna enota (MTU) vmesnika mora biti med 576 in 65535, ali nedoločena";
+"alertInvalidInterfaceMessageDNSInvalid" = "Strežniki DNS za vmesnik morajo biti v seznamu, kjer so naslovi IP ločeni z vejico";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "Neveljaven vrstnik";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidPeerMessagePublicKeyRequired" = "Javni ključ vrstnika je obvezen";
+"alertInvalidPeerMessagePublicKeyInvalid" = "Vrstnikov javni ključ mora biti 32-bajtni ključ v zapisu Base64";
+"alertInvalidPeerMessagePreSharedKeyInvalid" = "Vrstnikov ključ v skupni rabi mora biti 32-bajtni ključ v zapisu Base64";
+"alertInvalidPeerMessageAllowedIPsInvalid" = "Omrežni naslovi vrstnika morajo biti v seznamu ločeni z vejico, izbirno v zapisu CIDR";
+"alertInvalidPeerMessageEndpointInvalid" = "Končna točka vrstnika mora biti v obliki 'gostitelj:vrata' ali '[gostitelj]:vrata'";
+"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Trajno ohranjanje povezave vrstnika mora biti med 0 in 65535, ali nedoločeno";
+"alertInvalidPeerMessagePublicKeyDuplicated" = "Dva ali več vrstnikov ne more imeti enakega javnega ključa";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "Skeniraj kodo QR";
+"scanQRCodeTipText" = "Namig: generirajte z `qrencode -t ansiutf8 tunnel.conf`";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "Fotoaparat ni podprt";
+"alertScanQRCodeCameraUnsupportedMessage" = "Ta naprava ne more skenirati kod QR";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "Neveljavna koda QR";
+"alertScanQRCodeInvalidQRCodeMessage" = "Skenirana koda QR ni veljavna konfiguracija WireGuard";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "Neveljavna koda";
+"alertScanQRCodeUnreadableQRCodeMessage" = "Skenirane kode ni bilo mogoče prebrati";
+
+"alertScanQRCodeNamePromptTitle" = "Poimenujte skeniran tunel";
+
+// Settings UI
+
+"settingsViewTitle" = "Nastavitve";
+
+"settingsSectionTitleAbout" = "O programu";
+"settingsVersionKeyWireGuardForIOS" = "WireGuard za iOS";
+"settingsVersionKeyWireGuardGoBackend" = "Verzija wireguard-go";
+
+"settingsSectionTitleExportConfigurations" = "Izvozi konfiguracije";
+"settingsExportZipButtonTitle" = "Izvoz arhiva zip";
+
+"settingsSectionTitleTunnelLog" = "Dnevnik";
+"settingsViewLogButtonTitle" = "Prikaži dnevnik";
+
+// Log view
+
+"logViewTitle" = "Dnevnik";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "Izvažanje dnevnika ni uspelo";
+"alertUnableToRemovePreviousLogMessage" = "Prešnjega dnevnika ni bilo mogoče izbrisati";
+
+"alertUnableToWriteLogTitle" = "Izvažanje dnevnika ni uspelo";
+"alertUnableToWriteLogMessage" = "Ne morem zapisati dnevnikov v datoteko";
+
+// Zip import / export error alerts
+
+"alertCantOpenInputZipFileTitle" = "Arhiva zip ni bilo mogoče prebrati";
+"alertCantOpenInputZipFileMessage" = "Arhiva zip ni bilo mogoče prebrati.";
+
+"alertCantOpenOutputZipFileForWritingTitle" = "Arhiva zip ni bilo mogoče ustvariti";
+"alertCantOpenOutputZipFileForWritingMessage" = "Ne morem odpreti arhiva zip za zapisovanje.";
+
+"alertBadArchiveTitle" = "Arhiva zip ni bilo mogoče prebrati";
+"alertBadArchiveMessage" = "Pokvarjen arhiv zip.";
+
+"alertNoTunnelsToExportTitle" = "Ničesar ni za izvoz";
+"alertNoTunnelsToExportMessage" = "Ni tunelov za izvoz";
+
+"alertNoTunnelsInImportedZipArchiveTitle" = "V arhivu zip ni tunelov";
+"alertNoTunnelsInImportedZipArchiveMessage" = "V arhivu zip ni bilo najdenih konfiguracijskih datotek za tunele.";
+
+// Conf import error alerts
+
+"alertCantOpenInputConfFileTitle" = "Uvoz iz datoteke ni uspel";
+"alertCantOpenInputConfFileMessage (%@)" = "Datoteke \"%@\" ni bilo mogoče prebrati.";
+
+// Tunnel management error alerts
+
+"alertTunnelActivationFailureTitle" = "Napaka pri aktivaciji";
+"alertTunnelActivationFailureMessage" = "Tunela ni bilo mogoče aktivirati. Zagotovite, da imate vzpostavljeno spletno povezavo.";
+"alertTunnelActivationSavedConfigFailureMessage" = "Informacije o tunelu ni bilo mogoče pridobiti iz shranjene konfiguracije.";
+"alertTunnelActivationBackendFailureMessage" = "Zaledne knjižnice Go ni bilo mogoče vključiti.";
+"alertTunnelActivationFileDescriptorFailureMessage" = "Deskriptorja datoteke naprave TUN ni mogoče določiti.";
+"alertTunnelActivationSetNetworkSettingsMessage" = "Objektu tunela ni mogoče nastaviti omrežnih nastavitev.";
+
+"alertTunnelActivationFailureOnDemandAddendum" = " Ta tunel ima omogočeno aktivacijo na zahtevo, tako, da ga operacijski sistem lahko aktivira samodejno. To lahko onemogočite v tej aplikaciji z urejanjem konfiguracije tunela.";
+
+"alertTunnelDNSFailureTitle" = "Napaka pri razrešitvi DNS";
+"alertTunnelDNSFailureMessage" = "Eno ali več domen končnih točk ni bilo mogoče razrešiti.";
+
+"alertTunnelNameEmptyTitle" = "Ime ni bilo podano";
+"alertTunnelNameEmptyMessage" = "Ne morem ustvariti tunela s praznim imenom";
+
+"alertTunnelAlreadyExistsWithThatNameTitle" = "Ime že obstaja";
+"alertTunnelAlreadyExistsWithThatNameMessage" = "Tunel s tem imenom že obstaja";
+
+"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Aktivacija v teku";
+"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "Tunel že aktiven ali v procesu aktivacije";
+
+// Tunnel management error alerts on system error
+/* The alert message that goes with the following titles would be
+ one of the alertSystemErrorMessage* listed further down */
+
+"alertSystemErrorOnListingTunnelsTitle" = "Tunelov ni bilo mogoče našteti";
+"alertSystemErrorOnAddTunnelTitle" = "Tunela ni bilo mogoče ustvariti";
+"alertSystemErrorOnModifyTunnelTitle" = "Tunela ni bilo spremeniti";
+"alertSystemErrorOnRemoveTunnelTitle" = "Tunela ni bilo mogoče odstraniti";
+
+/* The alert message for this alert shall include
+ one of the alertSystemErrorMessage* listed further down */
+"alertTunnelActivationSystemErrorTitle" = "Napaka pri aktivaciji";
+"alertTunnelActivationSystemErrorMessage (%@)" = "Tunel ni bilo mogoče aktivirati. %@";
+
+/* alertSystemErrorMessage* messages */
+"alertSystemErrorMessageTunnelConfigurationInvalid" = "Konfiguracija ni veljavna.";
+"alertSystemErrorMessageTunnelConfigurationDisabled" = "Konfiguracija je onemogočena.";
+"alertSystemErrorMessageTunnelConnectionFailed" = "Povezava ni uspela.";
+"alertSystemErrorMessageTunnelConfigurationStale" = "Konfiguracije je zastarala.";
+"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Branje ali pisanje konfiguracije ni uspelo.";
+"alertSystemErrorMessageTunnelConfigurationUnknown" = "Neznana sistemska napaka.";
+
+// Mac status bar menu / pulldown menu / main menu
+
+"macMenuNetworks (%@)" = "Omrežja: %@";
+"macMenuNetworksNone" = "Ni omrežij";
+
+"macMenuTitle" = "WireGuard";
+"macMenuManageTunnels" = "Upravljaj tunele";
+"macMenuImportTunnels" = "Uvozi tunele iz datoteke …";
+"macMenuAddEmptyTunnel" = "Dodaj prazen tunel …";
+"macMenuViewLog" = "Pokaži dnevnik";
+"macMenuExportTunnels" = "Izvozi tunele v datoteko zip …";
+"macMenuAbout" = "O aplikaciji WireGuard";
+"macMenuQuit" = "Končaj WireGuard";
+
+"macMenuHideApp" = "Skrij WireGuard";
+"macMenuHideOtherApps" = "Skrij druge";
+"macMenuShowAllApps" = "Prikaži vse";
+
+"macMenuFile" = "Datoteka";
+"macMenuCloseWindow" = "Zapri okno";
+
+"macMenuEdit" = "Uredi";
+"macMenuCut" = "Izreži";
+"macMenuCopy" = "Kopiraj";
+"macMenuPaste" = "Prilepi";
+"macMenuSelectAll" = "Izberi vse";
+
+"macMenuTunnel" = "Tunel";
+"macMenuToggleStatus" = "Preklopi status";
+"macMenuEditTunnel" = "Uredi …";
+"macMenuDeleteSelected" = "Izbriši izbrano";
+
+"macMenuWindow" = "Okno";
+"macMenuMinimize" = "Pomanjšaj";
+"macMenuZoom" = "Povečava";
+
+// Mac manage tunnels window
+
+"macWindowTitleManageTunnels" = "Upravljaj tunele WireGuard";
+
+"macDeleteTunnelConfirmationAlertMessage (%@)" = "Ali ste prepričani, da želite izbrisati \"%@\"?";
+"macDeleteMultipleTunnelsConfirmationAlertMessage (%d)" = "Ali ste prepričani, da želite izbrisati izbrane tunele?";
+"macDeleteTunnelConfirmationAlertInfo" = "Tega dejanja ne morete razveljaviti.";
+"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Izbriši";
+"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "Prekliči";
+"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Brišem …";
+
+"macButtonImportTunnels" = "Uvozi tunele iz datoteke";
+"macSheetButtonImport" = "Uvozi";
+
+"macNameFieldExportLog" = "Shrani dnevnik v:";
+"macSheetButtonExportLog" = "Shrani";
+
+"macNameFieldExportZip" = "Izvozi tunele v:";
+"macSheetButtonExportZip" = "Shrani";
+
+"macButtonDeleteTunnels (%d)" = "Izbriši tunelov: %d";
+
+"macButtonEdit" = "Uredi";
+
+// Mac detail/edit view fields
+
+"macFieldKey (%@)" = "%@:";
+"macFieldOnDemand" = "Na zahtevo:";
+"macFieldOnDemandSSIDs" = "SSID-ji:";
+
+// Mac status display
+
+"macStatus (%@)" = "Status: %@";
+
+// Mac editing config
+
+"macEditDiscard" = "Zavrzi";
+"macEditSave" = "Shrani";
+
+"macAlertNameIsEmpty" = "Ime je obvezno";
+"macAlertDuplicateName (%@)" = "Drug tunel z imenom \"%@\" že obstaja.";
+
+"macAlertInvalidLine (%@)" = "Neveljavna vrstica: \"%@\".";
+
+"macAlertNoInterface" = "Konfiguracija mora imeti odsek \"Interface\".";
+"macAlertMultipleInterfaces" = "Konfiguracija mora imeti le en odsek \"Interface\".";
+"macAlertPrivateKeyInvalid" = "Zasebni ključ ni veljaven.";
+"macAlertListenPortInvalid (%@)" = "Vrata poslušanja \"%@\" niso veljavna.";
+"macAlertAddressInvalid (%@)" = "Naslov \"%@\" ni veljaven.";
+"macAlertDNSInvalid (%@)" = "DNS \"%@\" ni veljaven.";
+"macAlertMTUInvalid (%@)" = "Vrednost MTU \"%@\" ni veljavna.";
+
+"macAlertUnrecognizedInterfaceKey (%@)" = "Vmesnik vsebuje neprepoznan ključ \"%@\"";
+"macAlertInfoUnrecognizedInterfaceKey" = "Veljavna polja so: \"PrivateKey\", \"ListenPort\", \"Address\", \"DNS\" in \"MTU\".";
+
+"macAlertPublicKeyInvalid" = "Javni ključ ni veljaven";
+"macAlertPreSharedKeyInvalid" = "Ključ v skupni rabi ni veljaven";
+"macAlertAllowedIPInvalid (%@)" = "Dovoljen naslov IP \"%@\" ni veljaven";
+"macAlertEndpointInvalid (%@)" = "Končna točka \"%@\" ni veljavna";
+"macAlertPersistentKeepliveInvalid (%@)" = "Vrednost \"%@\" za trajno ohranjanje povezave ni veljavna";
+
+"macAlertUnrecognizedPeerKey (%@)" = "Vrstnik vsebuje neprepoznan ključ \"%@\"";
+"macAlertInfoUnrecognizedPeerKey" = "Veljavna polja so: \"PublicKey\", \"PresharedKey\", \"AllowedIPs\", \"Endpoint\" in \"PersistentKeepalive\"";
+
+"macAlertMultipleEntriesForKey (%@)" = "Obstajati bi moral samo en vnos na odsek za ključ \"%@\"";
+
+// Mac about dialog
+
+"macAppVersion (%@)" = "Verzija aplikacije: %@";
+"macGoBackendVersion (%@)" = "Verzija wireguard-go: %@";
+
+// Privacy
+
+"macExportPrivateData" = "izvozi zasebne ključe tunela";
+"macViewPrivateData" = "prikaži zasebne ključe tunela";
+"iosExportPrivateData" = "Za izvoz zasebnih ključev tunelov se prijavite.";
+"iosViewPrivateData" = "Za ogled zasebnih ključev tunelov se prijavite.";
+
+// Mac alert
+
+"macConfirmAndQuitAlertMessage" = "Ali želite zapreti upravljalca tunelov ali končati WireGuard v celoti?";
+"macConfirmAndQuitAlertInfo" = "Če zaprete upravljalca tunelov, bo WireGuard še naprej na voljo preko ikone v meniju.";
+"macConfirmAndQuitInfoWithActiveTunnel (%@)" = "Če zaprete upravljalca tunelov, bo WireGuard še naprej na voljo preko ikone v meniju.\n\nPomnite: če zaprete WireGuard bo trenutni aktiven tunel (\"%@\") ostal aktiven dokler ga ne deaktivirate preko te aplikacije ali preko omrežne plošče v sistemskih nastavitvah.";
+"macConfirmAndQuitAlertQuitWireGuard" = "Končaj WireGuard";
+"macConfirmAndQuitAlertCloseWindow" = "Zapri upravljalca tunelov";
+
+"macAppExitingWithActiveTunnelMessage" = "WireGuard se končuje z aktivnim tunelom";
+"macAppExitingWithActiveTunnelInfo" = "Tunel bo ostal aktiven po izhodu. Lahko ga onemogočite po ponovnem odprtju aplikacije ali preko omrežne plošče v sistemskih nastavitvah.";
+
+// Mac tooltip
+
+"macToolTipEditTunnel" = "Uredi tunel (⌘E)";
+"macToolTipToggleStatus" = "Preklopi status (⌘T)";
+
+// Mac log view
+
+"macLogColumnTitleTime" = "Čas";
+"macLogColumnTitleLogMessage" = "Sporočilo dnevnika";
+"macLogButtonTitleClose" = "Zapri";
+"macLogButtonTitleSave" = "Shrani …";
+
+// Mac unusable tunnel view
+
+"macUnusableTunnelMessage" = "Konfiguracije za ta tunel ni bilo mogoče najti verigi ključev.";
+"macUnusableTunnelInfo" = "V primeru, da je tunel ustvaril drug uporabnik, lahko tunel vidi, uredi ali aktivira le tisti uporabnik.";
+"macUnusableTunnelButtonTitleDeleteTunnel" = "Izbriši tunel";
+
+// Mac App Store updating alert
+
+"macAppStoreUpdatingAlertMessage" = "App Store bi rad posodobil WireGuard";
+"macAppStoreUpdatingAlertInfoWithOnDemand (%@)" = "Onemogočite aktivacijo na zahtevo za tunel \"%@\", ga deaktivirajte in nadaljujte posodobitev iz trgovine App Store.";
+"macAppStoreUpdatingAlertInfoWithoutOnDemand (%@)" = "Prosimo deaktivirajte tunel \"%@\" in nadaljuje posodobitev v trgovini App Store.";
+
+// Donation
+
+"donateLink" = "♥ Donirajte projektu WireGuard";
diff --git a/Sources/WireGuardApp/tr.lproj/Localizable.strings b/Sources/WireGuardApp/tr.lproj/Localizable.strings
new file mode 100644
index 0000000..a4ff936
--- /dev/null
+++ b/Sources/WireGuardApp/tr.lproj/Localizable.strings
@@ -0,0 +1,445 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "TAMAM";
+"actionCancel" = "İptal";
+"actionSave" = "Kaydet";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "Ayarlar";
+"tunnelsListCenteredAddTunnelButtonTitle" = "Tünel ekle";
+"tunnelsListSwipeDeleteButtonTitle" = "Sil";
+"tunnelsListSelectButtonTitle" = "Seç";
+"tunnelsListSelectAllButtonTitle" = "Tümünü Seç";
+"tunnelsListDeleteButtonTitle" = "Sil";
+"tunnelsListSelectedTitle (%d)" = "%d seçildi";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "Yeni bir WireGuard tüneli ekle";
+"addTunnelMenuImportFile" = "Dosya veya arşivden ekle";
+"addTunnelMenuQRCode" = "QR kodundan ekle";
+"addTunnelMenuFromScratch" = "Sıfırdan oluştur";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "%d tünel oluşturuldu";
+"alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "İçeri aktarılan dosyalardan %1$d/%2$d tünel oluşturuldu";
+
+"alertImportedFromZipTitle (%d)" = "%d tünel oluşturuldu";
+"alertImportedFromZipMessage (%1$d of %2$d)" = "Zip arşivinden %1$d/%2$d tünel oluşturuldu";
+
+"alertBadConfigImportTitle" = "Tünel içeri aktarılamıyor";
+"alertBadConfigImportMessage (%@)" = "‘%@’ dosyası geçerli bir WireGuard konfigürasyonu içermiyor";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "Sil";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "%d tüneli silinsin mi?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "%d tünelleri silinsin mi?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "Yeni konfigürasyon";
+"editTunnelViewTitle" = "Konfigürasyonu düzenle";
+
+"tunnelSectionTitleStatus" = "Durum";
+
+"tunnelStatusInactive" = "Aktif değil";
+"tunnelStatusActivating" = "Etkinleştiriliyor";
+"tunnelStatusActive" = "Etkin";
+"tunnelStatusDeactivating" = "Devre dışı bırakılıyor";
+"tunnelStatusReasserting" = "Yeniden etkinleştiriliyor";
+"tunnelStatusRestarting" = "Yeniden başlatılıyor";
+"tunnelStatusWaiting" = "Bekleniyor";
+
+"macToggleStatusButtonActivate" = "Etkinleştir";
+"macToggleStatusButtonActivating" = "Etkinleştiriliyor…";
+"macToggleStatusButtonDeactivate" = "Devre dışı bırak";
+"macToggleStatusButtonDeactivating" = "Devre dışı bırakılıyor…";
+"macToggleStatusButtonReasserting" = "Yeniden etkinleştiriliyor…";
+"macToggleStatusButtonRestarting" = "Yeniden başlatılıyor…";
+"macToggleStatusButtonWaiting" = "Bekleniyor…";
+
+"tunnelSectionTitleInterface" = "Arayüz";
+
+"tunnelInterfaceName" = "İsim";
+"tunnelInterfacePrivateKey" = "Özel anahtar";
+"tunnelInterfacePublicKey" = "Açık anahtar";
+"tunnelInterfaceGenerateKeypair" = "Anahtar çifti oluştur";
+"tunnelInterfaceAddresses" = "Adresler";
+"tunnelInterfaceListenPort" = "Dinlenen port";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "DNS sunucuları";
+"tunnelInterfaceStatus" = "Durum";
+
+"tunnelSectionTitlePeer" = "Eş";
+
+"tunnelPeerPublicKey" = "Genel anahtar";
+"tunnelPeerPreSharedKey" = "Önceden paylaşılan anahtar";
+"tunnelPeerEndpoint" = "Uç nokta";
+"tunnelPeerPersistentKeepalive" = "Kalıcı canlı tutma";
+"tunnelPeerAllowedIPs" = "İzin verilen IP’ler";
+"tunnelPeerRxBytes" = "Veri alındı";
+"tunnelPeerTxBytes" = "Veri gönderildi";
+"tunnelPeerLastHandshakeTime" = "En son el sıkışma";
+"tunnelPeerExcludePrivateIPs" = "Özel IP’leri hariç tut";
+
+"tunnelSectionTitleOnDemand" = "İsteğe Bağlı Etkinleştirme";
+
+"tunnelOnDemandCellular" = "Hücresel";
+"tunnelOnDemandEthernet" = "Ethernet";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+"tunnelOnDemandSSIDsKey" = "SSID’ler";
+
+"tunnelOnDemandAnySSID" = "Herhangi bir SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "Yalnızca bu SSID’ler";
+"tunnelOnDemandExceptTheseSSIDs" = "Bu SSID’ler dışında";
+"tunnelOnDemandOnlySSID (%d)" = "Sadece %d SSID";
+"tunnelOnDemandOnlySSIDs (%d)" = "Sadece %d SSID’ler";
+"tunnelOnDemandExceptSSID (%d)" = "%d SSID hariç";
+"tunnelOnDemandExceptSSIDs (%d)" = "%d SSID’leri hariç";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@: %2$@";
+
+"tunnelOnDemandSSIDViewTitle" = "SSID’ler";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSID’ler";
+"tunnelOnDemandNoSSIDs" = "SSID yok";
+"tunnelOnDemandSectionTitleAddSSIDs" = "SSID’ler ekleyin";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Bağlanılanı ekle: %@";
+"tunnelOnDemandAddMessageAddNewSSID" = "Yeni ekle";
+
+"tunnelOnDemandKey" = "Talep üzerine";
+"tunnelOnDemandOptionOff" = "Kapalı";
+"tunnelOnDemandOptionWiFiOnly" = "Sadece Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi veya hücresel";
+"tunnelOnDemandOptionCellularOnly" = "Sadece hücresel";
+"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi veya ethernet";
+"tunnelOnDemandOptionEthernetOnly" = "Sadece ethernet";
+
+"addPeerButtonTitle" = "Eş ekle";
+
+"deletePeerButtonTitle" = "Eşi sil";
+"deletePeerConfirmationAlertButtonTitle" = "Sil";
+"deletePeerConfirmationAlertMessage" = "Bu eş silinsin mi?";
+
+"deleteTunnelButtonTitle" = "Tüneli sil";
+"deleteTunnelConfirmationAlertButtonTitle" = "Sil";
+"deleteTunnelConfirmationAlertMessage" = "Bu tünel silinsin mi?";
+
+"tunnelEditPlaceholderTextRequired" = "Gerekli";
+"tunnelEditPlaceholderTextOptional" = "İsteğe bağlı";
+"tunnelEditPlaceholderTextAutomatic" = "Otomatik";
+"tunnelEditPlaceholderTextStronglyRecommended" = "Kesinlikle önerilir";
+"tunnelEditPlaceholderTextOff" = "Kapalı";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "her %@ saniyede";
+"tunnelHandshakeTimestampNow" = "Şimdi";
+"tunnelHandshakeTimestampSystemClockBackward" = "(Sistem saati geriye doğru sarılı)";
+"tunnelHandshakeTimestampAgo (%@)" = "%@ önce";
+"tunnelHandshakeTimestampYear (%d)" = "%d yıl";
+"tunnelHandshakeTimestampYears (%d)" = "%d yıl";
+"tunnelHandshakeTimestampDay (%d)" = "%d gün";
+"tunnelHandshakeTimestampDays (%d)" = "%d gün";
+"tunnelHandshakeTimestampHour (%d)" = "%d saat";
+"tunnelHandshakeTimestampHours (%d)" = "%d saat";
+"tunnelHandshakeTimestampMinute (%d)" = "%d dakika";
+"tunnelHandshakeTimestampMinutes (%d)" = "%d dakika";
+"tunnelHandshakeTimestampSecond (%d)" = "%d saniye";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d saniye";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ saat";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ dakika";
+
+"tunnelPeerPresharedKeyEnabled" = "etkinleştirildi";
+
+// Error alerts while creating / editing a tunnel configuration
+/* Alert title for error in the interface data */
+
+"alertInvalidInterfaceTitle" = "Geçersiz arayüz";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidInterfaceMessageNameRequired" = "Arayüz ismi gerekli";
+"alertInvalidInterfaceMessagePrivateKeyRequired" = "Arayüz’ün özel anahtarı gerekli";
+"alertInvalidInterfaceMessagePrivateKeyInvalid" = "Arayüz’ün özel anahtarı base64 kodlamalı bir 32-byte anahtar olmalı";
+"alertInvalidInterfaceMessageAddressInvalid" = "Arayüz adresleri, isteğe bağlı olarak CIDR gösteriminde virgülle ayrılmış IP adreslerinin bir listesi olmalıdır";
+"alertInvalidInterfaceMessageListenPortInvalid" = "Arayüzün dinleme bağlantı noktası 0 ile 65535 arasında veya belirtilmemiş olmalıdır";
+"alertInvalidInterfaceMessageMTUInvalid" = "Arayüzün MTU’su 576 ile 65535 arasında veya belirtilmemiş olmalıdır";
+"alertInvalidInterfaceMessageDNSInvalid" = "Arayüzün DNS sunucuları, virgülle ayrılmış IP adreslerinin bir listesi olmalıdır";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "Geçersiz eş";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidPeerMessagePublicKeyRequired" = "Eşin genel anahtarı gerekli";
+"alertInvalidPeerMessagePublicKeyInvalid" = "Eşin genel anahtarı, base64 ile kodlanmış 32 baytlık bir anahtar olmalıdır";
+"alertInvalidPeerMessagePreSharedKeyInvalid" = "Eşlerin önceden paylaşılan anahtarı, base64 ile kodlanmış 32 baytlık bir anahtar olmalıdır";
+"alertInvalidPeerMessageAllowedIPsInvalid" = "Eşlerin izin verilen IP’leri, isteğe bağlı olarak CIDR gösteriminde virgülle ayrılmış IP adreslerinin bir listesi olmalıdır";
+"alertInvalidPeerMessageEndpointInvalid" = "Eşin uç noktası \"host:port\" veya \"[host]: port\" biçiminde olmalıdır";
+"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "Eşin sürekli canlı tutulması 0 ile 65535 arasında veya belirtilmemiş olmalıdır";
+"alertInvalidPeerMessagePublicKeyDuplicated" = "İki veya daha fazla eş aynı ortak anahtara sahip olamaz";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "QR kodu tara";
+"scanQRCodeTipText" = "İpucu: `qrencode -t ansiutf8 < tunnel.conf` ile oluşturun";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "Kamera Desteklenmiyor";
+"alertScanQRCodeCameraUnsupportedMessage" = "Bu cihaz QR kodlarını tarayamaz";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "Geçersiz QR Kodu";
+"alertScanQRCodeInvalidQRCodeMessage" = "Taranan QR kodu geçerli bir WireGuard yapılandırması değil";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "Geçersiz Kod";
+"alertScanQRCodeUnreadableQRCodeMessage" = "Taranan kod okunamadı";
+
+"alertScanQRCodeNamePromptTitle" = "Lütfen taranan tünele bir isim verin";
+
+// Settings UI
+
+"settingsViewTitle" = "Ayarlar";
+
+"settingsSectionTitleAbout" = "Hakkında";
+"settingsVersionKeyWireGuardForIOS" = "iOS için WireGuard";
+"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
+
+"settingsSectionTitleExportConfigurations" = "Yapılandırmaları dışa aktar";
+"settingsExportZipButtonTitle" = "Zip arşivini dışa aktar";
+
+"settingsSectionTitleTunnelLog" = "Günlük";
+"settingsViewLogButtonTitle" = "Günlüğü görüntüle";
+
+// Log view
+
+"logViewTitle" = "Günlük";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "Günlük dışa aktarılamadı";
+"alertUnableToRemovePreviousLogMessage" = "Önceden var olan günlük temizlenemedi";
+
+"alertUnableToWriteLogTitle" = "Günlük dışa aktarılamadı";
+"alertUnableToWriteLogMessage" = "Günlükler dosyaya yazılamıyor";
+
+// Zip import / export error alerts
+
+"alertCantOpenInputZipFileTitle" = "Zip arşivi okunamıyor";
+"alertCantOpenInputZipFileMessage" = "Zip arşivi okunamadı.";
+
+"alertCantOpenOutputZipFileForWritingTitle" = "Zip arşivi oluşturulamıyor";
+"alertCantOpenOutputZipFileForWritingMessage" = "Zip dosyası yazmak için açılamadı.";
+
+"alertBadArchiveTitle" = "Zip arşivi okunamıyor";
+"alertBadArchiveMessage" = "Kötü veya bozuk zip arşivi.";
+
+"alertNoTunnelsToExportTitle" = "Dışa aktarılacak bir şey yok";
+"alertNoTunnelsToExportMessage" = "Dışa aktarılacak tünel yok";
+
+"alertNoTunnelsInImportedZipArchiveTitle" = "Zip arşivinde tünel yok";
+"alertNoTunnelsInImportedZipArchiveMessage" = "Zip arşivinde .conf tünel dosyası bulunamadı.";
+
+// Conf import error alerts
+
+"alertCantOpenInputConfFileTitle" = "Dosyadan içe aktarılamıyor";
+"alertCantOpenInputConfFileMessage (%@)" = "‘%@’ dosyası okunamadı.";
+
+// Tunnel management error alerts
+
+"alertTunnelActivationFailureTitle" = "Aktivasyon hatası";
+"alertTunnelActivationFailureMessage" = "Tünel etkinleştirilemedi. Lütfen internete bağlı olduğunuzdan emin olun.";
+"alertTunnelActivationSavedConfigFailureMessage" = "Kaydedilen yapılandırmadan tünel bilgileri alınamıyor.";
+"alertTunnelActivationBackendFailureMessage" = "Go Backend kitaplığı açılamıyor.";
+"alertTunnelActivationFileDescriptorFailureMessage" = "TUN cihaz dosyası tanımlayıcısı belirlenemiyor.";
+"alertTunnelActivationSetNetworkSettingsMessage" = "Tünel nesnesine ağ ayarları uygulanamıyor.";
+
+"alertTunnelActivationFailureOnDemandAddendum" = " Bu tünelde İsteğe Bağlı Etkinleştirme özelliği etkinleştirilmiştir, bu nedenle bu tünel işletim sistemi tarafından otomatik olarak yeniden etkinleştirilebilir. Tünel yapılandırmasını düzenleyerek bu uygulamada İsteğe Bağlı Etkinleştir’i kapatabilirsiniz.";
+
+"alertTunnelDNSFailureTitle" = "DNS çözümleme hatası";
+"alertTunnelDNSFailureMessage" = "Bir veya daha fazla uç nokta alanı çözülemedi.";
+
+"alertTunnelNameEmptyTitle" = "İsim sağlanmadı";
+"alertTunnelNameEmptyMessage" = "Boş bir isimle tünel oluşturulamaz";
+
+"alertTunnelAlreadyExistsWithThatNameTitle" = "Bu isim zaten var";
+"alertTunnelAlreadyExistsWithThatNameMessage" = "Bu isimde bir tünel zaten var";
+
+"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "Aktivasyon sürüyor";
+"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "Tünel halihazırda aktif veya aktif olma sürecinde";
+
+// Tunnel management error alerts on system error
+/* The alert message that goes with the following titles would be
+ one of the alertSystemErrorMessage* listed further down */
+
+"alertSystemErrorOnListingTunnelsTitle" = "Tüneller listelenemiyor";
+"alertSystemErrorOnAddTunnelTitle" = "Tünel oluşturulamıyor";
+"alertSystemErrorOnModifyTunnelTitle" = "Tünel değiştirilemiyor";
+"alertSystemErrorOnRemoveTunnelTitle" = "Tünel kaldırılamıyor";
+
+/* The alert message for this alert shall include
+ one of the alertSystemErrorMessage* listed further down */
+"alertTunnelActivationSystemErrorTitle" = "Aktivasyon hatası";
+"alertTunnelActivationSystemErrorMessage (%@)" = "Tünel etkinleştirilemedi. %@";
+
+/* alertSystemErrorMessage* messages */
+"alertSystemErrorMessageTunnelConfigurationInvalid" = "Yapılandırma geçersiz.";
+"alertSystemErrorMessageTunnelConfigurationDisabled" = "Yapılandırma devre dışı bırakıldı.";
+"alertSystemErrorMessageTunnelConnectionFailed" = "Bağlantı başarısız oldu.";
+"alertSystemErrorMessageTunnelConfigurationStale" = "Yapılandırma eski.";
+"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "Yapılandırmanın okunması veya yazılması başarısız oldu.";
+"alertSystemErrorMessageTunnelConfigurationUnknown" = "Bilinmeyen sistem hatası.";
+
+// Mac status bar menu / pulldown menu / main menu
+
+"macMenuNetworks (%@)" = "Ağlar: %@";
+"macMenuNetworksNone" = "Ağlar: Yok";
+
+"macMenuTitle" = "WireGuard";
+"macMenuManageTunnels" = "Tünelleri Yönet";
+"macMenuImportTunnels" = "Tünelleri Dosyadan İçe Aktar…";
+"macMenuAddEmptyTunnel" = "Boş Tünel Ekle…";
+"macMenuViewLog" = "Günlüğü Görüntüle";
+"macMenuExportTunnels" = "Tünelleri Zip'e Aktar…";
+"macMenuAbout" = "WireGuard Hakkında";
+"macMenuQuit" = "WireGuard’dan Çık";
+
+"macMenuHideApp" = "WireGuard’ı Gizle";
+"macMenuHideOtherApps" = "Diğerlerini Gizle";
+"macMenuShowAllApps" = "Tümünü Göster";
+
+"macMenuFile" = "Dosya";
+"macMenuCloseWindow" = "Pencereyi Kapat";
+
+"macMenuEdit" = "Düzenle";
+"macMenuCut" = "Kes";
+"macMenuCopy" = "Kopyala";
+"macMenuPaste" = "Yapıştır";
+"macMenuSelectAll" = "Tümünü Seç";
+
+"macMenuTunnel" = "Tünel";
+"macMenuToggleStatus" = "Durumu Değiştir";
+"macMenuEditTunnel" = "Düzenle…";
+"macMenuDeleteSelected" = "Seçileni Sil";
+
+"macMenuWindow" = "Pencere";
+"macMenuMinimize" = "Küçült";
+"macMenuZoom" = "Yakınlaştır";
+
+// Mac manage tunnels window
+
+"macWindowTitleManageTunnels" = "WireGuard Tünellerini Yönet";
+
+"macDeleteTunnelConfirmationAlertMessage (%@)" = "‘%@’ silmek istediğinizden emin misiniz?";
+"macDeleteMultipleTunnelsConfirmationAlertMessage (%d)" = "%d tünellerini silmek istediğinizden emin misiniz?";
+"macDeleteTunnelConfirmationAlertInfo" = "Bu eylemi geri alamazsınız.";
+"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "Sil";
+"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "İptal";
+"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "Siliniyor…";
+
+"macButtonImportTunnels" = "Tünelleri dosyadan içe aktar";
+"macSheetButtonImport" = "İçe aktar";
+
+"macNameFieldExportLog" = "Günlüğü şuraya kaydet:";
+"macSheetButtonExportLog" = "Kaydet";
+
+"macNameFieldExportZip" = "Tünelleri şuraya aktar:";
+"macSheetButtonExportZip" = "Kaydet";
+
+"macButtonDeleteTunnels (%d)" = "%d tünellerini sil";
+
+"macButtonEdit" = "Düzenle";
+
+// Mac detail/edit view fields
+
+"macFieldKey (%@)" = "%@:";
+"macFieldOnDemand" = "Talep üzerine:";
+"macFieldOnDemandSSIDs" = "SSID’ler:";
+
+// Mac status display
+
+"macStatus (%@)" = "Durum: %@";
+
+// Mac editing config
+
+"macEditDiscard" = "Yoksay";
+"macEditSave" = "Kaydet";
+
+"macAlertNameIsEmpty" = "İsim gereklidir";
+"macAlertDuplicateName (%@)" = "‘%@’ ismiyle başka bir tünel zaten var.";
+
+"macAlertInvalidLine (%@)" = "Geçersiz satır: ‘%@’.";
+
+"macAlertNoInterface" = "Yapılandırmanın bir ‘Arayüz’ bölümü olmalıdır.";
+"macAlertMultipleInterfaces" = "Yapılandırmada yalnızca bir ‘Arayüz’ bölümü olmalıdır.";
+"macAlertPrivateKeyInvalid" = "Özel anahtar geçersiz.";
+"macAlertListenPortInvalid (%@)" = "Dinleme bağlantı noktası ‘%@’ geçersiz.";
+"macAlertAddressInvalid (%@)" = "‘%@’ adresi geçersiz.";
+"macAlertDNSInvalid (%@)" = "DNS ‘%@’ geçersiz.";
+"macAlertMTUInvalid (%@)" = "MTU ‘%@’ geçersiz.";
+
+"macAlertUnrecognizedInterfaceKey (%@)" = "Arayüz tanınmayan ‘%@’ anahtarı içeriyor";
+"macAlertInfoUnrecognizedInterfaceKey" = "Geçerli anahtarlar şunlardır: ‘PrivateKey’, ‘ListenPort’, ‘Address’, ‘DNS’ ve ‘MTU’.";
+
+"macAlertPublicKeyInvalid" = "Genel anahtar geçersiz";
+"macAlertPreSharedKeyInvalid" = "Önceden paylaşılan anahtar geçersiz";
+"macAlertAllowedIPInvalid (%@)" = "İzin verilen IP ‘%@’ geçersiz";
+"macAlertEndpointInvalid (%@)" = "‘%@’ uç noktası geçersiz";
+"macAlertPersistentKeepliveInvalid (%@)" = "Sürekli canlı tutma değeri ‘%@’ geçersiz";
+
+"macAlertUnrecognizedPeerKey (%@)" = "Eş tanınmayan ‘%@’ anahtarı içeriyor";
+"macAlertInfoUnrecognizedPeerKey" = "Geçerli anahtarlar şunlardır: ‘PublicKey’, ‘PresharedKey’, ‘AllowedIPs’, ‘Endpoint’ ve ‘PersistentKeepalive’";
+
+"macAlertMultipleEntriesForKey (%@)" = "‘%@’ anahtarı için bölüm başına yalnızca bir giriş olmalıdır";
+
+// Mac about dialog
+
+"macAppVersion (%@)" = "Uygulama sürümü: %@";
+"macGoBackendVersion (%@)" = "Go backend sürümü: %@";
+
+// Privacy
+
+"macExportPrivateData" = "tünel özel anahtarlarını dışa aktar";
+"macViewPrivateData" = "tünel özel anahtarlarını görüntüle";
+"iosExportPrivateData" = "Tünel özel anahtarlarını dışa aktarmak için kimlik doğrulaması yapın.";
+"iosViewPrivateData" = "Tünel özel anahtarlarını görüntülemek için kimlik doğrulaması yapın.";
+
+// Mac alert
+
+"macConfirmAndQuitAlertMessage" = "Tünel yöneticisini kapatmak mı yoksa WireGuard’dan tamamen çıkmak mı istiyorsunuz?";
+"macConfirmAndQuitAlertInfo" = "Tünel yöneticisini kapatırsanız, WireGuard menü çubuğu simgesinden kullanılmaya devam edecektir.";
+"macConfirmAndQuitInfoWithActiveTunnel (%@)" = "Tünel yöneticisini kapatırsanız, WireGuard menü çubuğu simgesinden kullanılmaya devam edecektir.\n\nWireGuard’dan tamamen çıkarsanız, o anda aktif olan tünelin ('%@') siz bu uygulamadan veya Sistem Tercihlerindeki Ağ paneli aracılığıyla devre dışı bırakana kadar hâlâ etkin kalacağını unutmayın.";
+"macConfirmAndQuitAlertQuitWireGuard" = "WireGuard’dan Çık";
+"macConfirmAndQuitAlertCloseWindow" = "Tünel Yöneticisini Kapat";
+
+"macAppExitingWithActiveTunnelMessage" = "WireGuard aktif bir tünelle çıkıyor";
+"macAppExitingWithActiveTunnelInfo" = "Tünel, çıktıktan sonra aktif kalacaktır. Bu uygulamayı yeniden açarak veya Sistem Tercihlerindeki Ağ panelinden devre dışı bırakabilirsiniz.";
+
+// Mac tooltip
+
+"macToolTipEditTunnel" = "Tüneli düzenle (⌘E)";
+"macToolTipToggleStatus" = "Durumu değiştir (⌘T)";
+
+// Mac log view
+
+"macLogColumnTitleTime" = "Zaman";
+"macLogColumnTitleLogMessage" = "Günlük mesajı";
+"macLogButtonTitleClose" = "Kapat";
+"macLogButtonTitleSave" = "Kaydet…";
+
+// Mac unusable tunnel view
+
+"macUnusableTunnelMessage" = "Bu tünelin yapılandırması anahtar zincirinde bulunamıyor.";
+"macUnusableTunnelInfo" = "Bu tünelin başka bir kullanıcı tarafından oluşturulması durumunda, yalnızca bu kullanıcı bu tüneli görüntüleyebilir, düzenleyebilir veya etkinleştirebilir.";
+"macUnusableTunnelButtonTitleDeleteTunnel" = "Tüneli sil";
+
+// Mac App Store updating alert
+
+"macAppStoreUpdatingAlertMessage" = "App Store, WireGuard’ı güncellemek istiyor";
+"macAppStoreUpdatingAlertInfoWithOnDemand (%@)" = "Lütfen ‘%@’ tüneli için isteğe bağlı’yı kapatın, devre dışı bırakın ve ardından App Store’da güncellemeye devam edin.";
+"macAppStoreUpdatingAlertInfoWithoutOnDemand (%@)" = "Lütfen ‘%@’ tünelini devre dışı bırakın ve ardından App Store’da güncellemeye devam edin.";
+
+// Donation
+
+"donateLink" = "♥ WireGuard Projesine Bağış Yapın";
diff --git a/Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings b/Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings
new file mode 100644
index 0000000..ea7ce04
--- /dev/null
+++ b/Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings
@@ -0,0 +1,445 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "确定";
+"actionCancel" = "取消";
+"actionSave" = "保存";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "设置";
+"tunnelsListCenteredAddTunnelButtonTitle" = "添加隧道";
+"tunnelsListSwipeDeleteButtonTitle" = "删除";
+"tunnelsListSelectButtonTitle" = "选择";
+"tunnelsListSelectAllButtonTitle" = "全选";
+"tunnelsListDeleteButtonTitle" = "删除";
+"tunnelsListSelectedTitle (%d)" = "已选择 %d 项";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "新建 WireGuard 隧道";
+"addTunnelMenuImportFile" = "导入配置或压缩包";
+"addTunnelMenuQRCode" = "扫描二维码";
+"addTunnelMenuFromScratch" = "手动创建";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "导入了 %d 项";
+"alertImportedFromMultipleFilesMessage (%1$d of %2$d)" = "通过文件导入了 %2$d 项中的 %1$d 项";
+
+"alertImportedFromZipTitle (%d)" = "导入了 %d 项";
+"alertImportedFromZipMessage (%1$d of %2$d)" = "通过压缩包导入了 %2$d 项中的 %1$d 项";
+
+"alertBadConfigImportTitle" = "无法导入隧道";
+"alertBadConfigImportMessage (%@)" = "在文件 ‘%@’ 中未发现有效的 WireGuard 配置";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "删除";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "删除 %d 隧道?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "删除 %d 个隧道?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "新建配置";
+"editTunnelViewTitle" = "编辑配置";
+
+"tunnelSectionTitleStatus" = "状态";
+
+"tunnelStatusInactive" = "未激活";
+"tunnelStatusActivating" = "启动中";
+"tunnelStatusActive" = "激活";
+"tunnelStatusDeactivating" = "停用中";
+"tunnelStatusReasserting" = "正在重新启动";
+"tunnelStatusRestarting" = "重启中";
+"tunnelStatusWaiting" = "等待中";
+
+"macToggleStatusButtonActivate" = "启动";
+"macToggleStatusButtonActivating" = "启动中…";
+"macToggleStatusButtonDeactivate" = "停用";
+"macToggleStatusButtonDeactivating" = "停用中…";
+"macToggleStatusButtonReasserting" = "正在重新启动…";
+"macToggleStatusButtonRestarting" = "重启中…";
+"macToggleStatusButtonWaiting" = "等待中...";
+
+"tunnelSectionTitleInterface" = "接口";
+
+"tunnelInterfaceName" = "名称";
+"tunnelInterfacePrivateKey" = "私钥";
+"tunnelInterfacePublicKey" = "公钥";
+"tunnelInterfaceGenerateKeypair" = "生成密钥对";
+"tunnelInterfaceAddresses" = "局域网 IP 地址";
+"tunnelInterfaceListenPort" = "监听端口";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "DNS 服务器";
+"tunnelInterfaceStatus" = "状态";
+
+"tunnelSectionTitlePeer" = "节点";
+
+"tunnelPeerPublicKey" = "公钥";
+"tunnelPeerPreSharedKey" = "预共享密钥";
+"tunnelPeerEndpoint" = "对端";
+"tunnelPeerPersistentKeepalive" = "连接保活间隔";
+"tunnelPeerAllowedIPs" = "路由的 IP 地址(段)";
+"tunnelPeerRxBytes" = "接收数据量";
+"tunnelPeerTxBytes" = "发送数据量";
+"tunnelPeerLastHandshakeTime" = "最新的握手";
+"tunnelPeerExcludePrivateIPs" = "排除局域网";
+
+"tunnelSectionTitleOnDemand" = "按需启动";
+
+"tunnelOnDemandCellular" = "蜂窝数据";
+"tunnelOnDemandEthernet" = "以太网";
+"tunnelOnDemandWiFi" = "Wi-Fi";
+"tunnelOnDemandSSIDsKey" = "无线网络名称(SSID)";
+
+"tunnelOnDemandAnySSID" = "任何SSID";
+"tunnelOnDemandOnlyTheseSSIDs" = "只有这些SSIDs";
+"tunnelOnDemandExceptTheseSSIDs" = "除了这些SSIDs";
+"tunnelOnDemandOnlySSID (%d)" = "只有 %d SSID";
+"tunnelOnDemandOnlySSIDs (%d)" = "只有 %d 这些SSIDs";
+"tunnelOnDemandExceptSSID (%d)" = "除了 %d SSID";
+"tunnelOnDemandExceptSSIDs (%d)" = "除了 %d 这些 SSIDs";
+"tunnelOnDemandSSIDOptionDescriptionMac (%1$@: %2$@)" = "%1$@:%2$@";
+
+"tunnelOnDemandSSIDViewTitle" = "无线网络名称(SSID)";
+"tunnelOnDemandSectionTitleSelectedSSIDs" = "无线网络名称(SSID)";
+"tunnelOnDemandNoSSIDs" = "没有 SSIDs";
+"tunnelOnDemandSectionTitleAddSSIDs" = "添加 SSIDs";
+"tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "添加连接:%@";
+"tunnelOnDemandAddMessageAddNewSSID" = "新增";
+
+"tunnelOnDemandKey" = "按需";
+"tunnelOnDemandOptionOff" = "关闭";
+"tunnelOnDemandOptionWiFiOnly" = "仅限 Wi-Fi";
+"tunnelOnDemandOptionWiFiOrCellular" = "Wi-Fi 或蜂窝数据";
+"tunnelOnDemandOptionCellularOnly" = "仅限蜂窝数据";
+"tunnelOnDemandOptionWiFiOrEthernet" = "Wi-Fi 或以太网";
+"tunnelOnDemandOptionEthernetOnly" = "仅限以太网";
+
+"addPeerButtonTitle" = "添加节点";
+
+"deletePeerButtonTitle" = "删除节点";
+"deletePeerConfirmationAlertButtonTitle" = "删除";
+"deletePeerConfirmationAlertMessage" = "删除此节点?";
+
+"deleteTunnelButtonTitle" = "删除隧道";
+"deleteTunnelConfirmationAlertButtonTitle" = "删除";
+"deleteTunnelConfirmationAlertMessage" = "删除此隧道?";
+
+"tunnelEditPlaceholderTextRequired" = "必填";
+"tunnelEditPlaceholderTextOptional" = "可选";
+"tunnelEditPlaceholderTextAutomatic" = "自动";
+"tunnelEditPlaceholderTextStronglyRecommended" = "强烈建议";
+"tunnelEditPlaceholderTextOff" = "关闭";
+
+"tunnelPeerPersistentKeepaliveValue (%@)" = "每隔 %@ 秒";
+"tunnelHandshakeTimestampNow" = "刚刚";
+"tunnelHandshakeTimestampSystemClockBackward" = "(系统时钟倒转)";
+"tunnelHandshakeTimestampAgo (%@)" = "%@前";
+"tunnelHandshakeTimestampYear (%d)" = "%d 年";
+"tunnelHandshakeTimestampYears (%d)" = "%d 年";
+"tunnelHandshakeTimestampDay (%d)" = "%d 天";
+"tunnelHandshakeTimestampDays (%d)" = "%d 天";
+"tunnelHandshakeTimestampHour (%d)" = "%d 小时";
+"tunnelHandshakeTimestampHours (%d)" = "%d 时";
+"tunnelHandshakeTimestampMinute (%d)" = "%d 分";
+"tunnelHandshakeTimestampMinutes (%d)" = "%d 分";
+"tunnelHandshakeTimestampSecond (%d)" = "%d 秒";
+"tunnelHandshakeTimestampSeconds (%d)" = "%d 秒";
+
+"tunnelHandshakeTimestampHours hh:mm:ss (%@)" = "%@ 时";
+"tunnelHandshakeTimestampMinutes mm:ss (%@)" = "%@ 分";
+
+"tunnelPeerPresharedKeyEnabled" = "已启用";
+
+// Error alerts while creating / editing a tunnel configuration
+/* Alert title for error in the interface data */
+
+"alertInvalidInterfaceTitle" = "无效接口";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidInterfaceMessageNameRequired" = "必须填写接口名称";
+"alertInvalidInterfaceMessagePrivateKeyRequired" = "需要接口的私钥";
+"alertInvalidInterfaceMessagePrivateKeyInvalid" = "接口的私钥必须是用base64编码的32字节密钥";
+"alertInvalidInterfaceMessageAddressInvalid" = "接口地址必须是一个逗号分隔的 IP 地址列表, 可用 CIDR 表示";
+"alertInvalidInterfaceMessageListenPortInvalid" = "接口的监听端口必须介于 0 至 65535 之间,或不指定";
+"alertInvalidInterfaceMessageMTUInvalid" = "接口的MTU必须介于 576 至 65535 之间,或不指定。";
+"alertInvalidInterfaceMessageDNSInvalid" = "接口的DNS服务器必须是逗号分隔的 IP 地址列表";
+
+/* Alert title for error in the peer data */
+"alertInvalidPeerTitle" = "节点无效";
+
+/* Any one of the following alert messages can go with the above title */
+"alertInvalidPeerMessagePublicKeyRequired" = "需要节点的公钥";
+"alertInvalidPeerMessagePublicKeyInvalid" = "节点的公钥必须是用base64编码的32字节密钥";
+"alertInvalidPeerMessagePreSharedKeyInvalid" = "节点的预共享密钥必须是用base64编码的32字节密钥";
+"alertInvalidPeerMessageAllowedIPsInvalid" = "节点的允许访问IP必须是一个逗号分隔的 IP 地址列表, 可用 CIDR 表示";
+"alertInvalidPeerMessageEndpointInvalid" = "节点的端点的格式必须为 \"host:port\" 或 \"[host]:port\"";
+"alertInvalidPeerMessagePersistentKeepaliveInvalid" = "节点的连接保活间隔必须介于 0 至 65535 之间,或不指定";
+"alertInvalidPeerMessagePublicKeyDuplicated" = "两个或多个节点不能拥有相同的公钥";
+
+// Scanning QR code UI
+
+"scanQRCodeViewTitle" = "扫描二维码";
+"scanQRCodeTipText" = "提示:使用命令 `qrencode -t ansiutf8 < tunnel.conf` 生成二维码";
+
+// Scanning QR code alerts
+
+"alertScanQRCodeCameraUnsupportedTitle" = "不支持的照相机";
+"alertScanQRCodeCameraUnsupportedMessage" = "此设备不能扫描二维码";
+
+"alertScanQRCodeInvalidQRCodeTitle" = "二维码无效";
+"alertScanQRCodeInvalidQRCodeMessage" = "扫描的二维码不是有效的 WireGuard 配置";
+
+"alertScanQRCodeUnreadableQRCodeTitle" = "代码无效";
+"alertScanQRCodeUnreadableQRCodeMessage" = "扫描的二维码无法读取";
+
+"alertScanQRCodeNamePromptTitle" = "请命名扫描的隧道";
+
+// Settings UI
+
+"settingsViewTitle" = "设置";
+
+"settingsSectionTitleAbout" = "关于";
+"settingsVersionKeyWireGuardForIOS" = "WireGuard for iOS";
+"settingsVersionKeyWireGuardGoBackend" = "WireGuard Go Backend";
+
+"settingsSectionTitleExportConfigurations" = "导出配置";
+"settingsExportZipButtonTitle" = "导出zip档案";
+
+"settingsSectionTitleTunnelLog" = "日志";
+"settingsViewLogButtonTitle" = "查看日志";
+
+// Log view
+
+"logViewTitle" = "日志";
+
+// Log alerts
+
+"alertUnableToRemovePreviousLogTitle" = "导出日志失败";
+"alertUnableToRemovePreviousLogMessage" = "已存在的日志无法被清除";
+
+"alertUnableToWriteLogTitle" = "导出日志失败";
+"alertUnableToWriteLogMessage" = "无法将日志写入文件";
+
+// Zip import / export error alerts
+
+"alertCantOpenInputZipFileTitle" = "无法读取压缩包";
+"alertCantOpenInputZipFileMessage" = "该压缩包无法读取。";
+
+"alertCantOpenOutputZipFileForWritingTitle" = "无法创建压缩包";
+"alertCantOpenOutputZipFileForWritingMessage" = "无法打开zip文件以写入。";
+
+"alertBadArchiveTitle" = "无法读取压缩包";
+"alertBadArchiveMessage" = "压缩包无效或损坏。";
+
+"alertNoTunnelsToExportTitle" = "没有内容可导出";
+"alertNoTunnelsToExportMessage" = "没有隧道可以导出";
+
+"alertNoTunnelsInImportedZipArchiveTitle" = "Zip档案中没有隧道";
+"alertNoTunnelsInImportedZipArchiveMessage" = "在zip档案中没有找到.conf隧道文件";
+
+// Conf import error alerts
+
+"alertCantOpenInputConfFileTitle" = "无法从文件中导入";
+"alertCantOpenInputConfFileMessage (%@)" = "文件 “%@” 无法读取。";
+
+// Tunnel management error alerts
+
+"alertTunnelActivationFailureTitle" = "启动失败";
+"alertTunnelActivationFailureMessage" = "隧道无法启动。请确保您已连接到互联网。";
+"alertTunnelActivationSavedConfigFailureMessage" = "无法从保存的配置中获取隧道信息。";
+"alertTunnelActivationBackendFailureMessage" = "无法启动 Go 后端连接库。";
+"alertTunnelActivationFileDescriptorFailureMessage" = "无法确定 TUN 设备文件描述符。";
+"alertTunnelActivationSetNetworkSettingsMessage" = "无法将网络设置应用到隧道对象。";
+
+"alertTunnelActivationFailureOnDemandAddendum" = " 此隧道已启用按需启动,所以此隧道可能会被操作系统自动重新启动。 您可以在此应用中通过编辑隧道配置来关闭按需启动。";
+
+"alertTunnelDNSFailureTitle" = "DBS解析失败";
+"alertTunnelDNSFailureMessage" = "一个或多个端点的域名无法解析";
+
+"alertTunnelNameEmptyTitle" = "没有输入名称";
+"alertTunnelNameEmptyMessage" = "不能创建名称为空的隧道";
+
+"alertTunnelAlreadyExistsWithThatNameTitle" = "名称已存在";
+"alertTunnelAlreadyExistsWithThatNameMessage" = "已经有隧道使用了这个名称";
+
+"alertTunnelActivationErrorTunnelIsNotInactiveTitle" = "启动正在进行中";
+"alertTunnelActivationErrorTunnelIsNotInactiveMessage" = "隧道已激活或正在进行启动中";
+
+// Tunnel management error alerts on system error
+/* The alert message that goes with the following titles would be
+ one of the alertSystemErrorMessage* listed further down */
+
+"alertSystemErrorOnListingTunnelsTitle" = "无法列出隧道";
+"alertSystemErrorOnAddTunnelTitle" = "无法创建隧道";
+"alertSystemErrorOnModifyTunnelTitle" = "无法修改隧道";
+"alertSystemErrorOnRemoveTunnelTitle" = "无法移除隧道";
+
+/* The alert message for this alert shall include
+ one of the alertSystemErrorMessage* listed further down */
+"alertTunnelActivationSystemErrorTitle" = "启动失败";
+"alertTunnelActivationSystemErrorMessage (%@)" = "隧道无法启动。%@";
+
+/* alertSystemErrorMessage* messages */
+"alertSystemErrorMessageTunnelConfigurationInvalid" = "配置无效";
+"alertSystemErrorMessageTunnelConfigurationDisabled" = "配置已禁用。";
+"alertSystemErrorMessageTunnelConnectionFailed" = "连接失败。";
+"alertSystemErrorMessageTunnelConfigurationStale" = "配置过旧。";
+"alertSystemErrorMessageTunnelConfigurationReadWriteFailed" = "读取或写入配置失败。";
+"alertSystemErrorMessageTunnelConfigurationUnknown" = "未知的系统错误。";
+
+// Mac status bar menu / pulldown menu / main menu
+
+"macMenuNetworks (%@)" = "网络:%@";
+"macMenuNetworksNone" = "网络:无";
+
+"macMenuTitle" = "WireGuard";
+"macMenuManageTunnels" = "管理隧道";
+"macMenuImportTunnels" = "从文件导入隧道…";
+"macMenuAddEmptyTunnel" = "添加空隧道…";
+"macMenuViewLog" = "查看日志";
+"macMenuExportTunnels" = "导出隧道为Zip…";
+"macMenuAbout" = "关于 WireGuard";
+"macMenuQuit" = "退出 WireGuard";
+
+"macMenuHideApp" = "隐藏 WireGuard";
+"macMenuHideOtherApps" = "隐藏其它";
+"macMenuShowAllApps" = "显示全部";
+
+"macMenuFile" = "文件";
+"macMenuCloseWindow" = "关闭窗口";
+
+"macMenuEdit" = "编辑";
+"macMenuCut" = "剪切";
+"macMenuCopy" = "复制";
+"macMenuPaste" = "粘贴";
+"macMenuSelectAll" = "全选";
+
+"macMenuTunnel" = "隧道";
+"macMenuToggleStatus" = "切换状态";
+"macMenuEditTunnel" = "编辑…";
+"macMenuDeleteSelected" = "删除选中项";
+
+"macMenuWindow" = "窗口";
+"macMenuMinimize" = "最小化";
+"macMenuZoom" = "缩放";
+
+// Mac manage tunnels window
+
+"macWindowTitleManageTunnels" = "管理 WireGuard 隧道";
+
+"macDeleteTunnelConfirmationAlertMessage (%@)" = "您确定要删除 \"%@\" 吗?";
+"macDeleteMultipleTunnelsConfirmationAlertMessage (%d)" = "您确定要删除 %d 个隧道吗?";
+"macDeleteTunnelConfirmationAlertInfo" = "您无法撤销此操作。";
+"macDeleteTunnelConfirmationAlertButtonTitleDelete" = "删除";
+"macDeleteTunnelConfirmationAlertButtonTitleCancel" = "取消";
+"macDeleteTunnelConfirmationAlertButtonTitleDeleting" = "删除中…";
+
+"macButtonImportTunnels" = "从文件导入隧道";
+"macSheetButtonImport" = "导入";
+
+"macNameFieldExportLog" = "将日志保存到:";
+"macSheetButtonExportLog" = "保存";
+
+"macNameFieldExportZip" = "导出隧道至:";
+"macSheetButtonExportZip" = "保存";
+
+"macButtonDeleteTunnels (%d)" = "删除 %d 个隧道";
+
+"macButtonEdit" = "编辑";
+
+// Mac detail/edit view fields
+
+"macFieldKey (%@)" = "%@:";
+"macFieldOnDemand" = "按需:";
+"macFieldOnDemandSSIDs" = "无线网络名称(SSID):";
+
+// Mac status display
+
+"macStatus (%@)" = "状态: %@";
+
+// Mac editing config
+
+"macEditDiscard" = "丢弃";
+"macEditSave" = "保存";
+
+"macAlertNameIsEmpty" = "名称必填";
+"macAlertDuplicateName (%@)" = "另一个同名的隧道 \"%@\" 已存在。";
+
+"macAlertInvalidLine (%@)" = "无效的行: \"%s\"\n";
+
+"macAlertNoInterface" = "配置必须有一个“接口”段落。";
+"macAlertMultipleInterfaces" = "配置只能有一个“接口”段落。";
+"macAlertPrivateKeyInvalid" = "私钥无效。";
+"macAlertListenPortInvalid (%@)" = "监听端口 \"%@\" 无效。";
+"macAlertAddressInvalid (%@)" = "地址 \"%@\" 无效。";
+"macAlertDNSInvalid (%@)" = "DNS \"%@\" 无效。";
+"macAlertMTUInvalid (%@)" = "MTU \"%@\" 无效。";
+
+"macAlertUnrecognizedInterfaceKey (%@)" = "接口包含无法识别的键值 ”%@“";
+"macAlertInfoUnrecognizedInterfaceKey" = "有效的键是: ‘私钥’, ‘监听端口’, ‘地址’, ‘DNS’ 和 ‘MTU’.";
+
+"macAlertPublicKeyInvalid" = "公钥无效。";
+"macAlertPreSharedKeyInvalid" = "预分享密钥无效";
+"macAlertAllowedIPInvalid (%@)" = "允许的IP ”%@“ 无效";
+"macAlertEndpointInvalid (%@)" = "端点 ”%@“ 无效";
+"macAlertPersistentKeepliveInvalid (%@)" = "连接保活间隔的值 ”%@“ 无效";
+
+"macAlertUnrecognizedPeerKey (%@)" = "节点包含无法识别的键值 ”%@“";
+"macAlertInfoUnrecognizedPeerKey" = "有效的键为: ‘公钥’, ‘预分享密钥’, ‘允许的IP’, ‘端点’ 和 ‘连接保活间隔’";
+
+"macAlertMultipleEntriesForKey (%@)" = "键 ”%@“ 的每个段落应该只能有一个条目";
+
+// Mac about dialog
+
+"macAppVersion (%@)" = "应用版本:%@";
+"macGoBackendVersion (%@)" = "Go 后端版本:%@";
+
+// Privacy
+
+"macExportPrivateData" = "导出隧道私钥";
+"macViewPrivateData" = "查看隧道私钥";
+"iosExportPrivateData" = "认证以导出隧道私钥。";
+"iosViewPrivateData" = "认证以查看隧道私钥。";
+
+// Mac alert
+
+"macConfirmAndQuitAlertMessage" = "您想要关闭隧道管理器还是完全退出 WireGuard?";
+"macConfirmAndQuitAlertInfo" = "如果您关闭了隧道管理器,可继续从菜单栏图标使用 WireGuard 。";
+"macConfirmAndQuitInfoWithActiveTunnel (%@)" = "如果您关闭了隧道管理器,可继续从菜单栏图标使用 WireGuard 。\n\n请注意,如果您完全退出 WireGuard ,当前活动的隧道('%@')将仍然有效,直到您从此应用程序或通过系统偏好设置中的网络面板停用。";
+"macConfirmAndQuitAlertQuitWireGuard" = "退出 WireGuard";
+"macConfirmAndQuitAlertCloseWindow" = "关闭隧道管理器";
+
+"macAppExitingWithActiveTunnelMessage" = "WireGuard 正在退出,且还有一个激活的隧道。";
+"macAppExitingWithActiveTunnelInfo" = "退出后隧道将保持激活。您可以通过重新打开此应用程序或系统偏好设置中的网络面板来禁用它。";
+
+// Mac tooltip
+
+"macToolTipEditTunnel" = "编辑隧道 (⌘E)";
+"macToolTipToggleStatus" = "切换状态 (⌘T)";
+
+// Mac log view
+
+"macLogColumnTitleTime" = "时间";
+"macLogColumnTitleLogMessage" = "记录消息";
+"macLogButtonTitleClose" = "关闭";
+"macLogButtonTitleSave" = "保存…";
+
+// Mac unusable tunnel view
+
+"macUnusableTunnelMessage" = "无法在钥匙串中找到此隧道的配置。";
+"macUnusableTunnelInfo" = "如果此隧道是由其他用户创建的,只有该用户可以查看、编辑或启动此隧道。";
+"macUnusableTunnelButtonTitleDeleteTunnel" = "删除隧道";
+
+// Mac App Store updating alert
+
+"macAppStoreUpdatingAlertMessage" = "App Store 想要更新 WireGuard";
+"macAppStoreUpdatingAlertInfoWithOnDemand (%@)" = "请禁用隧道 ”%@“ 的按需使用,停用它,然后继续在 App Store 中更新。";
+"macAppStoreUpdatingAlertInfoWithoutOnDemand (%@)" = "请禁用隧道 ”%@“ ,然后继续在 App Store 中更新。";
+
+// Donation
+
+"donateLink" = "♥ 为 WireGuard 捐赠";
diff --git a/Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings b/Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings
new file mode 100644
index 0000000..9f54207
--- /dev/null
+++ b/Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings
@@ -0,0 +1,88 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
+// Generic alert action names
+
+
+"actionOK" = "好";
+"actionCancel" = "取消";
+"actionSave" = "儲存";
+
+// Tunnels list UI
+
+"tunnelsListTitle" = "WireGuard";
+"tunnelsListSettingsButtonTitle" = "設定";
+"tunnelsListCenteredAddTunnelButtonTitle" = "新增通道";
+"tunnelsListSwipeDeleteButtonTitle" = "刪除";
+"tunnelsListSelectButtonTitle" = "選擇";
+"tunnelsListSelectAllButtonTitle" = "全選";
+"tunnelsListDeleteButtonTitle" = "刪除";
+"tunnelsListSelectedTitle (%d)" = "已選擇了 %d";
+
+// Tunnels list menu
+
+"addTunnelMenuHeader" = "新增一個 WireGuard 通道";
+"addTunnelMenuImportFile" = "從檔案或是壓縮檔中建立";
+"addTunnelMenuQRCode" = "從 QR code 中建立";
+"addTunnelMenuFromScratch" = "從空白開始建立";
+
+// Tunnels list alerts
+
+"alertImportedFromMultipleFilesTitle (%d)" = "已建立 %d 個通道";
+
+"alertImportedFromZipTitle (%d)" = "已建立 %d 個通道";
+
+"alertBadConfigImportTitle" = "無法匯入通道";
+
+"deleteTunnelsConfirmationAlertButtonTitle" = "刪除";
+"deleteTunnelConfirmationAlertButtonMessage (%d)" = "是否刪除 %d 個通道?";
+"deleteTunnelsConfirmationAlertButtonMessage (%d)" = "是否刪除 %d 個通道?";
+
+// Tunnel detail and edit UI
+
+"newTunnelViewTitle" = "新增設定";
+"editTunnelViewTitle" = "修改設定";
+
+"tunnelSectionTitleStatus" = "ㄓ望太";
+
+"tunnelStatusInactive" = "未啟用";
+"tunnelStatusActivating" = "啟用中";
+"tunnelStatusActive" = "已啟用";
+"tunnelStatusDeactivating" = "停用中";
+"tunnelStatusReasserting" = "重新啟用中";
+"tunnelStatusRestarting" = "重新啟動中";
+"tunnelStatusWaiting" = "等待中";
+
+"macToggleStatusButtonActivate" = "啟動";
+"macToggleStatusButtonActivating" = "啟動中...";
+"macToggleStatusButtonDeactivate" = "停用";
+"macToggleStatusButtonDeactivating" = "停用中...";
+"macToggleStatusButtonReasserting" = "重新啟用中...";
+"macToggleStatusButtonRestarting" = "重新啟動中....";
+"macToggleStatusButtonWaiting" = "等待中...";
+
+"tunnelSectionTitleInterface" = "介面";
+
+"tunnelInterfaceName" = "名稱";
+"tunnelInterfacePrivateKey" = "私人金鑰";
+"tunnelInterfacePublicKey" = "公開金鑰";
+"tunnelInterfaceGenerateKeypair" = "產生金鑰對";
+"tunnelInterfaceListenPort" = "監聽埠";
+"tunnelInterfaceMTU" = "MTU";
+"tunnelInterfaceDNS" = "DNS 伺服器";
+"tunnelEditPlaceholderTextAutomatic" = "自動";
+"tunnelHandshakeTimestampNow" = "現在";
+
+// Settings UI
+
+"settingsViewTitle" = "設定";
+
+"settingsSectionTitleAbout" = "關於";
+"macMenuAbout" = "關於 WireGuard";
+"macMenuQuit" = "離開 WireGuard";
+
+"macMenuHideApp" = "隱藏 WireGuard";
+"macMenuCut" = "剪下";
+"macMenuCopy" = "複製";
+"macMenuPaste" = "貼上";
+"macMenuSelectAll" = "全選";
+"macMenuMinimize" = "最小化";
diff --git a/sync-translations.sh b/sync-translations.sh
new file mode 100755
index 0000000..b2d72eb
--- /dev/null
+++ b/sync-translations.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+set -ex
+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 d -empty -delete
+git add Sources/WireGuardApp/*.lproj