From 412616bb96ceb605a009c5b02833ff8e8c0c4408 Mon Sep 17 00:00:00 2001 From: Syncthing Release Automation Date: Mon, 7 Feb 2022 03:45:33 +0000 Subject: [PATCH 01/37] gui, man, authors: Update docs, translations, and contributors --- gui/default/assets/lang/lang-bg.json | 8 ++++---- gui/default/assets/lang/lang-da.json | 10 +++++----- gui/default/assets/lang/lang-de.json | 4 ++-- gui/default/assets/lang/lang-fr.json | 4 ++-- gui/default/assets/lang/lang-nl.json | 4 ++-- gui/default/assets/lang/lang-ru.json | 8 ++++---- gui/default/assets/lang/lang-sv.json | 4 ++-- man/stdiscosrv.1 | 2 +- man/strelaysrv.1 | 2 +- man/syncthing-bep.7 | 2 +- man/syncthing-config.5 | 2 +- man/syncthing-device-ids.7 | 2 +- man/syncthing-event-api.7 | 2 +- man/syncthing-faq.7 | 2 +- man/syncthing-globaldisco.7 | 2 +- man/syncthing-localdisco.7 | 2 +- man/syncthing-networking.7 | 2 +- man/syncthing-relay.7 | 2 +- man/syncthing-rest-api.7 | 2 +- man/syncthing-security.7 | 2 +- man/syncthing-stignore.5 | 2 +- man/syncthing-versioning.7 | 2 +- man/syncthing.1 | 2 +- 23 files changed, 37 insertions(+), 37 deletions(-) diff --git a/gui/default/assets/lang/lang-bg.json b/gui/default/assets/lang/lang-bg.json index 6fc61e286..242aab581 100644 --- a/gui/default/assets/lang/lang-bg.json +++ b/gui/default/assets/lang/lang-bg.json @@ -128,7 +128,7 @@ "Error": "Грешка", "External File Versioning": "Външно управление на версии", "Failed Items": "Елементи с грешка", - "Failed to load file versions.": "Failed to load file versions.", + "Failed to load file versions.": "Грешка при зареждане на версии.", "Failed to load ignore patterns.": "Грешка при зареждане на шаблони за пренебрегване.", "Failed to setup, retrying": "Грешка при настройване, извършва се повторен опит", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Неуспешна връзка към сървъри по IPv6 може да се очаква ако няма свързаност по IPv6.", @@ -171,7 +171,7 @@ "Ignore": "Пренебрегване", "Ignore Patterns": "Шаблони за пренебрегване", "Ignore Permissions": "Пренебрегване на права", - "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.": "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.", + "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.": "Шаблони за пренебрегване могат да бъдат добавяни след като папката бъде създадена. Ако е отметнато, след запазване ще бъде показано текстово поле за шаблоните.", "Ignored Devices": "Пренебрегнати устройства", "Ignored Folders": "Пренебрегнати папки", "Ignored at": "Пренебрегнато на", @@ -293,7 +293,7 @@ "Select the folders to share with this device.": "Изберете папките, които да споделите с устройството.", "Send & Receive": "Изпраща и получава", "Send Only": "Само изпраща", - "Set Ignores on Added Folder": "Set Ignores on Added Folder", + "Set Ignores on Added Folder": "Добавяне на шаблони за пренебрегване", "Settings": "Настройки", "Share": "Споделяне", "Share Folder": "Споделяне на папка", @@ -374,7 +374,7 @@ "The rate limit must be a non-negative number (0: no limit)": "Ограничението на скоростта трябва да бъде положително число (0: неограничено)", "The rescan interval must be a non-negative number of seconds.": "Интервалът на обхождане трябва да е положителен брой секунди.", "There are no devices to share this folder with.": "Няма устройства, с които да споделите папката.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "Файлът няма версии, които да бъдат възстановени.", "There are no folders to share with this device.": "Няма папка, която да споделите с устройството.", "They are retried automatically and will be synced when the error is resolved.": "Ще бъдат спрени и автоматично синхронизирани, когато грешката бъде отстранена.", "This Device": "Това устройство", diff --git a/gui/default/assets/lang/lang-da.json b/gui/default/assets/lang/lang-da.json index e678ea348..c9e5d3b24 100644 --- a/gui/default/assets/lang/lang-da.json +++ b/gui/default/assets/lang/lang-da.json @@ -1,5 +1,5 @@ { - "A device with that ID is already added.": "En enhed med dette id er allerede tilføjet.", + "A device with that ID is already added.": "En enhed med dette ID er allerede tilføjet.", "A negative number of days doesn't make sense.": "Et negativt antal dage giver ikke mening.", "A new major version may not be compatible with previous versions.": "En ny versionsudgivelse er måske ikke kompatibel med tidligere versioner.", "API Key": "API-nøgle", @@ -11,7 +11,7 @@ "Add Folder": "Tilføj mappe", "Add Remote Device": "Tilføj fjernenhed", "Add devices from the introducer to our device list, for mutually shared folders.": "Tilføj enheder fra den introducerende enhed til vores enhedsliste for gensidigt delte mapper.", - "Add ignore patterns": "Add ignore patterns", + "Add ignore patterns": "Tilføj ignoreringsmønstre", "Add new folder?": "Tilføj ny mappe", "Additionally the full rescan interval will be increased (times 60, i.e. new default of 1h). You can also configure it manually for every folder later after choosing No.": "Derudover vil intervallet for den komplette genskan blive forøget (60 gange, dvs. ny standard er 1 time). Du kan også konfigurere det manuelt for hver mappe senere efter at have valgt Nej.", "Address": "Adresse", @@ -23,7 +23,7 @@ "Allow Anonymous Usage Reporting?": "Tillad anonym brugerstatistik?", "Allowed Networks": "Tilladte netværk", "Alphabetic": "Alfabetisk", - "Altered by ignoring deletes.": "Altered by ignoring deletes.", + "Altered by ignoring deletes.": "Ændret ved at ignorere sletninger.", "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "En ekstern kommando styrer versioneringen. Den skal fjerne filen fra den delte mappe. Hvis stien til programmet indeholder mellemrum, bør den sættes i anførselstegn.", "Anonymous Usage Reporting": "Anonym brugerstatistik", "Anonymous usage report format has changed. Would you like to move to the new format?": "Formatet for anonym brugerstatistik er ændret. Vil du flytte til det nye format?", @@ -128,7 +128,7 @@ "Error": "Fejl", "External File Versioning": "Ekstern filversionering", "Failed Items": "Mislykkede filer", - "Failed to load file versions.": "Failed to load file versions.", + "Failed to load file versions.": "Fil versioner kunne ikke indlæses.", "Failed to load ignore patterns.": "Ignorerings-mønstre kunne ikke indlæses.", "Failed to setup, retrying": "Opsætning mislykkedes; prøver igen", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Fejl i forbindelse med opkobling til IPv6-servere skal forventes, hvis der ikke er IPv6-forbindelse.", @@ -374,7 +374,7 @@ "The rate limit must be a non-negative number (0: no limit)": "Hastighedsbegrænsningen skal være et ikke-negativt tal (0: ingen begrænsning)", "The rescan interval must be a non-negative number of seconds.": "Genskanningsintervallet skal være et ikke-negativt antal sekunder.", "There are no devices to share this folder with.": "Der er ingen enheder at dele denne mappe med.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "Der er ingen fil versioner at gendanne.", "There are no folders to share with this device.": "Der er ingen mapper at dele med denne enhed.", "They are retried automatically and will be synced when the error is resolved.": "De prøves igen automatisk og vil blive synkroniseret, når fejlen er løst.", "This Device": "Denne enhed", diff --git a/gui/default/assets/lang/lang-de.json b/gui/default/assets/lang/lang-de.json index 864b40552..65cedbb69 100644 --- a/gui/default/assets/lang/lang-de.json +++ b/gui/default/assets/lang/lang-de.json @@ -128,7 +128,7 @@ "Error": "Fehler", "External File Versioning": "Externe Dateiversionierung", "Failed Items": "Fehlgeschlagene Elemente", - "Failed to load file versions.": "Failed to load file versions.", + "Failed to load file versions.": "Fehler beim Laden der Dateiversionen.", "Failed to load ignore patterns.": "Fehler beim Laden der Ignoriermuster.", "Failed to setup, retrying": "Fehler beim Installieren, versuche erneut", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Ein Verbindungsfehler zu IPv6-Servern ist zu erwarten, wenn es keine IPv6-Konnektivität gibt.", @@ -374,7 +374,7 @@ "The rate limit must be a non-negative number (0: no limit)": "Das Datenratelimit muss eine nicht negative Zahl sein (0 = kein Limit).", "The rescan interval must be a non-negative number of seconds.": "Das Scanintervall muss eine nicht negative Anzahl (in Sekunden) sein.", "There are no devices to share this folder with.": "Es gibt keine Geräte, mit denen dieser Ordner geteilt werden kann.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "Es gibt keine Dateiversionen zum Wiederherstellen.", "There are no folders to share with this device.": "Es gibt keine Ordner, die mit diesem Gerät geteilt werden können.", "They are retried automatically and will be synced when the error is resolved.": "Sie werden automatisch heruntergeladen und werden synchronisiert, wenn der Fehler behoben wurde.", "This Device": "Dieses Gerät", diff --git a/gui/default/assets/lang/lang-fr.json b/gui/default/assets/lang/lang-fr.json index 9419dc743..7243a9c42 100644 --- a/gui/default/assets/lang/lang-fr.json +++ b/gui/default/assets/lang/lang-fr.json @@ -128,7 +128,7 @@ "Error": "Erreur", "External File Versioning": "Gestion externe des versions de fichiers", "Failed Items": "Éléments en échec", - "Failed to load file versions.": "Failed to load file versions.", + "Failed to load file versions.": "Échec de chargement des versions de fichiers.", "Failed to load ignore patterns.": "Échec du chargement des masques d'exclusions.", "Failed to setup, retrying": "Échec, nouvel essai", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "La connexion aux serveurs en IPv6 va échouer s'il n'y a pas de connectivité IPv6.", @@ -374,7 +374,7 @@ "The rate limit must be a non-negative number (0: no limit)": "La limite de débit ne doit pas être négative (0 = pas de limite)", "The rescan interval must be a non-negative number of seconds.": "L'intervalle d'analyse ne doit pas être un nombre négatif de secondes.", "There are no devices to share this folder with.": "Il n'y a aucun appareil à ajouter à ce partage.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "Aucune version de fichier à restaurer.", "There are no folders to share with this device.": "Il n'y a aucun partage disponible.", "They are retried automatically and will be synced when the error is resolved.": "Ils seront automatiquement retentés et synchronisés quand l'erreur sera résolue.", "This Device": "Cet appareil", diff --git a/gui/default/assets/lang/lang-nl.json b/gui/default/assets/lang/lang-nl.json index e29e4396f..cbdaec948 100644 --- a/gui/default/assets/lang/lang-nl.json +++ b/gui/default/assets/lang/lang-nl.json @@ -128,7 +128,7 @@ "Error": "Fout", "External File Versioning": "Extern versiebeheer", "Failed Items": "Mislukte items", - "Failed to load file versions.": "Failed to load file versions.", + "Failed to load file versions.": "Laden van bestandsversies mislukt.", "Failed to load ignore patterns.": "Laden van negeerpatronen mislukt.", "Failed to setup, retrying": "Instellen mislukt, opnieuw proberen", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Als er geen IPv6-connectiviteit is worden problemen bij verbinden met IPv6-servers verwacht.", @@ -374,7 +374,7 @@ "The rate limit must be a non-negative number (0: no limit)": "De snelheidsbegrenzing moet een positief getal zijn (0: geen begrenzing)", "The rescan interval must be a non-negative number of seconds.": "Het interval voor opnieuw scannen moet een positief aantal seconden zijn.", "There are no devices to share this folder with.": "Er zijn geen apparaten om deze map mee te delen.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "Er zijn geen bestandsversies om te herstellen.", "There are no folders to share with this device.": "Er zijn geen mappen om te delen met dit apparaat.", "They are retried automatically and will be synced when the error is resolved.": "Ze worden automatisch opnieuw geprobeerd en zullen gesynchroniseerd worden wanneer de fout opgelost is.", "This Device": "Dit apparaat", diff --git a/gui/default/assets/lang/lang-ru.json b/gui/default/assets/lang/lang-ru.json index 9749522ff..4723e91d6 100644 --- a/gui/default/assets/lang/lang-ru.json +++ b/gui/default/assets/lang/lang-ru.json @@ -11,7 +11,7 @@ "Add Folder": "Добавить папку", "Add Remote Device": "Добавить удалённое устройство", "Add devices from the introducer to our device list, for mutually shared folders.": "Добавлять устройства, известные рекомендателю, в список устройств, если есть общие с ними папки.", - "Add ignore patterns": "Add ignore patterns", + "Add ignore patterns": "Добавить шаблоны для игнорирования", "Add new folder?": "Добавить новую папку?", "Additionally the full rescan interval will be increased (times 60, i.e. new default of 1h). You can also configure it manually for every folder later after choosing No.": "Также будет увеличен интервал полного сканирования (в 60 раз, т.е. новое значение - 1 час). Вы можете вручную настроить интервал для каждой папки, выбрав \"Нет\".", "Address": "Адрес", @@ -128,7 +128,7 @@ "Error": "Ошибка", "External File Versioning": "Внешний контроль версий файлов", "Failed Items": "Сбои", - "Failed to load file versions.": "Failed to load file versions.", + "Failed to load file versions.": "Не удалось загрузить другие версии файла", "Failed to load ignore patterns.": "Не удалось загрузить шаблоны игнорирования.", "Failed to setup, retrying": "Не удалось настроить, пробуем ещё", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Если нет IPv6-соединений, при подключении к IPv6-серверам произойдёт ошибка.", @@ -171,7 +171,7 @@ "Ignore": "Игнорировать", "Ignore Patterns": "Шаблоны игнорирования", "Ignore Permissions": "Игнорировать файловые права доступа", - "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.": "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.", + "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.": "Шаблоны игнорирования могут быть добавлены только после создания папки. При включении поле для ввода шаблонов игнорирования появится после сохранения. ", "Ignored Devices": "Игнорируемые устройства", "Ignored Folders": "Игнорируемые папки", "Ignored at": "Добавлено", @@ -374,7 +374,7 @@ "The rate limit must be a non-negative number (0: no limit)": "Скорость должна быть неотрицательным числом (0: нет ограничения)", "The rescan interval must be a non-negative number of seconds.": "Интервал пересканирования должен быть неотрицательным количеством секунд.", "There are no devices to share this folder with.": "Нет устройств, для которых будет доступна эта папка.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "Нет версий файла для восстановления.", "There are no folders to share with this device.": "Нет папок, которыми можно поделиться с этим устройством.", "They are retried automatically and will be synced when the error is resolved.": "Будут синхронизированы автоматически когда ошибка будет исправлена.", "This Device": "Это устройство", diff --git a/gui/default/assets/lang/lang-sv.json b/gui/default/assets/lang/lang-sv.json index 577740067..13e544bd7 100644 --- a/gui/default/assets/lang/lang-sv.json +++ b/gui/default/assets/lang/lang-sv.json @@ -128,7 +128,7 @@ "Error": "Fel", "External File Versioning": "Extern filversionshantering", "Failed Items": "Misslyckade objekt", - "Failed to load file versions.": "Failed to load file versions.", + "Failed to load file versions.": "Det gick inte att läsa in filversioner.", "Failed to load ignore patterns.": "Det gick inte att läsa in ignorera mönster.", "Failed to setup, retrying": "Det gick inte att ställa in, försöker igen", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Det går inte att ansluta till IPv6-servrar om det inte finns någon IPv6-anslutning.", @@ -374,7 +374,7 @@ "The rate limit must be a non-negative number (0: no limit)": "Frekvensgränsen måste vara ett icke-negativt tal (0: ingen gräns)", "The rescan interval must be a non-negative number of seconds.": "Förnyelseintervallet måste vara ett positivt antal sekunder", "There are no devices to share this folder with.": "Det finns inga enheter att dela denna mapp med.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "Det finns inga filversioner att återställa.", "There are no folders to share with this device.": "Det finns inga mappar att dela med denna enhet.", "They are retried automatically and will be synced when the error is resolved.": "De omprövas automatiskt och kommer att synkroniseras när felet är löst.", "This Device": "Denna enhet", diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index 5907e9dec..c558958b4 100644 --- a/man/stdiscosrv.1 +++ b/man/stdiscosrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STDISCOSRV" "1" "Jan 30, 2022" "v1" "Syncthing" +.TH "STDISCOSRV" "1" "Jan 31, 2022" "v1" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index d7cbb6ba8..ee5b71269 100644 --- a/man/strelaysrv.1 +++ b/man/strelaysrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STRELAYSRV" "1" "Jan 30, 2022" "v1" "Syncthing" +.TH "STRELAYSRV" "1" "Jan 31, 2022" "v1" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index 29a58a50c..00dbc0b2e 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-BEP" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-bep \- Block Exchange Protocol v1 .SH INTRODUCTION AND DEFINITIONS diff --git a/man/syncthing-config.5 b/man/syncthing-config.5 index e7af8e7cb..180ae57d5 100644 --- a/man/syncthing-config.5 +++ b/man/syncthing-config.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-CONFIG" "5" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index 8a5a8643d..965c8da82 100644 --- a/man/syncthing-device-ids.7 +++ b/man/syncthing-device-ids.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-DEVICE-IDS" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-device-ids \- Understanding Device IDs .sp diff --git a/man/syncthing-event-api.7 b/man/syncthing-event-api.7 index 366a079a7..a92d6e5b6 100644 --- a/man/syncthing-event-api.7 +++ b/man/syncthing-event-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-EVENT-API" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index 0b754b42f..1110da276 100644 --- a/man/syncthing-faq.7 +++ b/man/syncthing-faq.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-FAQ" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index 35fef6ac0..24b2bb174 100644 --- a/man/syncthing-globaldisco.7 +++ b/man/syncthing-globaldisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-GLOBALDISCO" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index 24b690029..a81ea2e59 100644 --- a/man/syncthing-localdisco.7 +++ b/man/syncthing-localdisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-LOCALDISCO" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-localdisco \- Local Discovery Protocol v4 .SH MODE OF OPERATION diff --git a/man/syncthing-networking.7 b/man/syncthing-networking.7 index cf6e03e9e..ee89a87d2 100644 --- a/man/syncthing-networking.7 +++ b/man/syncthing-networking.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-NETWORKING" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index bc1d49454..b3c69e832 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-RELAY" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-relay \- Relay Protocol v1 .SH WHAT IS A RELAY? diff --git a/man/syncthing-rest-api.7 b/man/syncthing-rest-api.7 index bd02ce312..5989505f4 100644 --- a/man/syncthing-rest-api.7 +++ b/man/syncthing-rest-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-REST-API" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index 65fea555e..9dc24a772 100644 --- a/man/syncthing-security.7 +++ b/man/syncthing-security.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-SECURITY" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index e1735f707..920ca3169 100644 --- a/man/syncthing-stignore.5 +++ b/man/syncthing-stignore.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-STIGNORE" "5" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-stignore \- Prevent files from being synchronized to other nodes .SH SYNOPSIS diff --git a/man/syncthing-versioning.7 b/man/syncthing-versioning.7 index 3d4d92b5d..aede0213a 100644 --- a/man/syncthing-versioning.7 +++ b/man/syncthing-versioning.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-VERSIONING" "7" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing-versioning \- Keep automatic backups of deleted files by other nodes .sp diff --git a/man/syncthing.1 b/man/syncthing.1 index c14fe7402..006e566fe 100644 --- a/man/syncthing.1 +++ b/man/syncthing.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING" "1" "Jan 30, 2022" "v1" "Syncthing" +.TH "SYNCTHING" "1" "Jan 31, 2022" "v1" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS From 1c74944ccaba6aebb7501fb6b67f5327850f060e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Colomb?= Date: Mon, 7 Feb 2022 08:51:09 +0100 Subject: [PATCH 02/37] lib/api: Fix comments for endpoint parameters (#8163) --- lib/api/api.go | 6 +++--- lib/model/model.go | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/api/api.go b/lib/api/api.go index 7a4f96ed8..35d7e1a13 100644 --- a/lib/api/api.go +++ b/lib/api/api.go @@ -248,11 +248,11 @@ func (s *service) Serve(ctx context.Context) error { restMux.HandlerFunc(http.MethodGet, "/rest/db/ignores", s.getDBIgnores) // folder restMux.HandlerFunc(http.MethodGet, "/rest/db/need", s.getDBNeed) // folder [perpage] [page] restMux.HandlerFunc(http.MethodGet, "/rest/db/remoteneed", s.getDBRemoteNeed) // device folder [perpage] [page] - restMux.HandlerFunc(http.MethodGet, "/rest/db/localchanged", s.getDBLocalChanged) // folder + restMux.HandlerFunc(http.MethodGet, "/rest/db/localchanged", s.getDBLocalChanged) // folder [perpage] [page] restMux.HandlerFunc(http.MethodGet, "/rest/db/status", s.getDBStatus) // folder restMux.HandlerFunc(http.MethodGet, "/rest/db/browse", s.getDBBrowse) // folder [prefix] [dirsonly] [levels] restMux.HandlerFunc(http.MethodGet, "/rest/folder/versions", s.getFolderVersions) // folder - restMux.HandlerFunc(http.MethodGet, "/rest/folder/errors", s.getFolderErrors) // folder + restMux.HandlerFunc(http.MethodGet, "/rest/folder/errors", s.getFolderErrors) // folder [perpage] [page] restMux.HandlerFunc(http.MethodGet, "/rest/folder/pullerrors", s.getFolderErrors) // folder (deprecated) restMux.HandlerFunc(http.MethodGet, "/rest/events", s.getIndexEvents) // [since] [limit] [timeout] [events] restMux.HandlerFunc(http.MethodGet, "/rest/events/disk", s.getDiskEvents) // [since] [limit] [timeout] @@ -275,7 +275,7 @@ func (s *service) Serve(ctx context.Context) error { restMux.HandlerFunc(http.MethodGet, "/rest/system/log.txt", s.getSystemLogTxt) // [since] // The POST handlers - restMux.HandlerFunc(http.MethodPost, "/rest/db/prio", s.postDBPrio) // folder file [perpage] [page] + restMux.HandlerFunc(http.MethodPost, "/rest/db/prio", s.postDBPrio) // folder file restMux.HandlerFunc(http.MethodPost, "/rest/db/ignores", s.postDBIgnores) // folder restMux.HandlerFunc(http.MethodPost, "/rest/db/override", s.postDBOverride) // folder restMux.HandlerFunc(http.MethodPost, "/rest/db/revert", s.postDBRevert) // folder diff --git a/lib/model/model.go b/lib/model/model.go index 45536cf4e..819bb3718 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -1006,9 +1006,8 @@ func (m *model) NeedFolderFiles(folder string, page, perpage int) ([]db.FileInfo return progress, queued, rest, nil } -// RemoteNeedFolderFiles returns paginated list of currently needed files in -// progress, queued, and to be queued on next puller iteration, as well as the -// total number of files currently needed. +// RemoteNeedFolderFiles returns paginated list of currently needed files for a +// remote device to become synced with a folder. func (m *model) RemoteNeedFolderFiles(folder string, device protocol.DeviceID, page, perpage int) ([]db.FileInfoTruncated, error) { m.fmut.RLock() rf, ok := m.folderFiles[folder] From 2738735321e3ab29955d0db07b7cbaeb38b05ef5 Mon Sep 17 00:00:00 2001 From: tomasz1986 Date: Mon, 7 Feb 2022 21:41:05 +0100 Subject: [PATCH 03/37] gui: Allow to translate and fix incorrect Versions date filter ranges (#8162) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gui: Allow to translate and fix incorrect Versions date filter ranges Translate the previously English-only ranges used in Versions date filter. In the process, fix the currently incorrect range calculation. For instance, let us say it is 08:05. Selecting "today" should set the range to start at 00:00 and end at 08:05. However, what really happens is that both start and end are set to 08:05, and as a result "today" is never shown to the user. The case is the same for "yesterday", which in contrary to "today" is shown, but its range is fixed at 08:05 on the previous day. This commit fixes the above by always calculating "today" starting at 00:00 up to the current moment, and calculating "yesterday" from 00:00 on the previous to 00:00 on the current day. When it comes to "last x days", the commit fixes the calculation so that it actually covers the whole day, which is done by moving the start date to 00:00 on the first day. Signed-off-by: Tomasz Wilczyński --- gui/default/assets/lang/lang-en.json | 8 ++++++++ .../syncthing/core/syncthingController.js | 18 +++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/gui/default/assets/lang/lang-en.json b/gui/default/assets/lang/lang-en.json index e59c35c6e..2bbe3bc06 100644 --- a/gui/default/assets/lang/lang-en.json +++ b/gui/default/assets/lang/lang-en.json @@ -19,6 +19,7 @@ "Advanced": "Advanced", "Advanced Configuration": "Advanced Configuration", "All Data": "All Data", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Allow Anonymous Usage Reporting?", "Allowed Networks": "Allowed Networks", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 the following Contributors:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Creating ignore patterns, overwriting an existing file at {{path}}.", "Currently Shared With Devices": "Currently Shared With Devices", + "Custom Range": "Custom Range", "Danger!": "Danger!", "Debugging Facilities": "Debugging Facilities", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Keep Versions", "LDAP": "LDAP", "Largest First": "Largest First", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Last Scan", "Last seen": "Last seen", "Latest Change": "Latest Change", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "They are retried automatically and will be synced when the error is resolved.", "This Device": "This Device", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "This can easily give hackers access to read and change any files on your computer.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "This is a major version upgrade.", "This setting controls the free space required on the home (i.e., index database) disk.": "This setting controls the free space required on the home (i.e., index database) disk.", "Time": "Time", "Time the item was last modified": "Time the item was last modified", + "Today": "Today", "Trash Can File Versioning": "Trash Can File Versioning", "Type": "Type", "UNIX Permissions": "UNIX Permissions", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "When adding a new device, keep in mind that this device must be added on the other side too.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.", "Yes": "Yes", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "You can also select one of these nearby devices:", "You can change your choice at any time in the Settings dialog.": "You can change your choice at any time in the Settings dialog.", "You can read more about the two release channels at the link below.": "You can read more about the two release channels at the link below.", diff --git a/gui/default/syncthing/core/syncthingController.js b/gui/default/syncthing/core/syncthingController.js index c60bde0b7..eee4e1334 100755 --- a/gui/default/syncthing/core/syncthingController.js +++ b/gui/default/syncthing/core/syncthingController.js @@ -2599,15 +2599,14 @@ angular.module('syncthing.core') $scope.restoreVersions.filters['start'] = minDate; $scope.restoreVersions.filters['end'] = maxDate; - var ranges = { - 'All time': [minDate, maxDate], - 'Today': [moment(), moment()], - 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], - 'Last 7 Days': [moment().subtract(6, 'days'), moment()], - 'Last 30 Days': [moment().subtract(29, 'days'), moment()], - 'This Month': [moment().startOf('month'), moment().endOf('month')], - 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] - }; + var ranges = {}; + ranges[$translate.instant("All Time")] = [minDate, maxDate]; + ranges[$translate.instant("Today")] = [moment().startOf('day'), moment()]; + ranges[$translate.instant("Yesterday")] = [moment().subtract(1, 'days').startOf('day'), moment().startOf('day')]; + ranges[$translate.instant("Last 7 Days")] = [moment().subtract(6, 'days').startOf('day'), moment()]; + ranges[$translate.instant("Last 30 Days")] = [moment().subtract(29, 'days').startOf('day'), moment()]; + ranges[$translate.instant("This Month")] = [moment().startOf('month'), moment()]; + ranges[$translate.instant("Last Month")] = [moment().subtract(1, 'month').startOf('month'), moment().startOf('month')]; // Filter out invalid ranges. $.each(ranges, function (key, range) { @@ -2628,6 +2627,7 @@ angular.module('syncthing.core') maxDate: maxDate, ranges: ranges, locale: { + customRangeLabel: $translate.instant("Custom Range"), format: 'YYYY/MM/DD HH:mm:ss', } }).on('apply.daterangepicker', function (ev, picker) { From d35d7d23600b2ea2478924e297a70cac64ef62ea Mon Sep 17 00:00:00 2001 From: tomasz1986 Date: Tue, 8 Feb 2022 07:06:14 +0100 Subject: [PATCH 04/37] lib, gui: Removed unused cleanInterval from Staggered Versioning (ref #541) (#8161) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Staggered File Versioning used to have its own cleanInterval that controlled how often file versions were cleaned. Nowadays, there is a seperate setting called cleanupIntervalS responsible for the cleanup, which applies to all File Versioning (except External). Thus, remove the unneeded code and don't set the param up on new folders anymore. Signed-off-by: Tomasz Wilczyński --- gui/default/syncthing/core/syncthingController.js | 3 --- lib/config/config.go | 2 +- lib/config/migrations.go | 7 +++++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/gui/default/syncthing/core/syncthingController.js b/gui/default/syncthing/core/syncthingController.js index eee4e1334..99bc22295 100755 --- a/gui/default/syncthing/core/syncthingController.js +++ b/gui/default/syncthing/core/syncthingController.js @@ -74,7 +74,6 @@ angular.module('syncthing.core') cleanupIntervalS: 3600, simpleKeep: 5, staggeredMaxAge: 365, - staggeredCleanInterval: 3600, externalCommand: "", }; @@ -2071,7 +2070,6 @@ angular.module('syncthing.core') break; case "staggered": $scope.currentFolder._guiVersioning.staggeredMaxAge = Math.floor(+currentVersioning.params.maxAge / 86400); - $scope.currentFolder._guiVersioning.staggeredCleanInterval = +currentVersioning.params.cleanInterval; break; case "external": $scope.currentFolder._guiVersioning.externalCommand = currentVersioning.params.command; @@ -2256,7 +2254,6 @@ angular.module('syncthing.core') break; case "staggered": folderCfg.versioning.params.maxAge = '' + (folderCfg._guiVersioning.staggeredMaxAge * 86400); - folderCfg.versioning.params.cleanInterval = '' + folderCfg._guiVersioning.staggeredCleanInterval; break; case "external": folderCfg.versioning.params.command = '' + folderCfg._guiVersioning.externalCommand; diff --git a/lib/config/config.go b/lib/config/config.go index 1ad68304d..43e6f25de 100644 --- a/lib/config/config.go +++ b/lib/config/config.go @@ -29,7 +29,7 @@ import ( const ( OldestHandledVersion = 10 - CurrentVersion = 35 + CurrentVersion = 36 MaxRescanIntervalS = 365 * 24 * 60 * 60 ) diff --git a/lib/config/migrations.go b/lib/config/migrations.go index 51512d924..f018d936f 100644 --- a/lib/config/migrations.go +++ b/lib/config/migrations.go @@ -27,6 +27,7 @@ import ( // put the newest on top for readability. var ( migrations = migrationSet{ + {36, migrateToConfigV36}, {35, migrateToConfigV35}, {34, migrateToConfigV34}, {33, migrateToConfigV33}, @@ -94,6 +95,12 @@ func (m migration) apply(cfg *Configuration) { cfg.Version = m.targetVersion } +func migrateToConfigV36(cfg *Configuration) { + for i := range cfg.Folders { + delete(cfg.Folders[i].Versioning.Params, "cleanInterval") + } +} + func migrateToConfigV35(cfg *Configuration) { for i, fcfg := range cfg.Folders { params := fcfg.Versioning.Params From c396124bc9fa6ae162f9634869e16a694c8d2525 Mon Sep 17 00:00:00 2001 From: tomasz1986 Date: Tue, 8 Feb 2022 07:07:22 +0100 Subject: [PATCH 05/37] gui: Don't use italic text for CJK languages (#8172) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Even though technically possible, CJK languages normally don't use italic text at all, as not only does it make the characters/letters look unnatural, but also, in the case of complex characters, unreadable too. For these reasons, it is usually recommended not to use the italic font style at all [1][2]. This commit changes the default font-style of the i element for Chinese, Japanese, and Korean langauge to "normal" instead of "italic". In order to do so, the HTML lang attribute is also changed following each change of the GUI language. [1] https://bobtung.medium.com/best-practice-in-chinese-layout-f933aff1728f [2] https://devblogs.microsoft.com/oldnewthing/20060914-02/?p=29743 Signed-off-by: Tomasz Wilczyński --- gui/default/assets/css/overrides.css | 7 +++++++ gui/default/syncthing/core/localeService.js | 1 + 2 files changed, 8 insertions(+) diff --git a/gui/default/assets/css/overrides.css b/gui/default/assets/css/overrides.css index 410e59733..b2d93950a 100644 --- a/gui/default/assets/css/overrides.css +++ b/gui/default/assets/css/overrides.css @@ -506,3 +506,10 @@ ul.three-columns li, ul.two-columns li { padding-top: 6px; padding-bottom: 6px; } + +/* CJK languages don't use italic at all, hence don't force it on them. */ +html[lang|="zh"] i, +html[lang="ja"] i, +html[lang|="ko"] i { + font-style: normal; +} diff --git a/gui/default/syncthing/core/localeService.js b/gui/default/syncthing/core/localeService.js index 868f400a3..8486df768 100644 --- a/gui/default/syncthing/core/localeService.js +++ b/gui/default/syncthing/core/localeService.js @@ -99,6 +99,7 @@ angular.module('syncthing.core') function useLocale(language, save2Storage) { if (language) { $translate.use(language).then(function () { + document.documentElement.setAttribute("lang", language); if (save2Storage && _localStorage) _localStorage[_SYNLANG] = language; }); From ba2c79f3105fba6cfdb3e95774cc6a6ccd6dffc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Feb 2022 07:15:50 +0100 Subject: [PATCH 06/37] build(deps): bump github.com/pierrec/lz4/v4 from 4.1.12 to 4.1.13 (#8170) Bumps [github.com/pierrec/lz4/v4](https://github.com/pierrec/lz4) from 4.1.12 to 4.1.13. - [Release notes](https://github.com/pierrec/lz4/releases) - [Commits](https://github.com/pierrec/lz4/compare/v4.1.12...v4.1.13) --- updated-dependencies: - dependency-name: github.com/pierrec/lz4/v4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4da03404f..8814d06ea 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/minio/sha256-simd v1.0.0 github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 github.com/oschwald/geoip2-golang v1.5.0 - github.com/pierrec/lz4/v4 v4.1.12 + github.com/pierrec/lz4/v4 v4.1.13 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.11.0 github.com/prometheus/common v0.30.0 // indirect diff --git a/go.sum b/go.sum index e10f2ba72..4022b4d5f 100644 --- a/go.sum +++ b/go.sum @@ -300,8 +300,8 @@ github.com/oschwald/maxminddb-golang v1.8.0 h1:Uh/DSnGoxsyp/KYbY1AuP0tYEwfs0sCph github.com/oschwald/maxminddb-golang v1.8.0/go.mod h1:RXZtst0N6+FY/3qCNmZMBApR19cdQj43/NM9VkrNAis= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/pierrec/lz4/v4 v4.1.12 h1:44l88ehTZAUGW4VlO1QC4zkilL99M6Y9MXNwEs0uzP8= -github.com/pierrec/lz4/v4 v4.1.12/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.13 h1:/OvL3gfLjTf7nEATCYFLe4VeorMGI3nhLU5eb8FnEjU= +github.com/pierrec/lz4/v4 v4.1.13/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= From c25fcf0001d79a6e2151b6da6ca5a94662976968 Mon Sep 17 00:00:00 2001 From: tomasz1986 Date: Tue, 8 Feb 2022 20:10:03 +0100 Subject: [PATCH 07/37] gui: Remove superfluous Trash Can info text from Simple Versioning (#8177) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Right now, the Trash Can versioning info text is displayed for both the Trash Can and Simple versioning. However, the Simple versioning has its own info text that is also displayed, which results in two very similar sentences being shown on the screen. This commit limits the Trash Can info text to be displayed only when the Trash Can versioning is selected, and moves the Simple versioning info text up to the same location as the other one. Signed-off-by: Tomasz Wilczyński --- gui/default/syncthing/folder/editFolderModalView.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/default/syncthing/folder/editFolderModalView.html b/gui/default/syncthing/folder/editFolderModalView.html index c716acf0b..4905c912c 100644 --- a/gui/default/syncthing/folder/editFolderModalView.html +++ b/gui/default/syncthing/folder/editFolderModalView.html @@ -87,7 +87,8 @@
-

Files are moved to .stversions directory when replaced or deleted by Syncthing.

+

Files are moved to .stversions directory when replaced or deleted by Syncthing.

+

Files are moved to date stamped versions in a .stversions directory when replaced or deleted by Syncthing.

@@ -100,7 +101,6 @@

-

Files are moved to date stamped versions in a .stversions directory when replaced or deleted by Syncthing.

From 0b1f7922900a9d493e99501f26b0e86319b9369e Mon Sep 17 00:00:00 2001 From: tomasz1986 Date: Wed, 9 Feb 2022 00:05:26 +0100 Subject: [PATCH 08/37] gui: Add Docs help links to each setting in Advanced Configuration (#7358) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a link next to each setting's label to its explanation in the Docs. This way, it is easy to quickly check what the setting is about without going to the Docs site separately and searching for it manually. Signed-off-by: Tomasz Wilczyński --- .../settings/advancedSettingsModalView.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gui/default/syncthing/settings/advancedSettingsModalView.html b/gui/default/syncthing/settings/advancedSettingsModalView.html index 29134f907..958714c5c 100644 --- a/gui/default/syncthing/settings/advancedSettingsModalView.html +++ b/gui/default/syncthing/settings/advancedSettingsModalView.html @@ -16,7 +16,7 @@

- +
@@ -35,7 +35,7 @@
- +
@@ -54,7 +54,7 @@
- +
@@ -84,7 +84,7 @@
- +
@@ -114,7 +114,7 @@
- +
@@ -142,7 +142,7 @@
- +
@@ -158,7 +158,7 @@
- +
From 48fd9d05b575fa71e6fceeef2f1c3c8337a551e7 Mon Sep 17 00:00:00 2001 From: Syncthing Release Automation Date: Mon, 14 Feb 2022 03:45:24 +0000 Subject: [PATCH 09/37] gui, man, authors: Update docs, translations, and contributors --- gui/default/assets/lang/lang-bg.json | 12 ++++++++++-- gui/default/assets/lang/lang-ca@valencia.json | 8 ++++++++ gui/default/assets/lang/lang-cs.json | 8 ++++++++ gui/default/assets/lang/lang-da.json | 8 ++++++++ gui/default/assets/lang/lang-de.json | 8 ++++++++ gui/default/assets/lang/lang-el.json | 8 ++++++++ gui/default/assets/lang/lang-en-AU.json | 8 ++++++++ gui/default/assets/lang/lang-en-GB.json | 8 ++++++++ gui/default/assets/lang/lang-eo.json | 8 ++++++++ gui/default/assets/lang/lang-es-ES.json | 8 ++++++++ gui/default/assets/lang/lang-es.json | 8 ++++++++ gui/default/assets/lang/lang-eu.json | 8 ++++++++ gui/default/assets/lang/lang-fi.json | 8 ++++++++ gui/default/assets/lang/lang-fr.json | 8 ++++++++ gui/default/assets/lang/lang-fy.json | 8 ++++++++ gui/default/assets/lang/lang-hu.json | 8 ++++++++ gui/default/assets/lang/lang-id.json | 8 ++++++++ gui/default/assets/lang/lang-it.json | 8 ++++++++ gui/default/assets/lang/lang-ja.json | 8 ++++++++ gui/default/assets/lang/lang-ko-KR.json | 12 ++++++++++-- gui/default/assets/lang/lang-lt.json | 12 ++++++++++-- gui/default/assets/lang/lang-nb.json | 8 ++++++++ gui/default/assets/lang/lang-nl.json | 8 ++++++++ gui/default/assets/lang/lang-pl.json | 8 ++++++++ gui/default/assets/lang/lang-pt-BR.json | 8 ++++++++ gui/default/assets/lang/lang-pt-PT.json | 8 ++++++++ gui/default/assets/lang/lang-ro-RO.json | 8 ++++++++ gui/default/assets/lang/lang-ru.json | 8 ++++++++ gui/default/assets/lang/lang-sk.json | 8 ++++++++ gui/default/assets/lang/lang-sl.json | 14 +++++++++++--- gui/default/assets/lang/lang-sv.json | 8 ++++++++ gui/default/assets/lang/lang-tr.json | 8 ++++++++ gui/default/assets/lang/lang-uk.json | 8 ++++++++ gui/default/assets/lang/lang-zh-CN.json | 8 ++++++++ gui/default/assets/lang/lang-zh-HK.json | 8 ++++++++ gui/default/assets/lang/lang-zh-TW.json | 8 ++++++++ man/stdiscosrv.1 | 2 +- man/strelaysrv.1 | 2 +- man/syncthing-bep.7 | 2 +- man/syncthing-config.5 | 2 +- man/syncthing-device-ids.7 | 2 +- man/syncthing-event-api.7 | 2 +- man/syncthing-faq.7 | 2 +- man/syncthing-globaldisco.7 | 2 +- man/syncthing-localdisco.7 | 2 +- man/syncthing-networking.7 | 2 +- man/syncthing-relay.7 | 2 +- man/syncthing-rest-api.7 | 2 +- man/syncthing-security.7 | 2 +- man/syncthing-stignore.5 | 2 +- man/syncthing-versioning.7 | 2 +- man/syncthing.1 | 2 +- 52 files changed, 313 insertions(+), 25 deletions(-) diff --git a/gui/default/assets/lang/lang-bg.json b/gui/default/assets/lang/lang-bg.json index 242aab581..79ae4ca3f 100644 --- a/gui/default/assets/lang/lang-bg.json +++ b/gui/default/assets/lang/lang-bg.json @@ -19,6 +19,7 @@ "Advanced": "Разширени", "Advanced Configuration": "Разширени настройки", "All Data": "Всички данни", + "All Time": "През цялото време", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Всички папки, споделени с устройството трябва да бъдат защитени с парола, така че данните да са недостъпни без нея.", "Allow Anonymous Usage Reporting?": "Разрешаване на анонимното отчитане на употребата?", "Allowed Networks": "Разрешени мрежи", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Всички права запазени © 2014-2019 за следните сътрудници:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "При създаване на шаблони за пренебрегване, съществуващият файл „{{path}}“ ще бъде презаписан.", "Currently Shared With Devices": "Устройства, с които е споделена", + "Custom Range": "В периода", "Danger!": "Опасност!", "Debugging Facilities": "Отстраняване на дефекти", "Default Configuration": "Настройки по подразбиране", @@ -135,7 +137,7 @@ "File Pull Order": "Ред на изтегляне", "File Versioning": "Версии на файловете", "Files are moved to .stversions directory when replaced or deleted by Syncthing.": "Файловете биват преместени в папка .stversions при заменяне или изтриване от Syncthing.", - "Files are moved to date stamped versions in a .stversions directory when replaced or deleted by Syncthing.": "Когато Syncthing замени или изтрие файл той бива преместен в папката .stversions и преименуван - с добавяне на датата и часа.", + "Files are moved to date stamped versions in a .stversions directory when replaced or deleted by Syncthing.": "Когато Syncthing замени или изтрие файл той бива преместен в папката .stversions и преименуван чрез добавяне на датата и часа.", "Files are protected from changes made on other devices, but changes made on this device will be sent to the rest of the cluster.": "Предпазва местните файлове от промени, идващи от другите устройства, но местните промени се изпращат.", "Files are synchronized from the cluster, but any changes made locally will not be sent to other devices.": "Файловете се синхронизират от другите устройства, но местните промени не се изпращат.", "Filesystem Watcher Errors": "Грешка при наблюдаване на файловата система", @@ -183,6 +185,9 @@ "Keep Versions": "Пазени версии", "LDAP": "LDAP", "Largest First": " Първо най-големи", + "Last 30 Days": "Последните 30 дена", + "Last 7 Days": "Последните 7 дена", + "Last Month": "Миналия месец", "Last Scan": "Последно обхождане", "Last seen": "Последно видяно", "Latest Change": "Последна промяна", @@ -365,7 +370,7 @@ "The interval must be a positive number of seconds.": "Интервалът трябва да е положителен брой секунди.", "The interval, in seconds, for running cleanup in the versions directory. Zero to disable periodic cleaning.": "Интервал, в секунди, на почистване на папката с версии. Нула изключва периодичното почистване.", "The maximum age must be a number and cannot be blank.": "Максималната възраст трябва да е число, полето не може да бъде празно.", - "The maximum time to keep a version (in days, set to 0 to keep versions forever).": "Максималното време за пазене на версия (в дни, задайте 0 за да не бъдат изтривани версии).", + "The maximum time to keep a version (in days, set to 0 to keep versions forever).": "Максимална продължителност за пазене на версия (в дни, за да не бъдат изтривани версии задайте 0).", "The number of days must be a number and cannot be blank.": "Броят дни трябва да бъде число и не може да бъде празно.", "The number of days to keep files in the trash can. Zero means forever.": "Брой дни за пазене на файловете в кошчето. Нула значи завинаги.", "The number of old versions to keep, per file.": "Брой стари версии, които да бъдат пазени за всеки файл.", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Няма папка, която да споделите с устройството.", "They are retried automatically and will be synced when the error is resolved.": "Ще бъдат спрени и автоматично синхронизирани, когато грешката бъде отстранена.", "This Device": "Това устройство", + "This Month": "Този месец", "This can easily give hackers access to read and change any files on your computer.": "Така се предоставя лесен достъп за четене и промяна на всеки файл на компютъра.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Устройството не може автоматично да открива други устройства или да обяви своя адрес, за да бъде намерено от другите. Само устройствата със статично настроени адреси могат да се свързват.", "This is a major version upgrade.": "Това е обновяване на значимо издание.", "This setting controls the free space required on the home (i.e., index database) disk.": "Тази настройка управлява нужното свободното място на основния (пр. този с банката от данни) диск.", "Time": "Време", "Time the item was last modified": "Час на последна промяна на елемента", + "Today": "Днес", "Trash Can File Versioning": "Версии от вида „кошче за отпадъци“", "Type": "Вид", "UNIX Permissions": "Права на UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Когато добавяте ново устройство имайте предвид, че то също трябва да бъде добавено от другата страна.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Като добавяте папката имайте предвид, че той се използва за еднозначно указване на папката между устройствата. Има разлика в регистъра на знаците и трябва изцяло да съвпада между всички устройства.", "Yes": "Да", + "Yesterday": "Вчера", "You can also select one of these nearby devices:": "Също така може да изберете едно от устройствата, които се намират наблизо:", "You can change your choice at any time in the Settings dialog.": "Може да промените решението си по всяко време в прозореца Настройки.", "You can read more about the two release channels at the link below.": "Може да научите повече за двата канала на издание, следвайки препратката по-долу.", diff --git a/gui/default/assets/lang/lang-ca@valencia.json b/gui/default/assets/lang/lang-ca@valencia.json index 795b47624..b245a5766 100644 --- a/gui/default/assets/lang/lang-ca@valencia.json +++ b/gui/default/assets/lang/lang-ca@valencia.json @@ -19,6 +19,7 @@ "Advanced": "Avançat", "Advanced Configuration": "Configuració avançada", "All Data": "Totes les dades", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Permetre informes d'ús anònim?", "Allowed Networks": "Xarxes permeses", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 els següents Col·laboradors:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Creant patrons a ignorar, sobreescriguent un fitxer que ja existeix a {{path}}.", "Currently Shared With Devices": "Currently Shared With Devices", + "Custom Range": "Custom Range", "Danger!": "Perill!", "Debugging Facilities": "Utilitats de Depuració", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Mantindre versions", "LDAP": "LDAP", "Largest First": "El més gran primer", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Últim escaneig", "Last seen": "Vist per última vegada", "Latest Change": "Últim Canvi", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "Es reintenta automàticament i es sincronitzaràn quant el resolga l'error.", "This Device": "Aquest Dispositiu", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Açò pot donar accés fàcilment als hackers per a llegir i canviar qualsevol fitxer al teu ordinador.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Aquesta és una actualització important de la versió.", "This setting controls the free space required on the home (i.e., index database) disk.": "Aquest ajust controla l'espai lliure requerit en el disc inicial (per exemple, la base de dades de l'index).", "Time": "Temps", "Time the item was last modified": "Hora a la que l'ítem fou modificat per última vegada", + "Today": "Today", "Trash Can File Versioning": "Versionat d'arxius de la paperera", "Type": "Tipus", "UNIX Permissions": "UNIX Permissions", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Quant s'afig un nou dispositiu, hi ha que tindre en compte que aquest dispositiu deu ser afegit també en l'altre costat.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Quant s'afig una nova carpeta, hi ha que tindre en compte que l'ID de la carpeta s'utilitza per a juntar les carpetes entre dispositius. Són sensibles a les majúscules i deuen coincidir exactament entre tots els dispositius.", "Yes": "Sí", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Pots seleccionar també un d'aquestos dispositius propers:", "You can change your choice at any time in the Settings dialog.": "Pots canviar la teua elecció en qualsevol moment en el dialog Ajustos", "You can read more about the two release channels at the link below.": "Pots llegir més sobre els dos canals de versions en l'enllaç de baix.", diff --git a/gui/default/assets/lang/lang-cs.json b/gui/default/assets/lang/lang-cs.json index e20d6f8c8..18f59c075 100644 --- a/gui/default/assets/lang/lang-cs.json +++ b/gui/default/assets/lang/lang-cs.json @@ -19,6 +19,7 @@ "Advanced": "Pokročilé", "Advanced Configuration": "Pokročilá nastavení", "All Data": "Všechna data", + "All Time": "Celou dobu", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Všechny složky sdílené s tímto zařízením musí být chráněna heslem, aby byla odesílaná data bez hesla nečitelná.", "Allow Anonymous Usage Reporting?": "Povolit anonymní hlášení o používání?", "Allowed Networks": "Sítě, ze kterých je umožněn přístup", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 následující přispěvatelé:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Vytvářejí se vzory ignorovaného a přepisuje se jimi existující soubor v {{path}}.", "Currently Shared With Devices": "Aktuálně sdíleno se zařízeními", + "Custom Range": "Přesný rozsah", "Danger!": "Nebezpečí!", "Debugging Facilities": "Nástroje pro ladění", "Default Configuration": "Výchozí nastavení", @@ -183,6 +185,9 @@ "Keep Versions": "Kolik verzí ponechávat", "LDAP": "LDAP", "Largest First": "Od největších", + "Last 30 Days": "Posledních 30 dní", + "Last 7 Days": "Posledních 7 dní", + "Last Month": "Poslední měsíc", "Last Scan": "Poslední sken", "Last seen": "Naposledy spatřen", "Latest Change": "Poslední změna", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "S tímto zařízením nejsou sdíleny žádné složky.", "They are retried automatically and will be synced when the error is resolved.": "Nové pokusy o synchronizaci budou probíhat automaticky a položky budou synchronizovány jakmile bude chyba odstraněna.", "This Device": "Toto zařízení", + "This Month": "Tento měsíc", "This can easily give hackers access to read and change any files on your computer.": "Toto může útočníkům jednoduše umožnit čtení a úpravy souborů na vašem počítači. ", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Toto zařízení nemůže automaticky objevovat ostatní zařízení ani oznamovat ostatním vlastní adresu. Připojit se mohou jen zařízení se staticky nastavenou adresou.", "This is a major version upgrade.": "Toto je velká aktualizace.", "This setting controls the free space required on the home (i.e., index database) disk.": "Toto nastavení ovládá velikost volného prostoru na hlavním datovém úložišti (to, na kterém je databáze rejstříku).", "Time": "Čas", "Time the item was last modified": "Čas poslední modifikace položky", + "Today": "Dnes", "Trash Can File Versioning": "Ponechávat jednu předchozí verzi (jako Koš) ", "Type": "Typ", "UNIX Permissions": "UNIX oprávnění", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Při přidávání nového zařízení mějte na paměti, že je ho třeba také zadat na druhé straně.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Při přidávání nové složky mějte na paměti, že její identifikátor je použit jako vazba mezi složkami napříč zařízeními. Rozlišují se malá a velká písmena a je třeba, aby přesně souhlasilo mezi všemi zařízeními.", "Yes": "Ano", + "Yesterday": "Včera", "You can also select one of these nearby devices:": "Také můžete vybrat jedno z těchto okolních zařízení:", "You can change your choice at any time in the Settings dialog.": "Vaši volbu můžete kdykoliv změnit v dialogu nastavení.", "You can read more about the two release channels at the link below.": "O kandidátech na vydání si můžete přečíst více v odkazu níže.", diff --git a/gui/default/assets/lang/lang-da.json b/gui/default/assets/lang/lang-da.json index c9e5d3b24..43832571c 100644 --- a/gui/default/assets/lang/lang-da.json +++ b/gui/default/assets/lang/lang-da.json @@ -19,6 +19,7 @@ "Advanced": "Avanceret", "Advanced Configuration": "Avanceret konfiguration", "All Data": "Alt data", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Alle mapper delt med denne enhed, skal beskyttes med adgangskode, således at alle sendte data er ikke-læsbare uden den angivne adgangskode.", "Allow Anonymous Usage Reporting?": "Tillad anonym brugerstatistik?", "Allowed Networks": "Tilladte netværk", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 de følgende bidragsydere:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Opretter ignoreringsmønstre; overskriver en eksisterende fil på {{path}}.", "Currently Shared With Devices": "i øjeblikket delt med enheder", + "Custom Range": "Custom Range", "Danger!": "Fare!", "Debugging Facilities": "Faciliteter til fejlretning", "Default Configuration": "Standard opsætning", @@ -183,6 +185,9 @@ "Keep Versions": "Behold versioner", "LDAP": "LDAP", "Largest First": "Største først", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Seneste skanning", "Last seen": "Sidst set", "Latest Change": "Seneste ændring", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Der er ingen mapper at dele med denne enhed.", "They are retried automatically and will be synced when the error is resolved.": "De prøves igen automatisk og vil blive synkroniseret, når fejlen er løst.", "This Device": "Denne enhed", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Dette gør det nemt for hackere at få adgang til at læse og ændre filer på din computer.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Dette er en ny hovedversion.", "This setting controls the free space required on the home (i.e., index database) disk.": "Denne indstilling styrer den krævede ledige plads på hjemmedrevet (dvs. drevet med indeksdatabasen).", "Time": "Tid", "Time the item was last modified": "Tidspunkt for seneste ændring af filen", + "Today": "Today", "Trash Can File Versioning": "Versionering med papirkurv", "Type": "Type", "UNIX Permissions": "UNIX rettigheder", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Når der tilføjes en ny enhed, vær da opmærksom på, at denne enhed også skal tilføjes i den anden ende.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Når der tilføjes en ny enhed, vær da opmærksom på at samme mappe-ID bruges til at forbinde mapper på de forskellige enheder. Der er forskel på store og små bogstaver, og ID skal være fuldstændig identisk på alle enheder.", "Yes": "Ja", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Du kan også vælge en af disse enheder i nærheden:", "You can change your choice at any time in the Settings dialog.": "Du kan altid ændre dit valg under indstillinger.", "You can read more about the two release channels at the link below.": "Du kan læse mere om de to udgivelseskanaler på linket herunder.", diff --git a/gui/default/assets/lang/lang-de.json b/gui/default/assets/lang/lang-de.json index 65cedbb69..e8bb64a3c 100644 --- a/gui/default/assets/lang/lang-de.json +++ b/gui/default/assets/lang/lang-de.json @@ -19,6 +19,7 @@ "Advanced": "Erweitert", "Advanced Configuration": "Erweiterte Konfiguration", "All Data": "Alle Daten", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Alle Ordner, welche mit diesem Gerät geteilt werden, müssen von einem Passwort geschützt werden, sodass keine gesendeten Daten ohne Kenntnis des Passworts gelesen werden können. ", "Allow Anonymous Usage Reporting?": "Übertragung von anonymen Nutzungsberichten erlauben?", "Allowed Networks": "Erlaubte Netzwerke", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 folgende Mitwirkende:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Erstelle Ignoriermuster, welche die existierende Datei {{path}} überschreiben.", "Currently Shared With Devices": "Derzeit mit Geräten geteilt", + "Custom Range": "Custom Range", "Danger!": "Achtung!", "Debugging Facilities": "Debugging-Möglichkeiten", "Default Configuration": "Vorgabekonfiguration", @@ -183,6 +185,9 @@ "Keep Versions": "Versionen erhalten", "LDAP": "LDAP", "Largest First": "Größte zuerst", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Letzter Scan", "Last seen": "Zuletzt online", "Latest Change": "Letzte Änderung", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Es gibt keine Ordner, die mit diesem Gerät geteilt werden können.", "They are retried automatically and will be synced when the error is resolved.": "Sie werden automatisch heruntergeladen und werden synchronisiert, wenn der Fehler behoben wurde.", "This Device": "Dieses Gerät", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Dies kann dazu führen, dass Unberechtigte relativ einfach auf Ihre Dateien zugreifen und diese ändern können.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Dieses Gerät kann nicht automatisch andere Geräte auffinden, oder seine eigene Adresse bekannt geben, um von anderen gefunden zu werden. Nur Geräte mit statisch konfigurierten Adressen können sich verbinden.", "This is a major version upgrade.": "Dies ist eine Hauptversionsaktualisierung.", "This setting controls the free space required on the home (i.e., index database) disk.": "Diese Einstellung regelt den freien Speicherplatz, der für den Systemordner (d.h. Indexdatenbank) erforderlich ist.", "Time": "Zeit", "Time the item was last modified": "Zeit der letzten Änderung des Elements", + "Today": "Today", "Trash Can File Versioning": "Papierkorb Dateiversionierung", "Type": "Typ", "UNIX Permissions": "UNIX-Berechtigungen", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Beachte beim Hinzufügen eines neuen Gerätes, dass dieses Gerät auch auf den anderen Geräten hinzugefügt werden muss.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Beachte bitte beim Hinzufügen eines neuen Ordners, dass die Ordnerkennung dazu verwendet wird, Ordner zwischen Geräten zu verbinden. Die Kennung muss also auf allen Geräten gleich sein, die Groß- und Kleinschreibung muss dabei beachtet werden.", "Yes": "Ja", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Sie können auch ein in der Nähe befindliches Geräte auswählen:", "You can change your choice at any time in the Settings dialog.": "Sie können Ihre Wahl jederzeit in den Einstellungen ändern.", "You can read more about the two release channels at the link below.": "Über den folgenden Link können Sie mehr über die zwei Veröffentlichungskanäle erfahren.", diff --git a/gui/default/assets/lang/lang-el.json b/gui/default/assets/lang/lang-el.json index 2b06471a1..291fd7868 100644 --- a/gui/default/assets/lang/lang-el.json +++ b/gui/default/assets/lang/lang-el.json @@ -19,6 +19,7 @@ "Advanced": "Προχωρημένες", "Advanced Configuration": "Προχωρημένες ρυθμίσεις", "All Data": "Όλα τα δεδομένα", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Να επιτρέπεται η αποστολή ανώνυμων στοιχείων χρήσης;", "Allowed Networks": "Επιτρεπόμενα δίκτυα", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 για τους παρακάτω συνεισφέροντες:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Δημιουργία προτύπων αγνόησης, αντικατάσταση του υπάρχοντος αρχείου στο {{path}}.", "Currently Shared With Devices": "Διαμοιράζεται με αυτές τις συσκευές", + "Custom Range": "Custom Range", "Danger!": "Προσοχή!", "Debugging Facilities": "Εργαλεία αποσφαλμάτωσης", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Διατήρηση εκδόσεων", "LDAP": "LDAP", "Largest First": "Το μεγαλύτερο πρώτα", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Τελευταία Σάρωση", "Last seen": "Τελευταία σύνδεση", "Latest Change": "Τελευταία αλλαγή", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "Όταν επιλυθεί το σφάλμα θα κατεβούν και θα συχρονιστούν αυτόματα.", "This Device": "Αυτή η συσκευή", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Αυτό μπορεί εύκολα να δώσει πρόσβαση ανάγνωσης και επεξεργασίας αρχείων του υπολογιστή σας σε χάκερς.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Αυτή είναι μια σημαντική αναβάθμιση.", "This setting controls the free space required on the home (i.e., index database) disk.": "Αυτή η επιλογή καθορίζει τον ελεύθερο χώρο που θα παραμένει ελεύθερος στον δίσκο όπου βρίσκεται ο κατάλογος της εφαρμογής (και συνεπώς η βάση δεδομένων ευρετηρίων).", "Time": "Χρόνος", "Time the item was last modified": "Ώρα τελευταίας τροποποίησης του στοιχείου", + "Today": "Today", "Trash Can File Versioning": "Τήρηση εκδόσεων κάδου ανακύκλωσης", "Type": "Τύπος", "UNIX Permissions": "Άδειες αρχείων UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Θυμήσου πως όταν προσθέτεις μια νέα συσκευή, ετούτη η συσκευή θα πρέπει να προστεθεί και στην άλλη πλευρά.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Όταν προσθέτεις έναν νέο φάκελο, θυμήσου πως η ταυτότητα ενός φακέλου χρησιμοποιείται για να να συσχετίσει φακέλους μεταξύ συσκευών. Η ταυτότητα του φακέλου θα πρέπει να είναι η ίδια σε όλες τις συσκευές και έχουν σημασία τα πεζά ή κεφαλαία γράμματα.", "Yes": "Ναι", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Μπορείτε επίσης να επιλέξετε μια από αυτές τις γειτονικές συσκευές:", "You can change your choice at any time in the Settings dialog.": "Μπορείτε να αλλάξετε τη ρύθμιση αυτή ανά πάσα στιγμή στο παράθυρο «Ρυθμίσεις».", "You can read more about the two release channels at the link below.": "Μπορείτε να διαβάσετε περισσότερα για τα δύο κανάλια εκδόσεων στον παρακάτω σύνδεσμο.", diff --git a/gui/default/assets/lang/lang-en-AU.json b/gui/default/assets/lang/lang-en-AU.json index 9d96eda7f..be9b352f6 100644 --- a/gui/default/assets/lang/lang-en-AU.json +++ b/gui/default/assets/lang/lang-en-AU.json @@ -19,6 +19,7 @@ "Advanced": "Advanced", "Advanced Configuration": "Advanced Configuration", "All Data": "All Data", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Allow Anonymous Usage Reporting?", "Allowed Networks": "Allowed Networks", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 the following Contributors:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Creating ignore patterns, overwriting an existing file at {{path}}.", "Currently Shared With Devices": "Currently Shared With Devices", + "Custom Range": "Custom Range", "Danger!": "Danger!", "Debugging Facilities": "Debugging Facilities", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Keep Versions", "LDAP": "LDAP", "Largest First": "Largest First", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Last Scan", "Last seen": "Last seen", "Latest Change": "Latest Change", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "They are retried automatically and will be synced when the error is resolved.", "This Device": "This Device", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "This can easily give hackers access to read and change any files on your computer.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "This is a major version upgrade.", "This setting controls the free space required on the home (i.e., index database) disk.": "This setting controls the free space required on the home (i.e., index database) disk.", "Time": "Time", "Time the item was last modified": "Time the item was last modified", + "Today": "Today", "Trash Can File Versioning": "Bin File Versioning", "Type": "Type", "UNIX Permissions": "UNIX Permissions", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "When adding a new device, keep in mind that this device must be added on the other side too.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.", "Yes": "Yes", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "You can also select one of these nearby devices:", "You can change your choice at any time in the Settings dialog.": "You can change your choice at any time in the Settings dialog.", "You can read more about the two release channels at the link below.": "You can read more about the two release channels at the link below.", diff --git a/gui/default/assets/lang/lang-en-GB.json b/gui/default/assets/lang/lang-en-GB.json index 58445d992..f3fc417a6 100644 --- a/gui/default/assets/lang/lang-en-GB.json +++ b/gui/default/assets/lang/lang-en-GB.json @@ -19,6 +19,7 @@ "Advanced": "Advanced", "Advanced Configuration": "Advanced Configuration", "All Data": "All Data", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Allow Anonymous Usage Reporting?", "Allowed Networks": "Allowed Networks", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 the following Contributors:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Creating ignore patterns, overwriting an existing file at {{path}}.", "Currently Shared With Devices": "Currently Shared With Devices", + "Custom Range": "Custom Range", "Danger!": "Danger!", "Debugging Facilities": "Debugging Facilities", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Keep Versions", "LDAP": "LDAP", "Largest First": "Largest First", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Last Scan", "Last seen": "Last seen", "Latest Change": "Latest Change", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "They are retried automatically and will be synced when the error is resolved.", "This Device": "This Device", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "This can easily give hackers access to read and change any files on your computer.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "This is a major version upgrade.", "This setting controls the free space required on the home (i.e., index database) disk.": "This setting controls the free space required on the home (i.e., index database) disk.", "Time": "Time", "Time the item was last modified": "Time the item was last modified", + "Today": "Today", "Trash Can File Versioning": "Rubbish Bin File Versioning", "Type": "Type", "UNIX Permissions": "UNIX Permissions", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "When adding a new device, keep in mind that this device must be added on the other side too.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.", "Yes": "Yes", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "You can also select one of these nearby devices:", "You can change your choice at any time in the Settings dialog.": "You can change your choice at any time in the Settings dialogue.", "You can read more about the two release channels at the link below.": "You can read more about the two release channels at the link below.", diff --git a/gui/default/assets/lang/lang-eo.json b/gui/default/assets/lang/lang-eo.json index ad86992f2..0f552368e 100644 --- a/gui/default/assets/lang/lang-eo.json +++ b/gui/default/assets/lang/lang-eo.json @@ -19,6 +19,7 @@ "Advanced": "Altnivela", "Advanced Configuration": "Altnivela Agordo", "All Data": "Ĉiuj Datumoj", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Ĉiuj dosierujoj, kiuj estas dividitaj kun ĉi tiu aparato devas esti protektitaj per pasvorto, tiel ĉiuj senditaj datumoj estas nelegeblaj sen la pasvorto.", "Allow Anonymous Usage Reporting?": "Permesi Anoniman Raporton de Uzado?", "Allowed Networks": "Permesitaj Retoj", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Kopirajto © 2014-2019 por la sekvantaj Kontribuantoj:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Kreante ignorantajn ŝablonojn, anstataŭige ekzistantan dosieron ĉe {{path}}.", "Currently Shared With Devices": "Nune komunigita kun aparatoj", + "Custom Range": "Custom Range", "Danger!": "Danĝero!", "Debugging Facilities": "Elpurigadiloj", "Default Configuration": "Defaŭlta agordo", @@ -183,6 +185,9 @@ "Keep Versions": "Konservi Versiojn", "LDAP": "LDAP", "Largest First": "Plej Granda Unue", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Lasta Skano", "Last seen": "Lasta vidita", "Latest Change": "Lasta Ŝanĝo", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "Ili estas reprovitaj aŭtomate kaj estos sinkronigitaj kiam la eraro estas solvita.", "This Device": "Ĉi Tiu Aparato", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Ĉi tio povas facile doni al kodumuloj atingon por legi kaj ŝanĝi ajnajn dosierojn en via komputilo.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Ĉi tio estas ĉefversio ĝisdatigita.", "This setting controls the free space required on the home (i.e., index database) disk.": "Ĉi tiu agordo regas la libera spaco postulita sur la hejma (t.e. indeksa datumbaza) disko.", "Time": "Tempo", "Time the item was last modified": "Tempo de lasta modifo de la ero", + "Today": "Today", "Trash Can File Versioning": "Rubuja Dosiera Versionado", "Type": "Tipo", "UNIX Permissions": "Permesoj UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Dum la aldonado de nova aparato, memoru ke ĉi tiu aparato devas esti aldonita en la alia flanko ankaŭ.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Dum la aldonado de nova dosierujo, memoru ke la Dosieruja ID estas uzita por ligi la dosierujojn kune inter aparatoj. Ili estas literfakodistingaj kaj devas kongrui precize inter ĉiuj aparatoj.", "Yes": "Jes", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Vi povas ankaŭ elekti unu el ĉi tiuj proksimaj aparatoj:", "You can change your choice at any time in the Settings dialog.": "Vi povas ŝanĝi vian elekton iam ajn en la Agorda dialogo.", "You can read more about the two release channels at the link below.": "Vi povas legi plu pri la du eldonkanaloj per la malsupra ligilo.", diff --git a/gui/default/assets/lang/lang-es-ES.json b/gui/default/assets/lang/lang-es-ES.json index 8f8062da5..cd1fab83e 100644 --- a/gui/default/assets/lang/lang-es-ES.json +++ b/gui/default/assets/lang/lang-es-ES.json @@ -19,6 +19,7 @@ "Advanced": "Avanzado", "Advanced Configuration": "Configuración Avanzada", "All Data": "Todos los datos", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Todos las carpetas compartidas con este equipo deben ser protegidas con una contraseña, de manera que todos los datos enviados sean ilegibles sin la contraseña dada.", "Allow Anonymous Usage Reporting?": "¿Deseas permitir el envío anónimo de informes de uso?", "Allowed Networks": "Redes permitidas", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 los siguientes Colaboradores:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Crear patrones a ignorar, sobreescribiendo un fichero existente en {{path}}.", "Currently Shared With Devices": "Actualmente Compartida Con Los Equipos", + "Custom Range": "Custom Range", "Danger!": "¡Peligro!", "Debugging Facilities": "Ayudas a la depuración", "Default Configuration": "Configuración Por Defecto", @@ -183,6 +185,9 @@ "Keep Versions": "Mantener versiones", "LDAP": "LDAP", "Largest First": "Más grande primero", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Último escaneo", "Last seen": "Visto por última vez", "Latest Change": "Último Cambio", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "No hay carpetas para compartir con este equipo.", "They are retried automatically and will be synced when the error is resolved.": "Se reintentarán de forma automática y se sincronizarán cuando se resuelva el error.", "This Device": "Este Dispositivo", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Esto podría permitir fácilmente el acceso a hackers para leer y modificar cualquier fichero de tu equipo.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Este dispositivo no puede descubrir automáticamente a otros dispositivos o anunciar su propia dirección para que sea encontrado con otros. Solo dispositivos con direcciones configuradas como estáticas pueden conectarse.", "This is a major version upgrade.": "Hay una actualización importante.", "This setting controls the free space required on the home (i.e., index database) disk.": "Este ajuste controla el espacio libre necesario en el disco principal (por ejemplo, el índice de la base de datos).", "Time": "Hora", "Time the item was last modified": "Tiempo en el que se modificó el ítem por última vez", + "Today": "Today", "Trash Can File Versioning": "Versionado de archivos de la papelera", "Type": "Tipo", "UNIX Permissions": "Permisos de UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Cuando añada un nuevo dispositivo, tenga en cuenta que este debe añadirse también en el otro lado.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Cuando añada una nueva carpeta, tenga en cuenta que su ID se usa para unir carpetas entre dispositivos. Son sensibles a las mayúsculas y deben coincidir exactamente entre todos los dispositivos.", "Yes": "Si", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Puedes seleccionar también uno de estos dispositivos cercanos:", "You can change your choice at any time in the Settings dialog.": "Puedes cambiar tu elección en cualquier momento en el panel de Ajustes.", "You can read more about the two release channels at the link below.": "Puedes leer más sobre los dos método de publicación de versiones en el siguiente enlace.", diff --git a/gui/default/assets/lang/lang-es.json b/gui/default/assets/lang/lang-es.json index 5b4fc8e36..fead3886a 100644 --- a/gui/default/assets/lang/lang-es.json +++ b/gui/default/assets/lang/lang-es.json @@ -19,6 +19,7 @@ "Advanced": "Avanzado", "Advanced Configuration": "Configuración Avanzada", "All Data": "Todos los datos", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Todas las carpetas compartidas con este dispositivo deben estar protegidas por una contraseña, de forma que todos los datos enviados sean ilegibles sin la contraseña indicada.", "Allow Anonymous Usage Reporting?": "¿Deseas permitir el envío anónimo de informes de uso?", "Allowed Networks": "Redes permitidas", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Derechos de Autor © 2014-2019 los siguientes colaboradores:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Crear patrones a ignorar, sobreescribiendo un fichero existente en {{path}}.", "Currently Shared With Devices": "Actualmente Compartida con los Dispositivos", + "Custom Range": "Custom Range", "Danger!": "¡Peligro!", "Debugging Facilities": "Servicios de depuración", "Default Configuration": "Configuración Predeterminada", @@ -183,6 +185,9 @@ "Keep Versions": "Mantener versiones", "LDAP": "LDAP", "Largest First": "Más grande primero", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Último escaneo", "Last seen": "Visto por última vez", "Latest Change": "Último Cambio", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "No hay carpetas para compartir con este dispositivo.", "They are retried automatically and will be synced when the error is resolved.": "Se reintentarán de forma automática y se sincronizarán cuando se resuelva el error.", "This Device": "Este Dispositivo", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Esto podría permitir fácilmente el acceso a hackers para leer y modificar cualquier fichero de tu equipo.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Este dispositivo no puede descubrir automáticamente a otros dispositivos o anunciar su propia dirección para que sea encontrado con otros. Solo dispositivos con direcciones configuradas como estáticas pueden conectarse.", "This is a major version upgrade.": "Hay una actualización importante.", "This setting controls the free space required on the home (i.e., index database) disk.": "Este ajuste controla el espacio libre necesario en el disco principal (por ejemplo, el índice de la base de datos).", "Time": "Hora", "Time the item was last modified": "Hora en que el ítem fue modificado por última vez", + "Today": "Today", "Trash Can File Versioning": "Versionado de archivos de la papelera", "Type": "Tipo", "UNIX Permissions": "Permisos de UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Cuando añada un nuevo dispositivo, tenga en cuenta que este debe añadirse también en el otro lado.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Cuando añada una nueva carpeta, tenga en cuenta que su ID se usa para unir carpetas entre dispositivos. Son sensibles a las mayúsculas y deben coincidir exactamente entre todos los dispositivos.", "Yes": "Si", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "También puede seleccionar uno de estos dispositivos cercanos:", "You can change your choice at any time in the Settings dialog.": "Puedes cambiar tu elección en cualquier momento en el panel de Ajustes.", "You can read more about the two release channels at the link below.": "Puedes leer más sobre los dos método de publicación de versiones en el siguiente enlace.", diff --git a/gui/default/assets/lang/lang-eu.json b/gui/default/assets/lang/lang-eu.json index e1272a4c6..f6ee6ee56 100644 --- a/gui/default/assets/lang/lang-eu.json +++ b/gui/default/assets/lang/lang-eu.json @@ -19,6 +19,7 @@ "Advanced": "Aitzinatua", "Advanced Configuration": "Konfigurazio aitzinatua", "All Data": "Datu guziak", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Gailu honekin partekatutako karpeta guztiak pasahitz baten bidez babestu behar dira, horrela, bidalitako datu guztiak irakurri ezinak izango dira emandako pasahitzik gabe.", "Allow Anonymous Usage Reporting?": "Izenik gabeko erabiltze erreportak baimendu?", "Allowed Networks": "Sare baimenduak", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright 2014-2019 ekarle hauek:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Baztertze modelo batzuen sortzea, dagoen fitxategiari ordaina ezartzea: {{path}}", "Currently Shared With Devices": "Gaur egun tresnekin partekatua", + "Custom Range": "Custom Range", "Danger!": "Lanjera !", "Debugging Facilities": "Arazketa zerbitzuak", "Default Configuration": "Konfigurazio lehenetsia", @@ -183,6 +185,9 @@ "Keep Versions": "Gorde bertsioak", "LDAP": "LDAP", "Largest First": "Handienak lehenik", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Azken azterketa", "Last seen": "Azken agerraldia", "Latest Change": "Azken aldaketa", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Ez dago gailu honekin partekatzeko karpetarik.", "They are retried automatically and will be synced when the error is resolved.": "Errorea zuzendua izanen delarik, automatikoki berriz entseatuak et sinkronizatuak izanen dira", "This Device": "Tresna hau", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Hunek errexki irakurtzen eta aldatzen uzten ahal du zure ordenagailuko edozein fitxero, nahiz eta sartu denak ez haizu izan!", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Gailu honek ezin ditu automatikoki beste gailu batzuk aurkitu edo bere helbidea iragarri beste batzuek aurkitzeko. Estatikoki konfiguratutako helbideak dituzten gailuak bakarrik konekta daitezke.", "This is a major version upgrade.": "Aktualizatze garrantzitsu bat da", "This setting controls the free space required on the home (i.e., index database) disk.": "Behar den espazio kontrolatzen du egokitze honek, zure erabiltzale partekatzea geritzatzen duen diskoan (hori da, indexazio datu-basean)", "Time": "Ordua", "Time the item was last modified": "Itema azkenekoz aldatu zen ordua", + "Today": "Today", "Trash Can File Versioning": "Zakarrontzia", "Type": "Mota", "UNIX Permissions": "UNIX baimenak", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Tresna bat gehitzen duzularik, gogoan atxik ezazu zurea bestaldean gehitu behar dela ere", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Partekatze bat gehitzen delarik, gogoan atxik ezazu bere IDa erabilia dela errepertorioak lotzeko tresnen bitartez. ID-a hautskorra da eta partekatze hontan parte hartzen duten tresna guzietan berdina izan behar du.", "Yes": "Bai", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Gertuko gailu hauetako bat ere hauta dezakezu:", "You can change your choice at any time in the Settings dialog.": "Zure hautua aldatzen ahal duzu \"Konfigurazio\" leihatilan", "You can read more about the two release channels at the link below.": "Bi banaketa kanal hauen bidez gehiago jakin dezakezu, lokarri honen bidez ", diff --git a/gui/default/assets/lang/lang-fi.json b/gui/default/assets/lang/lang-fi.json index 892687aa0..de0b96aa6 100644 --- a/gui/default/assets/lang/lang-fi.json +++ b/gui/default/assets/lang/lang-fi.json @@ -19,6 +19,7 @@ "Advanced": "Lisäasetukset", "Advanced Configuration": "Kehittyneet asetukset", "All Data": "Kaikki data", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Salli anonyymi käyttöraportointi?", "Allowed Networks": "Sallitut verkot", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Tekijänoikeus © 2014-2019 seuraavat avustajat:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Luodaan ohituslausekkeet. Ylikirjoitetaan tiedosto: {{path}}.", "Currently Shared With Devices": "Currently Shared With Devices", + "Custom Range": "Custom Range", "Danger!": "Vaara!", "Debugging Facilities": "Debug -luokat", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Säilytä versiot", "LDAP": "LDAP", "Largest First": "Suurin ensin", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Viimeisin skannaus", "Last seen": "Nähty viimeksi", "Latest Change": "Viimeisin muutos", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "Niiden synkronointia yritetään uudelleen automaattisesti.", "This Device": "Tämä laite", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Tämä voi helposti sallia vihamielisille tahoille pääsyn lukea ja muokata kaikkia tiedostojasi", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Tämä on pääversion päivitys.", "This setting controls the free space required on the home (i.e., index database) disk.": "Tämä asetus määrittää vaaditun vapaan levytilan kotikansiossa (se missä index-tietokanta on).", "Time": "Aika", "Time the item was last modified": "Aika jolloin kohdetta viimeksi muokattiin", + "Today": "Today", "Trash Can File Versioning": "Roskakorin tiedostoversiointi", "Type": "Tyyppi", "UNIX Permissions": "UNIX Permissions", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Lisättäessä laitetta, muista että tämä laite tulee myös lisätä toiseen laitteeseen.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Lisättäessä uutta kansiota, muista että kansion ID:tä käytetään solmimaan kansiot yhteen laitteiden välillä. Ne ovat riippuvaisia kirjankoosta ja niiden tulee täsmätä kaikkien laitteiden välillä.", "Yes": "Kyllä", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Voit myös valita jonkin näistä lähellä olevista laitteista:", "You can change your choice at any time in the Settings dialog.": "Voit muuttaa valintaasi koska tahansa \"Asetukset\" -valikossa.", "You can read more about the two release channels at the link below.": "Voit lukea lisää kahdesta julkaisukanavasta alla olevasta linkistä.", diff --git a/gui/default/assets/lang/lang-fr.json b/gui/default/assets/lang/lang-fr.json index 7243a9c42..eabec19e7 100644 --- a/gui/default/assets/lang/lang-fr.json +++ b/gui/default/assets/lang/lang-fr.json @@ -19,6 +19,7 @@ "Advanced": "Avancé", "Advanced Configuration": "Configuration avancée", "All Data": "Toutes les données", + "All Time": "Toujours", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Tous les partages pour cet appareil doivent être protégés par mot de passe, de sorte que les données envoyées soient illisibles sans le mot de passe.", "Allow Anonymous Usage Reporting?": "Autoriser l'envoi de statistiques d'utilisation anonymisées ?", "Allowed Networks": "Réseaux autorisés", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 les Contributeurs suivants :", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Création de masques d'exclusion, remplacement du fichier existant : {{path}}.", "Currently Shared With Devices": "Appareils membres actuels de ce partage :", + "Custom Range": "Plage personnalisée", "Danger!": "Attention !", "Debugging Facilities": "Outils de débogage", "Default Configuration": "Préférences pour les créations (non rétroactif)", @@ -183,6 +185,9 @@ "Keep Versions": "Nombre de versions à conserver", "LDAP": "LDAP", "Largest First": "Les plus volumineux en premier", + "Last 30 Days": "Les 30 derniers jours", + "Last 7 Days": "Les 7 derniers jours", + "Last Month": "Le mois dernier", "Last Scan": "Dernière analyse", "Last seen": "Dernière apparition", "Latest Change": "Dernier changement", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Il n'y a aucun partage disponible.", "They are retried automatically and will be synced when the error is resolved.": "Ils seront automatiquement retentés et synchronisés quand l'erreur sera résolue.", "This Device": "Cet appareil", + "This Month": "Ce mois-ci", "This can easily give hackers access to read and change any files on your computer.": "Ceci peut aisément permettre à un intrus de lire et modifier n'importe quel fichier de votre ordinateur.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Cet appareil ne peut ni découvrir automatiquement les autres, ni annoncer sa propre présence pour être découvert pas les autres. Seuls les appareils configurés avec des connexions statiques peuvent se connecter.", "This is a major version upgrade.": "Il s'agit d'une mise à jour majeure.", "This setting controls the free space required on the home (i.e., index database) disk.": "Ce réglage contrôle l'espace disque requis dans le disque qui abrite votre répertoire utilisateur (pour la base de données d'indexation).", "Time": "Heure", "Time the item was last modified": "Dernière modification de l'élément", + "Today": "Aujourd'hui", "Trash Can File Versioning": "Style poubelle", "Type": "Type", "UNIX Permissions": "Permissions UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Lorsque vous ajoutez un appareil, gardez à l'esprit que le votre doit aussi être ajouté de l'autre coté.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Lorsqu'un nouveau partage est ajouté, gardez à l'esprit que son ID est utilisée pour lier les répertoires à travers les appareils. L'ID est sensible à la casse et sera forcément la même sur tous les appareils participant à ce partage.", "Yes": "Oui", + "Yesterday": "Hier", "You can also select one of these nearby devices:": "Vous pouvez également sélectionner l'un de ces appareils proches :", "You can change your choice at any time in the Settings dialog.": "Vous pouvez changer votre choix dans la boîte de dialogue \"Configuration\".", "You can read more about the two release channels at the link below.": "Vous pouvez en savoir plus sur les deux canaux de distribution via le lien ci-dessous.", diff --git a/gui/default/assets/lang/lang-fy.json b/gui/default/assets/lang/lang-fy.json index c5c46ddf7..cefa59aba 100644 --- a/gui/default/assets/lang/lang-fy.json +++ b/gui/default/assets/lang/lang-fy.json @@ -19,6 +19,7 @@ "Advanced": "Avansearre", "Advanced Configuration": "Avansearre konfiguraasje", "All Data": "Alle data", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Alle mappen dy't mei dit apparaat dielt binne, moatte wurde beskerme mei in wachtwurd, sadat alle ferstjoerde data net lêsber is sûnder it opjûne wachtwurd .", "Allow Anonymous Usage Reporting?": "Anonime brûkensrapportaazje tastean?", "Allowed Networks": "Tasteane Netwurken", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 de folgende Bydragers:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Meitsje negear-patroanen dy in besteande triem oerskriuwe yn {{path}}.", "Currently Shared With Devices": "Op dit stuit Dielt mei Apparaten", + "Custom Range": "Custom Range", "Danger!": "Gefaar!", "Debugging Facilities": "Debug-foarsjennings", "Default Configuration": "Standertkonfiguraasje", @@ -183,6 +185,9 @@ "Keep Versions": "Ferzjes bewarje", "LDAP": "LDAP", "Largest First": "Grutste earst", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Lêst Skent", "Last seen": "Lêst sjoen", "Latest Change": "Meast Resinte Feroarings", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "D'r binne gjin mappen te dielen mei dit apparaat.", "They are retried automatically and will be synced when the error is resolved.": "Sy wurde automatysk opnij probearre en sille syngronisearre wurde wannear at de flater oplost is.", "This Device": "Dit Apparaat", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Dit kin samar ynkringers (hackers) tagong jaan om elke triem op jo kompjûter te besjen en te feroarjen.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Dit is in wichtige ferzjefernijing.", "This setting controls the free space required on the home (i.e., index database) disk.": "Dizze ynstelling bepaalt de frije romte dy't noadich is op de home-skiif (fan de yndeks-databank).", "Time": "Tiid", "Time the item was last modified": "Tiidstip dat it ûnderdiel foar it lest oanpast waard.", + "Today": "Today", "Trash Can File Versioning": "Jiskefet-triemferzjebehear", "Type": "Type", "UNIX Permissions": "UNIX-Rjochten", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Hâld by it taheakjen fan in nij apparaat yn de holle dat it apparaat oan de oare kant ek taheakke wurde moat. ", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Hâld by it taheakjen fan in nije map yn de holle dat de map-ID brûkt wurd om de mappen tusken apparaten mei-inoar te ferbinen. Se binne haadlettergefoelich en moatte oer alle apparaten eksakt oerienkomme.", "Yes": "Ja", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Jo kinne ek ien fan dizze tichtbye apparaten selektearje:", "You can change your choice at any time in the Settings dialog.": "Jo kinne jo kar op elk stuit oanpasse yn it Ynstellingsdialooch.", "You can read more about the two release channels at the link below.": "Jo kinne mear lêze oer de twa útjeftekanalen fia de ûndersteande link.", diff --git a/gui/default/assets/lang/lang-hu.json b/gui/default/assets/lang/lang-hu.json index d76ace4e0..95ffc748b 100644 --- a/gui/default/assets/lang/lang-hu.json +++ b/gui/default/assets/lang/lang-hu.json @@ -19,6 +19,7 @@ "Advanced": "Haladó", "Advanced Configuration": "Haladó beállítások", "All Data": "Minden adat", + "All Time": "Szüntelen", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Minden, ezzel az eszközzel megosztott mappát jelszóval kell védeni, így az összes elküldött adat olvashatatlan a megadott jelszó nélkül.", "Allow Anonymous Usage Reporting?": "A névtelen felhasználási adatok elküldhetők?", "Allowed Networks": "Engedélyezett hálózatok", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Szerzői jog © 2014-2019 az alábbi közreműködők:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Mellőzési minták létrehozása, egy létező fájl felülírása itt: {{path}}.", "Currently Shared With Devices": "Eszközök, melyekkel jelenleg meg van osztva", + "Custom Range": "Egyedi intervallum", "Danger!": "Veszély!", "Debugging Facilities": "Hibakeresési képességek", "Default Configuration": "Alapértelmezett beállítások", @@ -183,6 +185,9 @@ "Keep Versions": "Megtartott verziók", "LDAP": "LDAP", "Largest First": "Nagyobb először", + "Last 30 Days": "Utolsó 30 nap", + "Last 7 Days": "Utolsó 7 nap", + "Last Month": "Előző hónap", "Last Scan": "Utolsó vizsgálat", "Last seen": "Utoljára látva", "Latest Change": "Utolsó módosítás", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Nincsenek mappák, amelyek megoszthatók ezzel az eszközzel.", "They are retried automatically and will be synced when the error is resolved.": "A hiba javítása után automatikusan újra megpróbálja a szinkronizálást.", "This Device": "Ez az eszköz", + "This Month": "Jelen hónap", "This can easily give hackers access to read and change any files on your computer.": "Így a hekkerek könnyedén hozzáférést szerezhetnek a gépen tárolt fájlok olvasásához és módosításához.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Ez az eszköz nem képes automatikusan felderíteni más eszközöket, illetve nem tudja bejelenteni a saját címét, hogy mások megtalálják. Csak statikusan konfigurált címekkel rendelkező eszközök tudnak csatlakozni.", "This is a major version upgrade.": "Ez egy főverzió-frissítés.", "This setting controls the free space required on the home (i.e., index database) disk.": "Ez e beállítás szabályozza a szükséges szabad helyet a fő (pl: index, adatbázis) lemezen.", "Time": "Idő", "Time the item was last modified": "Az idő, amikor utoljára módosítva lett az elem", + "Today": "Ma", "Trash Can File Versioning": "Szemetes fájlverzió-követés", "Type": "Típus", "UNIX Permissions": "UNIX jogosultságok", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Új eszköz hozzáadásakor nem szabad elfeledkezni arról, hogy a másik oldalon ezt az eszközt is hozzá kell adni.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Új eszköz hozzáadásakor észben kell tartani, hogy a mappaazonosító arra való, hogy összekösse a mappákat az eszközökön. Az azonosító kisbetű-nagybetű érzékeny és pontosan egyeznie kell az eszközökön.", "Yes": "Igen", + "Yesterday": "Tegnap", "You can also select one of these nearby devices:": "Az alábbi közelben lévő eszközök közül lehet választani:", "You can change your choice at any time in the Settings dialog.": "A beállításoknál bármikor módosíthatod a választásodat.", "You can read more about the two release channels at the link below.": "A két kiadási csatornáról az alábbi linken olvashatsz további információkat.", diff --git a/gui/default/assets/lang/lang-id.json b/gui/default/assets/lang/lang-id.json index 0f883e428..eb471a494 100644 --- a/gui/default/assets/lang/lang-id.json +++ b/gui/default/assets/lang/lang-id.json @@ -19,6 +19,7 @@ "Advanced": "Tingkat Lanjut", "Advanced Configuration": "Konfigurasi Tingkat Lanjut", "All Data": "Semua Data", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Semua folder yang dibagi dengan perangkat ini harus dilindungi dengan sandi, sehingga semua data tidak dapat dilihat tanpa sandi.", "Allow Anonymous Usage Reporting?": "Izinkan Laporan Penggunaan Anonim?", "Allowed Networks": "Jaringan Terizinkan", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Hak cipta © 2014-2019 Kontributor berikut ini:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Membuat pola pengabaian, menimpa sebuah file yang sudah ada di {{path}}.", "Currently Shared With Devices": "Sekarang Terbagi Dengan Perangkat", + "Custom Range": "Custom Range", "Danger!": "Bahaya!", "Debugging Facilities": "Fasilitas Debug", "Default Configuration": "Konfigurasi Bawaan", @@ -183,6 +185,9 @@ "Keep Versions": "Jumlah Versi yang Disimpan", "LDAP": "LDAP", "Largest First": "Terbesar Dahulu", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Scan Terakhir", "Last seen": "Terakhir dilihat", "Latest Change": "Perubahan Terbaru", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Tidak ada folder untuk dibagi dengan perangkat ini.", "They are retried automatically and will be synced when the error is resolved.": "Mereka diulang secara otomatis dan akan disinkron ketika galat telah terselesaikan.", "This Device": "Perangkat Ini", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Ini dapat dengan mudah memberi peretas akses untuk melihat dan mengubah file apapun dalam komputer anda.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Perangkat ini tidak dapat menemukan perangkat lain secara otomatis atau mengumumkan alamat sendiri untuk dapat ditemukan oleh perangkat lain. Hanya perangkat dengan konfigurasi alamat statik dapat menyambung.", "This is a major version upgrade.": "Ini adalah peningkatan versi besar.", "This setting controls the free space required on the home (i.e., index database) disk.": "Pengaturan ini mengontrol jumlah penyimpanan kosong yang dibutuhkan dalam penyimpanan utama (contoh database indeks).", "Time": "Waktu", "Time the item was last modified": "Waktu file terakhir dimodifikasi", + "Today": "Today", "Trash Can File Versioning": "Pemversian Berkas Tempat Sampah", "Type": "Tipe", "UNIX Permissions": "Izin UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "When adding a new device, keep in mind that this device must be added on the other side too.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.", "Yes": "Iya", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Anda juga dapat memilih salah satu perangkat disekitar berikut:", "You can change your choice at any time in the Settings dialog.": "Anda dapat mengubah pilihan anda dalam dialog Pengaturan.", "You can read more about the two release channels at the link below.": "Anda dapat membaca lebih lanjut tentang dua saluran rilis pada tautan di bawah.", diff --git a/gui/default/assets/lang/lang-it.json b/gui/default/assets/lang/lang-it.json index 2d7579c6e..be3bc8bc9 100644 --- a/gui/default/assets/lang/lang-it.json +++ b/gui/default/assets/lang/lang-it.json @@ -19,6 +19,7 @@ "Advanced": "Avanzato", "Advanced Configuration": "Configurazione Avanzata", "All Data": "Tutti i Dati", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Tutte le cartelle condivise con questo dispositivo devono essere protette da una password, in modo tale che tutti i dati inviati siano illeggibili senza la password fornita.", "Allow Anonymous Usage Reporting?": "Abilitare Statistiche Anonime di Utilizzo?", "Allowed Networks": "Reti Consentite.", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 i seguenti Collaboratori:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Creazione di schemi di esclusione, sovrascrivendo un file esistente in {{path}}.", "Currently Shared With Devices": "Attualmente Condiviso Con Dispositivi", + "Custom Range": "Custom Range", "Danger!": "Pericolo!", "Debugging Facilities": "Servizi di Debug", "Default Configuration": "Configurazione predefinita", @@ -183,6 +185,9 @@ "Keep Versions": "Versioni Mantenute", "LDAP": "LDAP", "Largest First": "Prima il più grande", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Ultima Scansione", "Last seen": "Ultima connessione", "Latest Change": "Ultima Modifica", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Non ci sono cartelle da condividere con questo dispositivo.", "They are retried automatically and will be synced when the error is resolved.": "Verranno effettuati tentativi in automatico e verranno sincronizzati quando l'errore sarà risolto.", "This Device": "Questo Dispositivo", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Ciò potrebbe facilmente permettere agli hackers accesso alla lettura e modifica di qualunque file del tuo computer.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Questo dispositivo non può rilevare automaticamente altri dispositivi o annunciare il proprio indirizzo per essere trovato da altri. Possono connettersi solo i dispositivi con indirizzi configurati staticamente.", "This is a major version upgrade.": "Questo è un aggiornamento di versione principale", "This setting controls the free space required on the home (i.e., index database) disk.": "Questa impostazione controlla lo spazio libero richiesto sul disco home (cioè, database di indice).", "Time": "Tempo", "Time the item was last modified": "Ora dell'ultima modifica degli elementi", + "Today": "Today", "Trash Can File Versioning": "Controllo Versione con Cestino", "Type": "Tipo", "UNIX Permissions": "Permessi UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Quando si aggiunge un nuovo dispositivo, tenere presente che il dispositivo deve essere aggiunto anche dall'altra parte.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Quando aggiungi una nuova cartella, ricordati che gli ID vengono utilizzati per collegare le cartelle nei dispositivi. Distinguono maiuscole e minuscole e devono corrispondere esattamente su tutti i dispositivi.", "Yes": "Sì", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "È anche possibile selezionare uno di questi dispositivi nelle vicinanze:", "You can change your choice at any time in the Settings dialog.": "Puoi sempre cambiare la tua scelta nel dialogo Impostazioni.", "You can read more about the two release channels at the link below.": "Puoi ottenere piu informazioni riguarda i due canali di rilascio nel collegamento sottostante.", diff --git a/gui/default/assets/lang/lang-ja.json b/gui/default/assets/lang/lang-ja.json index 52c445011..645b73c5f 100644 --- a/gui/default/assets/lang/lang-ja.json +++ b/gui/default/assets/lang/lang-ja.json @@ -19,6 +19,7 @@ "Advanced": "高度な設定", "Advanced Configuration": "高度な設定", "All Data": "全てのデータ", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "このデバイスと共有するすべてのフォルダーはパスワードによって保護されなければならず、送信されたすべてのデータは指定したパスワードがなければ読み取れません。", "Allow Anonymous Usage Reporting?": "匿名で使用状況をレポートすることを許可しますか?", "Allowed Networks": "許可されているネットワーク", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 the following Contributors:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "無視パターンを作成中。既存のファイルが {{path}} にある場合は上書きされます。", "Currently Shared With Devices": "現在共有中のデバイス", + "Custom Range": "Custom Range", "Danger!": "危険!", "Debugging Facilities": "デバッグ機能", "Default Configuration": "デフォルトの設定", @@ -183,6 +185,9 @@ "Keep Versions": "保持するバージョン数", "LDAP": "LDAP", "Largest First": "大きい順", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "最終スキャン日時", "Last seen": "最終接続日時", "Latest Change": "最終変更内容", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "エラーが解決すると、自動的に再試行され同期されます。", "This Device": "このデバイス", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "この設定のままでは、あなたのコンピューターにある任意のファイルを、他者が簡単に盗み見たり書き換えたりすることができます。", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "メジャーアップグレードです。", "This setting controls the free space required on the home (i.e., index database) disk.": "この設定は、ホームディスク (インデックスデータベースがあるディスク) で必要な空き容量を管理します。", "Time": "日時", "Time the item was last modified": "Time the item was last modified", + "Today": "Today", "Trash Can File Versioning": "ゴミ箱によるバージョン管理", "Type": "タイプ", "UNIX Permissions": "UNIX パーミッション", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "新しいデバイスを追加する際は、相手側デバイスにもこのデバイスを追加してください。", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "新しいフォルダーを追加する際、フォルダーIDはデバイス間でフォルダーの対応づけに使われることに注意してください。フォルダーIDは大文字と小文字が区別され、共有するすべてのデバイスの間で完全に一致しなくてはなりません。", "Yes": "はい", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "近くに検出された以下のデバイスの一つを選択できます。", "You can change your choice at any time in the Settings dialog.": "この設定はいつでも変更できます。", "You can read more about the two release channels at the link below.": "2種類のリリースチャネルについての詳細は、以下のリンク先を参照してください。", diff --git a/gui/default/assets/lang/lang-ko-KR.json b/gui/default/assets/lang/lang-ko-KR.json index 7e1009296..8294e3d33 100644 --- a/gui/default/assets/lang/lang-ko-KR.json +++ b/gui/default/assets/lang/lang-ko-KR.json @@ -19,11 +19,12 @@ "Advanced": "고급", "Advanced Configuration": "고급 설정", "All Data": "전체 데이터", + "All Time": "전체 기간", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "송신하는 데이터 모두를 비밀번호 없이 읽을 수 없도록 이 기기와 공유한 모든 폴더를 비밀번호로 보호해야 합니다.", "Allow Anonymous Usage Reporting?": "익명 사용 보고를 허용하시겠습니까?", "Allowed Networks": "허가된 망", "Alphabetic": "가나다순", - "Altered by ignoring deletes.": "삭제 항목 무시로 변경", + "Altered by ignoring deletes.": "삭제 항목 무시로 변경됨", "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "외부 명령이 파일 버전을 관리합니다. 공유 폴더에서 파일을 삭제해야 합니다. 응용 프로그램의 경로에 공백이 있으면 따옴표로 묶어야 합니다.", "Anonymous Usage Reporting": "익명 사용 보고", "Anonymous usage report format has changed. Would you like to move to the new format?": "익명 사용 보고의 형식이 변경되었습니다. 새 형식으로 설정을 변경하시겠습니까?", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 하위 기여자들:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "무시 양식 생성 중; {{path}} 경로의 기존 파일을 덮어씁니다.", "Currently Shared With Devices": "현재 공유된 기기", + "Custom Range": "사용자 설정 기간", "Danger!": "위험!", "Debugging Facilities": "디버그 기능", "Default Configuration": "기본 설정", @@ -183,6 +185,9 @@ "Keep Versions": "버전 수", "LDAP": "LDAP", "Largest First": "큰 파일 순", + "Last 30 Days": "지난 30일", + "Last 7 Days": "지난 7일", + "Last Month": "지난 달", "Last Scan": "최근 탐색", "Last seen": "최근 접속", "Latest Change": "최신 변경 항목", @@ -227,7 +232,7 @@ "Options": "옵션", "Out of Sync": "동기화 실패", "Out of Sync Items": "동기화 실패 항목", - "Outgoing Rate Limit (KiB/s)": "송신 속도 제한 (KiB/s)", + "Outgoing Rate Limit (KiB/s)": "송신 속도 제한(KiB/s)", "Override": "덮어쓰기", "Override Changes": "변경 항목 덮어쓰기", "Path": "경로", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "이 기기와 공유할 폴더가 없습니다.", "They are retried automatically and will be synced when the error is resolved.": "자동 재시도 중이며 문제가 해결되는 대로 동기화됩니다.", "This Device": "현재 기기", + "This Month": "이번 달", "This can easily give hackers access to read and change any files on your computer.": "이로 인해서는 해커가 손쉽게 컴퓨터의 모든 파일을 읽고 편집할 수 있게 됩니다.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "이 기기는 다른 기기를 자동으로 탐지하거나 다른 기기로부터 발견되도록 자신의 주소를 통보할 수 없습니다. 고정 주소로 설정한 기기만이 현재 기기에 접속할 수 있습니다.", "This is a major version upgrade.": "주요 버전 업데이트입니다.", "This setting controls the free space required on the home (i.e., index database) disk.": "이 설정은 홈(즉, 인덕스 데이터베이스) 저장 장치의 여유 공간을 관리합니다.", "Time": "시간", "Time the item was last modified": "항목 최근 변경 시간", + "Today": "오늘", "Trash Can File Versioning": "휴지통을 통한 파일 버전 관리", "Type": "유형", "UNIX Permissions": "UNIX 권한", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "새 기기를 추가할 때는 추가한 기기에서도 현재 기기를 추가해야 합니다.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "새 폴더를 추가할 때 폴더 ID 번호는 기기 간에 폴더를 묶어줍니다. 대소문자가 구분되며 모든 기기에서 동일해야 합니다.", "Yes": "예", + "Yesterday": "어제", "You can also select one of these nearby devices:": "주변의 기기 중 하나를 선택할 수도 있습니다.", "You can change your choice at any time in the Settings dialog.": "설정창에서 기존의 설정을 언제나 변경할 수 있습니다.", "You can read more about the two release channels at the link below.": "두 가지의 출시 경로에 대해서는 아래의 링크를 참조하여 자세히 읽어보실 수 있습니다.", diff --git a/gui/default/assets/lang/lang-lt.json b/gui/default/assets/lang/lang-lt.json index 170bae98a..87953c2d3 100644 --- a/gui/default/assets/lang/lang-lt.json +++ b/gui/default/assets/lang/lang-lt.json @@ -19,6 +19,7 @@ "Advanced": "Išplėstiniai", "Advanced Configuration": "Išplėstinė konfigūracija", "All Data": "Visiems duomenims", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Siųsti anoniminę naudojimo ataskaitą?", "Allowed Networks": "Leidžiami tinklai", @@ -28,12 +29,12 @@ "Anonymous Usage Reporting": "Anoniminė naudojimo ataskaita", "Anonymous usage report format has changed. Would you like to move to the new format?": "Anoniminės naudojimo ataskaitos formatas pasikeitė. Ar norėtumėte pereiti prie naujojo formato?", "Are you sure you want to continue?": "Ar tikrai norite tęsti?", - "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", + "Are you sure you want to override all remote changes?": "Ar tikrai norite nustelbti visus nuotolinius pakeitimus?", "Are you sure you want to permanently delete all these files?": "Ar tikrai norite visam laikui ištrinti visus šiuos failus?", "Are you sure you want to remove device {%name%}?": "Ar tikrai norite pašalinti įrenginį {{name}}?", "Are you sure you want to remove folder {%label%}?": "Ar tikrai norite pašalinti aplanką {{label}}?", "Are you sure you want to restore {%count%} files?": "Ar tikrai norite atkurti {{count}} failų(-us)?", - "Are you sure you want to revert all local changes?": "Are you sure you want to revert all local changes?", + "Are you sure you want to revert all local changes?": "Ar tikrai norite sugrąžinti visus vietinius pakeitimus?", "Are you sure you want to upgrade?": "Ar tikrai norite naujinti?", "Auto Accept": "Automatiškai priimti", "Automatic Crash Reporting": "Automatinės ataskaitos apie strigtis", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Autorių teisės © 2014-2019 šių bendraautorių:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Kuriami nepaisomi šablonai, perrašomas esamas failas, esantis {{path}}.", "Currently Shared With Devices": "Šiuo metu bendrinama su įrenginiais", + "Custom Range": "Custom Range", "Danger!": "Pavojus!", "Debugging Facilities": "Derinimo priemonės", "Default Configuration": "Numatytoji konfigūracija", @@ -183,6 +185,9 @@ "Keep Versions": "Saugojamų versijų kiekis", "LDAP": "LDAP", "Largest First": "Didžiausi pirmiau", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Paskutinis nuskaitymas", "Last seen": "Paskutinį kartą matytas", "Latest Change": "Paskutinis pakeitimas", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "Failus bus automatiškai bandoma parsiųsti dar kartą kai išspręsite klaidas.", "This Device": "Šis įrenginys", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Tai gali suteikti programišiams lengvą prieigą skaityti ir keisti bet kokius failus jūsų kompiuteryje.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Tai yra stambus atnaujinimas.", "This setting controls the free space required on the home (i.e., index database) disk.": "Šis nustatymas valdo laisvą vietą, kuri yra reikalinga namų (duomenų bazės) diske.", "Time": "Laikas", "Time the item was last modified": "Laikas, kai elementas buvo paskutinį kartą modifikuotas", + "Today": "Šiandien", "Trash Can File Versioning": "Šiukšliadėžės versijų valdymas", "Type": "Tipas", "UNIX Permissions": "UNIX leidimai", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Pridėdami įrenginį, turėkite omeny, kad šis įrenginys taip pat turi būti pridėtas kitoje pusėje.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Kai įvedate naują aplanką neužmirškite, kad jis bus naudojamas visuose įrenginiuose. Svarbu visur įvesti visiškai tokį pat aplanko vardą neužmirštant apie didžiąsias ir mažąsias raides.", "Yes": "Taip", + "Yesterday": "Vakar", "You can also select one of these nearby devices:": "Jūs taip pat galite pasirinkti vieną iš šių šalia esančių įrenginių:", "You can change your choice at any time in the Settings dialog.": "Jūs bet kuriuo metu galite pakeisti savo pasirinkimą nustatymų dialoge.", "You can read more about the two release channels at the link below.": "Jūs galite perskaityti daugiau apie šiuos du laidos kanalus, pasinaudodami žemiau esančia nuoroda.", diff --git a/gui/default/assets/lang/lang-nb.json b/gui/default/assets/lang/lang-nb.json index f5a1715d4..0fb138bb1 100644 --- a/gui/default/assets/lang/lang-nb.json +++ b/gui/default/assets/lang/lang-nb.json @@ -19,6 +19,7 @@ "Advanced": "Avansert", "Advanced Configuration": "Avanserte innstillinger", "All Data": "Alle data", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Tillat anonym innsamling av brukerdata?", "Allowed Networks": "Tillatte nettverk", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Opphavrett © 2014-2019 for følgende bidragsytere:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Oppretter ignoreringsmønster, overskriver eksisterende fil i {{path}}.", "Currently Shared With Devices": "Currently Shared With Devices", + "Custom Range": "Custom Range", "Danger!": "Fare!", "Debugging Facilities": "Feilrettingsverktøy", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Behold versjoner", "LDAP": "LDAP", "Largest First": "Største fil først", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Siste gjennomsøking", "Last seen": "Sist sett", "Latest Change": "Sist endret", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "Disse hentes automatisk og vil synkroniseres når feilen er blitt utbedret.", "This Device": "Denne enheten", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Dette kan lett gi hackere tilgang til å lese og endre alle filer på datamaskinen din.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Dette er en storoppgradering", "This setting controls the free space required on the home (i.e., index database) disk.": "Denne innstillingen kontrollerer ledig diskplass krevd på hjemme- (f.eks. indekseringsdatabase-) disken.", "Time": "Klokkeslett", "Time the item was last modified": "Tidspunktet elementet sist ble endret", + "Today": "Today", "Trash Can File Versioning": "Papirkurv versjonskontroll", "Type": "Type", "UNIX Permissions": "UNIX Permissions", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Når du legger til en ny enhet, husk at enheten må legges til på andre siden også.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Når en ny mappe blir lagt til, husk at Mappe-ID blir brukt til å binde sammen mapper mellom enheter. Det er forskjell på store og små bokstaver, så IDene må være identiske på alle enhetene.", "Yes": "Ja", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Du kan også velge en av disse enhetene i nærheten:", "You can change your choice at any time in the Settings dialog.": "Du kan endre ditt valg når som helst i innstillingene.", "You can read more about the two release channels at the link below.": "Du kan lese mer om de to nye utgivelseskanalene i lenken nedenfor.", diff --git a/gui/default/assets/lang/lang-nl.json b/gui/default/assets/lang/lang-nl.json index cbdaec948..9efc1abce 100644 --- a/gui/default/assets/lang/lang-nl.json +++ b/gui/default/assets/lang/lang-nl.json @@ -19,6 +19,7 @@ "Advanced": "Geavanceerd", "Advanced Configuration": "Geavanceerde configuratie", "All Data": "Alle gegevens", + "All Time": "Altijd", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Alle mappen die gedeeld worden met dit apparaat moeten beschermd worden met een wachtwoord zodat alle verzonden gegevens onleesbaar zijn zonder het opgegeven wachtwoord.", "Allow Anonymous Usage Reporting?": "Versturen van anonieme gebruikersstatistieken toestaan?", "Allowed Networks": "Toegestane netwerken", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Auteursrecht © 2014-2019 voor de volgende bijdragers:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Negeerpatronen worden aangemaakt, bestaand bestand wordt overschreven op {{path}}.", "Currently Shared With Devices": "Momenteel gedeeld met apparaten", + "Custom Range": "Aangepast bereik", "Danger!": "Let op!", "Debugging Facilities": "Debugmogelijkheden", "Default Configuration": "Standaardconfiguratie", @@ -183,6 +185,9 @@ "Keep Versions": "Versies behouden", "LDAP": "LDAP", "Largest First": "Grootste eerst", + "Last 30 Days": "Laatste 30 dagen", + "Last 7 Days": "Laatste 7 dagen", + "Last Month": "Laatste maand", "Last Scan": "Laatste scan", "Last seen": "Laatst gezien op", "Latest Change": "Laatste wijziging", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Er zijn geen mappen om te delen met dit apparaat.", "They are retried automatically and will be synced when the error is resolved.": "Ze worden automatisch opnieuw geprobeerd en zullen gesynchroniseerd worden wanneer de fout opgelost is.", "This Device": "Dit apparaat", + "This Month": "Deze maand", "This can easily give hackers access to read and change any files on your computer.": "Dit kan hackers eenvoudig toegang geven om bestanden op uw computer te lezen en te wijzigen.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Dit apparaat kan andere apparaten niet automatisch detecteren of zijn eigen adres aankondigen om door anderen gevonden te worden. Alleen apparaten met statisch geconfigureerde adressen kunnen verbinding maken.", "This is a major version upgrade.": "Dit is een grote versie-upgrade.", "This setting controls the free space required on the home (i.e., index database) disk.": "Deze instelling bepaalt de benodigde vrije ruimte op de home-schijf (d.w.z. de indexdatabase).", "Time": "Tijd", "Time the item was last modified": "Tijdstip waarop het item laatst gewijzigd is", + "Today": "Vandaag", "Trash Can File Versioning": "Prullenbak-versiebeheer", "Type": "Type", "UNIX Permissions": "UNIX-machtigingen", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Houd er bij het toevoegen van een nieuw apparaat rekening mee dat dit apparaat ook aan de andere kant moet toegevoegd worden.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Houd er bij het toevoegen van een nieuwe map rekening mee dat de map-ID gebruikt wordt om mappen aan elkaar te koppelen tussen apparaten. Ze zijn hoofdlettergevoelig en moeten exact overeenkomen op alle apparaten.", "Yes": "Ja", + "Yesterday": "Gisteren", "You can also select one of these nearby devices:": "U kunt ook een van deze apparaten in de buurt selecteren:", "You can change your choice at any time in the Settings dialog.": "U kunt uw keuze op elk moment aanpassen in het instellingen-venster.", "You can read more about the two release channels at the link below.": "U kunt meer te weten komen over de twee release-kanalen via onderstaande link.", diff --git a/gui/default/assets/lang/lang-pl.json b/gui/default/assets/lang/lang-pl.json index 9fa64a141..02287e72f 100644 --- a/gui/default/assets/lang/lang-pl.json +++ b/gui/default/assets/lang/lang-pl.json @@ -19,6 +19,7 @@ "Advanced": "Zaawansowane", "Advanced Configuration": "Zaawansowane ustawienia", "All Data": "Wszystkie dane", + "All Time": "Cały okres", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Wszystkie foldery współdzielone z tym urządzeniem muszą być zabezpieczone hasłem, tak aby całość przesyłanych danych była nie do odczytu bez podania danego hasła.", "Allow Anonymous Usage Reporting?": "Czy chcesz zezwolić na anonimowe statystyki użycia?", "Allowed Networks": "Dozwolone sieci", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Wszelkie prawa zastrzeżone © 2014-2019 dla następujących współtwórców:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Tworzenie wzorców ignorowania; nadpisuje istniejący plik w ścieżce {{path}}.", "Currently Shared With Devices": "Obecnie współdzielony z urządzeniami", + "Custom Range": "Niestandardowy okres", "Danger!": "Niebezpieczeństwo!", "Debugging Facilities": "Narzędzia do debugowania", "Default Configuration": "Domyślne ustawienia", @@ -183,6 +185,9 @@ "Keep Versions": "Zachowuj wersje", "LDAP": "LDAP", "Largest First": "Od największych", + "Last 30 Days": "Ostatnie 30 dni", + "Last 7 Days": "Ostatnie 7 dni", + "Last Month": "Ubiegły miesiąc", "Last Scan": "Ostatnie skanowanie", "Last seen": "Ostatnio widziany", "Latest Change": "Ostatnia zmiana", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Brak folderów, które można współdzielić z tym urządzeniem.", "They are retried automatically and will be synced when the error is resolved.": "Ponowne próby zachodzą automatycznie, a synchronizacja nastąpi po usunięciu błędu.", "This Device": "To urządzenie", + "This Month": "Ten miesiąc", "This can easily give hackers access to read and change any files on your computer.": "Może to umożliwić hakerom dostęp do odczytu i zmian dowolnych plików na tym komputerze.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "To urządzenie nie jest w stanie automatycznie odnajdować innych urządzeń oraz ogłaszać swojego adresu, aby mogło ono zostać znalezione przez nie. Tylko urządzenia z adresem ustawionym statycznie są w stanie się połączyć.", "This is a major version upgrade.": "To jest duża aktualizacja.", "This setting controls the free space required on the home (i.e., index database) disk.": "To ustawienie kontroluje ilość wolnej przestrzeni na dysku domowym (np. do indeksowania bazy danych).", "Time": "Czas", "Time the item was last modified": "Czas ostatniej modyfikacji elementu", + "Today": "Dzisiaj", "Trash Can File Versioning": "Wersjonowanie plików w koszu", "Type": "Rodzaj", "UNIX Permissions": "UNIX-owe uprawnienia", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Dodając nowe urządzenie pamiętaj, że musi ono zostać dodane także po drugiej stronie.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Dodając nowy folder pamiętaj, że numer ID jest używany do parowania folderów pomiędzy urządzeniami. Wielkość liter ma znaczenie i musi on być identyczny na wszystkich urządzeniach.", "Yes": "Tak", + "Yesterday": "Wczoraj", "You can also select one of these nearby devices:": "Możesz również wybrać jedno z pobliskich urządzeń:", "You can change your choice at any time in the Settings dialog.": "Możesz zmienić swój wybór w dowolnej chwili w oknie Ustawień.", "You can read more about the two release channels at the link below.": "Możesz przeczytać więcej na temat obu kanałów wydawniczych pod poniższym odnośnikiem.", diff --git a/gui/default/assets/lang/lang-pt-BR.json b/gui/default/assets/lang/lang-pt-BR.json index 4168f6a57..b1a515093 100644 --- a/gui/default/assets/lang/lang-pt-BR.json +++ b/gui/default/assets/lang/lang-pt-BR.json @@ -19,6 +19,7 @@ "Advanced": "Avançado", "Advanced Configuration": "Configuração avançada", "All Data": "Todos os dados", + "All Time": "Todo o tempo", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Todas as pastas compartilhadas com este dispositivo devem ser protegidas por uma senha, de forma que todos os dados enviados sejam ilegíveis sem a senha fornecida.", "Allow Anonymous Usage Reporting?": "Permitir envio de relatórios anônimos de uso?", "Allowed Networks": "Redes permitidas", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 dos Contribuintes:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Criando filtros, sobrescrevendo o arquivo {{path}}.", "Currently Shared With Devices": "Compartilhado com outros dispositivos", + "Custom Range": "Intervalo de tempo", "Danger!": "Perigo!", "Debugging Facilities": "Facilidades de depuração", "Default Configuration": "Configuração Padrão", @@ -183,6 +185,9 @@ "Keep Versions": "Manter versões", "LDAP": "LDAP", "Largest First": "Maior primeiro", + "Last 30 Days": "Últimos 30 dias", + "Last 7 Days": "Últimos 7 dias", + "Last Month": "Último mês", "Last Scan": "Última verificação", "Last seen": "Visto por último em", "Latest Change": "Última mudança", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Não há pastas para compartilhar com este dispositivo.", "They are retried automatically and will be synced when the error is resolved.": "Serão tentadas automaticamente e sincronizadas após o erro ter sido resolvido.", "This Device": "Este dispositivo", + "This Month": "Este mês", "This can easily give hackers access to read and change any files on your computer.": "Isto pode dar a hackers poder de leitura e escrita de qualquer arquivo em seu dispositivo.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Este dispositivo não pode descobrir automaticamente outros dispositivos ou anunciar seu próprio endereço para ser encontrado por outros. Apenas dispositivos com endereços configurados estaticamente podem se conectar.", "This is a major version upgrade.": "Esta é uma atualização para uma versão \"major\".", "This setting controls the free space required on the home (i.e., index database) disk.": "Este ajuste controla o espaço livre necessário no disco que contém o banco de dados do Syncthing.", "Time": "Hora", "Time the item was last modified": "Momento em que o item foi modificado pela última vez", + "Today": "Hoje", "Trash Can File Versioning": "Lixeira", "Type": "Tipo", "UNIX Permissions": "Permissões UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Quando estiver adicionando um dispositivo, lembre-se de que este dispositivo deve ser adicionado do outro lado também.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Quando adicionar uma nova pasta, lembre-se que o ID da pasta é utilizado para ligar pastas entre dispositivos. Ele é sensível às diferenças entre maiúsculas e minúsculas e deve ser o mesmo em todos os dispositivos.", "Yes": "Sim", + "Yesterday": "Ontem", "You can also select one of these nearby devices:": "Vocẽ também pode selecionar um destes dispositivos próximos:", "You can change your choice at any time in the Settings dialog.": "Você pode mudar de ideia a qualquer momento na tela de configurações.", "You can read more about the two release channels at the link below.": "Você pode se informar melhor sobre os dois canais de lançamento no link abaixo.", diff --git a/gui/default/assets/lang/lang-pt-PT.json b/gui/default/assets/lang/lang-pt-PT.json index c62547bb5..945592766 100644 --- a/gui/default/assets/lang/lang-pt-PT.json +++ b/gui/default/assets/lang/lang-pt-PT.json @@ -19,6 +19,7 @@ "Advanced": "Avançadas", "Advanced Configuration": "Configuração avançada", "All Data": "Todos os dados", + "All Time": "O tempo todo", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Todas as pastas partilhadas com este dispositivo têm de ser protegidas com uma senha, por forma a que todos os dados enviados sejam ilegíveis sem a senha dada.", "Allow Anonymous Usage Reporting?": "Permitir envio de relatórios anónimos de utilização?", "Allowed Networks": "Redes permitidas", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 dos seguintes contribuidores:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Criando padrões de exclusão, sobrescrevendo um ficheiro existente em {{path}}.", "Currently Shared With Devices": "Dispositivos com os quais está partilhada", + "Custom Range": "Intervalo personalizado", "Danger!": "Perigo!", "Debugging Facilities": "Recursos de depuração", "Default Configuration": "Configuração predefinida", @@ -183,6 +185,9 @@ "Keep Versions": "Manter versões", "LDAP": "LDAP", "Largest First": "Primeiro os maiores", + "Last 30 Days": "Últimos 30 dias", + "Last 7 Days": "Últimos 7 dias", + "Last Month": "Último mês", "Last Scan": "Última verificação", "Last seen": "Última vez que foi verificado", "Latest Change": "Última alteração", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Não existem pastas para partilhar com este dispositivo.", "They are retried automatically and will be synced when the error is resolved.": "Será tentado automaticamente e os itens serão sincronizados assim que o erro seja resolvido.", "This Device": "Este dispositivo", + "This Month": "Este mês", "This can easily give hackers access to read and change any files on your computer.": "Isso facilmente dará acesso aos piratas informáticos para lerem e modificarem quaisquer ficheiros no seu computador.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Este dispositivo não pode descobrir automaticamente outros dispositivos ou anunciar o seu próprio endereço para que seja encontrado pelos outros. Apenas dispositivos com endereços configurados estaticamente podem estabelecer ligação.", "This is a major version upgrade.": "Esta é uma actualização para uma versão importante.", "This setting controls the free space required on the home (i.e., index database) disk.": "Este parâmetro controla o espaço livre necessário no disco base (ou seja, o disco da base de dados do índice).", "Time": "Quando", "Time the item was last modified": "Quando o item foi modificado pela última vez", + "Today": "Hoje", "Trash Can File Versioning": "Reciclagem", "Type": "Tipo", "UNIX Permissions": "Permissões UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Quando adicionar um novo dispositivo, lembre-se que este dispositivo tem que ser adicionado do outro lado também.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Quando adicionar uma nova pasta, lembre-se que o ID da pasta é utilizado para ligar as pastas entre dispositivos. É sensível às diferenças entre maiúsculas e minúsculas e tem que ter uma correspondência perfeita entre todos os dispositivos.", "Yes": "Sim", + "Yesterday": "Ontem", "You can also select one of these nearby devices:": "Também pode seleccionar um destes dispositivos que estão próximos:", "You can change your choice at any time in the Settings dialog.": "Pode modificar a sua escolha em qualquer altura nas configurações.", "You can read more about the two release channels at the link below.": "Pode ler mais sobre os dois canais de lançamento na ligação abaixo.", diff --git a/gui/default/assets/lang/lang-ro-RO.json b/gui/default/assets/lang/lang-ro-RO.json index 62cd6bb23..59a3b1957 100644 --- a/gui/default/assets/lang/lang-ro-RO.json +++ b/gui/default/assets/lang/lang-ro-RO.json @@ -19,6 +19,7 @@ "Advanced": "Avansat", "Advanced Configuration": "Configurari avansate", "All Data": "Toate Datele", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Toate folderele partajate cu acest dispozitiv trebuie protejate printr-o parolă, astfel încât toate datele trimise să nu poată fi citite fără parola dată.", "Allow Anonymous Usage Reporting?": "Permiteţi raportarea anonimă de folosire a aplicaţiei?", "Allowed Networks": "Rețele permise", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 the following Contributors:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Creating ignore patterns, overwriting an existing file at {{path}}.", "Currently Shared With Devices": "Currently Shared With Devices", + "Custom Range": "Custom Range", "Danger!": "Danger!", "Debugging Facilities": "Debugging Facilities", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Păstrează Versiuni", "LDAP": "LDAP", "Largest First": "Largest First", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Last Scan", "Last seen": "Ultima vizionare", "Latest Change": "Latest Change", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "They are retried automatically and will be synced when the error is resolved.", "This Device": "This Device", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "This can easily give hackers access to read and change any files on your computer.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "This is a major version upgrade.", "This setting controls the free space required on the home (i.e., index database) disk.": "This setting controls the free space required on the home (i.e., index database) disk.", "Time": "Time", "Time the item was last modified": "Time the item was last modified", + "Today": "Today", "Trash Can File Versioning": "Trash Can File Versioning", "Type": "Type", "UNIX Permissions": "UNIX Permissions", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Când adaugi un dispozitiv nou, trebuie să adaugi şi dispozitivul curent în dispozitivul nou.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Cînd adăugaţi un fişier nou, nu uitaţi că ID-ul fişierului va rămîne acelaşi pe toate dispozitivele. Iar literele mari sînt diferite de literele mici. ", "Yes": "Da", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "You can also select one of these nearby devices:", "You can change your choice at any time in the Settings dialog.": "You can change your choice at any time in the Settings dialog.", "You can read more about the two release channels at the link below.": "You can read more about the two release channels at the link below.", diff --git a/gui/default/assets/lang/lang-ru.json b/gui/default/assets/lang/lang-ru.json index 4723e91d6..2cb80c38b 100644 --- a/gui/default/assets/lang/lang-ru.json +++ b/gui/default/assets/lang/lang-ru.json @@ -19,6 +19,7 @@ "Advanced": "Дополнительно", "Advanced Configuration": "Дополнительные настройки", "All Data": "Все данные", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Все папки, совместно используемые с этим устройством, должны быть защищены паролем, чтобы все отправленные данные были нечитаемы.", "Allow Anonymous Usage Reporting?": "Разрешить анонимный отчет об использовании?", "Allowed Networks": "Разрешённые сети", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Авторские права © 2014-2019 принадлежат:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Создание шаблонов игнорирования, существующий файл {{path}} будет перезаписан.", "Currently Shared With Devices": "В настоящее время используется совместно с устройствами", + "Custom Range": "Custom Range", "Danger!": "Опасно!", "Debugging Facilities": "Средства отладки", "Default Configuration": "Настройки по умолчанию", @@ -183,6 +185,9 @@ "Keep Versions": "Количество хранимых версий", "LDAP": "LDAP", "Largest First": "Сначала большие", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Последнее сканирование", "Last seen": "Был доступен", "Latest Change": "Последнее изменение", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Нет папок, которыми можно поделиться с этим устройством.", "They are retried automatically and will be synced when the error is resolved.": "Будут синхронизированы автоматически когда ошибка будет исправлена.", "This Device": "Это устройство", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Это может дать доступ хакерам для чтения и изменения любых файлов на вашем компьютере.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Это устройство не может автоматически обнаруживать другие устройства или анонсировать свой адрес для обнаружения извне. Только устройства со статически заданными адресами могут подключиться.", "This is a major version upgrade.": "Это обновление основной версии продукта.", "This setting controls the free space required on the home (i.e., index database) disk.": "Эта настройка управляет свободным местом, необходимым на домашнем диске (например, для базы индексов).", "Time": "Время", "Time the item was last modified": "Время последней модификации объекта", + "Today": "Today", "Trash Can File Versioning": "Использовать версионность для файлов в Корзине", "Type": "Тип", "UNIX Permissions": "Разрешения UNIX", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Когда добавляете устройство, помните о том, что это же устройство должно быть добавлено и другой стороной.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Когда добавляете новую папку, помните, что ID папок используются для того, чтобы связывать папки между всеми устройствами. Они чувствительны к регистру и должны совпадать на всех используемых устройствах.", "Yes": "Да", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Вы можете выбрать из этих устройств рядом:", "You can change your choice at any time in the Settings dialog.": "Выбор можно изменить в любой момент в диалоге настроек.", "You can read more about the two release channels at the link below.": "О двух каналах выпусков можно почитать подробнее по нижеприведённой ссылке.", diff --git a/gui/default/assets/lang/lang-sk.json b/gui/default/assets/lang/lang-sk.json index f61916220..100830aa5 100644 --- a/gui/default/assets/lang/lang-sk.json +++ b/gui/default/assets/lang/lang-sk.json @@ -19,6 +19,7 @@ "Advanced": "Pokročilé", "Advanced Configuration": "Pokročilá konfigurácia", "All Data": "Všetky dáta", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Povoliť anoynmné hlásenia o použivaní?", "Allowed Networks": "Povolené siete", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 nasledujúci prispievatelia:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Vytváranie vzorov ignorovania, prepísanie existujúceho súboru v {{path}}.", "Currently Shared With Devices": "Currently Shared With Devices", + "Custom Range": "Custom Range", "Danger!": "Pozor!", "Debugging Facilities": "Debugging Facilities", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Ponechanie verzií", "LDAP": "LDAP", "Largest First": "Najprv najväčšie", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Posledný sken", "Last seen": "Naposledy videný", "Latest Change": "Posledná zmena", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "They are retried automatically and will be synced when the error is resolved.", "This Device": "Toto zariadenie", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "This can easily give hackers access to read and change any files on your computer.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Toto je hlavná aktualizácia.", "This setting controls the free space required on the home (i.e., index database) disk.": "Toto nastavenie kontroluje voľné miesto požadované na domovskom disku (napr. indexová databáza).", "Time": "Čas", "Time the item was last modified": "Čas poslednej zmeny položky", + "Today": "Today", "Trash Can File Versioning": "Verzie súborov v koši", "Type": "Typ", "UNIX Permissions": "UNIX Permissions", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "When adding a new device, keep in mind that this device must be added on the other side too.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.", "Yes": "Áno", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Môžete tiež vybrať jedno z týchto blízkych zariadení:", "You can change your choice at any time in the Settings dialog.": "Voľbu môžete kedykoľvek zmeniť v dialógu Nastavenia.", "You can read more about the two release channels at the link below.": "O dvoch vydávacích kanáloch si môžete viacej prečítať v odkaze nižšie.", diff --git a/gui/default/assets/lang/lang-sl.json b/gui/default/assets/lang/lang-sl.json index 9b5ee6fb4..7cae87006 100644 --- a/gui/default/assets/lang/lang-sl.json +++ b/gui/default/assets/lang/lang-sl.json @@ -11,7 +11,7 @@ "Add Folder": "Dodaj mapo", "Add Remote Device": "Dodaj oddaljeno napravo", "Add devices from the introducer to our device list, for mutually shared folders.": "Dodajte naprave od uvajalca na naš seznam naprav, za vzajemno deljenje map.", - "Add ignore patterns": "Add ignore patterns", + "Add ignore patterns": "Dodaj vzorce za ignoriranje", "Add new folder?": "Dodaj novo mapo", "Additionally the full rescan interval will be increased (times 60, i.e. new default of 1h). You can also configure it manually for every folder later after choosing No.": "Poleg tega bo celoten interval ponovnega skeniranja se povečal (60 krat, torej nova privzeta vrednost 1 ure). Ti lahko tudi nastaviš si to ročno za vsako mapo pozneje, če ste prej izbrali Ne.", "Address": "Naslov", @@ -19,6 +19,7 @@ "Advanced": "Napredno", "Advanced Configuration": "Napredna konfiguracija", "All Data": "Vsi podatki", + "All Time": "Celi čas", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Vse deljene mape z to napravo morajo biti zaščitena z geslom, tako, da so vsi poslani podatki neberljivi, brez podanega gesla. ", "Allow Anonymous Usage Reporting?": "Ali naj se dovoli brezimno poročanje o uporabi?", "Allowed Networks": "Dovoljena omrežja", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Avtorske pravice © 2014-2019 pripadajo naslednjim sodelavcem:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Ustvarjanje prezrtih vzorcev, prepisovanje obstoječe datoteke na {{path}}.", "Currently Shared With Devices": "Trenutno deljeno z napravami", + "Custom Range": "Obseg po meri", "Danger!": "Nevarno!", "Debugging Facilities": "Možnosti za odpravljanje napak", "Default Configuration": "Privzeta konfiguracija", @@ -171,7 +173,7 @@ "Ignore": "Prezri", "Ignore Patterns": "Vzorec preziranja", "Ignore Permissions": "Prezri dovoljenja", - "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.": "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.", + "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.": "Vzorci za ignoriranje se lahko edino dodajo po tem, ko se ustvari mapi. Če je odkljukano, se predstavi vhodno polje za vnos njega.", "Ignored Devices": "Prezrte naprave", "Ignored Folders": "Prezrte mape", "Ignored at": "Prezrt pri", @@ -183,6 +185,9 @@ "Keep Versions": "Ohrani različice", "LDAP": "LDAP", "Largest First": "najprej največja", + "Last 30 Days": "Zadnjih 30 dni", + "Last 7 Days": "Zadnjih 7 dni", + "Last Month": "Zadnji mesec", "Last Scan": "Zadnje skeniranje", "Last seen": "Zadnjič videno", "Latest Change": "Najnovejša sprememba", @@ -374,16 +379,18 @@ "The rate limit must be a non-negative number (0: no limit)": "Omejitev stopnje odzivnosti mora biti nenegativno število (0: brez omejitve)", "The rescan interval must be a non-negative number of seconds.": "Interval skeniranja mora biti pozitivna številka.", "There are no devices to share this folder with.": "Ni naprav za skupno rabo te mape.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "Ni različic od datotek za obnoviti.", "There are no folders to share with this device.": "Ni map za skupno rabo s to napravo.", "They are retried automatically and will be synced when the error is resolved.": "Samodejno se poskuša znova in bo sinhronizirano, ko je napaka odpravljena.", "This Device": "Ta naprava", + "This Month": "Ta mesec", "This can easily give hackers access to read and change any files on your computer.": "To lahko hekerjem preprosto omogoči dostop do branja in spreminjanja vseh datotek v vašem računalniku.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Ta naprava ne more samodejno odkriti drugih naprav ali objaviti svojega naslova, da ga najdejo drugi. Povezujejo se lahko samo naprave s statično konfiguriranimi naslovi.", "This is a major version upgrade.": "To je nadgradnja glavne različice", "This setting controls the free space required on the home (i.e., index database) disk.": "Ta nastavitev nadzoruje prosti prostor potreben na domačem (naprimer, indeksirana podatkovna baza) pogonu.", "Time": "Čas", "Time the item was last modified": "Čas, ko je bil element nazadnje spremenjen", + "Today": "Danes", "Trash Can File Versioning": "Beleženje različic datotek s Smetnjakom", "Type": "Vrsta", "UNIX Permissions": "UNIX dovoljenja", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Ob dodajanju nove naprave imejte v mislih, da ta naprava mora biti dodana tudi na drugi strani.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Ko dodajate novo mapo, ne pozabite, da se ID mape uporablja za povezovanje map med napravami. Razlikujejo se na velike in male črke in se morajo natančno ujemati med vsemi napravami.", "Yes": "Da", + "Yesterday": "Včeraj", "You can also select one of these nearby devices:": "Izberete lahko tudi eno od teh naprav v bližini:", "You can change your choice at any time in the Settings dialog.": "Svojo izbiro lahko kadar koli spremenite v pozivnem oknu Nastavitve.", "You can read more about the two release channels at the link below.": "Več o obeh kanalih za izdajo si lahko preberete na spodnji povezavi.", diff --git a/gui/default/assets/lang/lang-sv.json b/gui/default/assets/lang/lang-sv.json index 13e544bd7..58a245b16 100644 --- a/gui/default/assets/lang/lang-sv.json +++ b/gui/default/assets/lang/lang-sv.json @@ -19,6 +19,7 @@ "Advanced": "Avancerat", "Advanced Configuration": "Avancerad konfiguration", "All Data": "Alla data", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Alla mappar som delas med denna enhet måste skyddas av ett lösenord, så att alla data som skickas är oläsliga utan det angivna lösenordet.", "Allow Anonymous Usage Reporting?": "Tillåt anonym användarstatistiksrapportering?", "Allowed Networks": "Tillåtna nätverk", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 följande bidragsgivare:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Skapa ignorera mönster, skriver över en existerande fil på {{path}}.", "Currently Shared With Devices": "För närvarande delas med enheter", + "Custom Range": "Custom Range", "Danger!": "Fara!", "Debugging Facilities": "Felsökningsfunktioner", "Default Configuration": "Standardkonfiguration", @@ -183,6 +185,9 @@ "Keep Versions": "Behåll versioner", "LDAP": "LDAP", "Largest First": "Största först", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Senaste skanning", "Last seen": "Senast sedd", "Latest Change": "Senaste ändring", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Det finns inga mappar att dela med denna enhet.", "They are retried automatically and will be synced when the error is resolved.": "De omprövas automatiskt och kommer att synkroniseras när felet är löst.", "This Device": "Denna enhet", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Detta kan lätt ge hackare tillgång till att läsa och ändra några filer på datorn.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Denna enhet kan inte automatiskt upptäcka andra enheter eller meddela sin egen adress som andra kan hitta. Endast enheter med statiskt konfigurerade adresser kan ansluta.", "This is a major version upgrade.": "Det här är en stor uppgradering.", "This setting controls the free space required on the home (i.e., index database) disk.": "Denna inställning styr hur mycket ledigt utrymme som krävs på hemdisken (dvs. indexdatabasen).", "Time": "Tid", "Time the item was last modified": "Tidpunkten objektet var senast ändrad", + "Today": "Today", "Trash Can File Versioning": "Papperskorgs filversionshantering", "Type": "Typ", "UNIX Permissions": "UNIX-behörigheter", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "När du lägger till en ny enhet, kom ihåg att denna enhet måste läggas till på den andra enheten också.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "När du lägger till ny mapp, tänk på att mapp-ID knyter ihop mappar mellan olika enheter. De skiftlägeskänsliga och måste matcha precis mellan alla enheter.", "Yes": "Ja", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Du kan också välja en av dessa närliggande enheter:", "You can change your choice at any time in the Settings dialog.": "Du kan ändra ditt val när som helst i inställningsdialogrutan.", "You can read more about the two release channels at the link below.": "Du kan läsa mer om de två publiceringsskanalerna på länken nedan.", diff --git a/gui/default/assets/lang/lang-tr.json b/gui/default/assets/lang/lang-tr.json index 590ed1868..327e49c7c 100644 --- a/gui/default/assets/lang/lang-tr.json +++ b/gui/default/assets/lang/lang-tr.json @@ -19,6 +19,7 @@ "Advanced": "Gelişmiş", "Advanced Configuration": "Gelişmiş Yapılandırma", "All Data": "Tüm Veriler", + "All Time": "Tüm Zamanlar", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Bu cihazla paylaşılan tüm klasörler bir parola ile korunmak zorundadır, böylece gönderilen tüm veriler verilen parola olmadan okunamaz.", "Allow Anonymous Usage Reporting?": "İsimsiz Kullanım Bildirmeye İzin Verilsin Mi?", "Allowed Networks": "İzin Verilen Ağlar", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Telif hakkı © 2014-2020 Katkıda Bulunanlar:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Yoksayma şekilleri oluşturuluyor, {{path}} yolunda varolan bir dosyanın üzerine yazılıyor.", "Currently Shared With Devices": "Şu Anda Paylaşıldığı Cihazlar", + "Custom Range": "Özel Aralık", "Danger!": "Tehlike!", "Debugging Facilities": "Hata Ayıklama Olanakları", "Default Configuration": "Varsayılan Yapılandırma", @@ -183,6 +185,9 @@ "Keep Versions": "Sürümleri Tut", "LDAP": "LDAP", "Largest First": "Önce En Büyük Olan", + "Last 30 Days": "Son 30 Gün", + "Last 7 Days": "Son 7 Gün", + "Last Month": "Geçen Ay", "Last Scan": "Son Tarama", "Last seen": "Son görülme", "Latest Change": "Son Değişiklik", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "Bu cihazla paylaşılacak klasörler yok.", "They are retried automatically and will be synced when the error is resolved.": "Otomatik olarak yeniden denenirler ve hata çözüldüğünde eşitleneceklerdir.", "This Device": "Bu Cihaz", + "This Month": "Bu Ay", "This can easily give hackers access to read and change any files on your computer.": "Bu, bilgisayar korsanlarının bilgisayarınızdaki herhangi bir dosyayı okumasına ve değiştirmesine kolayca erişim sağlayabilir.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Bu cihaz diğer cihazları otomatik olarak keşfedemez veya başkaları tarafından bulunacak kendi adresini duyuramaz. Yalnızca sabit olarak yapılandırılmış adreslere sahip cihazlar bağlanabilir.", "This is a major version upgrade.": "Bu büyük sürüm yükseltmesidir.", "This setting controls the free space required on the home (i.e., index database) disk.": "Bu ayar, ev (yani indeks veritabanı) diskindeki gereken boş alanı denetler.", "Time": "Zaman", "Time the item was last modified": "Öğenin son düzenlendiği zaman", + "Today": "Bugün", "Trash Can File Versioning": "Çöp Kutusu Dosyası Sürümlendirme", "Type": "Tür", "UNIX Permissions": "Unix İzinleri", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Yeni bir cihaz eklerken, bu cihazın karşı tarafa da eklenmek zorunda olduğunu unutmayın.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Yeni bir klasör eklerken, Klasör Kimliği'nin klasörleri cihazlar arasında bağlamak için kullanıldığını unutmayın. Büyük/küçük harf duyarlıdırlar ve tüm cihazlarda tam olarak eşleşmek zorundadırlar.", "Yes": "Evet", + "Yesterday": "Dün", "You can also select one of these nearby devices:": "Ayrıca yakındaki cihazlardan birini de seçebilirsiniz:", "You can change your choice at any time in the Settings dialog.": "Seçiminizi istediğiniz zaman Ayarlar ileti öğesinde değiştirebilirsiniz.", "You can read more about the two release channels at the link below.": "İki yayım kanalı hakkında daha fazlasını aşağıdaki bağlantıda okuyabilirsiniz.", diff --git a/gui/default/assets/lang/lang-uk.json b/gui/default/assets/lang/lang-uk.json index cb02f31da..51dc1e587 100644 --- a/gui/default/assets/lang/lang-uk.json +++ b/gui/default/assets/lang/lang-uk.json @@ -19,6 +19,7 @@ "Advanced": "Розширені", "Advanced Configuration": "Розширена конфігурація", "All Data": "Усі дані", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "Дозволити програмі збирати анонімну статистику використання?", "Allowed Networks": "Дозволені мережі", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "© 2014-2019 Всі права застережено, вклад внесли:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Створення шаблонів винятків з перезаписом існуючого файлу {{path}}.", "Currently Shared With Devices": "На даний момент є спільний доступ пристроїв", + "Custom Range": "Custom Range", "Danger!": "Небезпечно!", "Debugging Facilities": "Засоби відладки", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "Зберігати версії", "LDAP": "LDAP", "Largest First": "Спершу найбільші", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "Останнє сканування", "Last seen": "З’являвся останній раз", "Latest Change": "Найостанніша зміна", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "There are no folders to share with this device.", "They are retried automatically and will be synced when the error is resolved.": "Вони будуть автоматично повторно синхронізовані, коли помилку буде усунено. ", "This Device": "Локальний пристрій", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "Це легко може дати хакерам доступ до читання та зміни будь-яких файлів на вашому комп'ютері.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Це оновлення мажорної версії", "This setting controls the free space required on the home (i.e., index database) disk.": "Це налаштування визначає необхідний вільний простір на домашньому (тобто той, що містить базу даних) диску.", "Time": "Час", "Time the item was last modified": "Час останньої зміни елемента:", + "Today": "Today", "Trash Can File Versioning": "Версіонування файлів у кошику ", "Type": "Тип", "UNIX Permissions": "UNIX дозволи", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Коли додаєте новий вузол, пам’ятайте, що цей вузол повинен бути доданий і на іншій стороні.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Коли додаєте нову директорію, пам’ятайте, що ID цієї директорії використовується для того, щоб зв’язувати директорії разом між пристроями. Назви повинні точно співпадати між усіма пристроями, регістр символів має значення.", "Yes": "Так", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "Ви також можете обрати один із сусідніх пристроїв:", "You can change your choice at any time in the Settings dialog.": "Ви завжди можете змінити свій вибір у вікні Налаштувань.", "You can read more about the two release channels at the link below.": "Ви можете прочитати більше про два канали випусків за посиланням нижче.", diff --git a/gui/default/assets/lang/lang-zh-CN.json b/gui/default/assets/lang/lang-zh-CN.json index 7494dba42..e13a7c074 100644 --- a/gui/default/assets/lang/lang-zh-CN.json +++ b/gui/default/assets/lang/lang-zh-CN.json @@ -19,6 +19,7 @@ "Advanced": "高级", "Advanced Configuration": "高级配置", "All Data": "所有数据", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "与此设备共享的所有文件夹都必须有密码保护,这样所有发送的数据在没有密码的情况下是不可读的。", "Allow Anonymous Usage Reporting?": "允许匿名使用报告?", "Allowed Networks": "允许的网络", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "版权所有 © 2014-2019 以下贡献者:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "正在创建忽略模式,覆盖位于 {{path}} 的已有文件。", "Currently Shared With Devices": "当前设备已共享", + "Custom Range": "Custom Range", "Danger!": "危险!", "Debugging Facilities": "调试功能", "Default Configuration": "默认配置", @@ -183,6 +185,9 @@ "Keep Versions": "保留版本数量", "LDAP": "LDAP", "Largest First": "大文件优先", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "最后扫描", "Last seen": "最后可见", "Latest Change": "最后更改", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "没有文件夹与此设备共享。", "They are retried automatically and will be synced when the error is resolved.": "系统将会自动重试,当错误被解决时,它们将会被同步。", "This Device": "当前设备", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "这会让骇客能够轻而易举地访问及修改您的文件。", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "此设备无法自动发现其它设备或广播自己的地址被其他人发现。只有具有静态配置地址的设备才能连接。", "This is a major version upgrade.": "这是一个重大版本更新。", "This setting controls the free space required on the home (i.e., index database) disk.": "此设置控制主(例如索引数据库)磁盘上需要的可用空间。", "Time": "时间", "Time the item was last modified": "该项最近修改的时间", + "Today": "Today", "Trash Can File Versioning": "回收站式版本控制", "Type": "类型", "UNIX Permissions": "UNIX权限", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "若您在本机添加新设备,记住您也必须在这个新设备上添加本机。", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "若你添加了新文件夹,记住文件夹 ID 是用以在不同设备间建立联系的。在不同设备间拥有相同 ID 的文件夹将会被同步。且文件夹 ID 区分大小写。", "Yes": "是", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "您也可以从这些附近的设备中选择:", "You can change your choice at any time in the Settings dialog.": "您可以在任何时候在设置对话框中更改选择。", "You can read more about the two release channels at the link below.": "您可以从以下链接读取更多关于两个发行渠道的信息。", diff --git a/gui/default/assets/lang/lang-zh-HK.json b/gui/default/assets/lang/lang-zh-HK.json index 370b72ca1..1d96b1371 100644 --- a/gui/default/assets/lang/lang-zh-HK.json +++ b/gui/default/assets/lang/lang-zh-HK.json @@ -19,6 +19,7 @@ "Advanced": "高級", "Advanced Configuration": "高級配置", "All Data": "所有資料", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.", "Allow Anonymous Usage Reporting?": "允許匿名使用報告?", "Allowed Networks": "允許的網絡", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "版權所有©2014-2019以下貢獻者:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "正在創建忽略模式,覆蓋位於 {{path}} 的已有文件。", "Currently Shared With Devices": "當前設備已共享", + "Custom Range": "Custom Range", "Danger!": "危險!", "Debugging Facilities": "調試功能", "Default Configuration": "Default Configuration", @@ -183,6 +185,9 @@ "Keep Versions": "保留版本數量", "LDAP": "LDAP", "Largest First": "大文件優先", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "最後掃瞄", "Last seen": "最後可見", "Latest Change": "最後更改", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "沒有與此設備共享的文件夾。", "They are retried automatically and will be synced when the error is resolved.": "系統將會自動重試,當錯誤被解決時,它們將會被同步。", "This Device": "當前設備", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "這會讓駭客能夠輕而易舉地訪問及修改您的文件。", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "這是一個重大版本更新。", "This setting controls the free space required on the home (i.e., index database) disk.": "此設置控制主(例如索引數據庫)磁盤上需要的可用空間。", "Time": "時間", "Time the item was last modified": "該項最近修改的時間", + "Today": "Today", "Trash Can File Versioning": "回收站式版本控制", "Type": "類型", "UNIX Permissions": "UNIX權限", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "若您在本機添加新設備,記住您也必須在這個新設備上添加本機。", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "若你添加了新文件夾,記住文件夾 ID 是用以在不同設備間建立聯繫的。在不同設備間擁有相同 ID 的文件夾將會被同步。且文件夾 ID 區分大小寫。", "Yes": "是", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "您也可以從這些附近的設備中選擇:", "You can change your choice at any time in the Settings dialog.": "您可以在任何時候在設置對話框中更改選擇。", "You can read more about the two release channels at the link below.": "您可以從以下鏈接讀取更多關於兩個發行渠道的信息。", diff --git a/gui/default/assets/lang/lang-zh-TW.json b/gui/default/assets/lang/lang-zh-TW.json index 9fd2c8697..1fe7ff8f8 100644 --- a/gui/default/assets/lang/lang-zh-TW.json +++ b/gui/default/assets/lang/lang-zh-TW.json @@ -19,6 +19,7 @@ "Advanced": "進階", "Advanced Configuration": "進階配置", "All Data": "全部資料", + "All Time": "All Time", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "所有與此裝置分享的資料夾必須使用密碼保護起來,如此一來,沒有提供密碼將無法閱覽資料。", "Allow Anonymous Usage Reporting?": "允許回報匿名數據?", "Allowed Networks": "允許的網路", @@ -66,6 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 下列貢獻者:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "建立忽略樣式,覆蓋已存在的 {{path}}。", "Currently Shared With Devices": "目前與裝置共享", + "Custom Range": "Custom Range", "Danger!": "危險!", "Debugging Facilities": "除錯工具", "Default Configuration": "預設配置", @@ -183,6 +185,9 @@ "Keep Versions": "保留歷史版本數", "LDAP": "LDAP", "Largest First": "最大的優先", + "Last 30 Days": "Last 30 Days", + "Last 7 Days": "Last 7 Days", + "Last Month": "Last Month", "Last Scan": "最後掃描", "Last seen": "最後發現時間", "Latest Change": "最近變動", @@ -378,12 +383,14 @@ "There are no folders to share with this device.": "沒有資料夾分享給此裝置。", "They are retried automatically and will be synced when the error is resolved.": "解決問題後,將會自動重試和同步。", "This Device": "本機", + "This Month": "This Month", "This can easily give hackers access to read and change any files on your computer.": "這能給駭客輕易的來讀取、變更電腦中的任何檔案。", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "這是一個重大版本更新。", "This setting controls the free space required on the home (i.e., index database) disk.": "此設定控制家目錄(即:索引資料庫)的必須可用空間。", "Time": "時間", "Time the item was last modified": "前次修改時間", + "Today": "Today", "Trash Can File Versioning": "垃圾筒式檔案版本控制", "Type": "類型", "UNIX Permissions": "UNIX 權限", @@ -428,6 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "當新增一個裝置時,務必記住,當前的這個裝置也同樣必須被添加至另一邊。", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "當新增一個資料夾時,請記住,資料夾識別碼是用來將裝置之間的資料夾綁定在一起的。它們有區分大小寫,且必須在所有裝置之間完全相同。", "Yes": "是", + "Yesterday": "Yesterday", "You can also select one of these nearby devices:": "您亦可從這些附近裝置中擇一:", "You can change your choice at any time in the Settings dialog.": "您可以在設定對話框中隨時更改您的選擇。", "You can read more about the two release channels at the link below.": "您可於下方連結閱讀更多關於發行頻道的說明。", diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index c558958b4..e05cea490 100644 --- a/man/stdiscosrv.1 +++ b/man/stdiscosrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STDISCOSRV" "1" "Jan 31, 2022" "v1" "Syncthing" +.TH "STDISCOSRV" "1" "Feb 07, 2022" "v1" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index ee5b71269..ff96138ee 100644 --- a/man/strelaysrv.1 +++ b/man/strelaysrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STRELAYSRV" "1" "Jan 31, 2022" "v1" "Syncthing" +.TH "STRELAYSRV" "1" "Feb 07, 2022" "v1" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index 00dbc0b2e..5d68503be 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-BEP" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-bep \- Block Exchange Protocol v1 .SH INTRODUCTION AND DEFINITIONS diff --git a/man/syncthing-config.5 b/man/syncthing-config.5 index 180ae57d5..56d4758cb 100644 --- a/man/syncthing-config.5 +++ b/man/syncthing-config.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-CONFIG" "5" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index 965c8da82..2d3a50c18 100644 --- a/man/syncthing-device-ids.7 +++ b/man/syncthing-device-ids.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-DEVICE-IDS" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-device-ids \- Understanding Device IDs .sp diff --git a/man/syncthing-event-api.7 b/man/syncthing-event-api.7 index a92d6e5b6..fd48b7199 100644 --- a/man/syncthing-event-api.7 +++ b/man/syncthing-event-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-EVENT-API" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index 1110da276..40358d28e 100644 --- a/man/syncthing-faq.7 +++ b/man/syncthing-faq.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-FAQ" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index 24b2bb174..490e0637e 100644 --- a/man/syncthing-globaldisco.7 +++ b/man/syncthing-globaldisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-GLOBALDISCO" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index a81ea2e59..b316d664a 100644 --- a/man/syncthing-localdisco.7 +++ b/man/syncthing-localdisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-LOCALDISCO" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-localdisco \- Local Discovery Protocol v4 .SH MODE OF OPERATION diff --git a/man/syncthing-networking.7 b/man/syncthing-networking.7 index ee89a87d2..f59c50fa3 100644 --- a/man/syncthing-networking.7 +++ b/man/syncthing-networking.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-NETWORKING" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index b3c69e832..e82cb9c0b 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-RELAY" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-relay \- Relay Protocol v1 .SH WHAT IS A RELAY? diff --git a/man/syncthing-rest-api.7 b/man/syncthing-rest-api.7 index 5989505f4..67af63b71 100644 --- a/man/syncthing-rest-api.7 +++ b/man/syncthing-rest-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-REST-API" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index 9dc24a772..2de1f9123 100644 --- a/man/syncthing-security.7 +++ b/man/syncthing-security.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-SECURITY" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index 920ca3169..2da0498e8 100644 --- a/man/syncthing-stignore.5 +++ b/man/syncthing-stignore.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-STIGNORE" "5" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-stignore \- Prevent files from being synchronized to other nodes .SH SYNOPSIS diff --git a/man/syncthing-versioning.7 b/man/syncthing-versioning.7 index aede0213a..0c98af895 100644 --- a/man/syncthing-versioning.7 +++ b/man/syncthing-versioning.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-VERSIONING" "7" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing-versioning \- Keep automatic backups of deleted files by other nodes .sp diff --git a/man/syncthing.1 b/man/syncthing.1 index 006e566fe..25271a441 100644 --- a/man/syncthing.1 +++ b/man/syncthing.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING" "1" "Jan 31, 2022" "v1" "Syncthing" +.TH "SYNCTHING" "1" "Feb 07, 2022" "v1" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS From ffa46c2461e5291ff845dc8a98b8166c193ee37e Mon Sep 17 00:00:00 2001 From: Syncthing Release Automation Date: Mon, 21 Feb 2022 03:45:27 +0000 Subject: [PATCH 10/37] gui, man, authors: Update docs, translations, and contributors --- AUTHORS | 1 + gui/default/assets/lang/lang-da.json | 18 +++++++++--------- gui/default/assets/lang/lang-de.json | 16 ++++++++-------- gui/default/assets/lang/lang-sv.json | 16 ++++++++-------- gui/default/syncthing/core/aboutModalView.html | 2 +- man/stdiscosrv.1 | 2 +- man/strelaysrv.1 | 2 +- man/syncthing-bep.7 | 2 +- man/syncthing-config.5 | 2 +- man/syncthing-device-ids.7 | 2 +- man/syncthing-event-api.7 | 2 +- man/syncthing-faq.7 | 2 +- man/syncthing-globaldisco.7 | 2 +- man/syncthing-localdisco.7 | 2 +- man/syncthing-networking.7 | 2 +- man/syncthing-relay.7 | 2 +- man/syncthing-rest-api.7 | 2 +- man/syncthing-security.7 | 2 +- man/syncthing-stignore.5 | 2 +- man/syncthing-versioning.7 | 2 +- man/syncthing.1 | 2 +- 21 files changed, 43 insertions(+), 42 deletions(-) diff --git a/AUTHORS b/AUTHORS index d1cd6bf86..1543c4652 100644 --- a/AUTHORS +++ b/AUTHORS @@ -251,6 +251,7 @@ Stefan Kuntz (Stefan-Code) Stefan Tatschner (rumpelsepp) Steven Eckhoff Suhas Gundimeda (snugghash) +Syncthing Release Automation Taylor Khan (nelsonkhan) Thomas Hipp Tim Abell (timabell) diff --git a/gui/default/assets/lang/lang-da.json b/gui/default/assets/lang/lang-da.json index 43832571c..bd8da416d 100644 --- a/gui/default/assets/lang/lang-da.json +++ b/gui/default/assets/lang/lang-da.json @@ -19,7 +19,7 @@ "Advanced": "Avanceret", "Advanced Configuration": "Avanceret konfiguration", "All Data": "Alt data", - "All Time": "All Time", + "All Time": "Hele tiden", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Alle mapper delt med denne enhed, skal beskyttes med adgangskode, således at alle sendte data er ikke-læsbare uden den angivne adgangskode.", "Allow Anonymous Usage Reporting?": "Tillad anonym brugerstatistik?", "Allowed Networks": "Tilladte netværk", @@ -67,7 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 de følgende bidragsydere:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Opretter ignoreringsmønstre; overskriver en eksisterende fil på {{path}}.", "Currently Shared With Devices": "i øjeblikket delt med enheder", - "Custom Range": "Custom Range", + "Custom Range": "Tilpasset interval", "Danger!": "Fare!", "Debugging Facilities": "Faciliteter til fejlretning", "Default Configuration": "Standard opsætning", @@ -185,9 +185,9 @@ "Keep Versions": "Behold versioner", "LDAP": "LDAP", "Largest First": "Største først", - "Last 30 Days": "Last 30 Days", - "Last 7 Days": "Last 7 Days", - "Last Month": "Last Month", + "Last 30 Days": "Seneste 30 dage", + "Last 7 Days": "Seneste 7 dage", + "Last Month": "Sidste måned", "Last Scan": "Seneste skanning", "Last seen": "Sidst set", "Latest Change": "Seneste ændring", @@ -298,7 +298,7 @@ "Select the folders to share with this device.": "Vælg hvilke mapper du vil dele med denne enhed.", "Send & Receive": "Send og modtag", "Send Only": "Send kun", - "Set Ignores on Added Folder": "Set Ignores on Added Folder", + "Set Ignores on Added Folder": "Sæt ignorerer på tilføjet mappe", "Settings": "Indstillinger", "Share": "Del", "Share Folder": "Del mappe", @@ -383,14 +383,14 @@ "There are no folders to share with this device.": "Der er ingen mapper at dele med denne enhed.", "They are retried automatically and will be synced when the error is resolved.": "De prøves igen automatisk og vil blive synkroniseret, når fejlen er løst.", "This Device": "Denne enhed", - "This Month": "This Month", + "This Month": "Denne måned", "This can easily give hackers access to read and change any files on your computer.": "Dette gør det nemt for hackere at få adgang til at læse og ændre filer på din computer.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.", "This is a major version upgrade.": "Dette er en ny hovedversion.", "This setting controls the free space required on the home (i.e., index database) disk.": "Denne indstilling styrer den krævede ledige plads på hjemmedrevet (dvs. drevet med indeksdatabasen).", "Time": "Tid", "Time the item was last modified": "Tidspunkt for seneste ændring af filen", - "Today": "Today", + "Today": "I dag", "Trash Can File Versioning": "Versionering med papirkurv", "Type": "Type", "UNIX Permissions": "UNIX rettigheder", @@ -435,7 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Når der tilføjes en ny enhed, vær da opmærksom på, at denne enhed også skal tilføjes i den anden ende.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Når der tilføjes en ny enhed, vær da opmærksom på at samme mappe-ID bruges til at forbinde mapper på de forskellige enheder. Der er forskel på store og små bogstaver, og ID skal være fuldstændig identisk på alle enheder.", "Yes": "Ja", - "Yesterday": "Yesterday", + "Yesterday": "I går", "You can also select one of these nearby devices:": "Du kan også vælge en af disse enheder i nærheden:", "You can change your choice at any time in the Settings dialog.": "Du kan altid ændre dit valg under indstillinger.", "You can read more about the two release channels at the link below.": "Du kan læse mere om de to udgivelseskanaler på linket herunder.", diff --git a/gui/default/assets/lang/lang-de.json b/gui/default/assets/lang/lang-de.json index e8bb64a3c..bee17c7f9 100644 --- a/gui/default/assets/lang/lang-de.json +++ b/gui/default/assets/lang/lang-de.json @@ -19,7 +19,7 @@ "Advanced": "Erweitert", "Advanced Configuration": "Erweiterte Konfiguration", "All Data": "Alle Daten", - "All Time": "All Time", + "All Time": "Gesamter Zeitraum", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Alle Ordner, welche mit diesem Gerät geteilt werden, müssen von einem Passwort geschützt werden, sodass keine gesendeten Daten ohne Kenntnis des Passworts gelesen werden können. ", "Allow Anonymous Usage Reporting?": "Übertragung von anonymen Nutzungsberichten erlauben?", "Allowed Networks": "Erlaubte Netzwerke", @@ -67,7 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 folgende Mitwirkende:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Erstelle Ignoriermuster, welche die existierende Datei {{path}} überschreiben.", "Currently Shared With Devices": "Derzeit mit Geräten geteilt", - "Custom Range": "Custom Range", + "Custom Range": "Eigener Zeitraum", "Danger!": "Achtung!", "Debugging Facilities": "Debugging-Möglichkeiten", "Default Configuration": "Vorgabekonfiguration", @@ -185,9 +185,9 @@ "Keep Versions": "Versionen erhalten", "LDAP": "LDAP", "Largest First": "Größte zuerst", - "Last 30 Days": "Last 30 Days", - "Last 7 Days": "Last 7 Days", - "Last Month": "Last Month", + "Last 30 Days": "Letzte 30 Tage", + "Last 7 Days": "Letzte 7 Tage", + "Last Month": "Letzter Monat", "Last Scan": "Letzter Scan", "Last seen": "Zuletzt online", "Latest Change": "Letzte Änderung", @@ -383,14 +383,14 @@ "There are no folders to share with this device.": "Es gibt keine Ordner, die mit diesem Gerät geteilt werden können.", "They are retried automatically and will be synced when the error is resolved.": "Sie werden automatisch heruntergeladen und werden synchronisiert, wenn der Fehler behoben wurde.", "This Device": "Dieses Gerät", - "This Month": "This Month", + "This Month": "Dieser Monat", "This can easily give hackers access to read and change any files on your computer.": "Dies kann dazu führen, dass Unberechtigte relativ einfach auf Ihre Dateien zugreifen und diese ändern können.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Dieses Gerät kann nicht automatisch andere Geräte auffinden, oder seine eigene Adresse bekannt geben, um von anderen gefunden zu werden. Nur Geräte mit statisch konfigurierten Adressen können sich verbinden.", "This is a major version upgrade.": "Dies ist eine Hauptversionsaktualisierung.", "This setting controls the free space required on the home (i.e., index database) disk.": "Diese Einstellung regelt den freien Speicherplatz, der für den Systemordner (d.h. Indexdatenbank) erforderlich ist.", "Time": "Zeit", "Time the item was last modified": "Zeit der letzten Änderung des Elements", - "Today": "Today", + "Today": "Heute", "Trash Can File Versioning": "Papierkorb Dateiversionierung", "Type": "Typ", "UNIX Permissions": "UNIX-Berechtigungen", @@ -435,7 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Beachte beim Hinzufügen eines neuen Gerätes, dass dieses Gerät auch auf den anderen Geräten hinzugefügt werden muss.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Beachte bitte beim Hinzufügen eines neuen Ordners, dass die Ordnerkennung dazu verwendet wird, Ordner zwischen Geräten zu verbinden. Die Kennung muss also auf allen Geräten gleich sein, die Groß- und Kleinschreibung muss dabei beachtet werden.", "Yes": "Ja", - "Yesterday": "Yesterday", + "Yesterday": "Gestern", "You can also select one of these nearby devices:": "Sie können auch ein in der Nähe befindliches Geräte auswählen:", "You can change your choice at any time in the Settings dialog.": "Sie können Ihre Wahl jederzeit in den Einstellungen ändern.", "You can read more about the two release channels at the link below.": "Über den folgenden Link können Sie mehr über die zwei Veröffentlichungskanäle erfahren.", diff --git a/gui/default/assets/lang/lang-sv.json b/gui/default/assets/lang/lang-sv.json index 58a245b16..40a4b7c06 100644 --- a/gui/default/assets/lang/lang-sv.json +++ b/gui/default/assets/lang/lang-sv.json @@ -19,7 +19,7 @@ "Advanced": "Avancerat", "Advanced Configuration": "Avancerad konfiguration", "All Data": "Alla data", - "All Time": "All Time", + "All Time": "All tid", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Alla mappar som delas med denna enhet måste skyddas av ett lösenord, så att alla data som skickas är oläsliga utan det angivna lösenordet.", "Allow Anonymous Usage Reporting?": "Tillåt anonym användarstatistiksrapportering?", "Allowed Networks": "Tillåtna nätverk", @@ -67,7 +67,7 @@ "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 följande bidragsgivare:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Skapa ignorera mönster, skriver över en existerande fil på {{path}}.", "Currently Shared With Devices": "För närvarande delas med enheter", - "Custom Range": "Custom Range", + "Custom Range": "Anpassat intervall", "Danger!": "Fara!", "Debugging Facilities": "Felsökningsfunktioner", "Default Configuration": "Standardkonfiguration", @@ -185,9 +185,9 @@ "Keep Versions": "Behåll versioner", "LDAP": "LDAP", "Largest First": "Största först", - "Last 30 Days": "Last 30 Days", - "Last 7 Days": "Last 7 Days", - "Last Month": "Last Month", + "Last 30 Days": "Senaste 30 dagarna", + "Last 7 Days": "Senaste 7 dagarna", + "Last Month": "Förra månaden", "Last Scan": "Senaste skanning", "Last seen": "Senast sedd", "Latest Change": "Senaste ändring", @@ -383,14 +383,14 @@ "There are no folders to share with this device.": "Det finns inga mappar att dela med denna enhet.", "They are retried automatically and will be synced when the error is resolved.": "De omprövas automatiskt och kommer att synkroniseras när felet är löst.", "This Device": "Denna enhet", - "This Month": "This Month", + "This Month": "Den här månaden", "This can easily give hackers access to read and change any files on your computer.": "Detta kan lätt ge hackare tillgång till att läsa och ändra några filer på datorn.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Denna enhet kan inte automatiskt upptäcka andra enheter eller meddela sin egen adress som andra kan hitta. Endast enheter med statiskt konfigurerade adresser kan ansluta.", "This is a major version upgrade.": "Det här är en stor uppgradering.", "This setting controls the free space required on the home (i.e., index database) disk.": "Denna inställning styr hur mycket ledigt utrymme som krävs på hemdisken (dvs. indexdatabasen).", "Time": "Tid", "Time the item was last modified": "Tidpunkten objektet var senast ändrad", - "Today": "Today", + "Today": "Idag", "Trash Can File Versioning": "Papperskorgs filversionshantering", "Type": "Typ", "UNIX Permissions": "UNIX-behörigheter", @@ -435,7 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "När du lägger till en ny enhet, kom ihåg att denna enhet måste läggas till på den andra enheten också.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "När du lägger till ny mapp, tänk på att mapp-ID knyter ihop mappar mellan olika enheter. De skiftlägeskänsliga och måste matcha precis mellan alla enheter.", "Yes": "Ja", - "Yesterday": "Yesterday", + "Yesterday": "Igår", "You can also select one of these nearby devices:": "Du kan också välja en av dessa närliggande enheter:", "You can change your choice at any time in the Settings dialog.": "Du kan ändra ditt val när som helst i inställningsdialogrutan.", "You can read more about the two release channels at the link below.": "Du kan läsa mer om de två publiceringsskanalerna på länken nedan.", diff --git a/gui/default/syncthing/core/aboutModalView.html b/gui/default/syncthing/core/aboutModalView.html index 2a6fc1136..22fe7271b 100644 --- a/gui/default/syncthing/core/aboutModalView.html +++ b/gui/default/syncthing/core/aboutModalView.html @@ -19,7 +19,7 @@

The Syncthing Authors

-Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Alexander Graf, Alexandre Viau, Aman Gupta, Anderson Mesquita, Andrew Dunham, Andrew Rabert, Andrey D, André Colomb, Anjan Momi, Antoine Lamielle, Antony Male, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Audrius Butkevicius, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Schulz, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Caleb Callaway, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Bergmann, Daniel Harte, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Evgeny Kuznetsov, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, Jakob Borg, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jesse Lucas, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars K.W. Gohlke, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lode Hoste, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Ploujnikov, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Nate Morrison, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Philippe Schommers, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Sullivan, Sacheendra Talluri, Scott Klupfel, Sergey Mishin, Shaarad Dalvi, Simon Frei, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Stefan Tatschner, Steven Eckhoff, Suhas Gundimeda, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tomasz Wilczyński, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Wulf Weich, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], dependabot-preview[bot], dependabot[bot], derekriemer, desbma, georgespatton, ghjklw, greatroar, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙 +Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Alexander Graf, Alexandre Viau, Aman Gupta, Anderson Mesquita, Andrew Dunham, Andrew Rabert, Andrey D, André Colomb, Anjan Momi, Antoine Lamielle, Antony Male, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Audrius Butkevicius, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Schulz, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Caleb Callaway, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Bergmann, Daniel Harte, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Evgeny Kuznetsov, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, Jakob Borg, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jesse Lucas, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars K.W. Gohlke, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lode Hoste, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Ploujnikov, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Nate Morrison, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Philippe Schommers, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Sullivan, Sacheendra Talluri, Scott Klupfel, Sergey Mishin, Shaarad Dalvi, Simon Frei, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Stefan Tatschner, Steven Eckhoff, Suhas Gundimeda, Syncthing Release Automation, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tomasz Wilczyński, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Wulf Weich, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], dependabot-preview[bot], dependabot[bot], derekriemer, desbma, georgespatton, ghjklw, greatroar, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙

diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index e05cea490..9109ea802 100644 --- a/man/stdiscosrv.1 +++ b/man/stdiscosrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STDISCOSRV" "1" "Feb 07, 2022" "v1" "Syncthing" +.TH "STDISCOSRV" "1" "Feb 20, 2022" "v1" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index ff96138ee..e3e792d1d 100644 --- a/man/strelaysrv.1 +++ b/man/strelaysrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STRELAYSRV" "1" "Feb 07, 2022" "v1" "Syncthing" +.TH "STRELAYSRV" "1" "Feb 20, 2022" "v1" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index 5d68503be..01365cc86 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-BEP" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-bep \- Block Exchange Protocol v1 .SH INTRODUCTION AND DEFINITIONS diff --git a/man/syncthing-config.5 b/man/syncthing-config.5 index 56d4758cb..072bb93bb 100644 --- a/man/syncthing-config.5 +++ b/man/syncthing-config.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-CONFIG" "5" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index 2d3a50c18..67f096e40 100644 --- a/man/syncthing-device-ids.7 +++ b/man/syncthing-device-ids.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-DEVICE-IDS" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-device-ids \- Understanding Device IDs .sp diff --git a/man/syncthing-event-api.7 b/man/syncthing-event-api.7 index fd48b7199..f9eb45dd3 100644 --- a/man/syncthing-event-api.7 +++ b/man/syncthing-event-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-EVENT-API" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index 40358d28e..35a29fff2 100644 --- a/man/syncthing-faq.7 +++ b/man/syncthing-faq.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-FAQ" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index 490e0637e..45395981f 100644 --- a/man/syncthing-globaldisco.7 +++ b/man/syncthing-globaldisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-GLOBALDISCO" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index b316d664a..9cd80aa22 100644 --- a/man/syncthing-localdisco.7 +++ b/man/syncthing-localdisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-LOCALDISCO" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-localdisco \- Local Discovery Protocol v4 .SH MODE OF OPERATION diff --git a/man/syncthing-networking.7 b/man/syncthing-networking.7 index f59c50fa3..4b5bcc5c3 100644 --- a/man/syncthing-networking.7 +++ b/man/syncthing-networking.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-NETWORKING" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index e82cb9c0b..0a7bff253 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-RELAY" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-relay \- Relay Protocol v1 .SH WHAT IS A RELAY? diff --git a/man/syncthing-rest-api.7 b/man/syncthing-rest-api.7 index 67af63b71..48cb60289 100644 --- a/man/syncthing-rest-api.7 +++ b/man/syncthing-rest-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-REST-API" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index 2de1f9123..7cb3a0c6c 100644 --- a/man/syncthing-security.7 +++ b/man/syncthing-security.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-SECURITY" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index 2da0498e8..12eb33977 100644 --- a/man/syncthing-stignore.5 +++ b/man/syncthing-stignore.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-STIGNORE" "5" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-stignore \- Prevent files from being synchronized to other nodes .SH SYNOPSIS diff --git a/man/syncthing-versioning.7 b/man/syncthing-versioning.7 index 0c98af895..e6fd450af 100644 --- a/man/syncthing-versioning.7 +++ b/man/syncthing-versioning.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-VERSIONING" "7" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing-versioning \- Keep automatic backups of deleted files by other nodes .sp diff --git a/man/syncthing.1 b/man/syncthing.1 index 25271a441..4f25f6c24 100644 --- a/man/syncthing.1 +++ b/man/syncthing.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING" "1" "Feb 07, 2022" "v1" "Syncthing" +.TH "SYNCTHING" "1" "Feb 20, 2022" "v1" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS From 013c757a840b9009f606777f5e1832c0071772e8 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Mon, 21 Feb 2022 14:57:21 +0100 Subject: [PATCH 11/37] github: Provide Git history when checking out for actions --- .github/workflows/update-docs-translations.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/update-docs-translations.yaml b/.github/workflows/update-docs-translations.yaml index 2b758ba7b..5b4e93640 100644 --- a/.github/workflows/update-docs-translations.yaml +++ b/.github/workflows/update-docs-translations.yaml @@ -12,6 +12,7 @@ jobs: steps: - uses: actions/checkout@v2 with: + fetch-depth: 0 token: ${{ secrets.ACTIONS_GITHUB_TOKEN }} - uses: actions/setup-go@v2 with: From 10f9d95cd27d7e55bf225b6e1094d628d4a43776 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Feb 2022 21:07:15 +0100 Subject: [PATCH 12/37] build(deps): bump github.com/thejerf/suture/v4 from 4.0.1 to 4.0.2 (#8190) Bumps [github.com/thejerf/suture/v4](https://github.com/thejerf/suture) from 4.0.1 to 4.0.2. - [Release notes](https://github.com/thejerf/suture/releases) - [Commits](https://github.com/thejerf/suture/compare/v4.0.1...v4.0.2) --- updated-dependencies: - dependency-name: github.com/thejerf/suture/v4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8814d06ea..a2a55bc07 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/shirou/gopsutil/v3 v3.21.12 github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 github.com/syndtr/goleveldb v1.0.1-0.20200815071216-d9e9293bd0f7 - github.com/thejerf/suture/v4 v4.0.1 + github.com/thejerf/suture/v4 v4.0.2 github.com/urfave/cli v1.22.5 github.com/vitrun/qart v0.0.0-20160531060029-bf64b92db6b0 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 diff --git a/go.sum b/go.sum index 4022b4d5f..abc7c8004 100644 --- a/go.sum +++ b/go.sum @@ -391,8 +391,8 @@ github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2/go.mod h1:J0q59IW github.com/syndtr/goleveldb v1.0.1-0.20200815071216-d9e9293bd0f7 h1:udtnv1cokhJYqnUfCMCppJ71bFN9VKfG1BQ6UsYZnx8= github.com/syndtr/goleveldb v1.0.1-0.20200815071216-d9e9293bd0f7/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/thejerf/suture/v4 v4.0.1 h1:CLnC1wxLAiHA5zTbbvhSWMupVuGe5ZJ7YddWE3lvb4M= -github.com/thejerf/suture/v4 v4.0.1/go.mod h1:g0e8vwskm9tI0jRjxrnA6lSr0q6OfPdWJVX7G5bVWRs= +github.com/thejerf/suture/v4 v4.0.2 h1:VxIH/J8uYvqJY1+9fxi5GBfGRkRZ/jlSOP6x9HijFQc= +github.com/thejerf/suture/v4 v4.0.2/go.mod h1:g0e8vwskm9tI0jRjxrnA6lSr0q6OfPdWJVX7G5bVWRs= github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= From f890fe6fd34ceb4cd466f6d29a7820809730e73c Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Thu, 24 Feb 2022 17:07:51 +0100 Subject: [PATCH 13/37] lib/config: Improve clarity of free space errors (fixes #8180) (#8191) --- lib/config/folderconfiguration.go | 4 ++-- lib/config/size.go | 10 +++++----- lib/config/size_test.go | 6 ++++-- lib/model/folder.go | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/config/folderconfiguration.go b/lib/config/folderconfiguration.go index 6f2e0ea61..214343db6 100644 --- a/lib/config/folderconfiguration.go +++ b/lib/config/folderconfiguration.go @@ -261,8 +261,8 @@ func (f *FolderConfiguration) CheckAvailableSpace(req uint64) error { if err != nil { return nil } - if !checkAvailableSpace(req, f.MinDiskFree, usage) { - return fmt.Errorf("insufficient space in %v %v", fs.Type(), fs.URI()) + if err := checkAvailableSpace(req, f.MinDiskFree, usage); err != nil { + return fmt.Errorf("insufficient space in folder %v (%v): %w", f.Description(), fs.URI(), err) } return nil } diff --git a/lib/config/size.go b/lib/config/size.go index 8e92c82e6..1124d0e38 100644 --- a/lib/config/size.go +++ b/lib/config/size.go @@ -83,10 +83,10 @@ func CheckFreeSpace(minFree Size, usage fs.Usage) error { if minFree.Percentage() { freePct := (float64(usage.Free) / float64(usage.Total)) * 100 if freePct < val { - return fmt.Errorf("%.1f %% < %v", freePct, minFree) + return fmt.Errorf("current %.2f %% < required %v", freePct, minFree) } } else if float64(usage.Free) < val { - return fmt.Errorf("%sB < %v", formatSI(usage.Free), minFree) + return fmt.Errorf("current %sB < required %v", formatSI(usage.Free), minFree) } return nil @@ -94,12 +94,12 @@ func CheckFreeSpace(minFree Size, usage fs.Usage) error { // checkAvailableSpace checks that the free space does not fall below the minimum // required free space, considering additional required space for a future operation. -func checkAvailableSpace(req uint64, minFree Size, usage fs.Usage) bool { +func checkAvailableSpace(req uint64, minFree Size, usage fs.Usage) error { if usage.Free < req { - return false + return fmt.Errorf("current %sB < required %sB", formatSI(usage.Free), formatSI(req)) } usage.Free -= req - return CheckFreeSpace(minFree, usage) == nil + return CheckFreeSpace(minFree, usage) } func formatSI(b uint64) string { diff --git a/lib/config/size_test.go b/lib/config/size_test.go index 2d094cd1c..d47bdde34 100644 --- a/lib/config/size_test.go +++ b/lib/config/size_test.go @@ -159,8 +159,10 @@ func TestCheckAvailableSize(t *testing.T) { continue } usage := fs.Usage{Free: tc.free, Total: tc.total} - if ok := checkAvailableSpace(tc.req, minFree, usage); ok != tc.ok { - t.Errorf("checkAvailableSpace(%v, %v, %v) == %v, expected %v", tc.req, minFree, usage, ok, tc.ok) + err = checkAvailableSpace(tc.req, minFree, usage) + t.Log(err) + if (err == nil) != tc.ok { + t.Errorf("checkAvailableSpace(%v, %v, %v) == %v, expected %v", tc.req, minFree, usage, err, tc.ok) } } } diff --git a/lib/model/folder.go b/lib/model/folder.go index 4b645ebd0..396476be4 100644 --- a/lib/model/folder.go +++ b/lib/model/folder.go @@ -329,7 +329,7 @@ func (f *folder) getHealthErrorWithoutIgnores() error { dbPath := locations.Get(locations.Database) if usage, err := fs.NewFilesystem(fs.FilesystemTypeBasic, dbPath).Usage("."); err == nil { if err = config.CheckFreeSpace(f.model.cfg.Options().MinHomeDiskFree, usage); err != nil { - return errors.Wrapf(err, "insufficient space on disk for database (%v)", dbPath) + return fmt.Errorf("insufficient space on disk for database (%v): %w", dbPath, err) } } From f25947e5ebb1c2ab19678673653d46ba64677ebf Mon Sep 17 00:00:00 2001 From: Syncthing Release Automation Date: Mon, 28 Feb 2022 03:46:00 +0000 Subject: [PATCH 14/37] gui, man, authors: Update docs, translations, and contributors --- AUTHORS | 8 +- gui/default/assets/lang/lang-es-ES.json | 64 ++-- .../syncthing/core/aboutModalView.html | 2 +- man/stdiscosrv.1 | 2 +- man/strelaysrv.1 | 2 +- man/syncthing-bep.7 | 4 +- man/syncthing-config.5 | 11 +- man/syncthing-device-ids.7 | 2 +- man/syncthing-event-api.7 | 4 +- man/syncthing-faq.7 | 6 +- man/syncthing-globaldisco.7 | 2 +- man/syncthing-localdisco.7 | 2 +- man/syncthing-networking.7 | 2 +- man/syncthing-relay.7 | 2 +- man/syncthing-rest-api.7 | 348 ++++++++++++++++-- man/syncthing-security.7 | 2 +- man/syncthing-stignore.5 | 2 +- man/syncthing-versioning.7 | 2 +- man/syncthing.1 | 2 +- 19 files changed, 375 insertions(+), 94 deletions(-) diff --git a/AUTHORS b/AUTHORS index 1543c4652..b8c9e51ba 100644 --- a/AUTHORS +++ b/AUTHORS @@ -76,6 +76,7 @@ Cromefire_ <26320625+cromefire@users.noreply.github.com> Cyprien Devillez Dale Visser Dan +Daniel Barczyk <46358936+DanielBarczyk@users.noreply.github.com> Daniel Bergmann (brgmnn) Daniel Harte (norgeous) Daniel Martí (mvdan) @@ -103,7 +104,7 @@ Felix Lampe Felix Unterpaintner (bigbear2nd) Francois-Xavier Gsell (zukoo) Frank Isemann (fti7) -Gahl Saraf +Gahl Saraf georgespatton ghjklw Gilli Sigurdsson (gillisig) @@ -117,6 +118,7 @@ Heiko Zuerker (Smiley73) Hugo Locurcio Iain Barnett Ian Johnson (anonymouse64) +ignacy123 Ikko Ashimine Ilya Brin <464157+ilyabrin@users.noreply.github.com> Iskander Sharipov (Alex) @@ -150,6 +152,7 @@ Jörg Thalheim Jędrzej Kula Kalle Laine Karol Różycki (krozycki) +Kebin Liu Keith Turner Kelong Cong (kc1212) Ken'ichi Kamada (kamadak) @@ -239,6 +242,7 @@ Roman Zaynetdinov (zaynetro) Ross Smith II (rasa) rubenbe Ruslan Yevdokymov <38809160+ruslanye@users.noreply.github.com> +Ryan Qian Ryan Sullivan (KayoticSully) Sacheendra Talluri (sacheendra) Scott Klupfel (kluppy) @@ -251,6 +255,7 @@ Stefan Kuntz (Stefan-Code) Stefan Tatschner (rumpelsepp) Steven Eckhoff Suhas Gundimeda (snugghash) +Syncthing Automation Syncthing Release Automation Taylor Khan (nelsonkhan) Thomas Hipp @@ -269,6 +274,7 @@ Unrud (Unrud) Veeti Paananen (veeti) Victor Buinsky (buinsky) Vil Brekin (Vilbrekin) +villekalliomaki <53118179+villekalliomaki@users.noreply.github.com> Vladimir Rusinov wangguoliang William A. Kennington III (wkennington) diff --git a/gui/default/assets/lang/lang-es-ES.json b/gui/default/assets/lang/lang-es-ES.json index cd1fab83e..67a0f5b3a 100644 --- a/gui/default/assets/lang/lang-es-ES.json +++ b/gui/default/assets/lang/lang-es-ES.json @@ -11,7 +11,7 @@ "Add Folder": "Agregar Carpeta", "Add Remote Device": "Añadir un dispositivo", "Add devices from the introducer to our device list, for mutually shared folders.": "Añadir dispositivos desde el introductor a nuestra lista de dispositivos, para las carpetas compartidas mutuamente.", - "Add ignore patterns": "Agregar patrones a ignorar", + "Add ignore patterns": "Añadir patrones a ignorar", "Add new folder?": "¿Agregar una carpeta nueva?", "Additionally the full rescan interval will be increased (times 60, i.e. new default of 1h). You can also configure it manually for every folder later after choosing No.": "De manera adicional, el intervalo de escaneo será incrementado (por ejemplo, times 60, establece un nuevo intervalo por defecto de una hora). También puedes configurarlo manualmente para cada carpeta tras elegir el número.", "Address": "Dirección", @@ -19,7 +19,7 @@ "Advanced": "Avanzado", "Advanced Configuration": "Configuración Avanzada", "All Data": "Todos los datos", - "All Time": "All Time", + "All Time": "Todo el tiempo", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Todos las carpetas compartidas con este equipo deben ser protegidas con una contraseña, de manera que todos los datos enviados sean ilegibles sin la contraseña dada.", "Allow Anonymous Usage Reporting?": "¿Deseas permitir el envío anónimo de informes de uso?", "Allowed Networks": "Redes permitidas", @@ -28,14 +28,14 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Un comando externo maneja el versionado. Tiene que eliminar el fichero de la carpeta compartida. Si la ruta a la aplicación contiene espacios, hay que escribirla entre comillas.", "Anonymous Usage Reporting": "Informe anónimo de uso", "Anonymous usage report format has changed. Would you like to move to the new format?": "El formato del informe anónimo de uso ha cambiado. ¿Quieres cambiar al nuevo formato?", - "Are you sure you want to continue?": "¿Está seguro(a) de que desea continuar?", - "Are you sure you want to override all remote changes?": "¿Está seguro(a) de que desea sobreescribir todos los cambios remotos?", - "Are you sure you want to permanently delete all these files?": "¿Estás seguro(a) de que quieres eliminar permanentemente todos estos ficheros?", + "Are you sure you want to continue?": "¿Seguro que quieres continuar?", + "Are you sure you want to override all remote changes?": "¿Seguro que quieres sobreescribir todos los cambios remotos?", + "Are you sure you want to permanently delete all these files?": "¿Seguro que quieres eliminar permanentemente todos estos archivos?", "Are you sure you want to remove device {%name%}?": "¿Estás seguro de que quieres quitar el dispositivo {{name}}?", "Are you sure you want to remove folder {%label%}?": "¿Estás seguro de que quieres quitar la carpeta {{label}}?", "Are you sure you want to restore {%count%} files?": "¿Estás seguro de que quieres restaurar {{count}} ficheros?", - "Are you sure you want to revert all local changes?": "¿Está seguro(a) de que desea revertir todos los cambios locales?", - "Are you sure you want to upgrade?": "¿Está seguro(a) de que desea actualizar?", + "Are you sure you want to revert all local changes?": "¿Seguro que quieres revertir todos los cambios locales?", + "Are you sure you want to upgrade?": "¿Seguro que quieres actualizar?", "Auto Accept": "Auto aceptar", "Automatic Crash Reporting": "Informe automático de errores", "Automatic upgrade now offers the choice between stable releases and release candidates.": "Ahora la actualización automática permite elegir entre versiones estables o versiones candidatas.", @@ -48,10 +48,10 @@ "Cancel": "Cancelar", "Changelog": "Registro de cambios", "Clean out after": "Limpiar tras", - "Cleaning Versions": "Limpiando Versiones", - "Cleanup Interval": "Intervalo de Limpieza", + "Cleaning Versions": "Limpiando versiones", + "Cleanup Interval": "Intervalo de limpieza", "Click to see discovery failures": "Clica para ver fallos de descubrimiento.", - "Click to see full identification string and QR code.": "Haga clic para ver la cadena de identificación completa y su código QR.", + "Click to see full identification string and QR code.": "Haz clic para ver la cadena de identificación completa y el código QR.", "Close": "Cerrar", "Command": "Acción", "Comment, when used at the start of a line": "Comentar, cuando se usa al comienzo de una línea", @@ -66,17 +66,17 @@ "Copied from original": "Copiado del original", "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 los siguientes Colaboradores:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Crear patrones a ignorar, sobreescribiendo un fichero existente en {{path}}.", - "Currently Shared With Devices": "Actualmente Compartida Con Los Equipos", - "Custom Range": "Custom Range", + "Currently Shared With Devices": "Actualmente compartida con los equipos", + "Custom Range": "Rango personalizado", "Danger!": "¡Peligro!", "Debugging Facilities": "Ayudas a la depuración", - "Default Configuration": "Configuración Por Defecto", - "Default Device": "Equipo Por Defecto", - "Default Folder": "Carpeta Por Defecto", + "Default Configuration": "Configuración por defecto", + "Default Device": "Equipo por defecto", + "Default Folder": "Carpeta por defecto", "Default Folder Path": "Ruta de la carpeta por defecto", - "Defaults": "Valores Por Defecto", + "Defaults": "Valores por defecto", "Delete": "Eliminar", - "Delete Unexpected Items": "Borrar Elementos Inesperados", + "Delete Unexpected Items": "Borrar elementos inesperados", "Deleted": "Eliminado", "Deselect All": "Deseleccionar Todo", "Deselect devices to stop sharing this folder with.": "Deseleccione los equipos con los cuales dejar de compartir esta carpeta.", @@ -130,7 +130,7 @@ "Error": "Error", "External File Versioning": "Versionado externo de fichero", "Failed Items": "Elementos fallidos", - "Failed to load file versions.": "Failed to load file versions.", + "Failed to load file versions.": "Error al cargar las versiones del archivo.", "Failed to load ignore patterns.": "Fallo al cargar patrones a ignorar", "Failed to setup, retrying": "Fallo al configurar, reintentando", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Se espera un fallo al conectar a los servidores IPv6 si no hay conectividad IPv6.", @@ -185,9 +185,9 @@ "Keep Versions": "Mantener versiones", "LDAP": "LDAP", "Largest First": "Más grande primero", - "Last 30 Days": "Last 30 Days", - "Last 7 Days": "Last 7 Days", - "Last Month": "Last Month", + "Last 30 Days": "Últimos 30 días", + "Last 7 Days": "Últimos 7 días", + "Last Month": "Último mes", "Last Scan": "Último escaneo", "Last seen": "Visto por última vez", "Latest Change": "Último Cambio", @@ -379,18 +379,18 @@ "The rate limit must be a non-negative number (0: no limit)": "El límite de velocidad debe ser un número no negativo (0: sin límite)", "The rescan interval must be a non-negative number of seconds.": "El intervalo de actualización debe ser un número positivo de segundos.", "There are no devices to share this folder with.": "No hay equipos con los cuales compartir esta carpeta.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "No hay versiones de archivo que restaurar.", "There are no folders to share with this device.": "No hay carpetas para compartir con este equipo.", "They are retried automatically and will be synced when the error is resolved.": "Se reintentarán de forma automática y se sincronizarán cuando se resuelva el error.", "This Device": "Este Dispositivo", - "This Month": "This Month", + "This Month": "Este mes", "This can easily give hackers access to read and change any files on your computer.": "Esto podría permitir fácilmente el acceso a hackers para leer y modificar cualquier fichero de tu equipo.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Este dispositivo no puede descubrir automáticamente a otros dispositivos o anunciar su propia dirección para que sea encontrado con otros. Solo dispositivos con direcciones configuradas como estáticas pueden conectarse.", "This is a major version upgrade.": "Hay una actualización importante.", "This setting controls the free space required on the home (i.e., index database) disk.": "Este ajuste controla el espacio libre necesario en el disco principal (por ejemplo, el índice de la base de datos).", "Time": "Hora", "Time the item was last modified": "Tiempo en el que se modificó el ítem por última vez", - "Today": "Today", + "Today": "Hoy", "Trash Can File Versioning": "Versionado de archivos de la papelera", "Type": "Tipo", "UNIX Permissions": "Permisos de UNIX", @@ -402,9 +402,9 @@ "Unignore": "Designorar", "Unknown": "Desconocido", "Unshared": "No compartido", - "Unshared Devices": "Equipos no Compartidos", - "Unshared Folders": "Carpetas no Compartidas", - "Untrusted": "No Confiable", + "Unshared Devices": "Equipos no compartidos", + "Unshared Folders": "Carpetas no compartidas", + "Untrusted": "No confiable", "Up to Date": "Actualizado", "Updated": "Actualizado", "Upgrade": "Actualizar", @@ -420,9 +420,9 @@ "Versions": "Versiones", "Versions Path": "Ruta de las versiones", "Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.": "Las versiones se borran automáticamente si son más antiguas que la edad máxima o exceden el número de ficheros permitidos en un intervalo.", - "Waiting to Clean": "Esperando para Limpiar", - "Waiting to Scan": "Esperando para Escanear", - "Waiting to Sync": "Esperando para Sincronizar", + "Waiting to Clean": "Esperando para limpiar", + "Waiting to Scan": "Esperando para escanear", + "Waiting to Sync": "Esperando para sincronizar", "Warning": "Advertencia", "Warning, this path is a parent directory of an existing folder \"{%otherFolder%}\".": "¡Peligro! Esta ruta es un directorio principal de la carpeta ya existente \"{{otherFolder}}\".", "Warning, this path is a parent directory of an existing folder \"{%otherFolderLabel%}\" ({%otherFolder%}).": "'Peligro! Esta ruta es un subdirectorio de la carpeta ya existente \"{{otherFolderLabel}}\" ({{otherFolder}}).", @@ -435,7 +435,7 @@ "When adding a new device, keep in mind that this device must be added on the other side too.": "Cuando añada un nuevo dispositivo, tenga en cuenta que este debe añadirse también en el otro lado.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Cuando añada una nueva carpeta, tenga en cuenta que su ID se usa para unir carpetas entre dispositivos. Son sensibles a las mayúsculas y deben coincidir exactamente entre todos los dispositivos.", "Yes": "Si", - "Yesterday": "Yesterday", + "Yesterday": "Ayer", "You can also select one of these nearby devices:": "Puedes seleccionar también uno de estos dispositivos cercanos:", "You can change your choice at any time in the Settings dialog.": "Puedes cambiar tu elección en cualquier momento en el panel de Ajustes.", "You can read more about the two release channels at the link below.": "Puedes leer más sobre los dos método de publicación de versiones en el siguiente enlace.", @@ -443,7 +443,7 @@ "You have no ignored folders.": "No tienes carpetas ignoradas.", "You have unsaved changes. Do you really want to discard them?": "Tienes cambios sin guardar. ¿Quieres descartarlos?", "You must keep at least one version.": "Debes mantener al menos una versión.", - "You should never add or change anything locally in a \"{%receiveEncrypted%}\" folder.": "Nunca debe agregar o cambiar nada localmente en una carpeta \"{{receiveEncrypted}}\".", + "You should never add or change anything locally in a \"{%receiveEncrypted%}\" folder.": "Nunca debes añadir o cambiar nada localmente en una carpeta \"{{receiveEncrypted}}\".", "days": "días", "directories": "directorios", "files": "archivos", diff --git a/gui/default/syncthing/core/aboutModalView.html b/gui/default/syncthing/core/aboutModalView.html index 22fe7271b..d06bb5ad0 100644 --- a/gui/default/syncthing/core/aboutModalView.html +++ b/gui/default/syncthing/core/aboutModalView.html @@ -19,7 +19,7 @@

The Syncthing Authors

-Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Alexander Graf, Alexandre Viau, Aman Gupta, Anderson Mesquita, Andrew Dunham, Andrew Rabert, Andrey D, André Colomb, Anjan Momi, Antoine Lamielle, Antony Male, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Audrius Butkevicius, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Schulz, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Caleb Callaway, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Bergmann, Daniel Harte, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Evgeny Kuznetsov, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, Jakob Borg, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jesse Lucas, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars K.W. Gohlke, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lode Hoste, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Ploujnikov, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Nate Morrison, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Philippe Schommers, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Sullivan, Sacheendra Talluri, Scott Klupfel, Sergey Mishin, Shaarad Dalvi, Simon Frei, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Stefan Tatschner, Steven Eckhoff, Suhas Gundimeda, Syncthing Release Automation, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tomasz Wilczyński, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Wulf Weich, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], dependabot-preview[bot], dependabot[bot], derekriemer, desbma, georgespatton, ghjklw, greatroar, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙 +Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male, Ben Schulz, Caleb Callaway, Daniel Harte, Evgeny Kuznetsov, Lars K.W. Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ryan Sullivan, Sergey Mishin, Stefan Tatschner, Tomasz Wilczyński, Wulf Weich, dependabot-preview[bot], dependabot[bot], greatroar, Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Aman Gupta, Andrew Dunham, Andrew Rabert, Andrey D, Anjan Momi, Antoine Lamielle, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Kebin Liu, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel, Shaarad Dalvi, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Syncthing Automation, Syncthing Release Automation, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], derekriemer, desbma, georgespatton, ghjklw, ignacy123, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, villekalliomaki, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙

diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index 9109ea802..f96ef45f5 100644 --- a/man/stdiscosrv.1 +++ b/man/stdiscosrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STDISCOSRV" "1" "Feb 20, 2022" "v1" "Syncthing" +.TH "STDISCOSRV" "1" "Feb 23, 2022" "v1" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index e3e792d1d..367f77e66 100644 --- a/man/strelaysrv.1 +++ b/man/strelaysrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STRELAYSRV" "1" "Feb 20, 2022" "v1" "Syncthing" +.TH "STRELAYSRV" "1" "Feb 23, 2022" "v1" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index 01365cc86..2fe863869 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-BEP" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-bep \- Block Exchange Protocol v1 .SH INTRODUCTION AND DEFINITIONS @@ -48,7 +48,7 @@ for the last block which may be smaller. .sp The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this -document are to be interpreted as described in [RFC 2119](\fI\%https://datatracker.ietf.org/doc/html/rfc2119\fP). +document are to be interpreted as described in \fI\%RFC 2119\fP <\fBhttps://datatracker.ietf.org/doc/html/rfc2119.html\fP>\&. .SH TRANSPORT AND AUTHENTICATION .sp BEP is deployed as the highest level in a protocol stack, with the lower diff --git a/man/syncthing-config.5 b/man/syncthing-config.5 index 072bb93bb..c93fbb7c5 100644 --- a/man/syncthing-config.5 +++ b/man/syncthing-config.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-CONFIG" "5" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS @@ -904,9 +904,9 @@ untrusted\&. .UNINDENT .UNINDENT .sp -There must be exactly one \fBgui\fP element. The GUI configuration is also used -by the rest\-api and the event\-api\&. The following attributes may -be set on the \fBgui\fP element: +There must be exactly one \fBgui\fP element. The GUI configuration is also used by +the /dev/rest and the /dev/events\&. The following attributes may be +set on the \fBgui\fP element: .INDENT 0.0 .TP .B enabled @@ -922,7 +922,8 @@ still possible but not required. .INDENT 0.0 .TP .B debugging -This enables profiling and additional debugging endpoints in the rest\-api\&. +This enables /users/profiling and additional endpoints in the REST +API, see /rest/debug\&. .UNINDENT .sp The following child elements may be present: diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index 67f096e40..cd8a476c1 100644 --- a/man/syncthing-device-ids.7 +++ b/man/syncthing-device-ids.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-DEVICE-IDS" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-device-ids \- Understanding Device IDs .sp diff --git a/man/syncthing-event-api.7 b/man/syncthing-event-api.7 index f9eb45dd3..14cfed4e6 100644 --- a/man/syncthing-event-api.7 +++ b/man/syncthing-event-api.7 @@ -27,13 +27,13 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-EVENT-API" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION .sp Syncthing provides a simple long polling interface for exposing events from the -core utility towards a GUI. To receive events, see events\-get\&. +core utility towards a GUI. To receive events, see /rest/events\-get\&. .SH EVENT STRUCTURE .sp Each event is represented by an object similar to the following: diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index 35a29fff2..699dce2a5 100644 --- a/man/syncthing-faq.7 +++ b/man/syncthing-faq.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-FAQ" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 @@ -414,11 +414,11 @@ locally may be overwritten by those on other devices. .sp An alternative way is to shut down Syncthing, move the folder on disk (including the \fB\&.stfolder\fP marker), edit the path directly in \fBconfig.xml\fP in the -configuration folder (see config) and then start Syncthing again. +configuration folder (see /users/config) and then start Syncthing again. .SS How do I configure multiple users on a single machine? .sp Each user should run their own Syncthing instance. Be aware that you might need -to configure listening ports such that they do not overlap (see config). +to configure listening ports such that they do not overlap (see /users/config). .SS Does Syncthing support syncing between folders on the same system? .sp No. Syncthing is not designed to sync locally and the overhead involved in diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index 45395981f..bcb744b59 100644 --- a/man/syncthing-globaldisco.7 +++ b/man/syncthing-globaldisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-GLOBALDISCO" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index 9cd80aa22..fd2de3db4 100644 --- a/man/syncthing-localdisco.7 +++ b/man/syncthing-localdisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-LOCALDISCO" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-localdisco \- Local Discovery Protocol v4 .SH MODE OF OPERATION diff --git a/man/syncthing-networking.7 b/man/syncthing-networking.7 index 4b5bcc5c3..d28f8d8eb 100644 --- a/man/syncthing-networking.7 +++ b/man/syncthing-networking.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-NETWORKING" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index 0a7bff253..d4cbe271f 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-RELAY" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-relay \- Relay Protocol v1 .SH WHAT IS A RELAY? diff --git a/man/syncthing-rest-api.7 b/man/syncthing-rest-api.7 index 48cb60289..8f5f3d68b 100644 --- a/man/syncthing-rest-api.7 +++ b/man/syncthing-rest-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-REST-API" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp @@ -43,6 +43,13 @@ the configuration file. To use an API key, set the request header \fBX\-API\-Key\fP to the API key value. For example, \fBcurl \-X POST \-H "X\-API\-Key: abc123" http://localhost:8384/rest/...\fP can be used to invoke with \fBcurl\fP (add \fB\-k\fP flag when using HTTPS with a Syncthing generated or self signed certificate). +.SH RESULT PAGINATION +.sp +Some \fIGET\fP endpoints take optional \fBpage\fP and \fBperpage\fP arguments for +pagination. No more than \fBperpage\fP (defaults to 65536 if not given) result +entries are returned in an array. To access further entries, passing the +\fBpage\fP parameter will advance in the results by that many pages. The actually +used parameters are always returned as attributes in the response object. .SH SYSTEM ENDPOINTS .SS GET /rest/system/browse .sp @@ -594,7 +601,8 @@ error. The new error will be displayed on any active GUI clients. New in version 0.12.0. .sp -Returns the list of recent log entries. +Returns the list of recent log entries. The optional \fBsince\fP parameter limits +the results to message newer than the given timestamp in \fI\%RFC 3339\fP <\fBhttps://datatracker.ietf.org/doc/html/rfc3339.html\fP> format. .INDENT 0.0 .INDENT 3.5 .sp @@ -612,6 +620,9 @@ Returns the list of recent log entries. .fi .UNINDENT .UNINDENT +.SS GET /rest/system/log.txt +.sp +Returns the same information, formatted as a text log instead of a JSON object. .SS POST /rest/system/pause .sp Pause the given device or all devices. @@ -648,13 +659,14 @@ information for that folder will be erased: .sp .nf .ft C -$ curl \-X POST \-H "X\-API\-Key: abc123" http://localhost:8384/rest/system/reset?folder=ab1c2\-def3g +curl \-X POST \-H "X\-API\-Key: abc123" http://localhost:8384/rest/system/reset?folder=ab1c2\-def3g .ft P .fi .UNINDENT .UNINDENT .sp -\fBCaution\fP: See \fB\-\-reset\-database\fP for \fB\&.stfolder\fP creation side\-effect and caution regarding mountpoints. +\fBCaution\fP: See \fB\-\-reset\-database\fP for \fB\&.stfolder\fP creation +side\-effect and caution regarding mountpoints. .SS POST /rest/system/restart .sp Post with empty body to immediately restart Syncthing. @@ -827,8 +839,8 @@ Returns the current Syncthing version information. New in version 1.12.0. .sp -These endpoints facilitate access and modification of the configuration in a granular way. Config sent to the endpoints must be in the same -format as returned by the corresponding GET request. When posting the +These endpoints facilitate access and modification of the configuration in a granular way. Config sent to the endpoints must be in the +same format as returned by the corresponding GET request. When posting the configuration succeeds, the posted configuration is immediately applied, except for changes that require a restart. Query \fI\%/rest/config/restart\-required\fP to check if a restart is required. @@ -857,6 +869,20 @@ Put the desired folder\- respectively device\-ID in place of *id*. \fBGET\fP returns the folder/device for the given ID, \fBPUT\fP replaces the entire config, \fBPATCH\fP replaces only the given child objects and \fBDELETE\fP removes the folder/device. +.SS /rest/config/defaults/folder, /rest/config/defaults/device +.sp +\fBGET\fP returns a template folder / device configuration object with all default +values, which only needs a unique ID to be applied. \fBPUT\fP replaces the +default config (omitted values are reset to the hard\-coded defaults), \fBPATCH\fP +replaces only the given child objects. +.SS /rest/config/defaults/ignores +.sp +New in version 1.19.0. + +.sp +\fBGET\fP returns an object with a single \fBlines\fP attribute listing ignore +patterns to be used by default on folders, as an array of single\-line strings. +\fBPUT\fP replaces the default ignore patterns from an object of the same format. .SS /rest/config/options, /rest/config/ldap, /rest/config/gui .sp \fBGET\fP returns the respective object, \fBPUT\fP replaces the entire object and @@ -869,9 +895,9 @@ Concerns the mesh network structure. New in version 1.18.0. .sp -Remove records about a pending remote device which tried to connect. -Valid values for the \fBdevice\fP parameter are those from the -corresponding /rest/cluster\-pending\-devices\-get endpoint. +Remove records about a pending remote device which tried to connect. Valid +values for the \fBdevice\fP parameter are those from the corresponding +cluster\-pending\-devices\-get endpoint. .INDENT 0.0 .INDENT 3.5 .sp @@ -917,12 +943,11 @@ configured in our instance. New in version 1.18.0. .sp -Remove records about a pending folder announced from a remote device. -Valid values for the \fBfolder\fP and \fBdevice\fP parameters are those -from the corresponding /rest/cluster\-pending\-folders\-get -endpoint. The \fBdevice\fP parameter is optional and affects -announcements of this folder from the given device, or from \fIany\fP -device if omitted. +Remove records about a pending folder announced from a remote device. Valid +values for the \fBfolder\fP and \fBdevice\fP parameters are those from the +corresponding cluster\-pending\-folders\-get endpoint. The \fBdevice\fP +parameter is optional and affects announcements of this folder from the given +device, or from \fIany\fP device if omitted. .INDENT 0.0 .INDENT 3.5 .sp @@ -934,12 +959,13 @@ $ curl \-X DELETE \-H "X\-API\-Key: abc123" http://localhost:8384/rest/cluster/p .UNINDENT .UNINDENT .sp -Returns status 200 and no content upon success, or status 500 and a -plain text error on failure. A /events/pendingfolderschanged -event will be generated in response. +Returns status 200 and no content upon success, or status 500 and a plain text +error on failure. A /events/pendingfolderschanged event will be +generated in response. .sp -For a more permanent effect, also for future announcements of the same -folder ID, the folder should be ignored in the configuration instead. +For a more permanent effect, also for future announcements of the same folder +ID, the folder should be ignored in the configuration +instead. .SS GET /rest/cluster/pending/folders .sp New in version 1.13.0. @@ -986,6 +1012,115 @@ Other offering devices are also omitted from the result. .fi .UNINDENT .UNINDENT +.SH FOLDER ENDPOINTS +.sp +Runtime state of the individual shared folders. +.SS GET /rest/folder/errors +.sp +New in version 0.14.53. + +.sp +Takes one mandatory parameter, \fBfolder\fP, and returns the list of errors +encountered during scanning or pulling. +.sp +The results can be paginated using the common pagination parameters\&. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{ + "folder": "nnhic\-sxuae", + "errors": [ + { + "path": "noperm.txt", + "error": "hashing: open /path/to/folder/noperm.txt: permission denied" + } + ], + "page": 1, + "perpage": 100 +} +.ft P +.fi +.UNINDENT +.UNINDENT +.SS GET /rest/folder/pullerrors +.sp +Deprecated since version v0.14.53: This endpoint still works as before but is deprecated. Use +folder\-errors\-get instead, which returns the same information. +.sp +See \fI\%d510e3cca3d5caae42121fa206b3decc981ae59e\fP <\fBhttps://github.com/syncthing/syncthing/commit/d510e3cca3d5caae42121fa206b3decc981ae59e\fP> + +.SS GET /rest/folder/versions +.sp +New in version 0.14.44. + +.sp +Takes one mandatory parameter, \fBfolder\fP, and returns the list of archived +files that could be recovered. How many versions are available depends on the +/users/versioning configuration. Each entry specifies when the file +version was archived as the \fBversionTime\fP, the \fBmodTime\fP when it was last +modified before being archived, and the size in bytes. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{ + "dir1/dir2/bar": [ + { + "versionTime": "2022\-02\-06T20:44:12+01:00", + "modTime": "2021\-01\-14T13:21:22+01:00", + "size": 4 + } + ], + "baz": [ + { + "versionTime": "2022\-02\-06T20:44:20+01:00", + "modTime": "2021\-01\-14T13:23:49+01:00", + "size": 4 + } + ], + "foo": [ + { + "versionTime": "2022\-02\-06T20:55:31+01:00", + "modTime": "2022\-02\-06T20:44:13+01:00", + "size": 4 + }, + { + "versionTime": "2022\-02\-06T20:44:20+01:00", + "modTime": "2021\-01\-14T13:21:16+01:00", + "size": 4 + } + ] +} +.ft P +.fi +.UNINDENT +.UNINDENT +.SS POST /rest/folder/versions +.sp +Restore archived versions of a given set of files. Expects an object with +attributes named after the relative file paths, with timestamps as values +matching valid \fBversionTime\fP entries in the corresponding +folder\-versions\-get response object. +.sp +Takes the mandatory parameter \fBfolder\fP (folder ID). Returns an object +containing any error messages that occurred during restoration of the file, with +the file path as attribute name. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +curl \-X POST \-H X\-API\-key:... http://127.0.0.1:8384/rest/folder/versions?folder=default \-d \(aq{ + "dir1/dir2/bar": "2022\-02\-06T20:44:12+01:00", + "baz": "2022\-02\-06T20:44:20+01:00" +}\(aq +.ft P +.fi +.UNINDENT +.UNINDENT .SH DATABASE ENDPOINTS .SS GET /rest/db/browse .sp @@ -1233,19 +1368,62 @@ provides a list of strings which represent globbing patterns described by gobwas .UNINDENT .SS POST /rest/db/ignores .sp -Expects a format similar to the output of \fBGET\fP call, but only +Expects a format similar to the output of db\-ignores\-get call, but only containing the \fBignore\fP field (\fBexpanded\fP field should be omitted). It takes one parameter, \fBfolder\fP, and either updates the content of the \fB\&.stignore\fP echoing it back as a response, or returns an error. +.SS GET /rest/db/localchanged +.sp +New in version 0.14.55. + +.sp +Takes one mandatory parameter, \fBfolder\fP, and returns the list of files which +were changed locally in a receive\-only folder. Thus they differ from the global +state and could be reverted by pulling from remote devices again, see +db\-revert\-post\&. +.sp +The results can be paginated using the common pagination parameters\&. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{ + "files": [ + { + "flags": "0755", + "sequence": 6, + "modified": "2015\-04\-20T23:06:12+09:00", + "name": "ls", + "size": 34640, + "version": [ + "5157751870738175669:1" + ] + } + ], + "page": 1, + "perpage": 100 +} +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +This is an expensive call, increasing CPU and RAM usage on the device. +Use sparingly. +.UNINDENT +.UNINDENT .SS GET /rest/db/need .sp Takes one mandatory parameter, \fBfolder\fP, and returns lists of files which are needed by this device in order for it to become in sync. .sp -Furthermore takes an optional \fBpage\fP and \fBperpage\fP arguments for pagination. -Pagination happens, across the union of all needed files, that is \- across all -3 sections of the response. -For example, given the current need state is as follows: +The results can be paginated using the common pagination parameters\&. Pagination happens, across the union of all needed files, +that is \- across all 3 sections of the response. For example, given the current +need state is as follows: .INDENT 0.0 .IP 1. 3 \fBprogress\fP has 15 items @@ -1262,8 +1440,13 @@ section in the response will have 10 items. If you issue a request query with 2 items. If you issue a query for \fBpage=3\fP and \fBperpage=10\fP, you will only have the last 10 items of the \fBrest\fP section. .sp -In all these calls, \fBtotal\fP will be 30 to indicate the total number of -available items. +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +Return format changed in version 0.14.43, removing the \fBtotal\fP count +attribute. +.UNINDENT +.UNINDENT .INDENT 0.0 .INDENT 3.5 .sp @@ -1293,8 +1476,7 @@ available items. ... ], "page": 1, - "perpage": 100, - "total": 2000 + "perpage": 100 } .ft P .fi @@ -1304,7 +1486,8 @@ available items. \fBNOTE:\fP .INDENT 0.0 .INDENT 3.5 -This is an expensive call, increasing CPU and RAM usage on the device. Use sparingly. +This is an expensive call, increasing CPU and RAM usage on the device. +Use sparingly. .UNINDENT .UNINDENT .SS POST /rest/db/override @@ -1338,7 +1521,50 @@ curl \-X POST http://127.0.0.1:8384/rest/db/prio?folder=default&file=foo/bar .UNINDENT .UNINDENT .sp -Response contains the same output as \fBGET /rest/db/need\fP +Response contains the same output as db\-need\-get\&. +.SS GET /rest/db/remoteneed +.sp +New in version 0.14.43. + +.sp +Takes the mandatory parameters \fBfolder\fP and \fBdevice\fP, and returns the list +of files which are needed by that remote device in order for it to become in +sync with the shared folder. +.sp +The results can be paginated using the common pagination parameters\&. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{ + "files": [ + { + "flags": "0755", + "sequence": 6, + "modified": "2015\-04\-20T23:06:12+09:00", + "name": "ls", + "size": 34640, + "version": [ + "5157751870738175669:1" + ] + } + ], + "page": 1, + "perpage": 100 +} +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +This is an expensive call, increasing CPU and RAM usage on the device. +Use sparingly. +.UNINDENT +.UNINDENT .SS POST /rest/db/revert .sp New in version 0.14.50. @@ -1503,6 +1729,11 @@ To receive only a limited number of events, add the \fBlimit=\fP parameter wi suitable value for \fBn\fP and only the \fIlast\fP \fBn\fP events will be returned. This can be used to catch up with the latest event ID after a disconnection for example: \fB/rest/events?since=0&limit=1\fP\&. +.SS GET /rest/events/disk +.sp +This convenience endpoint provides the same event stream, but pre\-filtered to show +only /events/localchangedetected and /events/remotechangedetected +event types. The \fBevents\fP parameter is not used. .SH STATISTICS ENDPOINTS .SS GET /rest/stats/device .sp @@ -1532,14 +1763,13 @@ last scan time and the last synced file. .sp .nf .ft C -$ curl \-s http://localhost:8384/rest/stats/folder | json { - "folderid" : { + "folderid": { "lastScan": "2016\-06\-02T13:28:01.288181412\-04:00", - "lastFile" : { - "filename" : "file/name", - "at" : "2015\-04\-16T22:04:18.3066971+01:00" - } + "lastFile": { + "filename": "file/name", + "at": "2015\-04\-16T22:04:18.3066971+01:00" + } } } .ft P @@ -1663,6 +1893,50 @@ Returns the data sent in the anonymous usage report. .fi .UNINDENT .UNINDENT +.SH DEBUG ENDPOINTS +.SS Debug Endpoints +.sp +These endpoints require the \fBgui.debugging\fP configuration option to +be enabled and yield an access denied error code otherwise. +.SS GET /rest/debug/peerCompletion +.sp +Summarizes the completion precentage for each remote device. Returns an object +with device IDs as keys and an integer percentage as values. +.SS GET /rest/debug/httpmetrics +.sp +Returns statistics about each served REST API endpoint, to diagnose how much +time was spent generating the responses. +.SS GET /rest/debug/cpuprof +.sp +Used to capture a profile of what Syncthing is doing on the CPU. See +/users/profiling\&. +.SS GET /rest/debug/heapprof +.sp +Used to capture a profile of what Syncthing is doing with the heap memory. See +/users/profiling\&. +.SS GET /rest/debug/support +.sp +Collects information about the running instance for troubleshooting purposes. +Returns a “support bundle” as a zipped archive, which should be sent to the +developers after verifying it contains no sensitive personal information. +Credentials for the web GUI and the API key are automatically redacted already. +.SS GET /rest/debug/file +.sp +Shows diagnostics about a certain file in a shared folder. Takes the \fBfolder\fP +(folder ID) and \fBfile\fP (folder relative path) parameters. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +$ curl \-H X\-API\-Key:... "http://localhost:8384/rest/debug/file?folder=default&file=foo/bar" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The returned object contains the same info as db\-file\-get, plus a summary +of \fBglobalVersions\fP\&. .SH AUTHOR The Syncthing Authors .SH COPYRIGHT diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index 7cb3a0c6c..39ac9cfaa 100644 --- a/man/syncthing-security.7 +++ b/man/syncthing-security.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-SECURITY" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index 12eb33977..6442d46f9 100644 --- a/man/syncthing-stignore.5 +++ b/man/syncthing-stignore.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-STIGNORE" "5" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-stignore \- Prevent files from being synchronized to other nodes .SH SYNOPSIS diff --git a/man/syncthing-versioning.7 b/man/syncthing-versioning.7 index e6fd450af..42a99dc92 100644 --- a/man/syncthing-versioning.7 +++ b/man/syncthing-versioning.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-VERSIONING" "7" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing-versioning \- Keep automatic backups of deleted files by other nodes .sp diff --git a/man/syncthing.1 b/man/syncthing.1 index 4f25f6c24..5fa53ce47 100644 --- a/man/syncthing.1 +++ b/man/syncthing.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING" "1" "Feb 20, 2022" "v1" "Syncthing" +.TH "SYNCTHING" "1" "Feb 23, 2022" "v1" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS From bd0acd04b17a38a51fb57d1513fc04c72c8fa05b Mon Sep 17 00:00:00 2001 From: greatroar <61184462+greatroar@users.noreply.github.com> Date: Mon, 28 Feb 2022 09:13:30 +0100 Subject: [PATCH 15/37] lib/protocol: Use one mutex for rawConnect.awaiting and nextID (#8198) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Having a separate mutex for the three or four instructions needed to fetch and increment nextID means the overhead exceeds the cost of this operation. nextID is now handled inside the critical section for awaiting instead, while the more expensive channel creation has been moved outside it. This is mostly a simplification, though it may have minor performance benefits in some situations. The single-threaded sender benchmark shows no significant difference: name old speed new speed delta RequestsRawTCP-8 55.3MB/s ± 7% 56.6MB/s ± 6% ~ (p=0.190 n=10+10) RequestsTLSoTCP-8 20.5MB/s ±20% 20.8MB/s ± 8% ~ (p=0.604 n=10+9) --- lib/protocol/protocol.go | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/lib/protocol/protocol.go b/lib/protocol/protocol.go index 57a2661ed..61ff3a3e5 100644 --- a/lib/protocol/protocol.go +++ b/lib/protocol/protocol.go @@ -180,14 +180,12 @@ type rawConnection struct { cw *countingWriter closer io.Closer // Closing the underlying connection and thus cr and cw + awaitingMut sync.Mutex // Protects awaiting and nextID. awaiting map[int]chan asyncResult - awaitingMut sync.Mutex + nextID int idxMut sync.Mutex // ensures serialization of Index calls - nextID int - nextIDMut sync.Mutex - inbox chan message outbox chan asyncMessage closeBox chan asyncMessage @@ -336,17 +334,15 @@ func (c *rawConnection) IndexUpdate(ctx context.Context, folder string, idx []Fi // Request returns the bytes for the specified block after fetching them from the connected peer. func (c *rawConnection) Request(ctx context.Context, folder string, name string, blockNo int, offset int64, size int, hash []byte, weakHash uint32, fromTemporary bool) ([]byte, error) { - c.nextIDMut.Lock() - id := c.nextID - c.nextID++ - c.nextIDMut.Unlock() + rc := make(chan asyncResult, 1) c.awaitingMut.Lock() + id := c.nextID + c.nextID++ if _, ok := c.awaiting[id]; ok { c.awaitingMut.Unlock() panic("id taken") } - rc := make(chan asyncResult, 1) c.awaiting[id] = rc c.awaitingMut.Unlock() From 19993834439d08e370a8ff46a47f1cf21e006203 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Colomb?= Date: Thu, 3 Mar 2022 15:27:17 +0100 Subject: [PATCH 16/37] Rename environment variable STCPUPROFILE for consistency. (#8200) --- cmd/syncthing/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index 98175f80f..3b9cfe59b 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -173,7 +173,7 @@ type serveOptions struct { DebugGUIAssetsDir string `placeholder:"PATH" help:"Directory to load GUI assets from" env:"STGUIASSETS"` DebugPerfStats bool `env:"STPERFSTATS" help:"Write running performance statistics to perf-$pid.csv (Unix only)"` DebugProfileBlock bool `env:"STBLOCKPROFILE" help:"Write block profiles to block-$pid-$timestamp.pprof every 20 seconds"` - DebugProfileCPU bool `help:"Write a CPU profile to cpu-$pid.pprof on exit" env:"CPUPROFILE"` + DebugProfileCPU bool `help:"Write a CPU profile to cpu-$pid.pprof on exit" env:"STCPUPROFILE"` DebugProfileHeap bool `env:"STHEAPPROFILE" help:"Write heap profiles to heap-$pid-$timestamp.pprof each time heap usage increases"` DebugProfilerListen string `placeholder:"ADDR" env:"STPROFILER" help:"Network profiler listen address"` DebugResetDatabase bool `name:"reset-database" help:"Reset the database, forcing a full rescan and resync"` From e974c13c7a25d7dcfab535f72232fe74394a945a Mon Sep 17 00:00:00 2001 From: Syncthing Release Automation Date: Mon, 7 Mar 2022 03:45:51 +0000 Subject: [PATCH 17/37] gui, man, authors: Update docs, translations, and contributors --- gui/default/assets/lang/lang-ja.json | 10 +++++----- man/stdiscosrv.1 | 2 +- man/strelaysrv.1 | 2 +- man/syncthing-bep.7 | 2 +- man/syncthing-config.5 | 2 +- man/syncthing-device-ids.7 | 2 +- man/syncthing-event-api.7 | 2 +- man/syncthing-faq.7 | 2 +- man/syncthing-globaldisco.7 | 2 +- man/syncthing-localdisco.7 | 2 +- man/syncthing-networking.7 | 2 +- man/syncthing-relay.7 | 2 +- man/syncthing-rest-api.7 | 2 +- man/syncthing-security.7 | 2 +- man/syncthing-stignore.5 | 2 +- man/syncthing-versioning.7 | 2 +- man/syncthing.1 | 27 +++++++++++++++++++++------ 17 files changed, 41 insertions(+), 26 deletions(-) diff --git a/gui/default/assets/lang/lang-ja.json b/gui/default/assets/lang/lang-ja.json index 645b73c5f..6b6582957 100644 --- a/gui/default/assets/lang/lang-ja.json +++ b/gui/default/assets/lang/lang-ja.json @@ -88,7 +88,7 @@ "Device Name": "デバイス名", "Device is untrusted, enter encryption password": "Device is untrusted, enter encryption password", "Device rate limits": "デバイス速度制限", - "Device that last modified the item": "Device that last modified the item", + "Device that last modified the item": "項目を最後に変更したデバイス", "Devices": "デバイス", "Disable Crash Reporting": "クラッシュレポートを無効にする", "Disabled": "無効", @@ -202,7 +202,7 @@ "Local Discovery": "LAN内で探索", "Local State": "ローカル状態", "Local State (Total)": "ローカル状態 (合計)", - "Locally Changed Items": "Locally Changed Items", + "Locally Changed Items": "ローカルで変更された項目", "Log": "ログ", "Log tailing paused. Scroll to the bottom to continue.": "ログのリアルタイム表示を停止しています。下部までスクロールすると再開されます。", "Logs": "ログ", @@ -211,8 +211,8 @@ "Maximum Age": "最大保存日数", "Metadata Only": "メタデータのみ", "Minimum Free Disk Space": "同期を停止する最小空きディスク容量", - "Mod. Device": "Mod. Device", - "Mod. Time": "Mod. Time", + "Mod. Device": "変更デバイス", + "Mod. Time": "変更日時", "Move to top of queue": "最優先にする", "Multi level wildcard (matches multiple directory levels)": "多階層ワイルドカード (複数のディレクトリ階層にマッチします)", "Never": "記録なし", @@ -389,7 +389,7 @@ "This is a major version upgrade.": "メジャーアップグレードです。", "This setting controls the free space required on the home (i.e., index database) disk.": "この設定は、ホームディスク (インデックスデータベースがあるディスク) で必要な空き容量を管理します。", "Time": "日時", - "Time the item was last modified": "Time the item was last modified", + "Time the item was last modified": "項目を最後に変更した日時", "Today": "Today", "Trash Can File Versioning": "ゴミ箱によるバージョン管理", "Type": "タイプ", diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index f96ef45f5..ea3803f07 100644 --- a/man/stdiscosrv.1 +++ b/man/stdiscosrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STDISCOSRV" "1" "Feb 23, 2022" "v1" "Syncthing" +.TH "STDISCOSRV" "1" "Mar 03, 2022" "v1" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index 367f77e66..e34077fb2 100644 --- a/man/strelaysrv.1 +++ b/man/strelaysrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STRELAYSRV" "1" "Feb 23, 2022" "v1" "Syncthing" +.TH "STRELAYSRV" "1" "Mar 03, 2022" "v1" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index 2fe863869..92a70c301 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-BEP" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-bep \- Block Exchange Protocol v1 .SH INTRODUCTION AND DEFINITIONS diff --git a/man/syncthing-config.5 b/man/syncthing-config.5 index c93fbb7c5..84a310286 100644 --- a/man/syncthing-config.5 +++ b/man/syncthing-config.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-CONFIG" "5" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index cd8a476c1..b23437e4f 100644 --- a/man/syncthing-device-ids.7 +++ b/man/syncthing-device-ids.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-DEVICE-IDS" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-device-ids \- Understanding Device IDs .sp diff --git a/man/syncthing-event-api.7 b/man/syncthing-event-api.7 index 14cfed4e6..27067ec60 100644 --- a/man/syncthing-event-api.7 +++ b/man/syncthing-event-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-EVENT-API" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index 699dce2a5..067860a6e 100644 --- a/man/syncthing-faq.7 +++ b/man/syncthing-faq.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-FAQ" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index bcb744b59..81a9a0180 100644 --- a/man/syncthing-globaldisco.7 +++ b/man/syncthing-globaldisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-GLOBALDISCO" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index fd2de3db4..dce3cf885 100644 --- a/man/syncthing-localdisco.7 +++ b/man/syncthing-localdisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-LOCALDISCO" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-localdisco \- Local Discovery Protocol v4 .SH MODE OF OPERATION diff --git a/man/syncthing-networking.7 b/man/syncthing-networking.7 index d28f8d8eb..a8a72eb5f 100644 --- a/man/syncthing-networking.7 +++ b/man/syncthing-networking.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-NETWORKING" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index d4cbe271f..0273f6faa 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-RELAY" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-relay \- Relay Protocol v1 .SH WHAT IS A RELAY? diff --git a/man/syncthing-rest-api.7 b/man/syncthing-rest-api.7 index 8f5f3d68b..5478d9b5b 100644 --- a/man/syncthing-rest-api.7 +++ b/man/syncthing-rest-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-REST-API" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index 39ac9cfaa..05587bff3 100644 --- a/man/syncthing-security.7 +++ b/man/syncthing-security.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-SECURITY" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index 6442d46f9..7363bfce8 100644 --- a/man/syncthing-stignore.5 +++ b/man/syncthing-stignore.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-STIGNORE" "5" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-stignore \- Prevent files from being synchronized to other nodes .SH SYNOPSIS diff --git a/man/syncthing-versioning.7 b/man/syncthing-versioning.7 index 42a99dc92..9db385c41 100644 --- a/man/syncthing-versioning.7 +++ b/man/syncthing-versioning.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-VERSIONING" "7" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing-versioning \- Keep automatic backups of deleted files by other nodes .sp diff --git a/man/syncthing.1 b/man/syncthing.1 index 5fa53ce47..005a4e58e 100644 --- a/man/syncthing.1 +++ b/man/syncthing.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING" "1" "Feb 23, 2022" "v1" "Syncthing" +.TH "SYNCTHING" "1" "Mar 03, 2022" "v1" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS @@ -537,10 +537,17 @@ Write a CPU profile to \fBcpu\-$pid.pprof\fP on exit. Used for debugging internal deadlocks; sets debug sensitivity. Use only under direction of a developer. .TP -.B STDEADLOCKTHRESHOLD +.B STLOCKTHRESHOLD Used for debugging internal deadlocks; sets debug sensitivity. Use only under direction of a developer. .TP +.B STGUIADDRESS +Override GUI listen address. Equivalent to passing \fI\%\-\-gui\-address\fP\&. +.TP +.B STGUIAPIKEY +Override the API key needed to access the GUI / REST API. Equivalent to +passing \fI\%\-\-gui\-apikey\fP\&. +.TP .B STGUIASSETS Directory to load GUI assets from. Overrides compiled in assets. Useful for developing webgui, commonly use \fBSTGUIASSETS=gui bin/syncthing\fP\&. @@ -557,13 +564,13 @@ increases. .B STNODEFAULTFOLDER Don’t create a default folder when starting for the first time. This variable will be ignored anytime after the first run. Equivalent to the -\fB\-\-no\-default\-folder\fP flag. +\fI\%\-\-no\-default\-folder\fP flag. .TP .B STNORESTART -Equivalent to the \fB\-\-no\-restart\fP flag. +Equivalent to the \fI\%\-\-no\-restart\fP flag. .TP .B STNOUPGRADE -Disable automatic upgrades. Equivalent to the \fB\-\-no\-upgrade\fP flag. +Disable automatic upgrades. Equivalent to the \fI\%\-\-no\-upgrade\fP flag. .TP .B STPROFILER Set to a listen address such as “127.0.0.1:9090” to start the profiler with @@ -577,10 +584,14 @@ Windows. .TP .B STRECHECKDBEVERY Time before folder statistics (file, dir, … counts) are recalculated from -scratch. The given duration must be parseable by Go’s time.ParseDuration. If +scratch. The given duration must be parseable by Go’s \fBtime.ParseDuration\fP\&. If missing or not parseable, the default value of 1 month is used. To force recalculation on every startup, set it to \fB1s\fP\&. .TP +.B STGCINDIRECTEVERY +Sets the time interval in between database garbage collection runs. The +given duration must be parseable by Go’s \fBtime.ParseDuration\fP\&. +.TP .B GOMAXPROCS Set the maximum number of CPU cores to use. Defaults to all available CPU cores. @@ -589,6 +600,10 @@ cores. Percentage of heap growth at which to trigger GC. Default is 100. Lower numbers keep peak memory usage down, at the price of CPU usage (i.e. performance). +.TP +.B LOGGER_DISCARD +Hack to completely disable logging, for example when running benchmarks. +Set to any nonempty value to use it. .UNINDENT .SH SEE ALSO .sp From a3a4da6e3eae5e7b457f96791d1ea9e8e6d24cc2 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Tue, 8 Mar 2022 07:56:42 +0100 Subject: [PATCH 18/37] gui: Use versioned link to documentation in bottom bar (#8204) --- gui/default/index.html | 2 +- .../syncthing/core/syncthingController.js | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/gui/default/index.html b/gui/default/index.html index cb76bf791..9e75418e7 100644 --- a/gui/default/index.html +++ b/gui/default/index.html @@ -892,7 +892,7 @@
From 6862dd04ab621442486e6041b978f0ddb58ff9be Mon Sep 17 00:00:00 2001 From: tomasz1986 Date: Sat, 12 Mar 2022 22:44:56 +0100 Subject: [PATCH 21/37] gui: Allow to translate calendar buttons in Restore Versions modal (#8213) --- gui/default/assets/lang/lang-en.json | 1 + gui/default/syncthing/core/syncthingController.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/gui/default/assets/lang/lang-en.json b/gui/default/assets/lang/lang-en.json index 2223e8efd..843b41612 100644 --- a/gui/default/assets/lang/lang-en.json +++ b/gui/default/assets/lang/lang-en.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.", "Anonymous Usage Reporting": "Anonymous Usage Reporting", "Anonymous usage report format has changed. Would you like to move to the new format?": "Anonymous usage report format has changed. Would you like to move to the new format?", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Are you sure you want to permanently delete all these files?", diff --git a/gui/default/syncthing/core/syncthingController.js b/gui/default/syncthing/core/syncthingController.js index d3a3d2355..e528f0f0e 100755 --- a/gui/default/syncthing/core/syncthingController.js +++ b/gui/default/syncthing/core/syncthingController.js @@ -2624,6 +2624,8 @@ angular.module('syncthing.core') maxDate: maxDate, ranges: ranges, locale: { + applyLabel: $translate.instant("Apply"), + cancelLabel: $translate.instant("Cancel"), customRangeLabel: $translate.instant("Custom Range"), format: 'YYYY/MM/DD HH:mm:ss', } From d0fd6c6c8269b20c87eb353af8f8ada53b8a69c0 Mon Sep 17 00:00:00 2001 From: greatroar <61184462+greatroar@users.noreply.github.com> Date: Sun, 13 Mar 2022 20:53:34 +0100 Subject: [PATCH 22/37] lib/db: Make err(Closed|NotFound) values (#8215) --- lib/db/backend/backend.go | 24 +++++++----------------- lib/db/backend/leveldb_backend.go | 10 +++++----- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/lib/db/backend/backend.go b/lib/db/backend/backend.go index 7ef26c1ad..146a38520 100644 --- a/lib/db/backend/backend.go +++ b/lib/db/backend/backend.go @@ -133,23 +133,13 @@ func OpenMemory() Backend { return OpenLevelDBMemory() } -type errClosed struct{} +var ( + errClosed = errors.New("database is closed") + errNotFound = errors.New("key not found") +) -func (*errClosed) Error() string { return "database is closed" } - -type errNotFound struct{} - -func (*errNotFound) Error() string { return "key not found" } - -func IsClosed(err error) bool { - e := &errClosed{} - return errors.As(err, &e) -} - -func IsNotFound(err error) bool { - e := &errNotFound{} - return errors.As(err, &e) -} +func IsClosed(err error) bool { return errors.Is(err, errClosed) } +func IsNotFound(err error) bool { return errors.Is(err, errNotFound) } // releaser manages counting on top of a waitgroup type releaser struct { @@ -183,7 +173,7 @@ func (cg *closeWaitGroup) Add(i int) error { cg.closeMut.RLock() defer cg.closeMut.RUnlock() if cg.closed { - return &errClosed{} + return errClosed } cg.WaitGroup.Add(i) return nil diff --git a/lib/db/backend/leveldb_backend.go b/lib/db/backend/leveldb_backend.go index c7882ecb7..577ff4b82 100644 --- a/lib/db/backend/leveldb_backend.go +++ b/lib/db/backend/leveldb_backend.go @@ -223,11 +223,11 @@ func (it *leveldbIterator) Error() error { // wrapLeveldbErr wraps errors so that the backend package can recognize them func wrapLeveldbErr(err error) error { - if err == leveldb.ErrClosed { - return &errClosed{} - } - if err == leveldb.ErrNotFound { - return &errNotFound{} + switch err { + case leveldb.ErrClosed: + return errClosed + case leveldb.ErrNotFound: + return errNotFound } return err } From 7b63254a351623426e09e33d2c7dc30e51a0050e Mon Sep 17 00:00:00 2001 From: Syncthing Release Automation Date: Mon, 14 Mar 2022 03:47:23 +0000 Subject: [PATCH 23/37] gui, man, authors: Update docs, translations, and contributors --- AUTHORS | 1 + gui/default/assets/lang/lang-bg.json | 4 ++- gui/default/assets/lang/lang-ca@valencia.json | 2 ++ gui/default/assets/lang/lang-cs.json | 2 ++ gui/default/assets/lang/lang-da.json | 2 ++ gui/default/assets/lang/lang-de.json | 2 ++ gui/default/assets/lang/lang-el.json | 2 ++ gui/default/assets/lang/lang-en-AU.json | 2 ++ gui/default/assets/lang/lang-en-GB.json | 2 ++ gui/default/assets/lang/lang-eo.json | 2 ++ gui/default/assets/lang/lang-es-ES.json | 2 ++ gui/default/assets/lang/lang-es.json | 2 ++ gui/default/assets/lang/lang-eu.json | 2 ++ gui/default/assets/lang/lang-fi.json | 2 ++ gui/default/assets/lang/lang-fr.json | 2 ++ gui/default/assets/lang/lang-fy.json | 2 ++ gui/default/assets/lang/lang-hu.json | 2 ++ gui/default/assets/lang/lang-id.json | 34 ++++++++++--------- gui/default/assets/lang/lang-it.json | 2 ++ gui/default/assets/lang/lang-ja.json | 2 ++ gui/default/assets/lang/lang-ko-KR.json | 26 +++++++------- gui/default/assets/lang/lang-lt.json | 2 ++ gui/default/assets/lang/lang-nb.json | 2 ++ gui/default/assets/lang/lang-nl.json | 2 ++ gui/default/assets/lang/lang-pl.json | 2 ++ gui/default/assets/lang/lang-pt-BR.json | 2 ++ gui/default/assets/lang/lang-pt-PT.json | 2 ++ gui/default/assets/lang/lang-ro-RO.json | 2 ++ gui/default/assets/lang/lang-ru.json | 2 ++ gui/default/assets/lang/lang-sk.json | 2 ++ gui/default/assets/lang/lang-sl.json | 2 ++ gui/default/assets/lang/lang-sv.json | 2 ++ gui/default/assets/lang/lang-tr.json | 2 ++ gui/default/assets/lang/lang-uk.json | 2 ++ gui/default/assets/lang/lang-zh-CN.json | 2 ++ gui/default/assets/lang/lang-zh-HK.json | 2 ++ gui/default/assets/lang/lang-zh-TW.json | 2 ++ .../syncthing/core/aboutModalView.html | 2 +- man/stdiscosrv.1 | 2 +- man/strelaysrv.1 | 2 +- man/syncthing-bep.7 | 2 +- man/syncthing-config.5 | 2 +- man/syncthing-device-ids.7 | 2 +- man/syncthing-event-api.7 | 18 ++++++---- man/syncthing-faq.7 | 2 +- man/syncthing-globaldisco.7 | 2 +- man/syncthing-localdisco.7 | 2 +- man/syncthing-networking.7 | 2 +- man/syncthing-relay.7 | 2 +- man/syncthing-rest-api.7 | 15 ++++---- man/syncthing-security.7 | 2 +- man/syncthing-stignore.5 | 2 +- man/syncthing-versioning.7 | 2 +- man/syncthing.1 | 2 +- 54 files changed, 137 insertions(+), 57 deletions(-) diff --git a/AUTHORS b/AUTHORS index b8c9e51ba..eb955d684 100644 --- a/AUTHORS +++ b/AUTHORS @@ -27,6 +27,7 @@ Aman Gupta Anderson Mesquita (andersonvom) andresvia Andrew Dunham (andrew-d) +Andrew Meyer Andrew Rabert (nvllsvm) <6550543+nvllsvm@users.noreply.github.com> Andrey D (scienmind) André Colomb (acolomb) diff --git a/gui/default/assets/lang/lang-bg.json b/gui/default/assets/lang/lang-bg.json index 79ae4ca3f..d7f4dbaaf 100644 --- a/gui/default/assets/lang/lang-bg.json +++ b/gui/default/assets/lang/lang-bg.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Външна команда управлява версиите. Тя трябва да премахне файла от синхронизираната папка. Ако в пътя до приложението има интервали, то той трябва да бъде поставен в кавички.", "Anonymous Usage Reporting": "Анонимно отчитане на употреба", "Anonymous usage report format has changed. Would you like to move to the new format?": "Форматът на данните за анонимно отчитане на употреба е променен. Желаете ли да използвате него вместо стария?", + "Apply": "Прилагане", "Are you sure you want to continue?": "Сигурни ли сте, че желаете да продължите?", "Are you sure you want to override all remote changes?": "Сигурни ли сте, че желаете да отмените всички промени, направени отдалечено?", "Are you sure you want to permanently delete all these files?": "Сигурни ли сте, че желаете всички тези файлове да бъдат безвъзвратно премахнати?", @@ -61,7 +62,7 @@ "Connection Error": "Грешка при осъществяване на връзка", "Connection Type": "Вид на връзката", "Connections": "Връзки", - "Continuously watching for changes is now available within Syncthing. This will detect changes on disk and issue a scan on only the modified paths. The benefits are that changes are propagated quicker and that less full scans are required.": "Syncthing вече разполага с постоянно наблюдение за промени. Така се забелязват промените на дисковото устройство и се обхождат само променените папки. Ползите са, че промените се разпространяват по-бързо и с по-малко на брой пълни обхождания.", + "Continuously watching for changes is now available within Syncthing. This will detect changes on disk and issue a scan on only the modified paths. The benefits are that changes are propagated quicker and that less full scans are required.": "Syncthing вече разполага с постоянно наблюдение за промени. Така се отчитат промените на дисковото устройство и се обхождат само повлияните папки. Ползите са, че промените се разпространяват по-бързо и с по-малко на брой пълни обхождания.", "Copied from elsewhere": "Копирано от другаде", "Copied from original": "Копирано от източника", "Copyright © 2014-2019 the following Contributors:": "Всички права запазени © 2014-2019 за следните сътрудници:", @@ -392,6 +393,7 @@ "Time the item was last modified": "Час на последна промяна на елемента", "Today": "Днес", "Trash Can File Versioning": "Версии от вида „кошче за отпадъци“", + "Twitter": "Twitter", "Type": "Вид", "UNIX Permissions": "Права на UNIX", "Unavailable": "Няма налични", diff --git a/gui/default/assets/lang/lang-ca@valencia.json b/gui/default/assets/lang/lang-ca@valencia.json index b245a5766..807b067f7 100644 --- a/gui/default/assets/lang/lang-ca@valencia.json +++ b/gui/default/assets/lang/lang-ca@valencia.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Un comandament extern maneja el versionat. És necessari eliminar el fitxer de la carpeta compartida. Si la ruta a l'aplicació conté espais, hi ha que ficar-los entre cometes.", "Anonymous Usage Reporting": "Informe d'ús anònim", "Anonymous usage report format has changed. Would you like to move to the new format?": "El format del informe anònim d'ús ha canviat. Vols canviar al nou format?", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Are you sure you want to permanently delete all these files?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Hora a la que l'ítem fou modificat per última vegada", "Today": "Today", "Trash Can File Versioning": "Versionat d'arxius de la paperera", + "Twitter": "Twitter", "Type": "Tipus", "UNIX Permissions": "UNIX Permissions", "Unavailable": "No disponible", diff --git a/gui/default/assets/lang/lang-cs.json b/gui/default/assets/lang/lang-cs.json index 18f59c075..4e90694b0 100644 --- a/gui/default/assets/lang/lang-cs.json +++ b/gui/default/assets/lang/lang-cs.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Správu verzí obstarává externí příkaz. U toho je třeba, aby neaktuální soubory jím byly odsouvány pryč ze sdílené složky. Pokud popis umístění tohoto příkazu obsahuje mezeru, je třeba popis umístění uzavřít do uvozovek.", "Anonymous Usage Reporting": "Anonymní hlášení o používání", "Anonymous usage report format has changed. Would you like to move to the new format?": "Formát anonymního hlášení o používání byl změněn. Chcete přejít na nový formát?", + "Apply": "Apply", "Are you sure you want to continue?": "Skutečně si přejete pokračovat?", "Are you sure you want to override all remote changes?": "Skutečně si přejete přebít všechny vzdálené změny?", "Are you sure you want to permanently delete all these files?": "Skutečně chcete smazat všechny tyto soubory?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Čas poslední modifikace položky", "Today": "Dnes", "Trash Can File Versioning": "Ponechávat jednu předchozí verzi (jako Koš) ", + "Twitter": "Twitter", "Type": "Typ", "UNIX Permissions": "UNIX oprávnění", "Unavailable": "Nedostupné", diff --git a/gui/default/assets/lang/lang-da.json b/gui/default/assets/lang/lang-da.json index bd8da416d..6e1b9e774 100644 --- a/gui/default/assets/lang/lang-da.json +++ b/gui/default/assets/lang/lang-da.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "En ekstern kommando styrer versioneringen. Den skal fjerne filen fra den delte mappe. Hvis stien til programmet indeholder mellemrum, bør den sættes i anførselstegn.", "Anonymous Usage Reporting": "Anonym brugerstatistik", "Anonymous usage report format has changed. Would you like to move to the new format?": "Formatet for anonym brugerstatistik er ændret. Vil du flytte til det nye format?", + "Apply": "Apply", "Are you sure you want to continue?": "Fortsætte?", "Are you sure you want to override all remote changes?": "Tilsidesæt alle eksterne ændringer?", "Are you sure you want to permanently delete all these files?": "Slette valgte filer permanent?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Tidspunkt for seneste ændring af filen", "Today": "I dag", "Trash Can File Versioning": "Versionering med papirkurv", + "Twitter": "Twitter", "Type": "Type", "UNIX Permissions": "UNIX rettigheder", "Unavailable": "Ikke tilgængelig", diff --git a/gui/default/assets/lang/lang-de.json b/gui/default/assets/lang/lang-de.json index bee17c7f9..9bc2ac83a 100644 --- a/gui/default/assets/lang/lang-de.json +++ b/gui/default/assets/lang/lang-de.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Ein externer Befehl behandelt die Versionierung. Die Datei aus dem freigegebenen Ordner muss entfernen werden. Wenn der Pfad der Anwendung Leerzeichen enthält, sollte dieser in Anführungszeichen stehen.", "Anonymous Usage Reporting": "Anonymer Nutzungsbericht", "Anonymous usage report format has changed. Would you like to move to the new format?": "Das Format des anonymen Nutzungsberichts hat sich geändert. Möchten Sie auf das neue Format umsteigen?", + "Apply": "Apply", "Are you sure you want to continue?": "Sind Sie sicher, dass Sie fortfahren möchten?", "Are you sure you want to override all remote changes?": "Sind Sie sicher, dass Sie alle entfernten Änderungen überschreiben möchten?", "Are you sure you want to permanently delete all these files?": "Sind Sie sicher, dass Sie all diese Dateien dauerhaft löschen möchten?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Zeit der letzten Änderung des Elements", "Today": "Heute", "Trash Can File Versioning": "Papierkorb Dateiversionierung", + "Twitter": "Twitter", "Type": "Typ", "UNIX Permissions": "UNIX-Berechtigungen", "Unavailable": " Nicht verfügbar", diff --git a/gui/default/assets/lang/lang-el.json b/gui/default/assets/lang/lang-el.json index 291fd7868..b9a64f6e5 100644 --- a/gui/default/assets/lang/lang-el.json +++ b/gui/default/assets/lang/lang-el.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Μια εξωτερική εντολή χειρίζεται την τήρηση εκδόσεων και αναλαμβάνει να αφαιρέσει το αρχείο από τον συγχρονισμένο φάκελο. Αν η διαδρομή προς την εφαρμογή περιέχει διαστήματα, πρέπει να εσωκλείεται σε εισαγωγικά. ", "Anonymous Usage Reporting": "Ανώνυμα στοιχεία χρήσης", "Anonymous usage report format has changed. Would you like to move to the new format?": "Η μορφή της αναφοράς ανώνυμων στοιχείων χρήσης έχει αλλάξει. Επιθυμείτε να μεταβείτε στη νέα μορφή;", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Are you sure you want to permanently delete all these files?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Ώρα τελευταίας τροποποίησης του στοιχείου", "Today": "Today", "Trash Can File Versioning": "Τήρηση εκδόσεων κάδου ανακύκλωσης", + "Twitter": "Twitter", "Type": "Τύπος", "UNIX Permissions": "Άδειες αρχείων UNIX", "Unavailable": "Μη διαθέσιμο", diff --git a/gui/default/assets/lang/lang-en-AU.json b/gui/default/assets/lang/lang-en-AU.json index be9b352f6..18c55ccdc 100644 --- a/gui/default/assets/lang/lang-en-AU.json +++ b/gui/default/assets/lang/lang-en-AU.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.", "Anonymous Usage Reporting": "Anonymous Usage Reporting", "Anonymous usage report format has changed. Would you like to move to the new format?": "Anonymous usage report format has changed. Would you like to move to the new format?", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Are you sure you want to permanently delete all these files?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Time the item was last modified", "Today": "Today", "Trash Can File Versioning": "Bin File Versioning", + "Twitter": "Twitter", "Type": "Type", "UNIX Permissions": "UNIX Permissions", "Unavailable": "Unavailable", diff --git a/gui/default/assets/lang/lang-en-GB.json b/gui/default/assets/lang/lang-en-GB.json index f3fc417a6..4033636af 100644 --- a/gui/default/assets/lang/lang-en-GB.json +++ b/gui/default/assets/lang/lang-en-GB.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.", "Anonymous Usage Reporting": "Anonymous Usage Reporting", "Anonymous usage report format has changed. Would you like to move to the new format?": "Anonymous usage report format has changed. Would you like to move to the new format?", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Are you sure you want to permanently delete all these files?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Time the item was last modified", "Today": "Today", "Trash Can File Versioning": "Rubbish Bin File Versioning", + "Twitter": "Twitter", "Type": "Type", "UNIX Permissions": "UNIX Permissions", "Unavailable": "Unavailable", diff --git a/gui/default/assets/lang/lang-eo.json b/gui/default/assets/lang/lang-eo.json index 0f552368e..49e05cc23 100644 --- a/gui/default/assets/lang/lang-eo.json +++ b/gui/default/assets/lang/lang-eo.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Ekstera komando manipulas la version. Ĝi devas forigi la dosieron el la komunigita dosierujo. Se la vojo al la apliko elhavas blankoj, ĝi devas esti inter citiloj.", "Anonymous Usage Reporting": "Anonima Raporto de Uzado", "Anonymous usage report format has changed. Would you like to move to the new format?": "Formato de anonima raporto de uzado ŝanĝis. Ĉu vi ŝatus transiri al la nova formato?", + "Apply": "Apply", "Are you sure you want to continue?": "Ĉu vi certas, ke vi volas daŭrigi?", "Are you sure you want to override all remote changes?": "Ĉu vi certas, ke vi volas transpasi ĉiujn forajn ŝanĝojn?", "Are you sure you want to permanently delete all these files?": "Ĉu vi certas, ke vi volas porĉiame forigi ĉiujn ĉi tiujn dosierojn?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Tempo de lasta modifo de la ero", "Today": "Today", "Trash Can File Versioning": "Rubuja Dosiera Versionado", + "Twitter": "Twitter", "Type": "Tipo", "UNIX Permissions": "Permesoj UNIX", "Unavailable": "Ne disponebla", diff --git a/gui/default/assets/lang/lang-es-ES.json b/gui/default/assets/lang/lang-es-ES.json index 67a0f5b3a..9e9fc6588 100644 --- a/gui/default/assets/lang/lang-es-ES.json +++ b/gui/default/assets/lang/lang-es-ES.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Un comando externo maneja el versionado. Tiene que eliminar el fichero de la carpeta compartida. Si la ruta a la aplicación contiene espacios, hay que escribirla entre comillas.", "Anonymous Usage Reporting": "Informe anónimo de uso", "Anonymous usage report format has changed. Would you like to move to the new format?": "El formato del informe anónimo de uso ha cambiado. ¿Quieres cambiar al nuevo formato?", + "Apply": "Apply", "Are you sure you want to continue?": "¿Seguro que quieres continuar?", "Are you sure you want to override all remote changes?": "¿Seguro que quieres sobreescribir todos los cambios remotos?", "Are you sure you want to permanently delete all these files?": "¿Seguro que quieres eliminar permanentemente todos estos archivos?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Tiempo en el que se modificó el ítem por última vez", "Today": "Hoy", "Trash Can File Versioning": "Versionado de archivos de la papelera", + "Twitter": "Twitter", "Type": "Tipo", "UNIX Permissions": "Permisos de UNIX", "Unavailable": "No disponible", diff --git a/gui/default/assets/lang/lang-es.json b/gui/default/assets/lang/lang-es.json index fead3886a..938dc2b6d 100644 --- a/gui/default/assets/lang/lang-es.json +++ b/gui/default/assets/lang/lang-es.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Un comando externo maneja las versiones. Tienes que eliminar el archivo de la carpeta compartida. Si la ruta a la aplicación contiene espacios, ésta debe estar entre comillas.", "Anonymous Usage Reporting": "Informe anónimo de uso", "Anonymous usage report format has changed. Would you like to move to the new format?": "El formato del informe de uso anónimo a cambiado. ¿Desearía usar el nuevo formato?", + "Apply": "Apply", "Are you sure you want to continue?": "¿Está seguro(a) de que desea continuar?", "Are you sure you want to override all remote changes?": "¿Está seguro(a) de que desea sobreescribir todos los cambios remotos?", "Are you sure you want to permanently delete all these files?": "¿Está seguro de que desea eliminar permanente todos estos archivos?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Hora en que el ítem fue modificado por última vez", "Today": "Today", "Trash Can File Versioning": "Versionado de archivos de la papelera", + "Twitter": "Twitter", "Type": "Tipo", "UNIX Permissions": "Permisos de UNIX", "Unavailable": "No disponible", diff --git a/gui/default/assets/lang/lang-eu.json b/gui/default/assets/lang/lang-eu.json index f6ee6ee56..fdc8f590b 100644 --- a/gui/default/assets/lang/lang-eu.json +++ b/gui/default/assets/lang/lang-eu.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Kanpoko kontrolagailu batek fitxategien bertsioak kudeatzen ditu. Fitxategiak kendu behar ditu errepertorio sinkronizatuan. Aplikaziorako ibilbideak espazioak baditu, komatxo artean egon behar du.", "Anonymous Usage Reporting": "Izenik gabeko erabiltze erreportak", "Anonymous usage report format has changed. Would you like to move to the new format?": "Erabilera anonimoko txostenaren formatua aldatu egin da. Formatu berria erabili nahi duzu?", + "Apply": "Apply", "Are you sure you want to continue?": "Ziur zaude jarraitu nahi duzula?", "Are you sure you want to override all remote changes?": "Ziur zaude urruneko aldaketa guztiak gainidatzi nahi dituzula?", "Are you sure you want to permanently delete all these files?": "Ziur zaude fitxategi guzti hauek betirako ezabatu nahi dituzula?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Itema azkenekoz aldatu zen ordua", "Today": "Today", "Trash Can File Versioning": "Zakarrontzia", + "Twitter": "Twitter", "Type": "Mota", "UNIX Permissions": "UNIX baimenak", "Unavailable": "Ez dago erabilgarri", diff --git a/gui/default/assets/lang/lang-fi.json b/gui/default/assets/lang/lang-fi.json index de0b96aa6..fcf4bbafd 100644 --- a/gui/default/assets/lang/lang-fi.json +++ b/gui/default/assets/lang/lang-fi.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Ulkoinen komento hallitsee versionnin. Sen täytyy poistaa tiedosto synkronoidusta kansiosta. Mikäli ohjelman polussa on välilyöntejä se on laitettava lainausmerkkeihin.", "Anonymous Usage Reporting": "Anonyymi käyttöraportointi", "Anonymous usage report format has changed. Would you like to move to the new format?": "Anonyymi käyttöraportti on muuttunut. Haluatko vaihtaa uuteen muotoon?", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Are you sure you want to permanently delete all these files?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Aika jolloin kohdetta viimeksi muokattiin", "Today": "Today", "Trash Can File Versioning": "Roskakorin tiedostoversiointi", + "Twitter": "Twitter", "Type": "Tyyppi", "UNIX Permissions": "UNIX Permissions", "Unavailable": "Ei saatavilla", diff --git a/gui/default/assets/lang/lang-fr.json b/gui/default/assets/lang/lang-fr.json index eabec19e7..e0c4b147e 100644 --- a/gui/default/assets/lang/lang-fr.json +++ b/gui/default/assets/lang/lang-fr.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Une commande externe gère les versions de fichiers. Il lui incombe de supprimer les fichiers du répertoire partagé. Si le chemin contient des espaces, il doit être spécifié entre guillemets.", "Anonymous Usage Reporting": "Rapport anonyme de statistiques d'utilisation", "Anonymous usage report format has changed. Would you like to move to the new format?": "Le format du rapport anonyme d'utilisation a changé. Voulez-vous passer au nouveau format ?", + "Apply": "Apply", "Are you sure you want to continue?": "Confirmez-vous ?", "Are you sure you want to override all remote changes?": "Voulez-vous vraiment écraser tous les changements distants ?", "Are you sure you want to permanently delete all these files?": "Êtes-vous sûrs de vouloir définitivement supprimer tous ces fichiers ?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Dernière modification de l'élément", "Today": "Aujourd'hui", "Trash Can File Versioning": "Style poubelle", + "Twitter": "Twitter", "Type": "Type", "UNIX Permissions": "Permissions UNIX", "Unavailable": "Indisponible", diff --git a/gui/default/assets/lang/lang-fy.json b/gui/default/assets/lang/lang-fy.json index cefa59aba..4c50d1335 100644 --- a/gui/default/assets/lang/lang-fy.json +++ b/gui/default/assets/lang/lang-fy.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "In ekstern kommando soarget foar it ferzjebehear. It moat de triem út de dielde map fuortsmite. As it paad nei de applikaasje romtes hat, moat it tusken oanheltekens sette wurden.", "Anonymous Usage Reporting": "Anonym brûkensrapportaazje", "Anonymous usage report format has changed. Would you like to move to the new format?": "It formaat fan de rapportaazje fan anonime gebrûksynformaasje is feroare. Wolle jo op dit nije formaat oerstappe?", + "Apply": "Apply", "Are you sure you want to continue?": "Binne jo der wis fan dat jo trochgean wolle?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Binne jo der wis fan dat jo al dizze bestannen permanint wiskje wolle?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Tiidstip dat it ûnderdiel foar it lest oanpast waard.", "Today": "Today", "Trash Can File Versioning": "Jiskefet-triemferzjebehear", + "Twitter": "Twitter", "Type": "Type", "UNIX Permissions": "UNIX-Rjochten", "Unavailable": "Net beskikber", diff --git a/gui/default/assets/lang/lang-hu.json b/gui/default/assets/lang/lang-hu.json index 95ffc748b..574d74c19 100644 --- a/gui/default/assets/lang/lang-hu.json +++ b/gui/default/assets/lang/lang-hu.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Külső program kezeli a fájlverzió-követést. Az távolítja el a fájlt a megosztott mappából. Ha az alkalmazás útvonala szóközöket tartalmaz, zárójelezni szükséges az útvonalat.", "Anonymous Usage Reporting": "Névtelen felhasználási adatok küldése", "Anonymous usage report format has changed. Would you like to move to the new format?": "A névtelen használati jelentés formátuma megváltozott. Szeretnél áttérni az új formátumra?", + "Apply": "Apply", "Are you sure you want to continue?": "Biztosan folytatható?", "Are you sure you want to override all remote changes?": "Biztos, hogy felülírható minden távoli módosítás?", "Are you sure you want to permanently delete all these files?": "Biztos, hogy véglegesen törölhetőek mindezek a fájlok?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Az idő, amikor utoljára módosítva lett az elem", "Today": "Ma", "Trash Can File Versioning": "Szemetes fájlverzió-követés", + "Twitter": "Twitter", "Type": "Típus", "UNIX Permissions": "UNIX jogosultságok", "Unavailable": "Nem elérhető", diff --git a/gui/default/assets/lang/lang-id.json b/gui/default/assets/lang/lang-id.json index eb471a494..d409d26ec 100644 --- a/gui/default/assets/lang/lang-id.json +++ b/gui/default/assets/lang/lang-id.json @@ -19,7 +19,7 @@ "Advanced": "Tingkat Lanjut", "Advanced Configuration": "Konfigurasi Tingkat Lanjut", "All Data": "Semua Data", - "All Time": "All Time", + "All Time": "Semua Waktu", "All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.": "Semua folder yang dibagi dengan perangkat ini harus dilindungi dengan sandi, sehingga semua data tidak dapat dilihat tanpa sandi.", "Allow Anonymous Usage Reporting?": "Izinkan Laporan Penggunaan Anonim?", "Allowed Networks": "Jaringan Terizinkan", @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Perintah eksternal menangani pemversian. Ia harus menghapus berkas dari folder yang dibagi. Jika lokasi aplikasi terdapat spasi, itu harus dikutip.", "Anonymous Usage Reporting": "Pelaporan Penggunaan Anonim", "Anonymous usage report format has changed. Would you like to move to the new format?": "Format pelaporan penggunaan anonim telah berubah. Maukah anda pindah menggunakan format yang baru?", + "Apply": "Apply", "Are you sure you want to continue?": "Apakah anda yakin ingin lanjut?", "Are you sure you want to override all remote changes?": "Apakah anda yakin ingin menimpa semua perubahan jarak jauh?", "Are you sure you want to permanently delete all these files?": "Apakah anda yakin ingin menghapus semua berkas berikut secara permanen?", @@ -46,7 +47,7 @@ "Be careful!": "Harap hati-hati!", "Bugs": "Bugs", "Cancel": "Batal", - "Changelog": "Log perubahan", + "Changelog": "Log Perubahan", "Clean out after": "Bersihkan setelah", "Cleaning Versions": "Versi Pembersihan", "Cleanup Interval": "Interval Pembersihan", @@ -67,7 +68,7 @@ "Copyright © 2014-2019 the following Contributors:": "Hak cipta © 2014-2019 Kontributor berikut ini:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "Membuat pola pengabaian, menimpa sebuah file yang sudah ada di {{path}}.", "Currently Shared With Devices": "Sekarang Terbagi Dengan Perangkat", - "Custom Range": "Custom Range", + "Custom Range": "Rentang Kustom", "Danger!": "Bahaya!", "Debugging Facilities": "Fasilitas Debug", "Default Configuration": "Konfigurasi Bawaan", @@ -119,7 +120,7 @@ "Edit Folder Defaults": "Sunting Bawaan Folder", "Editing {%path%}.": "Menyunting {{path}}.", "Enable Crash Reporting": "Akitfkan Pelaporan Crash", - "Enable NAT traversal": "Aktifkan traversal NAT", + "Enable NAT traversal": "Aktifkan Traversal NAT", "Enable Relaying": "Aktifkan Relay", "Enabled": "Aktif", "Enter a non-negative number (e.g., \"2.35\") and select a unit. Percentages are as part of the total disk size.": "Masukkan nomor yang bukan negatif (contoh \"2.35\") dan pilih sebuah unit. Persentase adalah bagian dari total ukuran penyimpanan.", @@ -130,7 +131,7 @@ "Error": "Galat", "External File Versioning": "Pemversian Berkas Eksternal", "Failed Items": "Berkas yang gagal", - "Failed to load file versions.": "Failed to load file versions.", + "Failed to load file versions.": "Gagal memuat versi berkas.", "Failed to load ignore patterns.": "Gagal memuat pola pengabaian.", "Failed to setup, retrying": "Gagal menyiapkan, mengulang", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Gagal untuk menyambung ke server IPv6 itu disangka apabila tidak ada konektivitas IPv6.", @@ -157,7 +158,7 @@ "GUI Authentication Password": "Sandi Otentikasi GUI", "GUI Authentication User": "Pengguna Otentikasi GUI", "GUI Authentication: Set User and Password": "Otentikasi GUI: Atur Pengguna dan Sandi", - "GUI Listen Address": "Alamat Mendengar GUI", + "GUI Listen Address": "Alamat Pendengaran GUI", "GUI Theme": "Tema GUI", "General": "Umum", "Generate": "Generasi", @@ -185,9 +186,9 @@ "Keep Versions": "Jumlah Versi yang Disimpan", "LDAP": "LDAP", "Largest First": "Terbesar Dahulu", - "Last 30 Days": "Last 30 Days", - "Last 7 Days": "Last 7 Days", - "Last Month": "Last Month", + "Last 30 Days": "30 Hari Terakhir", + "Last 7 Days": "7 Hari Terakhir", + "Last Month": "Bulan Lalu", "Last Scan": "Scan Terakhir", "Last seen": "Terakhir dilihat", "Latest Change": "Perubahan Terbaru", @@ -305,7 +306,7 @@ "Share Folders With Device": "Bagi Folder Dengan Perangkat", "Share this folder?": "Bagi Folder Ini?", "Shared Folders": "Folder Yang Dibagi", - "Shared With": "Dibagi dengan", + "Shared With": "Dibagi Dengan", "Sharing": "Pembagian", "Show ID": "Tampilkan ID", "Show QR": "Tampilkan QR", @@ -379,19 +380,20 @@ "The rate limit must be a non-negative number (0: no limit)": "Pembatasan kecepatan harus berupa angka positif (0: tidak terbatas)", "The rescan interval must be a non-negative number of seconds.": "Interval pemindaian ulang harus berupa angka positif.", "There are no devices to share this folder with.": "Tidak ada perangkat untuk membagikan folder ini.", - "There are no file versions to restore.": "There are no file versions to restore.", + "There are no file versions to restore.": "Tidak ada versi berkas untuk dipulihkan.", "There are no folders to share with this device.": "Tidak ada folder untuk dibagi dengan perangkat ini.", "They are retried automatically and will be synced when the error is resolved.": "Mereka diulang secara otomatis dan akan disinkron ketika galat telah terselesaikan.", "This Device": "Perangkat Ini", - "This Month": "This Month", + "This Month": "Bulan Ini", "This can easily give hackers access to read and change any files on your computer.": "Ini dapat dengan mudah memberi peretas akses untuk melihat dan mengubah file apapun dalam komputer anda.", "This device cannot automatically discover other devices or announce its own address to be found by others. Only devices with statically configured addresses can connect.": "Perangkat ini tidak dapat menemukan perangkat lain secara otomatis atau mengumumkan alamat sendiri untuk dapat ditemukan oleh perangkat lain. Hanya perangkat dengan konfigurasi alamat statik dapat menyambung.", "This is a major version upgrade.": "Ini adalah peningkatan versi besar.", "This setting controls the free space required on the home (i.e., index database) disk.": "Pengaturan ini mengontrol jumlah penyimpanan kosong yang dibutuhkan dalam penyimpanan utama (contoh database indeks).", "Time": "Waktu", "Time the item was last modified": "Waktu file terakhir dimodifikasi", - "Today": "Today", + "Today": "Hari Ini", "Trash Can File Versioning": "Pemversian Berkas Tempat Sampah", + "Twitter": "Twitter", "Type": "Tipe", "UNIX Permissions": "Izin UNIX", "Unavailable": "Tidak Tersedia", @@ -432,10 +434,10 @@ "Watch for Changes": "Pantau Perubahan", "Watching for Changes": "Memantau Perubahan", "Watching for changes discovers most changes without periodic scanning.": "Memantau perubahan menemukan kebanyakan perubahan tanpa pemindaian periodik.", - "When adding a new device, keep in mind that this device must be added on the other side too.": "When adding a new device, keep in mind that this device must be added on the other side too.", - "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.", + "When adding a new device, keep in mind that this device must be added on the other side too.": "Ketika menambah perangkat baru, perlu diingat bahwa perangkat ini juga harus ditambahkan pada sisi lain juga.", + "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "Ketika menambah sebuah folder baru, perlu diingat bahwa ID Folder digunakan untuk mengikat folder antar perangkat. Mereka peka terhadap kapitalisasi huruf dan harus sama pada semua perangkat.", "Yes": "Iya", - "Yesterday": "Yesterday", + "Yesterday": "Kemarin", "You can also select one of these nearby devices:": "Anda juga dapat memilih salah satu perangkat disekitar berikut:", "You can change your choice at any time in the Settings dialog.": "Anda dapat mengubah pilihan anda dalam dialog Pengaturan.", "You can read more about the two release channels at the link below.": "Anda dapat membaca lebih lanjut tentang dua saluran rilis pada tautan di bawah.", diff --git a/gui/default/assets/lang/lang-it.json b/gui/default/assets/lang/lang-it.json index be3bc8bc9..3ab5dabe8 100644 --- a/gui/default/assets/lang/lang-it.json +++ b/gui/default/assets/lang/lang-it.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Il controllo versione è gestito da un comando esterno. Quest'ultimo deve rimuovere il file dalla cartella condivisa. Se il percorso dell'applicazione contiene spazi, deve essere indicato tra virgolette.", "Anonymous Usage Reporting": "Statistiche Anonime di Utilizzo", "Anonymous usage report format has changed. Would you like to move to the new format?": "Il formato delle statistiche anonime di utilizzo è cambiato. Vuoi passare al nuovo formato?", + "Apply": "Apply", "Are you sure you want to continue?": "Sei sicuro di voler continuare?", "Are you sure you want to override all remote changes?": "Sei sicuro di voler sovrascrivere tutte le modifiche remote?", "Are you sure you want to permanently delete all these files?": "Sei sicuro di voler eliminare definitivamente tutti questi file?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Ora dell'ultima modifica degli elementi", "Today": "Today", "Trash Can File Versioning": "Controllo Versione con Cestino", + "Twitter": "Twitter", "Type": "Tipo", "UNIX Permissions": "Permessi UNIX", "Unavailable": "Non disponibile", diff --git a/gui/default/assets/lang/lang-ja.json b/gui/default/assets/lang/lang-ja.json index 6b6582957..dcb09e971 100644 --- a/gui/default/assets/lang/lang-ja.json +++ b/gui/default/assets/lang/lang-ja.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.", "Anonymous Usage Reporting": "匿名での使用状況レポート", "Anonymous usage report format has changed. Would you like to move to the new format?": "匿名での使用状況レポートのフォーマットが変わりました。新形式でのレポートに移行しますか?", + "Apply": "Apply", "Are you sure you want to continue?": "続行してもよろしいですか?", "Are you sure you want to override all remote changes?": "リモートでの変更をすべて上書きしてもよろしいですか?", "Are you sure you want to permanently delete all these files?": "これらのファイルをすべて完全に削除してもよろしいですか?", @@ -392,6 +393,7 @@ "Time the item was last modified": "項目を最後に変更した日時", "Today": "Today", "Trash Can File Versioning": "ゴミ箱によるバージョン管理", + "Twitter": "Twitter", "Type": "タイプ", "UNIX Permissions": "UNIX パーミッション", "Unavailable": "利用不可", diff --git a/gui/default/assets/lang/lang-ko-KR.json b/gui/default/assets/lang/lang-ko-KR.json index 8294e3d33..8a351a88f 100644 --- a/gui/default/assets/lang/lang-ko-KR.json +++ b/gui/default/assets/lang/lang-ko-KR.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "외부 명령이 파일 버전을 관리합니다. 공유 폴더에서 파일을 삭제해야 합니다. 응용 프로그램의 경로에 공백이 있으면 따옴표로 묶어야 합니다.", "Anonymous Usage Reporting": "익명 사용 보고", "Anonymous usage report format has changed. Would you like to move to the new format?": "익명 사용 보고의 형식이 변경되었습니다. 새 형식으로 설정을 변경하시겠습니까?", + "Apply": "적용", "Are you sure you want to continue?": "계속하시겠습니까?", "Are you sure you want to override all remote changes?": "다른 기기의 변경 항목 모두를 덮어쓰시겠습니까?", "Are you sure you want to permanently delete all these files?": "이 파일 모두를 영구 삭제하시겠습니까?", @@ -66,7 +67,7 @@ "Copied from original": "원본에서 복사됨", "Copyright © 2014-2019 the following Contributors:": "Copyright © 2014-2019 하위 기여자들:", "Creating ignore patterns, overwriting an existing file at {%path%}.": "무시 양식 생성 중; {{path}} 경로의 기존 파일을 덮어씁니다.", - "Currently Shared With Devices": "현재 공유된 기기", + "Currently Shared With Devices": "공유된 기기", "Custom Range": "사용자 설정 기간", "Danger!": "위험!", "Debugging Facilities": "디버그 기능", @@ -117,7 +118,7 @@ "Edit Device Defaults": "기기 기본 설정 편집", "Edit Folder": "폴더 편집", "Edit Folder Defaults": "폴더 기본 설정 편집", - "Editing {%path%}.": "{{path}} 경로 편집 중", + "Editing {%path%}.": "{{path}} 편집 중입니다.", "Enable Crash Reporting": "충돌 보고 활성화", "Enable NAT traversal": "NAT 통과 활성화", "Enable Relaying": "중계 활성화", @@ -176,7 +177,7 @@ "Ignore patterns can only be added after the folder is created. If checked, an input field to enter ignore patterns will be presented after saving.": "무시 양식은 폴더가 생성된 후에만 추가할 수 있습니다. 체크할 경우, 폴더를 저장할 다음에 무시 양식을 입력하기 위한 새 창으로 이동합니다.", "Ignored Devices": "무시한 기기", "Ignored Folders": "무시한 폴더", - "Ignored at": "무시된 기기", + "Ignored at": "무시한 일자", "Incoming Rate Limit (KiB/s)": "수신 속도 제한(KiB/s)", "Incorrect configuration may damage your folder contents and render Syncthing inoperable.": "잘못된 설정은 폴더의 내용을 훼손하거나 Syncthing을 작동하지 못하게 할 수 있습니다.", "Introduced By": "소개한 기기", @@ -215,18 +216,18 @@ "Mod. Time": "수정 시간", "Move to top of queue": "대기열 상단으로 이동", "Multi level wildcard (matches multiple directory levels)": "다중 수준 와일드카드(여러 단계의 디렉토리에서 적용됨)", - "Never": "사용 안 함", + "Never": "사용하지 않음", "New Device": "새 기기", "New Folder": "새 폴더", "Newest First": "최신 파일 순", "No": "아니요", - "No File Versioning": "파일 버전 관리 안 함", + "No File Versioning": "파일 버전 관리하지 않음", "No files will be deleted as a result of this operation.": "이 작업의 결과로는 아무 파일도 삭제되지 않습니다.", - "No upgrades": "업데이트 안 함", + "No upgrades": "업데이트하지 않음", "Not shared": "공유되지 않음", "Notice": "공지", "OK": "확인", - "Off": "꺼짐", + "Off": "하지 않음", "Oldest First": "오랜 파일 순", "Optional descriptive label for the folder. Can be different on each device.": "폴더를 묘사하는 선택적 이름입니다. 기기마다 달리 설정해도 됩니다.", "Options": "옵션", @@ -381,7 +382,7 @@ "There are no devices to share this folder with.": "이 폴더를 공유할 기기가 없습니다.", "There are no file versions to restore.": "복구할 파일 버전이 없습니다.", "There are no folders to share with this device.": "이 기기와 공유할 폴더가 없습니다.", - "They are retried automatically and will be synced when the error is resolved.": "자동 재시도 중이며 문제가 해결되는 대로 동기화됩니다.", + "They are retried automatically and will be synced when the error is resolved.": "자동 재시도 중이며 문제가 해결되는 즉시 동기화될 예정입니다.", "This Device": "현재 기기", "This Month": "이번 달", "This can easily give hackers access to read and change any files on your computer.": "이로 인해서는 해커가 손쉽게 컴퓨터의 모든 파일을 읽고 편집할 수 있게 됩니다.", @@ -392,6 +393,7 @@ "Time the item was last modified": "항목 최근 변경 시간", "Today": "오늘", "Trash Can File Versioning": "휴지통을 통한 파일 버전 관리", + "Twitter": "트위터", "Type": "유형", "UNIX Permissions": "UNIX 권한", "Unavailable": "변경 불가", @@ -406,7 +408,7 @@ "Unshared Folders": "공유되지 않은 폴더", "Untrusted": "신뢰하지 않음", "Up to Date": "최신 상태", - "Updated": "업데이트 완료", + "Updated": "업데이트됨", "Upgrade": "업데이트", "Upgrade To {%version%}": "{{version}}으로 업데이트", "Upgrading": "업데이트 중", @@ -448,13 +450,13 @@ "directories": "개의 폴더", "files": "개의 파일", "full documentation": "전체 사용 설명서", - "items": "항목", + "items": "개의 항목", "seconds": "초", "theme-name-black": "검은색", "theme-name-dark": "어두운 색", "theme-name-default": "기본 색", "theme-name-light": "밝은 색", - "{%device%} wants to share folder \"{%folder%}\".": "{{device}} 기기에서 \"{{folder}}\" 폴더를 공유하길 원합니다.", - "{%device%} wants to share folder \"{%folderlabel%}\" ({%folder%}).": "{{device}} 기기에서 \"{{folderlabel}}\" ({{folder}}) 폴더를 공유하길 원합니다.", + "{%device%} wants to share folder \"{%folder%}\".": "{{device}} 기기가 \"{{folder}}\" 폴더를 공유하길 원합니다.", + "{%device%} wants to share folder \"{%folderlabel%}\" ({%folder%}).": "{{device}} 기기가 \"{{folderlabel}}\" ({{folder}}) 폴더를 공유하길 원합니다.", "{%reintroducer%} might reintroduce this device.": "{{reintroducer}} 기기에서 이 기기를 다시 소개할 수 있습니다." } \ No newline at end of file diff --git a/gui/default/assets/lang/lang-lt.json b/gui/default/assets/lang/lang-lt.json index 87953c2d3..1c9f897cf 100644 --- a/gui/default/assets/lang/lang-lt.json +++ b/gui/default/assets/lang/lang-lt.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Išorinė komanda apdoroja versijų valdymą. Ji turi pašalinti failą iš bendrinamo aplanko. Jei kelyje į programą yra tarpų, jie turėtų būti imami į kabutes.", "Anonymous Usage Reporting": "Anoniminė naudojimo ataskaita", "Anonymous usage report format has changed. Would you like to move to the new format?": "Anoniminės naudojimo ataskaitos formatas pasikeitė. Ar norėtumėte pereiti prie naujojo formato?", + "Apply": "Apply", "Are you sure you want to continue?": "Ar tikrai norite tęsti?", "Are you sure you want to override all remote changes?": "Ar tikrai norite nustelbti visus nuotolinius pakeitimus?", "Are you sure you want to permanently delete all these files?": "Ar tikrai norite visam laikui ištrinti visus šiuos failus?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Laikas, kai elementas buvo paskutinį kartą modifikuotas", "Today": "Šiandien", "Trash Can File Versioning": "Šiukšliadėžės versijų valdymas", + "Twitter": "Twitter", "Type": "Tipas", "UNIX Permissions": "UNIX leidimai", "Unavailable": "Neprieinama", diff --git a/gui/default/assets/lang/lang-nb.json b/gui/default/assets/lang/lang-nb.json index 0fb138bb1..1e8d92d31 100644 --- a/gui/default/assets/lang/lang-nb.json +++ b/gui/default/assets/lang/lang-nb.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "En ekstern kommando tar hånd om versjoneringen. Den må fjerne filen fra den delte mappen. Hvis stien til programmet inneholder mellomrom, må den siteres.", "Anonymous Usage Reporting": "Anonym innsamling av brukerdata", "Anonymous usage report format has changed. Would you like to move to the new format?": "Det anonyme bruksrapportformatet har endret seg. Ønsker du å gå over til det nye formatet?", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Are you sure you want to permanently delete all these files?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Tidspunktet elementet sist ble endret", "Today": "Today", "Trash Can File Versioning": "Papirkurv versjonskontroll", + "Twitter": "Twitter", "Type": "Type", "UNIX Permissions": "UNIX Permissions", "Unavailable": "Utilgjengelig", diff --git a/gui/default/assets/lang/lang-nl.json b/gui/default/assets/lang/lang-nl.json index 9efc1abce..b6deade5a 100644 --- a/gui/default/assets/lang/lang-nl.json +++ b/gui/default/assets/lang/lang-nl.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Een externe opdracht regelt het versiebeheer. Hij moet het bestand verwijderen uit de gedeelde map. Als het pad naar de toepassing spaties bevat, moet dit tussen aanhalingstekens geplaatst worden.", "Anonymous Usage Reporting": "Anonieme gebruikersstatistieken", "Anonymous usage report format has changed. Would you like to move to the new format?": "Het formaat voor anonieme gebruikersrapporten is gewijzigd. Wilt u naar het nieuwe formaat overschakelen?", + "Apply": "Apply", "Are you sure you want to continue?": "Weet u zeker dat u wilt doorgaan?", "Are you sure you want to override all remote changes?": "Weet u zeker dat u alle externe wijzigingen wilt overschrijven?", "Are you sure you want to permanently delete all these files?": "Weet u zeker dat u al deze bestanden permanent wilt verwijderen?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Tijdstip waarop het item laatst gewijzigd is", "Today": "Vandaag", "Trash Can File Versioning": "Prullenbak-versiebeheer", + "Twitter": "Twitter", "Type": "Type", "UNIX Permissions": "UNIX-machtigingen", "Unavailable": "Niet beschikbaar", diff --git a/gui/default/assets/lang/lang-pl.json b/gui/default/assets/lang/lang-pl.json index 02287e72f..a33443ec9 100644 --- a/gui/default/assets/lang/lang-pl.json +++ b/gui/default/assets/lang/lang-pl.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Zewnętrzne polecenie odpowiedzialne jest za wersjonowanie. Musi ono usunąć plik ze współdzielonego folderu. Jeżeli ścieżka do aplikacji zawiera spacje, to powinna ona być zamknięta w cudzysłowie.", "Anonymous Usage Reporting": "Anonimowe statystyki użycia", "Anonymous usage report format has changed. Would you like to move to the new format?": "Format anonimowych statystyk użycia uległ zmianie. Czy chcesz przejść na nowy format?", + "Apply": "Zastosuj", "Are you sure you want to continue?": "Czy na pewno chcesz kontynuować?", "Are you sure you want to override all remote changes?": "Czy na pewno chcesz nadpisać wszystkie zmiany zdalne?", "Are you sure you want to permanently delete all these files?": "Czy na pewno chcesz nieodwracalnie usunąć wszystkie te pliki?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Czas ostatniej modyfikacji elementu", "Today": "Dzisiaj", "Trash Can File Versioning": "Wersjonowanie plików w koszu", + "Twitter": "Twitter", "Type": "Rodzaj", "UNIX Permissions": "UNIX-owe uprawnienia", "Unavailable": "Niedostępne", diff --git a/gui/default/assets/lang/lang-pt-BR.json b/gui/default/assets/lang/lang-pt-BR.json index b1a515093..d9e2d8b3b 100644 --- a/gui/default/assets/lang/lang-pt-BR.json +++ b/gui/default/assets/lang/lang-pt-BR.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Um comando externo controla o controle de versão. Tem que remover o arquivo da pasta compartilhada. Se o caminho para o aplicativo contiver espaços, ele deve ser colocado entre aspas.", "Anonymous Usage Reporting": "Relatórios anônimos de uso", "Anonymous usage report format has changed. Would you like to move to the new format?": "O formato do relatório anônimo de uso mudou. Gostaria de usar o formato novo?", + "Apply": "Aplicar", "Are you sure you want to continue?": "Deseja realmente continuar?", "Are you sure you want to override all remote changes?": "Tem a certeza que quer sobrepor todas as alterações remotas?", "Are you sure you want to permanently delete all these files?": "Deseja realmente excluir todos estes arquivos permanentemente?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Momento em que o item foi modificado pela última vez", "Today": "Hoje", "Trash Can File Versioning": "Lixeira", + "Twitter": "Twitter", "Type": "Tipo", "UNIX Permissions": "Permissões UNIX", "Unavailable": "Não disponível", diff --git a/gui/default/assets/lang/lang-pt-PT.json b/gui/default/assets/lang/lang-pt-PT.json index 945592766..8a35c8db2 100644 --- a/gui/default/assets/lang/lang-pt-PT.json +++ b/gui/default/assets/lang/lang-pt-PT.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Um comando externo controla as versões. Esse comando tem que remover o ficheiro da pasta partilhada. Se o caminho para a aplicação contiver espaços, então terá de o escrever entre aspas.", "Anonymous Usage Reporting": "Enviar relatórios anónimos de utilização", "Anonymous usage report format has changed. Would you like to move to the new format?": "O formato do relatório anónimo de utilização foi alterado. Gostaria de mudar para o novo formato?", + "Apply": "Aplicar", "Are you sure you want to continue?": "Tem a certeza de que quer continuar?", "Are you sure you want to override all remote changes?": "Tem a certeza que quer sobrepor todas as alterações remotas?", "Are you sure you want to permanently delete all these files?": "Tem a certeza de que quer eliminar permanentemente todos estes ficheiros?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Quando o item foi modificado pela última vez", "Today": "Hoje", "Trash Can File Versioning": "Reciclagem", + "Twitter": "Twitter", "Type": "Tipo", "UNIX Permissions": "Permissões UNIX", "Unavailable": "Indisponível", diff --git a/gui/default/assets/lang/lang-ro-RO.json b/gui/default/assets/lang/lang-ro-RO.json index 59a3b1957..c71b5a723 100644 --- a/gui/default/assets/lang/lang-ro-RO.json +++ b/gui/default/assets/lang/lang-ro-RO.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "O comandă externă gestionează versiunea. Trebuie să elimine fișierul din folderul partajat. Dacă calea către aplicație conține spații, ar trebui să fie pusă între ghilimele.", "Anonymous Usage Reporting": "Raport Anonim despre Folosirea Aplicației", "Anonymous usage report format has changed. Would you like to move to the new format?": "Formatul raportului de utilizare anonim s-a schimbat. Doriți să vă mutați în noul format?", + "Apply": "Apply", "Are you sure you want to continue?": "Ești sigur ca vrei sa continui?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Sigur doriți să ștergeți definitiv toate aceste fișiere?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Time the item was last modified", "Today": "Today", "Trash Can File Versioning": "Trash Can File Versioning", + "Twitter": "Twitter", "Type": "Type", "UNIX Permissions": "UNIX Permissions", "Unavailable": "Unavailable", diff --git a/gui/default/assets/lang/lang-ru.json b/gui/default/assets/lang/lang-ru.json index 2cb80c38b..9bb5665e5 100644 --- a/gui/default/assets/lang/lang-ru.json +++ b/gui/default/assets/lang/lang-ru.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Для версионирования используется внешняя программа. Ей нужно удалить файл из общей папки. Если путь к приложению содержит пробелы, его нужно взять в кавычки.", "Anonymous Usage Reporting": "Анонимный отчет об использовании", "Anonymous usage report format has changed. Would you like to move to the new format?": "Формат анонимных отчётов изменился. Хотите переключиться на новый формат?", + "Apply": "Apply", "Are you sure you want to continue?": "Уверены, что хотите продолжить?", "Are you sure you want to override all remote changes?": "Уверены, что хотите перезаписать все удалённые изменения?", "Are you sure you want to permanently delete all these files?": "Уверены, что хотите навсегда удалить эти файлы?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Время последней модификации объекта", "Today": "Today", "Trash Can File Versioning": "Использовать версионность для файлов в Корзине", + "Twitter": "Twitter", "Type": "Тип", "UNIX Permissions": "Разрешения UNIX", "Unavailable": "Недоступно", diff --git a/gui/default/assets/lang/lang-sk.json b/gui/default/assets/lang/lang-sk.json index 100830aa5..a3c624a22 100644 --- a/gui/default/assets/lang/lang-sk.json +++ b/gui/default/assets/lang/lang-sk.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.", "Anonymous Usage Reporting": "Anonymné hlásenie o používaní", "Anonymous usage report format has changed. Would you like to move to the new format?": "Formát anonymného hlásenia o používaní sa zmenil. Chcete prejsť na nový formát?", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Určite chcete vymazať všetky tieto súbory?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Čas poslednej zmeny položky", "Today": "Today", "Trash Can File Versioning": "Verzie súborov v koši", + "Twitter": "Twitter", "Type": "Typ", "UNIX Permissions": "UNIX Permissions", "Unavailable": "Nedostupné", diff --git a/gui/default/assets/lang/lang-sl.json b/gui/default/assets/lang/lang-sl.json index 7cae87006..7cd6b9be5 100644 --- a/gui/default/assets/lang/lang-sl.json +++ b/gui/default/assets/lang/lang-sl.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Zunanji ukaz upravlja z različicami. To mora odstraniti datoteko od deljene mape. Če pot do aplikacije vsebuje presledke, jo postavite v dvojne narekovaje.", "Anonymous Usage Reporting": "Brezimno poročanje o uporabi", "Anonymous usage report format has changed. Would you like to move to the new format?": "Format anonimnega poročanja uporabe se je spremenil. Ali želite se premakniti na novi format?", + "Apply": "Apply", "Are you sure you want to continue?": "Ste prepričani, da želite nadaljevati?", "Are you sure you want to override all remote changes?": "Ali ste prepričani, da želite preglasiti vse oddaljene spremembe?", "Are you sure you want to permanently delete all these files?": "Ste prepričani, da želite trajno izbrisati datoteke?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Čas, ko je bil element nazadnje spremenjen", "Today": "Danes", "Trash Can File Versioning": "Beleženje različic datotek s Smetnjakom", + "Twitter": "Twitter", "Type": "Vrsta", "UNIX Permissions": "UNIX dovoljenja", "Unavailable": "Ni na voljo", diff --git a/gui/default/assets/lang/lang-sv.json b/gui/default/assets/lang/lang-sv.json index 40a4b7c06..c04601c5b 100644 --- a/gui/default/assets/lang/lang-sv.json +++ b/gui/default/assets/lang/lang-sv.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Ett externt kommando hanterar versionen. Det måste ta bort filen från den delade mappen. Om sökvägen till applikationen innehåller mellanslag bör den citeras.", "Anonymous Usage Reporting": "Anonym användarstatistiksrapportering", "Anonymous usage report format has changed. Would you like to move to the new format?": "Anonymt användningsrapportformat har ändrats. Vill du flytta till det nya formatet?", + "Apply": "Tillämpa", "Are you sure you want to continue?": "Är du säker på att du vill fortsätta?", "Are you sure you want to override all remote changes?": "Är du säker på att du vill åsidosätta alla fjärrändringar?", "Are you sure you want to permanently delete all these files?": "Är du säker på att du vill ta bort alla dessa filer permanent?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Tidpunkten objektet var senast ändrad", "Today": "Idag", "Trash Can File Versioning": "Papperskorgs filversionshantering", + "Twitter": "Twitter", "Type": "Typ", "UNIX Permissions": "UNIX-behörigheter", "Unavailable": "Otillgänglig", diff --git a/gui/default/assets/lang/lang-tr.json b/gui/default/assets/lang/lang-tr.json index 327e49c7c..3960daed8 100644 --- a/gui/default/assets/lang/lang-tr.json +++ b/gui/default/assets/lang/lang-tr.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Harici bir komut sürümlendirmeyi gerçekleştirir. Dosyayı paylaşılan klasörden kaldırmak zorundadır. Eğer uygulama yolu boşluklar içeriyorsa, tırnak içine alınmalıdır.", "Anonymous Usage Reporting": "İsimsiz Kullanım Bildirme", "Anonymous usage report format has changed. Would you like to move to the new format?": "İsimsiz kullanım raporu biçimi değişti. Yeni biçime geçmek ister misiniz?", + "Apply": "Apply", "Are you sure you want to continue?": "Devam etmek istediğinize emin misiniz?", "Are you sure you want to override all remote changes?": "Tüm uzak değişiklikleri geçersiz kılmak istediğinize emin misiniz?", "Are you sure you want to permanently delete all these files?": "Tüm bu dosyaları kalıcı olarak silmek istediğinize emin misiniz?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Öğenin son düzenlendiği zaman", "Today": "Bugün", "Trash Can File Versioning": "Çöp Kutusu Dosyası Sürümlendirme", + "Twitter": "Twitter", "Type": "Tür", "UNIX Permissions": "Unix İzinleri", "Unavailable": "Kullanılamaz", diff --git a/gui/default/assets/lang/lang-uk.json b/gui/default/assets/lang/lang-uk.json index 51dc1e587..e37abc77e 100644 --- a/gui/default/assets/lang/lang-uk.json +++ b/gui/default/assets/lang/lang-uk.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Зовнішня команда керування версіями. Вона має видалити файл із спільної директорії. Якщо шлях до програми містить пробіли, він буде взятий у лапки.", "Anonymous Usage Reporting": "Анонімна статистика використання", "Anonymous usage report format has changed. Would you like to move to the new format?": "Змінився формат анонімного звіту про користування. Бажаєте перейти на новий формат?", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Are you sure you want to permanently delete all these files?", @@ -392,6 +393,7 @@ "Time the item was last modified": "Час останньої зміни елемента:", "Today": "Today", "Trash Can File Versioning": "Версіонування файлів у кошику ", + "Twitter": "Twitter", "Type": "Тип", "UNIX Permissions": "UNIX дозволи", "Unavailable": "Недоступно", diff --git a/gui/default/assets/lang/lang-zh-CN.json b/gui/default/assets/lang/lang-zh-CN.json index e13a7c074..9c58fad19 100644 --- a/gui/default/assets/lang/lang-zh-CN.json +++ b/gui/default/assets/lang/lang-zh-CN.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "外部命令接管了版本控制。该外部命令必须自行从共享文件夹中删除该文件。如果此应用程序的路径包含空格,应该用半角引号括起来。", "Anonymous Usage Reporting": "匿名使用报告", "Anonymous usage report format has changed. Would you like to move to the new format?": "匿名使用情况的报告格式已经变更。是否要迁移到新的格式?", + "Apply": "Apply", "Are you sure you want to continue?": "您确定要继续吗?", "Are you sure you want to override all remote changes?": "您确定要覆盖所有远程更改吗?  ", "Are you sure you want to permanently delete all these files?": "确认要永久删除这些文件吗?", @@ -392,6 +393,7 @@ "Time the item was last modified": "该项最近修改的时间", "Today": "Today", "Trash Can File Versioning": "回收站式版本控制", + "Twitter": "Twitter", "Type": "类型", "UNIX Permissions": "UNIX权限", "Unavailable": "无效", diff --git a/gui/default/assets/lang/lang-zh-HK.json b/gui/default/assets/lang/lang-zh-HK.json index 1d96b1371..a74bc5ea5 100644 --- a/gui/default/assets/lang/lang-zh-HK.json +++ b/gui/default/assets/lang/lang-zh-HK.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "外部命令接管了版本控制。該外部命令必須自行從共享文件夾中刪除該文件。如果此應用程序的路徑包含空格,應該用半角引號括起來。", "Anonymous Usage Reporting": "匿名使用報告", "Anonymous usage report format has changed. Would you like to move to the new format?": "匿名使用情況的報告格式已經變更。是否要遷移到新的格式?", + "Apply": "Apply", "Are you sure you want to continue?": "Are you sure you want to continue?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "Are you sure you want to permanently delete all these files?", @@ -392,6 +393,7 @@ "Time the item was last modified": "該項最近修改的時間", "Today": "Today", "Trash Can File Versioning": "回收站式版本控制", + "Twitter": "Twitter", "Type": "類型", "UNIX Permissions": "UNIX權限", "Unavailable": "無效", diff --git a/gui/default/assets/lang/lang-zh-TW.json b/gui/default/assets/lang/lang-zh-TW.json index 1fe7ff8f8..320503d1c 100644 --- a/gui/default/assets/lang/lang-zh-TW.json +++ b/gui/default/assets/lang/lang-zh-TW.json @@ -28,6 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "外部指令接管了版本控制。它必須將檔案自分享資料夾中移除。如果應用程式的路徑包含了空格,則必須使用雙引號刮起。", "Anonymous Usage Reporting": "匿名數據回報", "Anonymous usage report format has changed. Would you like to move to the new format?": "匿名數據回報格式已經變更,想要移至新格式嗎?", + "Apply": "Apply", "Are you sure you want to continue?": "您確定要繼續嗎?", "Are you sure you want to override all remote changes?": "Are you sure you want to override all remote changes?", "Are you sure you want to permanently delete all these files?": "確認永久刪除檔案?", @@ -392,6 +393,7 @@ "Time the item was last modified": "前次修改時間", "Today": "Today", "Trash Can File Versioning": "垃圾筒式檔案版本控制", + "Twitter": "Twitter", "Type": "類型", "UNIX Permissions": "UNIX 權限", "Unavailable": "無法使用", diff --git a/gui/default/syncthing/core/aboutModalView.html b/gui/default/syncthing/core/aboutModalView.html index d06bb5ad0..b3ffd4cbe 100644 --- a/gui/default/syncthing/core/aboutModalView.html +++ b/gui/default/syncthing/core/aboutModalView.html @@ -19,7 +19,7 @@

The Syncthing Authors

-Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male, Ben Schulz, Caleb Callaway, Daniel Harte, Evgeny Kuznetsov, Lars K.W. Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ryan Sullivan, Sergey Mishin, Stefan Tatschner, Tomasz Wilczyński, Wulf Weich, dependabot-preview[bot], dependabot[bot], greatroar, Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Aman Gupta, Andrew Dunham, Andrew Rabert, Andrey D, Anjan Momi, Antoine Lamielle, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Kebin Liu, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel, Shaarad Dalvi, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Syncthing Automation, Syncthing Release Automation, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], derekriemer, desbma, georgespatton, ghjklw, ignacy123, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, villekalliomaki, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙 +Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male, Ben Schulz, Caleb Callaway, Daniel Harte, Evgeny Kuznetsov, Lars K.W. Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ryan Sullivan, Sergey Mishin, Stefan Tatschner, Tomasz Wilczyński, Wulf Weich, dependabot-preview[bot], dependabot[bot], greatroar, Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Aman Gupta, Andrew Dunham, Andrew Meyer, Andrew Rabert, Andrey D, Anjan Momi, Antoine Lamielle, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Kebin Liu, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel, Shaarad Dalvi, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Syncthing Automation, Syncthing Release Automation, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], derekriemer, desbma, georgespatton, ghjklw, ignacy123, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, villekalliomaki, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙

diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index ea3803f07..69edab20a 100644 --- a/man/stdiscosrv.1 +++ b/man/stdiscosrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STDISCOSRV" "1" "Mar 03, 2022" "v1" "Syncthing" +.TH "STDISCOSRV" "1" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index e34077fb2..aa4016b0d 100644 --- a/man/strelaysrv.1 +++ b/man/strelaysrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STRELAYSRV" "1" "Mar 03, 2022" "v1" "Syncthing" +.TH "STRELAYSRV" "1" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index 92a70c301..a525d3a75 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-BEP" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-bep \- Block Exchange Protocol v1 .SH INTRODUCTION AND DEFINITIONS diff --git a/man/syncthing-config.5 b/man/syncthing-config.5 index 84a310286..67aac6e30 100644 --- a/man/syncthing-config.5 +++ b/man/syncthing-config.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-CONFIG" "5" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index b23437e4f..5336478e9 100644 --- a/man/syncthing-device-ids.7 +++ b/man/syncthing-device-ids.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-DEVICE-IDS" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-device-ids \- Understanding Device IDs .sp diff --git a/man/syncthing-event-api.7 b/man/syncthing-event-api.7 index 27067ec60..ec3fe96b2 100644 --- a/man/syncthing-event-api.7 +++ b/man/syncthing-event-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-EVENT-API" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION @@ -215,10 +215,10 @@ Emitted when a device was paused. .fi .UNINDENT .UNINDENT -.SS DeviceRejected +.SS DeviceRejected (DEPRECATED) .sp Deprecated since version v1.13.0: This event is still emitted for compatibility, but deprecated. Use -the replacement pending\-devices\-changed event instead. +the replacement pendingdeviceschanged event instead. .sp Emitted when there is a connection from a device we are not configured @@ -400,7 +400,13 @@ device. "data": { "completion": 100, "device": "I6KAH76\-66SLLLB\-5PFXSOA\-UFJCDZC\-YAOMLEK\-CP2GB32\-BV5RQST\-3PSROAU", - "folder": "default" + "folder": "default", + "globalBytes": 17, + "globalItems": 4, + "needBytes": 0, + "needDeletes": 0, + "needItems": 0, + "sequence": 12 } } .ft P @@ -470,10 +476,10 @@ of a folder. Sent repeatedly for each changed folder. .fi .UNINDENT .UNINDENT -.SS FolderRejected +.SS FolderRejected (DEPRECATED) .sp Deprecated since version v1.13.0: This event is still emitted for compatibility, but deprecated. Use -the replacement pending\-folders\-changed event instead. +the replacement pendingfolderschanged event instead. .sp Emitted when a device sends index information for a folder we do not diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index 067860a6e..d036d19c3 100644 --- a/man/syncthing-faq.7 +++ b/man/syncthing-faq.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-FAQ" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index 81a9a0180..85db6edb9 100644 --- a/man/syncthing-globaldisco.7 +++ b/man/syncthing-globaldisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-GLOBALDISCO" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index dce3cf885..f007e3d54 100644 --- a/man/syncthing-localdisco.7 +++ b/man/syncthing-localdisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-LOCALDISCO" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-localdisco \- Local Discovery Protocol v4 .SH MODE OF OPERATION diff --git a/man/syncthing-networking.7 b/man/syncthing-networking.7 index a8a72eb5f..97e04bbea 100644 --- a/man/syncthing-networking.7 +++ b/man/syncthing-networking.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-NETWORKING" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index 0273f6faa..413e7c7f6 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-RELAY" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-relay \- Relay Protocol v1 .SH WHAT IS A RELAY? diff --git a/man/syncthing-rest-api.7 b/man/syncthing-rest-api.7 index 5478d9b5b..34cdb93ff 100644 --- a/man/syncthing-rest-api.7 +++ b/man/syncthing-rest-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-REST-API" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp @@ -94,7 +94,7 @@ $ curl \-H "X\-API\-Key: yourkey" localhost:8384/rest/system/browse?current=/var .fi .UNINDENT .UNINDENT -.SS GET /rest/system/config +.SS GET /rest/system/config (DEPRECATED) .sp Deprecated since version v1.12.0: This endpoint still works as before but is deprecated. Use rest\-config instead. @@ -365,7 +365,7 @@ Returns the current configuration. .fi .UNINDENT .UNINDENT -.SS GET /rest/system/config/insync +.SS GET /rest/system/config/insync (DEPRECATED) .sp Deprecated since version v1.12.0: This endpoint still works as before but is deprecated. Use rest\-config\-insync instead. @@ -385,9 +385,9 @@ configuration is the same as that on disk. .fi .UNINDENT .UNINDENT -.SS POST /rest/system/config +.SS POST /rest/system/config (DEPRECATED) .sp -Deprecated since version v1.12.0: This endpoint still works as before but is deprecated. Use rest\-config +Deprecated since version v1.12.0: This endpoint still works as before but is deprecated. Use config instead. .sp @@ -1044,7 +1044,7 @@ The results can be paginated using the common pagination parameters\&. .fi .UNINDENT .UNINDENT -.SS GET /rest/folder/pullerrors +.SS GET /rest/folder/pullerrors (DEPRECATED) .sp Deprecated since version v0.14.53: This endpoint still works as before but is deprecated. Use folder\-errors\-get instead, which returns the same information. @@ -1273,7 +1273,8 @@ Aggregated completion status for all folders on the local device: "needBytes": 9789241, "globalItems": 7823, "needItems": 412, - "needDeletes": 0 + "needDeletes": 0, + "sequence": 12 } .ft P .fi diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index 05587bff3..f2ea803ce 100644 --- a/man/syncthing-security.7 +++ b/man/syncthing-security.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-SECURITY" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index 7363bfce8..afd7f3017 100644 --- a/man/syncthing-stignore.5 +++ b/man/syncthing-stignore.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-STIGNORE" "5" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-stignore \- Prevent files from being synchronized to other nodes .SH SYNOPSIS diff --git a/man/syncthing-versioning.7 b/man/syncthing-versioning.7 index 9db385c41..0d8d8d089 100644 --- a/man/syncthing-versioning.7 +++ b/man/syncthing-versioning.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-VERSIONING" "7" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-versioning \- Keep automatic backups of deleted files by other nodes .sp diff --git a/man/syncthing.1 b/man/syncthing.1 index 005a4e58e..8013d8002 100644 --- a/man/syncthing.1 +++ b/man/syncthing.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING" "1" "Mar 03, 2022" "v1" "Syncthing" +.TH "SYNCTHING" "1" "Mar 13, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS From 26eaedc49198b26fa3a89c4571247049ab887e44 Mon Sep 17 00:00:00 2001 From: greatroar <61184462+greatroar@users.noreply.github.com> Date: Mon, 14 Mar 2022 22:48:10 +0100 Subject: [PATCH 24/37] lib/db, lib/discover: Minor cleanup (#8217) --- lib/db/db_test.go | 4 ++-- lib/db/structs.go | 14 -------------- lib/discover/global.go | 12 ++---------- 3 files changed, 4 insertions(+), 26 deletions(-) diff --git a/lib/db/db_test.go b/lib/db/db_test.go index 020ca2890..b76bb1c50 100644 --- a/lib/db/db_test.go +++ b/lib/db/db_test.go @@ -133,13 +133,13 @@ var ( update0to3Folder = "UpdateSchema0to3" invalid = "invalid" slashPrefixed = "/notgood" - haveUpdate0to3 map[protocol.DeviceID]fileList + haveUpdate0to3 map[protocol.DeviceID][]protocol.FileInfo ) func init() { remoteDevice0, _ = protocol.DeviceIDFromString("AIR6LPZ-7K4PTTV-UXQSMUU-CPQ5YWH-OEDFIIQ-JUG777G-2YQXXR5-YD6AWQR") remoteDevice1, _ = protocol.DeviceIDFromString("I6KAH76-66SLLLB-5PFXSOA-UFJCDZC-YAOMLEK-CP2GB32-BV5RQST-3PSROAU") - haveUpdate0to3 = map[protocol.DeviceID]fileList{ + haveUpdate0to3 = map[protocol.DeviceID][]protocol.FileInfo{ protocol.LocalDeviceID: { protocol.FileInfo{Name: "a", Version: protocol.Vector{Counters: []protocol.Counter{{ID: myID, Value: 1000}}}, Blocks: genBlocks(1)}, protocol.FileInfo{Name: slashPrefixed, Version: protocol.Vector{Counters: []protocol.Counter{{ID: myID, Value: 1000}}}, Blocks: genBlocks(1)}, diff --git a/lib/db/structs.go b/lib/db/structs.go index 40e4a48a7..f8d324ded 100644 --- a/lib/db/structs.go +++ b/lib/db/structs.go @@ -512,17 +512,3 @@ func (fv FileVersion) copy() FileVersion { n.InvalidDevices = append([][]byte{}, fv.InvalidDevices...) return n } - -type fileList []protocol.FileInfo - -func (fl fileList) Len() int { - return len(fl) -} - -func (fl fileList) Swap(a, b int) { - fl[a], fl[b] = fl[b], fl[a] -} - -func (fl fileList) Less(a, b int) bool { - return fl[a].Name < fl[b].Name -} diff --git a/lib/discover/global.go b/lib/discover/global.go index 23f04be3f..cd4b03b1b 100644 --- a/lib/discover/global.go +++ b/lib/discover/global.go @@ -420,26 +420,18 @@ type contextClient struct { } func (c *contextClient) Get(ctx context.Context, url string) (*http.Response, error) { - // For Date: Mon, 21 Mar 2022 03:47:47 +0000 Subject: [PATCH 25/37] gui, man, authors: Update docs, translations, and contributors --- gui/default/assets/lang/lang-de.json | 2 +- gui/default/assets/lang/lang-hu.json | 2 +- gui/default/assets/lang/lang-lt.json | 2 +- gui/default/assets/lang/lang-tr.json | 2 +- .../syncthing/core/aboutModalView.html | 2 +- man/stdiscosrv.1 | 2 +- man/strelaysrv.1 | 2 +- man/syncthing-bep.7 | 2 +- man/syncthing-config.5 | 2 +- man/syncthing-device-ids.7 | 2 +- man/syncthing-event-api.7 | 48 +++++++++++++++++-- man/syncthing-faq.7 | 19 +++++++- man/syncthing-globaldisco.7 | 2 +- man/syncthing-localdisco.7 | 2 +- man/syncthing-networking.7 | 2 +- man/syncthing-relay.7 | 2 +- man/syncthing-rest-api.7 | 10 ++-- man/syncthing-security.7 | 2 +- man/syncthing-stignore.5 | 2 +- man/syncthing-versioning.7 | 2 +- man/syncthing.1 | 2 +- 21 files changed, 86 insertions(+), 27 deletions(-) diff --git a/gui/default/assets/lang/lang-de.json b/gui/default/assets/lang/lang-de.json index 9bc2ac83a..357e56187 100644 --- a/gui/default/assets/lang/lang-de.json +++ b/gui/default/assets/lang/lang-de.json @@ -28,7 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Ein externer Befehl behandelt die Versionierung. Die Datei aus dem freigegebenen Ordner muss entfernen werden. Wenn der Pfad der Anwendung Leerzeichen enthält, sollte dieser in Anführungszeichen stehen.", "Anonymous Usage Reporting": "Anonymer Nutzungsbericht", "Anonymous usage report format has changed. Would you like to move to the new format?": "Das Format des anonymen Nutzungsberichts hat sich geändert. Möchten Sie auf das neue Format umsteigen?", - "Apply": "Apply", + "Apply": "Anwenden", "Are you sure you want to continue?": "Sind Sie sicher, dass Sie fortfahren möchten?", "Are you sure you want to override all remote changes?": "Sind Sie sicher, dass Sie alle entfernten Änderungen überschreiben möchten?", "Are you sure you want to permanently delete all these files?": "Sind Sie sicher, dass Sie all diese Dateien dauerhaft löschen möchten?", diff --git a/gui/default/assets/lang/lang-hu.json b/gui/default/assets/lang/lang-hu.json index 574d74c19..6feae4eb7 100644 --- a/gui/default/assets/lang/lang-hu.json +++ b/gui/default/assets/lang/lang-hu.json @@ -28,7 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Külső program kezeli a fájlverzió-követést. Az távolítja el a fájlt a megosztott mappából. Ha az alkalmazás útvonala szóközöket tartalmaz, zárójelezni szükséges az útvonalat.", "Anonymous Usage Reporting": "Névtelen felhasználási adatok küldése", "Anonymous usage report format has changed. Would you like to move to the new format?": "A névtelen használati jelentés formátuma megváltozott. Szeretnél áttérni az új formátumra?", - "Apply": "Apply", + "Apply": "Alkalmazás", "Are you sure you want to continue?": "Biztosan folytatható?", "Are you sure you want to override all remote changes?": "Biztos, hogy felülírható minden távoli módosítás?", "Are you sure you want to permanently delete all these files?": "Biztos, hogy véglegesen törölhetőek mindezek a fájlok?", diff --git a/gui/default/assets/lang/lang-lt.json b/gui/default/assets/lang/lang-lt.json index 1c9f897cf..3ca8b36da 100644 --- a/gui/default/assets/lang/lang-lt.json +++ b/gui/default/assets/lang/lang-lt.json @@ -393,7 +393,7 @@ "Time the item was last modified": "Laikas, kai elementas buvo paskutinį kartą modifikuotas", "Today": "Šiandien", "Trash Can File Versioning": "Šiukšliadėžės versijų valdymas", - "Twitter": "Twitter", + "Twitter": "„Twitter“", "Type": "Tipas", "UNIX Permissions": "UNIX leidimai", "Unavailable": "Neprieinama", diff --git a/gui/default/assets/lang/lang-tr.json b/gui/default/assets/lang/lang-tr.json index 3960daed8..e764be240 100644 --- a/gui/default/assets/lang/lang-tr.json +++ b/gui/default/assets/lang/lang-tr.json @@ -28,7 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Harici bir komut sürümlendirmeyi gerçekleştirir. Dosyayı paylaşılan klasörden kaldırmak zorundadır. Eğer uygulama yolu boşluklar içeriyorsa, tırnak içine alınmalıdır.", "Anonymous Usage Reporting": "İsimsiz Kullanım Bildirme", "Anonymous usage report format has changed. Would you like to move to the new format?": "İsimsiz kullanım raporu biçimi değişti. Yeni biçime geçmek ister misiniz?", - "Apply": "Apply", + "Apply": "Uygula", "Are you sure you want to continue?": "Devam etmek istediğinize emin misiniz?", "Are you sure you want to override all remote changes?": "Tüm uzak değişiklikleri geçersiz kılmak istediğinize emin misiniz?", "Are you sure you want to permanently delete all these files?": "Tüm bu dosyaları kalıcı olarak silmek istediğinize emin misiniz?", diff --git a/gui/default/syncthing/core/aboutModalView.html b/gui/default/syncthing/core/aboutModalView.html index b3ffd4cbe..30a274b81 100644 --- a/gui/default/syncthing/core/aboutModalView.html +++ b/gui/default/syncthing/core/aboutModalView.html @@ -19,7 +19,7 @@

The Syncthing Authors

-Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male, Ben Schulz, Caleb Callaway, Daniel Harte, Evgeny Kuznetsov, Lars K.W. Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ryan Sullivan, Sergey Mishin, Stefan Tatschner, Tomasz Wilczyński, Wulf Weich, dependabot-preview[bot], dependabot[bot], greatroar, Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Aman Gupta, Andrew Dunham, Andrew Meyer, Andrew Rabert, Andrey D, Anjan Momi, Antoine Lamielle, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Kebin Liu, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel, Shaarad Dalvi, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Syncthing Automation, Syncthing Release Automation, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], derekriemer, desbma, georgespatton, ghjklw, ignacy123, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, villekalliomaki, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙 +Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male, Ben Schulz, Caleb Callaway, Daniel Harte, Evgeny Kuznetsov, Lars K.W. Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ryan Sullivan, Sergey Mishin, Stefan Tatschner, Syncthing Release Automation, Tomasz Wilczyński, Wulf Weich, dependabot-preview[bot], dependabot[bot], greatroar, Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Aman Gupta, Andrew Dunham, Andrew Meyer, Andrew Rabert, Andrey D, Anjan Momi, Antoine Lamielle, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Kebin Liu, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel, Shaarad Dalvi, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Syncthing Automation, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], derekriemer, desbma, georgespatton, ghjklw, ignacy123, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, villekalliomaki, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙

diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index 69edab20a..1b75d8137 100644 --- a/man/stdiscosrv.1 +++ b/man/stdiscosrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STDISCOSRV" "1" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "STDISCOSRV" "1" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index aa4016b0d..7049e401e 100644 --- a/man/strelaysrv.1 +++ b/man/strelaysrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STRELAYSRV" "1" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "STRELAYSRV" "1" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index a525d3a75..78e37839b 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-BEP" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-bep \- Block Exchange Protocol v1 .SH INTRODUCTION AND DEFINITIONS diff --git a/man/syncthing-config.5 b/man/syncthing-config.5 index 67aac6e30..5ec370df4 100644 --- a/man/syncthing-config.5 +++ b/man/syncthing-config.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-CONFIG" "5" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index 5336478e9..23acc17de 100644 --- a/man/syncthing-device-ids.7 +++ b/man/syncthing-device-ids.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-DEVICE-IDS" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-device-ids \- Understanding Device IDs .sp diff --git a/man/syncthing-event-api.7 b/man/syncthing-event-api.7 index ec3fe96b2..a4bbf6a1f 100644 --- a/man/syncthing-event-api.7 +++ b/man/syncthing-event-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-EVENT-API" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION @@ -593,6 +593,32 @@ state. .fi .UNINDENT .UNINDENT +.SS FolderWatchStateChanged +.sp +The \fBFolderWatchStateChanged\fP event is emitted when a folder’s watcher routine +encounters a new error, or when a previous error disappeared after retrying. +The event contains the ID of the affected folder and textual error messages +describing the previous (\fBfrom\fP) and the updated (\fBto\fP) error conditions. +If there was no error in either of these, the respective field is omitted. +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +{ + "id": 123, + "type": "FolderWatchStateChanged", + "time": "2022\-03\-14T12:34:56.890000000+01:00", + "data": { + "folder": "default", + "from": "Something bad happened.", + "to": "Something worse happened." + } +} +.ft P +.fi +.UNINDENT +.UNINDENT .SS ItemFinished .sp Generated when Syncthing ends synchronizing a file to a newer version. A @@ -738,8 +764,16 @@ This event is emitted when a listen address changes. .sp Generated upon scan whenever the local disk has discovered an updated file from the previous scan. This does \fInot\fP include events that are discovered and copied from -other devices (remote\-change\-detected), only files that were changed on the +other devices (remotechangedetected), only files that were changed on the local filesystem. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +This event is not included in /rest/events\-get endpoint without +a mask specified, but needs to be selected explicitly. +.UNINDENT +.UNINDENT .INDENT 0.0 .INDENT 3.5 .sp @@ -895,7 +929,15 @@ longer pending for any device. .SS RemoteChangeDetected .sp Generated upon scan whenever a file is locally updated due to a remote change. -Files that are updated locally produce a local\-change\-detected event. +Files that are updated locally produce a localchangedetected event. +.sp +\fBNOTE:\fP +.INDENT 0.0 +.INDENT 3.5 +This event is not included in /rest/events\-get endpoint without +a mask specified, but needs to be selected explicitly. +.UNINDENT +.UNINDENT .INDENT 0.0 .INDENT 3.5 .sp diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index d036d19c3..18af559a1 100644 --- a/man/syncthing-faq.7 +++ b/man/syncthing-faq.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-FAQ" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 @@ -655,7 +655,22 @@ echo 204800 | sudo tee /proc/sys/fs/inotify/max_user_watches .UNINDENT .SS How do I reset the GUI password? .sp -If you’ve forgotten/lost the GUI password, you can remove it by deleting the \fB\fP and \fB\fP XML tags from the \fB\fP block in file \fBconfig.xml\fP\&. This should be done while Syncthing is not running. The location of the file depends on the OS and is described in the configuration documentation. +If you’ve forgotten / lost the GUI password, you can reset it using the +\fB\-\-gui\-password\fP (and possibly \fB\-\-gui\-user\fP) options to the +\fBsyncthing generate\fP subcommand. This should be done while Syncthing is not +running. +.INDENT 0.0 +.IP 1. 3 +Stop Syncthing: \fBsyncthing cli operations shutdown\fP +.IP 2. 3 +\fBsyncthing generate \-\-gui\-password=myNewPassword \-\-gui\-user=newUserName\fP +.IP 3. 3 +Restart Syncthing as usual. +.UNINDENT +.sp +\fIAlternatively, in step 2\fP, you can manually delete the \fB\fP and \fB\fP XML tags from the +\fB\fP block in file \fBconfig.xml\fP\&. The location of the file depends on the +OS and is described in the configuration documentation\&. .sp For example, the two emphasized lines below would be removed from the file. .INDENT 0.0 diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index 85db6edb9..56ff28102 100644 --- a/man/syncthing-globaldisco.7 +++ b/man/syncthing-globaldisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-GLOBALDISCO" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index f007e3d54..5fb62d6ce 100644 --- a/man/syncthing-localdisco.7 +++ b/man/syncthing-localdisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-LOCALDISCO" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-localdisco \- Local Discovery Protocol v4 .SH MODE OF OPERATION diff --git a/man/syncthing-networking.7 b/man/syncthing-networking.7 index 97e04bbea..a84711404 100644 --- a/man/syncthing-networking.7 +++ b/man/syncthing-networking.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-NETWORKING" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index 413e7c7f6..cd0cfe514 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-RELAY" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-relay \- Relay Protocol v1 .SH WHAT IS A RELAY? diff --git a/man/syncthing-rest-api.7 b/man/syncthing-rest-api.7 index 34cdb93ff..73167b124 100644 --- a/man/syncthing-rest-api.7 +++ b/man/syncthing-rest-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-REST-API" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp @@ -1709,9 +1709,11 @@ This is an expensive call, increasing CPU and RAM usage on the device. Use spari .sp To receive events, perform a HTTP GET of \fB/rest/events\fP\&. .sp -To filter the event list, in effect creating a specific subscription for -only the desired event types, add a parameter -\fBevents=EventTypeA,EventTypeB,...\fP where the event types are any of the event\-types\&. +To filter the event list, in effect creating a specific subscription for only +the desired event types, add a parameter \fBevents=EventTypeA,EventTypeB,...\fP +where the event types are any of the event\-types\&. If no filter is +specified, all events \fIexcept\fP /events/localchangedetected and +/events/remotechangedetected are included. .sp The optional parameter \fBsince=\fP sets the ID of the last event you’ve already seen. Syncthing returns a JSON encoded array of event objects, diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index f2ea803ce..d410d0f58 100644 --- a/man/syncthing-security.7 +++ b/man/syncthing-security.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-SECURITY" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index afd7f3017..f93bf2ddc 100644 --- a/man/syncthing-stignore.5 +++ b/man/syncthing-stignore.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-STIGNORE" "5" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-stignore \- Prevent files from being synchronized to other nodes .SH SYNOPSIS diff --git a/man/syncthing-versioning.7 b/man/syncthing-versioning.7 index 0d8d8d089..7a74c3b86 100644 --- a/man/syncthing-versioning.7 +++ b/man/syncthing-versioning.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-VERSIONING" "7" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-versioning \- Keep automatic backups of deleted files by other nodes .sp diff --git a/man/syncthing.1 b/man/syncthing.1 index 8013d8002..c3a436d7e 100644 --- a/man/syncthing.1 +++ b/man/syncthing.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING" "1" "Mar 13, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING" "1" "Mar 20, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS From 53926a1ae63bdb131c82a75bc00d65a96fa57cf2 Mon Sep 17 00:00:00 2001 From: Greg Date: Thu, 24 Mar 2022 00:36:43 -0700 Subject: [PATCH 26/37] lib/fs: Do not follow symlinks in watcher on solaris (fixes #8020) (#8223) --- lib/fs/basicfs_watch_eventtypes_fen.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fs/basicfs_watch_eventtypes_fen.go b/lib/fs/basicfs_watch_eventtypes_fen.go index bba5584a0..eae07e2d0 100644 --- a/lib/fs/basicfs_watch_eventtypes_fen.go +++ b/lib/fs/basicfs_watch_eventtypes_fen.go @@ -12,7 +12,7 @@ package fs import "github.com/syncthing/notify" const ( - subEventMask = notify.Create | notify.FileModified | notify.FileRenameFrom | notify.FileDelete | notify.FileRenameTo + subEventMask = notify.Create | notify.FileModified | notify.FileRenameFrom | notify.FileDelete | notify.FileRenameTo | notify.FileNoFollow permEventMask = notify.FileAttrib rmEventMask = notify.FileDelete | notify.FileRenameFrom ) From 44b11ec25797725b4d63158f62f5d3cf460da634 Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Thu, 24 Mar 2022 10:46:06 -0500 Subject: [PATCH 27/37] Pin actions to a full length commit SHA (#8224) --- .github/workflows/update-docs-translations.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-docs-translations.yaml b/.github/workflows/update-docs-translations.yaml index 5b4e93640..8c822b8ca 100644 --- a/.github/workflows/update-docs-translations.yaml +++ b/.github/workflows/update-docs-translations.yaml @@ -10,11 +10,11 @@ jobs: runs-on: ubuntu-latest name: Update translations and documentation steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 with: fetch-depth: 0 token: ${{ secrets.ACTIONS_GITHUB_TOKEN }} - - uses: actions/setup-go@v2 + - uses: actions/setup-go@bfdd3570ce990073878bf10f6b2d79082de49492 # v2 with: go-version: ^1.17.6 - run: | From 4be867c560aeb24d3763ddb5b28a241db0d66af4 Mon Sep 17 00:00:00 2001 From: greatroar <61184462+greatroar@users.noreply.github.com> Date: Sat, 26 Mar 2022 11:05:57 +0100 Subject: [PATCH 28/37] all: Replace errors.Cause with errors.Is (#8236) --- lib/connections/service.go | 2 +- lib/model/folder_sendrecv.go | 2 +- lib/pmp/pmp.go | 6 +++--- lib/upnp/upnp.go | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/connections/service.go b/lib/connections/service.go index 24a6f1420..9cff1970e 100644 --- a/lib/connections/service.go +++ b/lib/connections/service.go @@ -882,7 +882,7 @@ func (s *connectionStatusHandler) ConnectionStatus() map[string]ConnectionStatus } func (s *connectionStatusHandler) setConnectionStatus(address string, err error) { - if errors.Cause(err) == context.Canceled { + if errors.Is(err, context.Canceled) { return } diff --git a/lib/model/folder_sendrecv.go b/lib/model/folder_sendrecv.go index 757e4504d..af57b7b0f 100644 --- a/lib/model/folder_sendrecv.go +++ b/lib/model/folder_sendrecv.go @@ -1849,7 +1849,7 @@ func (f *sendReceiveFolder) moveForConflict(name, lastModBy string, scanChan cha } func (f *sendReceiveFolder) newPullError(path string, err error) { - if errors.Cause(err) == f.ctx.Err() { + if errors.Is(err, f.ctx.Err()) { // Error because the folder stopped - no point logging/tracking return } diff --git a/lib/pmp/pmp.go b/lib/pmp/pmp.go index 7af5021d4..7530eb046 100644 --- a/lib/pmp/pmp.go +++ b/lib/pmp/pmp.go @@ -8,14 +8,14 @@ package pmp import ( "context" + "errors" "fmt" "net" "strings" "time" "github.com/jackpal/gateway" - "github.com/jackpal/go-nat-pmp" - "github.com/pkg/errors" + natpmp "github.com/jackpal/go-nat-pmp" "github.com/syncthing/syncthing/lib/nat" "github.com/syncthing/syncthing/lib/util" @@ -50,7 +50,7 @@ func Discover(ctx context.Context, renewal, timeout time.Duration) []nat.Device return ierr }) if err != nil { - if errors.Cause(err) == context.Canceled { + if errors.Is(err, context.Canceled) { return nil } if strings.Contains(err.Error(), "Timed out") { diff --git a/lib/upnp/upnp.go b/lib/upnp/upnp.go index 9cf3b5afb..f88f0f2c7 100644 --- a/lib/upnp/upnp.go +++ b/lib/upnp/upnp.go @@ -212,7 +212,7 @@ loop: case *UnsupportedDeviceTypeError: l.Debugln(err.Error()) default: - if errors.Cause(err) != context.Canceled { + if !errors.Is(err, context.Canceled) { l.Infoln("UPnP parse:", err) } } From 0eca0ac45a4dd40d0131b9e3e58b57e2ca0f39ab Mon Sep 17 00:00:00 2001 From: greatroar <61184462+greatroar@users.noreply.github.com> Date: Sat, 26 Mar 2022 11:07:07 +0100 Subject: [PATCH 29/37] lib/model: Chmod to mode|0700, not 755 (#8235) --- lib/model/util.go | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/lib/model/util.go b/lib/model/util.go index 32f112ef1..9309f1a94 100644 --- a/lib/model/util.go +++ b/lib/model/util.go @@ -114,26 +114,29 @@ func inWritableDir(fn func(string) error, targetFs fs.Filesystem, path string, i if !info.IsDir() { return errors.New("Not a directory: " + path) } - if info.Mode()&0200 == 0 { + + const permBits = fs.ModePerm | fs.ModeSetuid | fs.ModeSetgid | fs.ModeSticky + if mode := info.Mode() & permBits; mode&0200 == 0 { // A non-writeable directory (for this user; we assume that's the // relevant part). Temporarily change the mode so we can delete the // file or directory inside it. - if err := targetFs.Chmod(dir, 0755); err == nil { - // Chmod succeeded, we should change the permissions back on the way - // out. If we fail we log the error as we have irrevocably messed up - // at this point. :( (The operation we were called to wrap has - // succeeded or failed on its own so returning an error to the - // caller is inappropriate.) - defer func() { - if err := targetFs.Chmod(dir, info.Mode()&fs.ModePerm); err != nil && !fs.IsNotExist(err) { - logFn := l.Warnln - if ignorePerms { - logFn = l.Debugln - } - logFn("Failed to restore directory permissions after gaining write access:", err) - } - }() + if err := targetFs.Chmod(dir, mode|0700); err != nil { + return err } + // Chmod succeeded, we should change the permissions back on the way + // out. If we fail we log the error as we have irrevocably messed up + // at this point. :( (The operation we were called to wrap has + // succeeded or failed on its own so returning an error to the + // caller is inappropriate.) + defer func() { + if err := targetFs.Chmod(dir, mode); err != nil && !fs.IsNotExist(err) { + logFn := l.Warnln + if ignorePerms { + logFn = l.Debugln + } + logFn("Failed to restore directory permissions after gaining write access:", err) + } + }() } return fn(path) From 55c513b827bebdffd9af9e4079c2c366562c394c Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Sun, 27 Mar 2022 21:29:40 +0200 Subject: [PATCH 30/37] lib/model: Clear folder error after loading ignores (fixes #8232) (#8238) --- lib/model/folder.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/model/folder.go b/lib/model/folder.go index 396476be4..a9b15e0de 100644 --- a/lib/model/folder.go +++ b/lib/model/folder.go @@ -382,7 +382,6 @@ func (f *folder) pull() (success bool, err error) { l.Debugln("Skipping pull of", f.Description(), "due to folder error:", err) return false, err } - f.setError(nil) // Send only folder doesn't do any io, it only checks for out-of-sync // items that differ in metadata and updates those. @@ -409,6 +408,7 @@ func (f *folder) pull() (success bool, err error) { l.Debugln("Skipping pull of", f.Description(), "due to folder error:", err) return false, err } + f.setError(nil) success, err = f.puller.pull() @@ -431,10 +431,6 @@ func (f *folder) scanSubdirs(subDirs []string) error { err := f.getHealthErrorAndLoadIgnores() if err != nil { - // If there is a health error we set it as the folder error. We do not - // clear the folder error if there is no health error, as there might be - // an *other* folder error (failed to load ignores, for example). Hence - // we do not use the CheckHealth() convenience function here. return err } f.setError(nil) From 11ac945b87b1e638163ebfd3467bc120c7239ff3 Mon Sep 17 00:00:00 2001 From: Syncthing Release Automation Date: Mon, 28 Mar 2022 03:50:34 +0000 Subject: [PATCH 31/37] gui, man, authors: Update docs, translations, and contributors --- AUTHORS | 2 ++ gui/default/assets/lang/lang-fr.json | 4 ++-- gui/default/assets/lang/lang-nl.json | 2 +- gui/default/assets/lang/lang-sv.json | 10 +++++----- gui/default/syncthing/core/aboutModalView.html | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/AUTHORS b/AUTHORS index eb955d684..360a2f880 100644 --- a/AUTHORS +++ b/AUTHORS @@ -112,6 +112,7 @@ Gilli Sigurdsson (gillisig) Gleb Sinyavskiy Graham Miln (grahammiln) greatroar <61184462+greatroar@users.noreply.github.com> +Greg Han Boetes HansK-p <42314815+HansK-p@users.noreply.github.com> Harrison Jones (harrisonhjones) @@ -202,6 +203,7 @@ MikolajTwarog <43782609+MikolajTwarog@users.noreply.github.com> Mingxuan Lin mv1005 <49659413+mv1005@users.noreply.github.com> Nate Morrison (nrm21) +Naveen <172697+naveensrinivasan@users.noreply.github.com> Nicholas Rishel (PrototypeNM1) Nico Stapelbroek <3368018+nstapelbroek@users.noreply.github.com> Nicolas Braud-Santoni diff --git a/gui/default/assets/lang/lang-fr.json b/gui/default/assets/lang/lang-fr.json index e0c4b147e..34f6ab45d 100644 --- a/gui/default/assets/lang/lang-fr.json +++ b/gui/default/assets/lang/lang-fr.json @@ -28,7 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Une commande externe gère les versions de fichiers. Il lui incombe de supprimer les fichiers du répertoire partagé. Si le chemin contient des espaces, il doit être spécifié entre guillemets.", "Anonymous Usage Reporting": "Rapport anonyme de statistiques d'utilisation", "Anonymous usage report format has changed. Would you like to move to the new format?": "Le format du rapport anonyme d'utilisation a changé. Voulez-vous passer au nouveau format ?", - "Apply": "Apply", + "Apply": "Appliquer", "Are you sure you want to continue?": "Confirmez-vous ?", "Are you sure you want to override all remote changes?": "Voulez-vous vraiment écraser tous les changements distants ?", "Are you sure you want to permanently delete all these files?": "Êtes-vous sûrs de vouloir définitivement supprimer tous ces fichiers ?", @@ -393,7 +393,7 @@ "Time the item was last modified": "Dernière modification de l'élément", "Today": "Aujourd'hui", "Trash Can File Versioning": "Style poubelle", - "Twitter": "Twitter", + "Twitter": "Piaf", "Type": "Type", "UNIX Permissions": "Permissions UNIX", "Unavailable": "Indisponible", diff --git a/gui/default/assets/lang/lang-nl.json b/gui/default/assets/lang/lang-nl.json index b6deade5a..1f019ecf2 100644 --- a/gui/default/assets/lang/lang-nl.json +++ b/gui/default/assets/lang/lang-nl.json @@ -28,7 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Een externe opdracht regelt het versiebeheer. Hij moet het bestand verwijderen uit de gedeelde map. Als het pad naar de toepassing spaties bevat, moet dit tussen aanhalingstekens geplaatst worden.", "Anonymous Usage Reporting": "Anonieme gebruikersstatistieken", "Anonymous usage report format has changed. Would you like to move to the new format?": "Het formaat voor anonieme gebruikersrapporten is gewijzigd. Wilt u naar het nieuwe formaat overschakelen?", - "Apply": "Apply", + "Apply": "Toepassen", "Are you sure you want to continue?": "Weet u zeker dat u wilt doorgaan?", "Are you sure you want to override all remote changes?": "Weet u zeker dat u alle externe wijzigingen wilt overschrijven?", "Are you sure you want to permanently delete all these files?": "Weet u zeker dat u al deze bestanden permanent wilt verwijderen?", diff --git a/gui/default/assets/lang/lang-sv.json b/gui/default/assets/lang/lang-sv.json index c04601c5b..9b0c8f83a 100644 --- a/gui/default/assets/lang/lang-sv.json +++ b/gui/default/assets/lang/lang-sv.json @@ -250,9 +250,9 @@ "Periodic scanning at given interval and failed setting up watching for changes, retrying every 1m:": "Periodisk skanning vid givet intervall och misslyckades med att ställa in bevakning av ändringar, försöker igen var 1:e minut:", "Permanently add it to the ignore list, suppressing further notifications.": "Lägg till det permanent i ignoreringslistan och undertryck ytterligare aviseringar.", "Permissions": "Behörigheter", - "Please consult the release notes before performing a major upgrade.": "Vänligen läs igenom versionsnyheterna innan du utför en större uppgradering.", - "Please set a GUI Authentication User and Password in the Settings dialog.": "Vänligen ställ in en autentiseringsanvändare och ett lösenord för det grafiska användargränssnittet i dialogrutan Inställningar.", - "Please wait": "Vänligen vänta", + "Please consult the release notes before performing a major upgrade.": "Läs igenom versionsnyheterna innan du utför en större uppgradering.", + "Please set a GUI Authentication User and Password in the Settings dialog.": "Ställ in en autentiseringsanvändare och ett lösenord för det grafiska användargränssnittet i dialogrutan Inställningar.", + "Please wait": "Vänta", "Prefix indicating that the file can be deleted if preventing directory removal": "Prefix som indikerar att filen kan tas bort om den förhindrar mappborttagning", "Prefix indicating that the pattern should be matched without case sensitivity": "Prefix som indikerar att mönstret ska matchas utan skiftlägeskänslighet", "Preparing to Sync": "Förberedelser för synkronisering", @@ -346,7 +346,7 @@ "Syncthing is upgrading.": "Syncthing uppgraderas.", "Syncthing now supports automatically reporting crashes to the developers. This feature is enabled by default.": "Syncthing stöder nu automatiskt kraschrapportering till utvecklarna. Denna funktion är aktiverad som standard.", "Syncthing seems to be down, or there is a problem with your Internet connection. Retrying…": "Syncthing verkar vara avstängd eller så är det problem med din internetanslutning. Försöker igen...", - "Syncthing seems to be experiencing a problem processing your request. Please refresh the page or restart Syncthing if the problem persists.": "Syncthing verkar ha drabbats av ett problem med behandlingen av din förfrågan. Vänligen uppdatera sidan eller starta om Syncthing om problemet kvarstår.", + "Syncthing seems to be experiencing a problem processing your request. Please refresh the page or restart Syncthing if the problem persists.": "Syncthing verkar ha drabbats av ett problem med behandlingen av din förfrågan. Uppdatera sidan eller starta om Syncthing om problemet kvarstår.", "Take me back": "Ta mig tillbaka", "The GUI address is overridden by startup options. Changes here will not take effect while the override is in place.": "Den grafiska gränssnittsadressen åsidosätts av startalternativ. Ändringar här träder inte i kraft så länge åsidosättningen är på plats.", "The Syncthing Authors": "Syncthing-upphovsmän", @@ -417,7 +417,7 @@ "Usage reporting is always enabled for candidate releases.": "Användningsrapportering är alltid aktiverad för kandidatutgåvor.", "Use HTTPS for GUI": "Använd HTTPS för gränssnitt", "Use notifications from the filesystem to detect changed items.": "Använd aviseringar från filsystemet för att upptäcka ändrade objekt.", - "Username/Password has not been set for the GUI authentication. Please consider setting it up.": "Användarnamn/lösenord har inte ställts in för autentisering av det grafiska gränssnittet. Vänligen överväg att ställa in det.", + "Username/Password has not been set for the GUI authentication. Please consider setting it up.": "Användarnamn/lösenord har inte ställts in för autentisering av det grafiska gränssnittet. Överväg att ställa in det.", "Version": "Version", "Versions": "Versioner", "Versions Path": "Sökväg för versioner", diff --git a/gui/default/syncthing/core/aboutModalView.html b/gui/default/syncthing/core/aboutModalView.html index 30a274b81..f7bff631d 100644 --- a/gui/default/syncthing/core/aboutModalView.html +++ b/gui/default/syncthing/core/aboutModalView.html @@ -19,7 +19,7 @@

The Syncthing Authors

-Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male, Ben Schulz, Caleb Callaway, Daniel Harte, Evgeny Kuznetsov, Lars K.W. Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ryan Sullivan, Sergey Mishin, Stefan Tatschner, Syncthing Release Automation, Tomasz Wilczyński, Wulf Weich, dependabot-preview[bot], dependabot[bot], greatroar, Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Aman Gupta, Andrew Dunham, Andrew Meyer, Andrew Rabert, Andrey D, Anjan Momi, Antoine Lamielle, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Kebin Liu, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel, Shaarad Dalvi, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Syncthing Automation, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], derekriemer, desbma, georgespatton, ghjklw, ignacy123, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, villekalliomaki, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙 +Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male, Ben Schulz, Caleb Callaway, Daniel Harte, Evgeny Kuznetsov, Lars K.W. Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ryan Sullivan, Sergey Mishin, Stefan Tatschner, Syncthing Release Automation, Tomasz Wilczyński, Wulf Weich, dependabot-preview[bot], dependabot[bot], greatroar, Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Alessandro G., Alex Lindeman, Alex Xu, Aman Gupta, Andrew Dunham, Andrew Meyer, Andrew Rabert, Andrey D, Anjan Momi, Antoine Lamielle, Anur, Aranjedeath, Arkadiusz Tymiński, Arthur Axel fREW Schmidt, Artur Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Ben Curthoys, Ben Shepherd, Ben Sidhom, Benedikt Heine, Benedikt Morbach, Benjamin Nater, Benno Fünfstück, Benny Ng, Boqin Qin, Boris Rybalkin, Brandon Philips, Brendan Long, Brian R. Becker, Carsten Hagemann, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann, Daniel Martí, Darshil Chanpura, David Rimmer, Denis A., Dennis Wilson, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eric Lesiuta, Erik Meitner, Federico Castagnini, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Greg, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaya Chithra, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Jörg Thalheim, Jędrzej Kula, Kalle Laine, Karol Różycki, Kebin Liu, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus Legendre, Mario Majila, Mark Pulford, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, MichaIng, Michael Jephcote, Michael Rienstra, Michael Tilli, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Naveen, Nicholas Rishel, Nico Stapelbroek, Nicolas Braud-Santoni, Nicolas Perraut, Niels Peter Roest, Nils Jakobi, NinoM4ster, Nitroretro, NoLooseEnds, Oliver Freyermuth, Otiel, Oyebanji Jacob Mayowa, Pablo, Pascal Jungblut, Paul Brit, Pawel Palenica, Paweł Rozlach, Peter Badida, Peter Dave Hello, Peter Hoeg, Peter Marquardt, Phani Rithvij, Phil Davis, Phill Luby, Pier Paolo Ramon, Piotr Bejda, Pramodh KP, Quentin Hibon, Rahmi Pruitt, Richard Hartmann, Robert Carosi, Roberto Santalla, Robin Schoonover, Roman Zaynetdinov, Ross Smith II, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel, Shaarad Dalvi, Simon Mwepu, Sly_tom_cat, Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Syncthing Automation, Taylor Khan, Thomas Hipp, Tim Abell, Tim Howes, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vil Brekin, Vladimir Rusinov, William A. Kennington III, Xavier O., Yannic A., andresvia, andyleap, boomsquared, bt90, chenrui, chucic, deepsource-autofix[bot], derekriemer, desbma, georgespatton, ghjklw, ignacy123, janost, jaseg, jelle van der Waa, jtagcat, klemens, marco-m, mclang, mv1005, otbutz, overkill, perewa, rubenbe, villekalliomaki, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙

From 30fa462e33f025b46e32d18d4a31b640ed23fd71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Colomb?= Date: Sat, 2 Apr 2022 20:36:19 +0200 Subject: [PATCH 32/37] all: Comments and cosmetics (#8218) * lib/api: Note ItemStarted and ItemFinished for default filtering. The reasoning why LocalChangeDetected and RemoteChangeDetected events are not included in the event stream by default (without explicit filter mask requested) also holds for the ItemStarted and ItemFinished events. They should be excluded as well when we start to break the API compatibility for some reason. * gui: Enumerate unused event types in the eventService. Define constants for the unused event types as well, for completeness' sake. They are intentionally not handled in the GUI currently. * cmd/syncthing: Harmonize uppercase CLI argument placeholders. Use ALL-UPPERCASE and connecting dashes to distinguish argument placeholders from literal argument options (e.g. "cpu" or "heap" for profiling). The dash makes it clear which words form a single argument and where a new argument starts. This style is already used for the "syncthing cli debug file" command. * lib/model: Simplify event data structure. Using map[string]interface{} is not necessary when all values are known to be strings. --- cmd/syncthing/cli/errors.go | 2 +- cmd/syncthing/cli/operations.go | 4 ++-- gui/default/syncthing/core/eventService.js | 7 +++++++ lib/api/api.go | 2 ++ lib/model/folder.go | 2 +- 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/cmd/syncthing/cli/errors.go b/cmd/syncthing/cli/errors.go index 8847ce962..52ace7128 100644 --- a/cmd/syncthing/cli/errors.go +++ b/cmd/syncthing/cli/errors.go @@ -27,7 +27,7 @@ var errorsCommand = cli.Command{ { Name: "push", Usage: "Push an error to active clients", - ArgsUsage: "[error message]", + ArgsUsage: "ERROR-MESSAGE", Action: expects(1, errorsPush), }, { diff --git a/cmd/syncthing/cli/operations.go b/cmd/syncthing/cli/operations.go index bef49cc92..d84e67e15 100644 --- a/cmd/syncthing/cli/operations.go +++ b/cmd/syncthing/cli/operations.go @@ -39,13 +39,13 @@ var operationCommand = cli.Command{ { Name: "folder-override", Usage: "Override changes on folder (remote for sendonly, local for receiveonly). WARNING: Destructive - deletes/changes your data.", - ArgsUsage: "[folder id]", + ArgsUsage: "FOLDER-ID", Action: expects(1, foldersOverride), }, { Name: "default-ignores", Usage: "Set the default ignores (config) from a file", - ArgsUsage: "path", + ArgsUsage: "PATH", Action: expects(1, setDefaultIgnores), }, }, diff --git a/gui/default/syncthing/core/eventService.js b/gui/default/syncthing/core/eventService.js index 0d873dfcc..7e528d5a3 100644 --- a/gui/default/syncthing/core/eventService.js +++ b/gui/default/syncthing/core/eventService.js @@ -65,18 +65,25 @@ angular.module('syncthing.core') DEVICE_PAUSED: 'DevicePaused', // Emitted when a device has been paused DEVICE_RESUMED: 'DeviceResumed', // Emitted when a device has been resumed DOWNLOAD_PROGRESS: 'DownloadProgress', // Emitted during file downloads for each folder for each file + FAILURE: 'Failure', // Specific errors sent to the usage reporting server for diagnosis FOLDER_COMPLETION: 'FolderCompletion', //Emitted when the local or remote contents for a folder changes FOLDER_REJECTED: 'FolderRejected', // DEPRECATED: Emitted when a device sends index information for a folder we do not have, or have but do not share with the device in question PENDING_FOLDERS_CHANGED: 'PendingFoldersChanged', // Emitted when pending folders were added / updated (offered by some device, but not shared to them) or removed (folder ignored or added or no longer offered from the remote device) FOLDER_SUMMARY: 'FolderSummary', // Emitted when folder contents have changed locally ITEM_FINISHED: 'ItemFinished', // Generated when Syncthing ends synchronizing a file to a newer version ITEM_STARTED: 'ItemStarted', // Generated when Syncthing begins synchronizing a file to a newer version + LISTEN_ADDRESSES_CHANGED: 'ListenAddressesChanged', // Listen address resolution has changed. + LOCAL_CHANGE_DETECTED: 'LocalChangeDetected', // Generated upon scan whenever the local disk has discovered an updated file from the previous scan. LOCAL_INDEX_UPDATED: 'LocalIndexUpdated', // Generated when the local index information has changed, due to synchronizing one or more items from the cluster or discovering local changes during a scan + LOGIN_ATTEMPT: 'LoginAttempt', // Emitted on every login attempt when authentication is enabled for the GUI. + REMOTE_CHANGE_DETECTED: 'RemoteChangeDetected', // Generated upon scan whenever a file is locally updated due to a remote change. + REMOTE_DOWNLOAD_PROGRESS: 'RemoteDownloadProgress', // DownloadProgress message received from a connected remote device. REMOTE_INDEX_UPDATED: 'RemoteIndexUpdated', // Generated each time new index information is received from a device STARTING: 'Starting', // Emitted exactly once, when Syncthing starts, before parsing configuration etc STARTUP_COMPLETED: 'StartupCompleted', // Emitted exactly once, when initialization is complete and Syncthing is ready to start exchanging data with other devices STATE_CHANGED: 'StateChanged', // Emitted when a folder changes state FOLDER_ERRORS: 'FolderErrors', // Emitted when a folder has errors preventing a full sync + FOLDER_WATCH_STATE_CHANGED: 'FolderWatchStateChanged', // Watcher routine encountered a new error, or a previous error disappeared after retrying. FOLDER_SCAN_PROGRESS: 'FolderScanProgress', // Emitted every ScanProgressIntervalS seconds, indicating how far into the scan it is at. FOLDER_PAUSED: 'FolderPaused', // Emitted when a folder is paused FOLDER_RESUMED: 'FolderResumed', // Emitted when a folder is resumed diff --git a/lib/api/api.go b/lib/api/api.go index 35d7e1a13..5d121734b 100644 --- a/lib/api/api.go +++ b/lib/api/api.go @@ -59,6 +59,8 @@ import ( ) const ( + // Default mask excludes these very noisy event types to avoid filling the pipe. + // FIXME: ItemStarted and ItemFinished should be excluded for the same reason. DefaultEventMask = events.AllEvents &^ events.LocalChangeDetected &^ events.RemoteChangeDetected DiskEventMask = events.LocalChangeDetected | events.RemoteChangeDetected EventSubBufferSize = 1000 diff --git a/lib/model/folder.go b/lib/model/folder.go index a9b15e0de..30fddd2d9 100644 --- a/lib/model/folder.go +++ b/lib/model/folder.go @@ -1038,7 +1038,7 @@ func (f *folder) setWatchError(err error, nextTryIn time.Duration) { f.watchErr = err f.watchMut.Unlock() if err != prevErr { - data := map[string]interface{}{ + data := map[string]string{ "folder": f.ID, } if prevErr != nil { From 2b80848341f9f760ea681048c5e2868ccd9e9a55 Mon Sep 17 00:00:00 2001 From: Syncthing Release Automation Date: Mon, 4 Apr 2022 03:50:52 +0000 Subject: [PATCH 33/37] gui, man, authors: Update docs, translations, and contributors --- gui/default/assets/lang/lang-da.json | 2 +- man/stdiscosrv.1 | 2 +- man/strelaysrv.1 | 2 +- man/syncthing-bep.7 | 2 +- man/syncthing-config.5 | 2 +- man/syncthing-device-ids.7 | 2 +- man/syncthing-event-api.7 | 2 +- man/syncthing-faq.7 | 2 +- man/syncthing-globaldisco.7 | 2 +- man/syncthing-localdisco.7 | 2 +- man/syncthing-networking.7 | 2 +- man/syncthing-relay.7 | 2 +- man/syncthing-rest-api.7 | 2 +- man/syncthing-security.7 | 2 +- man/syncthing-stignore.5 | 2 +- man/syncthing-versioning.7 | 2 +- man/syncthing.1 | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/gui/default/assets/lang/lang-da.json b/gui/default/assets/lang/lang-da.json index 6e1b9e774..3ff473080 100644 --- a/gui/default/assets/lang/lang-da.json +++ b/gui/default/assets/lang/lang-da.json @@ -28,7 +28,7 @@ "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "En ekstern kommando styrer versioneringen. Den skal fjerne filen fra den delte mappe. Hvis stien til programmet indeholder mellemrum, bør den sættes i anførselstegn.", "Anonymous Usage Reporting": "Anonym brugerstatistik", "Anonymous usage report format has changed. Would you like to move to the new format?": "Formatet for anonym brugerstatistik er ændret. Vil du flytte til det nye format?", - "Apply": "Apply", + "Apply": "Anvend", "Are you sure you want to continue?": "Fortsætte?", "Are you sure you want to override all remote changes?": "Tilsidesæt alle eksterne ændringer?", "Are you sure you want to permanently delete all these files?": "Slette valgte filer permanent?", diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index 1b75d8137..a99126364 100644 --- a/man/stdiscosrv.1 +++ b/man/stdiscosrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STDISCOSRV" "1" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "STDISCOSRV" "1" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index 7049e401e..77cbf2830 100644 --- a/man/strelaysrv.1 +++ b/man/strelaysrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STRELAYSRV" "1" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "STRELAYSRV" "1" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index 78e37839b..36e9affff 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-BEP" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-bep \- Block Exchange Protocol v1 .SH INTRODUCTION AND DEFINITIONS diff --git a/man/syncthing-config.5 b/man/syncthing-config.5 index 5ec370df4..5e2c8b1db 100644 --- a/man/syncthing-config.5 +++ b/man/syncthing-config.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-CONFIG" "5" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index 23acc17de..3d669ed1a 100644 --- a/man/syncthing-device-ids.7 +++ b/man/syncthing-device-ids.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-DEVICE-IDS" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-device-ids \- Understanding Device IDs .sp diff --git a/man/syncthing-event-api.7 b/man/syncthing-event-api.7 index a4bbf6a1f..d30985d92 100644 --- a/man/syncthing-event-api.7 +++ b/man/syncthing-event-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-EVENT-API" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index 18af559a1..73aab143a 100644 --- a/man/syncthing-faq.7 +++ b/man/syncthing-faq.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-FAQ" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index 56ff28102..4e4aa8b3d 100644 --- a/man/syncthing-globaldisco.7 +++ b/man/syncthing-globaldisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-GLOBALDISCO" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index 5fb62d6ce..496f549ea 100644 --- a/man/syncthing-localdisco.7 +++ b/man/syncthing-localdisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-LOCALDISCO" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-localdisco \- Local Discovery Protocol v4 .SH MODE OF OPERATION diff --git a/man/syncthing-networking.7 b/man/syncthing-networking.7 index a84711404..863e0c4d3 100644 --- a/man/syncthing-networking.7 +++ b/man/syncthing-networking.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-NETWORKING" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index cd0cfe514..6a8c8f0a4 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-RELAY" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-relay \- Relay Protocol v1 .SH WHAT IS A RELAY? diff --git a/man/syncthing-rest-api.7 b/man/syncthing-rest-api.7 index 73167b124..75d549259 100644 --- a/man/syncthing-rest-api.7 +++ b/man/syncthing-rest-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-REST-API" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index d410d0f58..93219e056 100644 --- a/man/syncthing-security.7 +++ b/man/syncthing-security.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-SECURITY" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index f93bf2ddc..fcf371734 100644 --- a/man/syncthing-stignore.5 +++ b/man/syncthing-stignore.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-STIGNORE" "5" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-stignore \- Prevent files from being synchronized to other nodes .SH SYNOPSIS diff --git a/man/syncthing-versioning.7 b/man/syncthing-versioning.7 index 7a74c3b86..2ba780ff2 100644 --- a/man/syncthing-versioning.7 +++ b/man/syncthing-versioning.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-VERSIONING" "7" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing-versioning \- Keep automatic backups of deleted files by other nodes .sp diff --git a/man/syncthing.1 b/man/syncthing.1 index c3a436d7e..b3f3a6f32 100644 --- a/man/syncthing.1 +++ b/man/syncthing.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING" "1" "Mar 20, 2022" "v1.19.1" "Syncthing" +.TH "SYNCTHING" "1" "Apr 02, 2022" "v1.19.1" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS From edc3a77b9824ffbba5ce7469748d5504522953bc Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Tue, 5 Apr 2022 21:32:06 +0200 Subject: [PATCH 34/37] lib/fs, lib/model: Add warning about kqueue resource usage (fixes #7855) (#8249) --- go.mod | 2 +- go.sum | 2 + lib/api/api_test.go | 18 +++- lib/fs/basicfs_watch_eventtypes_kqueue.go | 3 + lib/fs/basicfs_watch_notkqueue.go | 13 +++ lib/model/folder.go | 27 ++++++ lib/model/folder_summary.go | 107 ++++++++++++++++------ lib/model/mocks/folderSummaryService.go | 20 ++-- lib/syncthing/verboseservice.go | 15 ++- 9 files changed, 157 insertions(+), 50 deletions(-) create mode 100644 lib/fs/basicfs_watch_notkqueue.go diff --git a/go.mod b/go.mod index a2a55bc07..c1ae4cd37 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,7 @@ require ( golang.org/x/sys v0.0.0-20211013075003-97ac67df715c golang.org/x/text v0.3.7 golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac - golang.org/x/tools v0.1.6 + golang.org/x/tools v0.1.7 google.golang.org/protobuf v1.27.1 ) diff --git a/go.sum b/go.sum index abc7c8004..9f4fcebee 100644 --- a/go.sum +++ b/go.sum @@ -654,6 +654,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6 h1:SIasE1FVIQOWz2GEAHFOmoW7xchJcqlucjSULTL0Ag4= golang.org/x/tools v0.1.6/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= +golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ= +golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/lib/api/api_test.go b/lib/api/api_test.go index 1bfe5df08..944a01024 100644 --- a/lib/api/api_test.go +++ b/lib/api/api_test.go @@ -35,6 +35,7 @@ import ( "github.com/syncthing/syncthing/lib/locations" "github.com/syncthing/syncthing/lib/logger" loggermocks "github.com/syncthing/syncthing/lib/logger/mocks" + "github.com/syncthing/syncthing/lib/model" modelmocks "github.com/syncthing/syncthing/lib/model/mocks" "github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/svcutil" @@ -260,7 +261,7 @@ func TestAPIServiceRequests(t *testing.T) { if err != nil { t.Fatal(err) } - defer cancel() + t.Cleanup(cancel) cases := []httpTestCase{ // /rest/db @@ -298,6 +299,12 @@ func TestAPIServiceRequests(t *testing.T) { Type: "application/json", Prefix: "null", }, + { + URL: "/rest/db/status?folder=default", + Code: 200, + Type: "application/json", + Prefix: "", + }, // /rest/stats { @@ -466,14 +473,17 @@ func TestAPIServiceRequests(t *testing.T) { } for _, tc := range cases { - t.Log("Testing", tc.URL, "...") - testHTTPRequest(t, baseURL, tc, testAPIKey) + t.Run(cases[0].URL, func(t *testing.T) { + testHTTPRequest(t, baseURL, tc, testAPIKey) + }) } } // testHTTPRequest tries the given test case, comparing the result code, // content type, and result prefix. func testHTTPRequest(t *testing.T, baseURL string, tc httpTestCase, apikey string) { + t.Parallel() + timeout := time.Second if tc.Timeout > 0 { timeout = tc.Timeout @@ -608,7 +618,7 @@ func startHTTP(cfg config.Wrapper) (string, context.CancelFunc, error) { } addrChan := make(chan string) mockedSummary := &modelmocks.FolderSummaryService{} - mockedSummary.SummaryReturns(map[string]interface{}{"mocked": true}, nil) + mockedSummary.SummaryReturns(new(model.FolderSummary), nil) // Instantiate the API service urService := ur.New(cfg, m, connections, false) diff --git a/lib/fs/basicfs_watch_eventtypes_kqueue.go b/lib/fs/basicfs_watch_eventtypes_kqueue.go index af6fd0186..c8e34dfd6 100644 --- a/lib/fs/basicfs_watch_eventtypes_kqueue.go +++ b/lib/fs/basicfs_watch_eventtypes_kqueue.go @@ -18,4 +18,7 @@ const ( subEventMask = notify.NoteDelete | notify.NoteWrite | notify.NoteRename | notify.Create | notify.NoteAttrib | notify.NoteExtend permEventMask = 0 rmEventMask = notify.NoteDelete | notify.NoteRename + + // WatchKqueue indicates if kqueue is used for filesystem watching + WatchKqueue = true ) diff --git a/lib/fs/basicfs_watch_notkqueue.go b/lib/fs/basicfs_watch_notkqueue.go new file mode 100644 index 000000000..7d529cc27 --- /dev/null +++ b/lib/fs/basicfs_watch_notkqueue.go @@ -0,0 +1,13 @@ +// Copyright (C) 2022 The Syncthing Authors. +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this file, +// You can obtain one at http://mozilla.org/MPL/2.0/. + +//go:build !dragonfly && !freebsd && !netbsd && !openbsd +// +build !dragonfly,!freebsd,!netbsd,!openbsd + +package fs + +// WatchKqueue indicates if kqueue is used for filesystem watching +const WatchKqueue = false diff --git a/lib/model/folder.go b/lib/model/folder.go index 30fddd2d9..a318a64ee 100644 --- a/lib/model/folder.go +++ b/lib/model/folder.go @@ -34,6 +34,9 @@ import ( "github.com/syncthing/syncthing/lib/watchaggregator" ) +// Arbitrary limit that triggers a warning on kqueue systems +const kqueueItemCountThreshold = 10000 + type folder struct { stateTracker config.FolderConfiguration @@ -81,6 +84,8 @@ type folder struct { puller puller versioner versioner.Versioner + + warnedKqueue bool } type syncRequest struct { @@ -980,6 +985,19 @@ func (f *folder) monitorWatch(ctx context.Context) { warnedOutside := false var lastWatch time.Time pause := time.Minute + // Subscribe to folder summaries only on kqueue systems, to warn about potential high resource usage + var summarySub events.Subscription + var summaryChan <-chan events.Event + if fs.WatchKqueue && !f.warnedKqueue { + summarySub = f.evLogger.Subscribe(events.FolderCompletion) + summaryChan = summarySub.C() + } + defer func() { + aggrCancel() // aggrCancel might e re-assigned -> call within closure + if summaryChan != nil { + summarySub.Unsubscribe() + } + }() for { select { case <-failTimer.C: @@ -1024,6 +1042,15 @@ func (f *folder) monitorWatch(ctx context.Context) { aggrCancel() errChan = nil aggrCtx, aggrCancel = context.WithCancel(ctx) + case ev := <-summaryChan: + if data, ok := ev.Data.(FolderSummaryEventData); !ok { + f.evLogger.Log(events.Failure, "Unexpected type of folder-summary event in folder.monitorWatch") + } else if data.Summary.LocalTotalItems > kqueueItemCountThreshold { + f.warnedKqueue = true + summarySub.Unsubscribe() + summaryChan = nil + l.Warnf("Filesystem watching (kqueue) is enabled on %v with a lot of files/directories, and that requires a lot of resources and might slow down your system significantly", f.Description()) + } case <-ctx.Done(): return } diff --git a/lib/model/folder_summary.go b/lib/model/folder_summary.go index 58427b318..405a8e54b 100644 --- a/lib/model/folder_summary.go +++ b/lib/model/folder_summary.go @@ -29,7 +29,7 @@ const maxDurationSinceLastEventReq = time.Minute type FolderSummaryService interface { suture.Service - Summary(folder string) (map[string]interface{}, error) + Summary(folder string) (*FolderSummary, error) OnEventRequest() } @@ -76,8 +76,58 @@ func (c *folderSummaryService) String() string { return fmt.Sprintf("FolderSummaryService@%p", c) } -func (c *folderSummaryService) Summary(folder string) (map[string]interface{}, error) { - var res = make(map[string]interface{}) +// FolderSummary replaces the previously used map[string]interface{}, and needs +// to keep the structure/naming for api backwards compatibility +type FolderSummary struct { + Errors int `json:"errors"` + PullErrors int `json:"pullErrors"` // deprecated + + Invalid string `json:"invalid"` // deprecated + + GlobalFiles int `json:"globalFiles"` + GlobalDirectories int `json:"globalDirectories"` + GlobalSymlinks int `json:"globalSymlinks"` + GlobalDeleted int `json:"globalDeleted"` + GlobalBytes int64 `json:"globalBytes"` + GlobalTotalItems int `json:"globalTotalItems"` + + LocalFiles int `json:"localFiles"` + LocalDirectories int `json:"localDirectories"` + LocalSymlinks int `json:"localSymlinks"` + LocalDeleted int `json:"localDeleted"` + LocalBytes int64 `json:"localBytes"` + LocalTotalItems int `json:"localTotalItems"` + + NeedFiles int `json:"needFiles"` + NeedDirectories int `json:"needDirectories"` + NeedSymlinks int `json:"needSymlinks"` + NeedDeletes int `json:"needDeletes"` + NeedBytes int64 `json:"needBytes"` + NeedTotalItems int `json:"needTotalItems"` + + ReceiveOnlyChangedFiles int `json:"receiveOnlyChangedFiles"` + ReceiveOnlyChangedDirectories int `json:"receiveOnlyChangedDirectories"` + ReceiveOnlyChangedSymlinks int `json:"receiveOnlyChangedSymlinks"` + ReceiveOnlyChangedDeletes int `json:"receiveOnlyChangedDeletes"` + ReceiveOnlyChangedBytes int64 `json:"receiveOnlyChangedBytes"` + ReceiveOnlyTotalItems int `json:"receiveOnlyTotalItems"` + + InSyncFiles int `json:"inSyncFiles"` + InSyncBytes int64 `json:"inSyncBytes"` + + State string `json:"state"` + StateChanged time.Time `json:"stateChanged"` + Error string `json:"error"` + + Version int64 `json:"version"` // deprecated + Sequence int64 `json:"sequence"` + + IgnorePatterns bool `json:"ignorePatterns"` + WatchError string `json:"watchError"` +} + +func (c *folderSummaryService) Summary(folder string) (*FolderSummary, error) { + res := new(FolderSummary) var local, global, need, ro db.Counts var ourSeq, remoteSeq int64 @@ -101,14 +151,14 @@ func (c *folderSummaryService) Summary(folder string) (map[string]interface{}, e return nil, err } - res["errors"] = len(errors) - res["pullErrors"] = len(errors) // deprecated + res.Errors = len(errors) + res.PullErrors = len(errors) // deprecated - res["invalid"] = "" // Deprecated, retains external API for now + res.Invalid = "" // Deprecated, retains external API for now - res["globalFiles"], res["globalDirectories"], res["globalSymlinks"], res["globalDeleted"], res["globalBytes"], res["globalTotalItems"] = global.Files, global.Directories, global.Symlinks, global.Deleted, global.Bytes, global.TotalItems() + res.GlobalFiles, res.GlobalDirectories, res.GlobalSymlinks, res.GlobalDeleted, res.GlobalBytes, res.GlobalTotalItems = global.Files, global.Directories, global.Symlinks, global.Deleted, global.Bytes, global.TotalItems() - res["localFiles"], res["localDirectories"], res["localSymlinks"], res["localDeleted"], res["localBytes"], res["localTotalItems"] = local.Files, local.Directories, local.Symlinks, local.Deleted, local.Bytes, local.TotalItems() + res.LocalFiles, res.LocalDirectories, res.LocalSymlinks, res.LocalDeleted, res.LocalBytes, res.LocalTotalItems = local.Files, local.Directories, local.Symlinks, local.Deleted, local.Bytes, local.TotalItems() fcfg, haveFcfg := c.cfg.Folder(folder) @@ -122,41 +172,41 @@ func (c *folderSummaryService) Summary(folder string) (map[string]interface{}, e if need.Bytes < 0 { need.Bytes = 0 } - res["needFiles"], res["needDirectories"], res["needSymlinks"], res["needDeletes"], res["needBytes"], res["needTotalItems"] = need.Files, need.Directories, need.Symlinks, need.Deleted, need.Bytes, need.TotalItems() + res.NeedFiles, res.NeedDirectories, res.NeedSymlinks, res.NeedDeletes, res.NeedBytes, res.NeedTotalItems = need.Files, need.Directories, need.Symlinks, need.Deleted, need.Bytes, need.TotalItems() if haveFcfg && (fcfg.Type == config.FolderTypeReceiveOnly || fcfg.Type == config.FolderTypeReceiveEncrypted) { // Add statistics for things that have changed locally in a receive // only or receive encrypted folder. - res["receiveOnlyChangedFiles"] = ro.Files - res["receiveOnlyChangedDirectories"] = ro.Directories - res["receiveOnlyChangedSymlinks"] = ro.Symlinks - res["receiveOnlyChangedDeletes"] = ro.Deleted - res["receiveOnlyChangedBytes"] = ro.Bytes - res["receiveOnlyTotalItems"] = ro.TotalItems() + res.ReceiveOnlyChangedFiles = ro.Files + res.ReceiveOnlyChangedDirectories = ro.Directories + res.ReceiveOnlyChangedSymlinks = ro.Symlinks + res.ReceiveOnlyChangedDeletes = ro.Deleted + res.ReceiveOnlyChangedBytes = ro.Bytes + res.ReceiveOnlyTotalItems = ro.TotalItems() } - res["inSyncFiles"], res["inSyncBytes"] = global.Files-need.Files, global.Bytes-need.Bytes + res.InSyncFiles, res.InSyncBytes = global.Files-need.Files, global.Bytes-need.Bytes - res["state"], res["stateChanged"], err = c.model.State(folder) + res.State, res.StateChanged, err = c.model.State(folder) if err != nil { - res["error"] = err.Error() + res.Error = err.Error() } - res["version"] = ourSeq + remoteSeq // legacy - res["sequence"] = ourSeq + remoteSeq // new name + res.Version = ourSeq + remoteSeq // legacy + res.Sequence = ourSeq + remoteSeq // new name ignorePatterns, _, _ := c.model.CurrentIgnores(folder) - res["ignorePatterns"] = false + res.IgnorePatterns = false for _, line := range ignorePatterns { if len(line) > 0 && !strings.HasPrefix(line, "//") { - res["ignorePatterns"] = true + res.IgnorePatterns = true break } } err = c.model.WatchError(folder) if err != nil { - res["watchError"] = err.Error() + res.WatchError = err.Error() } return res, nil @@ -322,6 +372,11 @@ func (c *folderSummaryService) foldersToHandle() []string { return res } +type FolderSummaryEventData struct { + Folder string `json:"folder"` + Summary *FolderSummary `json:"summary"` +} + // sendSummary send the summary events for a single folder func (c *folderSummaryService) sendSummary(ctx context.Context, folder string) { // The folder summary contains how many bytes, files etc @@ -330,9 +385,9 @@ func (c *folderSummaryService) sendSummary(ctx context.Context, folder string) { if err != nil { return } - c.evLogger.Log(events.FolderSummary, map[string]interface{}{ - "folder": folder, - "summary": data, + c.evLogger.Log(events.FolderSummary, FolderSummaryEventData{ + Folder: folder, + Summary: data, }) for _, devCfg := range c.cfg.Folders()[folder].Devices { diff --git a/lib/model/mocks/folderSummaryService.go b/lib/model/mocks/folderSummaryService.go index d4285d8c5..4dca3505f 100644 --- a/lib/model/mocks/folderSummaryService.go +++ b/lib/model/mocks/folderSummaryService.go @@ -24,17 +24,17 @@ type FolderSummaryService struct { serveReturnsOnCall map[int]struct { result1 error } - SummaryStub func(string) (map[string]interface{}, error) + SummaryStub func(string) (*model.FolderSummary, error) summaryMutex sync.RWMutex summaryArgsForCall []struct { arg1 string } summaryReturns struct { - result1 map[string]interface{} + result1 *model.FolderSummary result2 error } summaryReturnsOnCall map[int]struct { - result1 map[string]interface{} + result1 *model.FolderSummary result2 error } invocations map[string][][]interface{} @@ -126,7 +126,7 @@ func (fake *FolderSummaryService) ServeReturnsOnCall(i int, result1 error) { }{result1} } -func (fake *FolderSummaryService) Summary(arg1 string) (map[string]interface{}, error) { +func (fake *FolderSummaryService) Summary(arg1 string) (*model.FolderSummary, error) { fake.summaryMutex.Lock() ret, specificReturn := fake.summaryReturnsOnCall[len(fake.summaryArgsForCall)] fake.summaryArgsForCall = append(fake.summaryArgsForCall, struct { @@ -151,7 +151,7 @@ func (fake *FolderSummaryService) SummaryCallCount() int { return len(fake.summaryArgsForCall) } -func (fake *FolderSummaryService) SummaryCalls(stub func(string) (map[string]interface{}, error)) { +func (fake *FolderSummaryService) SummaryCalls(stub func(string) (*model.FolderSummary, error)) { fake.summaryMutex.Lock() defer fake.summaryMutex.Unlock() fake.SummaryStub = stub @@ -164,28 +164,28 @@ func (fake *FolderSummaryService) SummaryArgsForCall(i int) string { return argsForCall.arg1 } -func (fake *FolderSummaryService) SummaryReturns(result1 map[string]interface{}, result2 error) { +func (fake *FolderSummaryService) SummaryReturns(result1 *model.FolderSummary, result2 error) { fake.summaryMutex.Lock() defer fake.summaryMutex.Unlock() fake.SummaryStub = nil fake.summaryReturns = struct { - result1 map[string]interface{} + result1 *model.FolderSummary result2 error }{result1, result2} } -func (fake *FolderSummaryService) SummaryReturnsOnCall(i int, result1 map[string]interface{}, result2 error) { +func (fake *FolderSummaryService) SummaryReturnsOnCall(i int, result1 *model.FolderSummary, result2 error) { fake.summaryMutex.Lock() defer fake.summaryMutex.Unlock() fake.SummaryStub = nil if fake.summaryReturnsOnCall == nil { fake.summaryReturnsOnCall = make(map[int]struct { - result1 map[string]interface{} + result1 *model.FolderSummary result2 error }) } fake.summaryReturnsOnCall[i] = struct { - result1 map[string]interface{} + result1 *model.FolderSummary result2 error }{result1, result2} } diff --git a/lib/syncthing/verboseservice.go b/lib/syncthing/verboseservice.go index b23027df3..a78c2ff20 100644 --- a/lib/syncthing/verboseservice.go +++ b/lib/syncthing/verboseservice.go @@ -9,8 +9,10 @@ package syncthing import ( "context" "fmt" + "regexp" "github.com/syncthing/syncthing/lib/events" + "github.com/syncthing/syncthing/lib/model" ) // The verbose logging service subscribes to events and prints these in @@ -46,6 +48,8 @@ func (s *verboseService) Serve(ctx context.Context) error { } } +var folderSummaryRemoveDeprecatedRe = regexp.MustCompile(`(Invalid|IgnorePatterns|StateChanged):\S+\s?`) + func (s *verboseService) formatEvent(ev events.Event) string { switch ev.Type { case events.DownloadProgress, events.LocalIndexUpdated: @@ -116,15 +120,8 @@ func (s *verboseService) formatEvent(ev events.Event) string { return fmt.Sprintf("Completion for folder %q on device %v is %v%%", data["folder"], data["device"], data["completion"]) case events.FolderSummary: - data := ev.Data.(map[string]interface{}) - sum := make(map[string]interface{}) - for k, v := range data["summary"].(map[string]interface{}) { - if k == "invalid" || k == "ignorePatterns" || k == "stateChanged" { - continue - } - sum[k] = v - } - return fmt.Sprintf("Summary for folder %q is %v", data["folder"], sum) + data := ev.Data.(model.FolderSummaryEventData) + return folderSummaryRemoveDeprecatedRe.ReplaceAllString(fmt.Sprintf("Summary for folder %q is %+v", data.Folder, data.Summary), "") case events.FolderScanProgress: data := ev.Data.(map[string]interface{}) From 072fa46bfd088bfc4c5b77fba07570c5084f3245 Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Thu, 7 Apr 2022 17:35:33 +0200 Subject: [PATCH 35/37] lib/connections, lib/model: Improve new conn handling (#8253) --- lib/connections/service.go | 120 ++++++++++++++++++++++++++++++------- lib/model/model.go | 38 +++--------- 2 files changed, 105 insertions(+), 53 deletions(-) diff --git a/lib/connections/service.go b/lib/connections/service.go index 9cff1970e..4d394cd96 100644 --- a/lib/connections/service.go +++ b/lib/connections/service.go @@ -12,6 +12,7 @@ package connections import ( "context" "crypto/tls" + "crypto/x509" "fmt" "math" "net" @@ -55,6 +56,13 @@ var ( errDisabled = fmt.Errorf("%w: disabled by configuration", errUnsupported) errDeprecated = fmt.Errorf("%w: deprecated", errUnsupported) errNotInBuild = fmt.Errorf("%w: disabled at build time", errUnsupported) + + // Various reasons to reject a connection + errNetworkNotAllowed = errors.New("network not allowed") + errDeviceAlreadyConnected = errors.New("already connected to this device") + errDeviceIgnored = errors.New("device is ignored") + errConnLimitReached = errors.New("connection limit reached") + errDevicePaused = errors.New("device is paused") ) const ( @@ -128,6 +136,14 @@ type ConnectionStatusEntry struct { Error *string `json:"error"` } +type connWithHello struct { + c internalConn + hello protocol.Hello + err error + remoteID protocol.DeviceID + remoteCert *x509.Certificate +} + type service struct { *suture.Supervisor connectionStatusHandler @@ -138,6 +154,7 @@ type service struct { tlsCfg *tls.Config discoverer discover.Finder conns chan internalConn + hellos chan *connWithHello bepProtocolName string tlsDefaultCommonName string limiter *limiter @@ -194,7 +211,8 @@ func NewService(cfg config.Wrapper, myID protocol.DeviceID, mdl Model, tlsCfg *t // incoming or outgoing. service.Add(svcutil.AsService(service.connect, fmt.Sprintf("%s/connect", service))) - service.Add(svcutil.AsService(service.handle, fmt.Sprintf("%s/handle", service))) + service.Add(svcutil.AsService(service.handleConns, fmt.Sprintf("%s/handleConns", service))) + service.Add(svcutil.AsService(service.handleHellos, fmt.Sprintf("%s/handleHellos", service))) service.Add(service.natService) svcutil.OnSupervisorDone(service.Supervisor, func() { @@ -205,7 +223,7 @@ func NewService(cfg config.Wrapper, myID protocol.DeviceID, mdl Model, tlsCfg *t return service } -func (s *service) handle(ctx context.Context) error { +func (s *service) handleConns(ctx context.Context) error { var c internalConn for { select { @@ -245,8 +263,84 @@ func (s *service) handle(ctx context.Context) error { continue } + if err := s.connectionCheckEarly(remoteID, c); err != nil { + l.Infof("Connection from %s at %s (%s) rejected: %v", remoteID, c.RemoteAddr(), c.Type(), err) + c.Close() + continue + } + _ = c.SetDeadline(time.Now().Add(20 * time.Second)) - hello, err := protocol.ExchangeHello(c, s.model.GetHello(remoteID)) + go func() { + hello, err := protocol.ExchangeHello(c, s.model.GetHello(remoteID)) + select { + case s.hellos <- &connWithHello{c, hello, err, remoteID, remoteCert}: + case <-ctx.Done(): + } + }() + } +} + +func (s *service) connectionCheckEarly(remoteID protocol.DeviceID, c internalConn) error { + if s.cfg.IgnoredDevice(remoteID) { + return errDeviceIgnored + } + + if max := s.cfg.Options().ConnectionLimitMax; max > 0 && s.model.NumConnections() >= max { + // We're not allowed to accept any more connections. + return errConnLimitReached + } + + cfg, ok := s.cfg.Device(remoteID) + if !ok { + // We do go ahead exchanging hello messages to get information about the device. + return nil + } + + if cfg.Paused { + return errDevicePaused + } + + if len(cfg.AllowedNetworks) > 0 && !IsAllowedNetwork(c.RemoteAddr().String(), cfg.AllowedNetworks) { + // The connection is not from an allowed network. + return errNetworkNotAllowed + } + + // Lower priority is better, just like nice etc. + if ct, ok := s.model.Connection(remoteID); ok { + if ct.Priority() > c.priority || time.Since(ct.Statistics().StartedAt) > minConnectionReplaceAge { + l.Debugf("Switching connections %s (existing: %s new: %s)", remoteID, ct, c) + } else { + // We should not already be connected to the other party. TODO: This + // could use some better handling. If the old connection is dead but + // hasn't timed out yet we may want to drop *that* connection and keep + // this one. But in case we are two devices connecting to each other + // in parallel we don't want to do that or we end up with no + // connections still established... + return errDeviceAlreadyConnected + } + } + + return nil +} + +func (s *service) handleHellos(ctx context.Context) error { + var c internalConn + var hello protocol.Hello + var err error + var remoteID protocol.DeviceID + var remoteCert *x509.Certificate + for { + select { + case <-ctx.Done(): + return ctx.Err() + case withHello := <-s.hellos: + c = withHello.c + hello = withHello.hello + err = withHello.err + remoteID = withHello.remoteID + remoteCert = withHello.remoteCert + } + if err != nil { if protocol.IsVersionMismatch(err) { // The error will be a relatively user friendly description @@ -279,25 +373,6 @@ func (s *service) handle(ctx context.Context) error { continue } - // If we have a relay connection, and the new incoming connection is - // not a relay connection, we should drop that, and prefer this one. - ct, connected := s.model.Connection(remoteID) - - // Lower priority is better, just like nice etc. - if connected && (ct.Priority() > c.priority || time.Since(ct.Statistics().StartedAt) > minConnectionReplaceAge) { - l.Debugf("Switching connections %s (existing: %s new: %s)", remoteID, ct, c) - } else if connected { - // We should not already be connected to the other party. TODO: This - // could use some better handling. If the old connection is dead but - // hasn't timed out yet we may want to drop *that* connection and keep - // this one. But in case we are two devices connecting to each other - // in parallel we don't want to do that or we end up with no - // connections still established... - l.Infof("Connected to already connected device %s (existing: %s new: %s)", remoteID, ct, c) - c.Close() - continue - } - deviceCfg, ok := s.cfg.Device(remoteID) if !ok { l.Infof("Device %s removed from config during connection attempt at %s", remoteID, c) @@ -346,7 +421,6 @@ func (s *service) handle(ctx context.Context) error { continue } } - func (s *service) connect(ctx context.Context) error { // Map of when to earliest dial each given device + address again nextDialAt := make(nextDialRegistry) diff --git a/lib/model/model.go b/lib/model/model.go index 819bb3718..af6bb93f9 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -177,15 +177,13 @@ var ( ) var ( - errDeviceUnknown = errors.New("unknown device") - errDevicePaused = errors.New("device is paused") - errDeviceIgnored = errors.New("device is ignored") - errDeviceRemoved = errors.New("device has been removed") - ErrFolderPaused = errors.New("folder is paused") - ErrFolderNotRunning = errors.New("folder is not running") - ErrFolderMissing = errors.New("no such folder") - errNetworkNotAllowed = errors.New("network not allowed") - errNoVersioner = errors.New("folder has no versioner") + errDeviceUnknown = errors.New("unknown device") + errDevicePaused = errors.New("device is paused") + errDeviceRemoved = errors.New("device has been removed") + ErrFolderPaused = errors.New("folder is paused") + ErrFolderNotRunning = errors.New("folder is not running") + ErrFolderMissing = errors.New("no such folder") + errNoVersioner = errors.New("folder has no versioner") // errors about why a connection is closed errReplacingConnection = errors.New("replacing connection") errStopped = errors.New("Syncthing is being stopped") @@ -2114,12 +2112,7 @@ func (m *model) setIgnores(cfg config.FolderConfiguration, content []string) err // This allows us to extract some information from the Hello message // and add it to a list of known devices ahead of any checks. func (m *model) OnHello(remoteID protocol.DeviceID, addr net.Addr, hello protocol.Hello) error { - if m.cfg.IgnoredDevice(remoteID) { - return errDeviceIgnored - } - - cfg, ok := m.cfg.Device(remoteID) - if !ok { + if _, ok := m.cfg.Device(remoteID); !ok { if err := m.db.AddOrUpdatePendingDevice(remoteID, hello.DeviceName, addr.String()); err != nil { l.Warnf("Failed to persist pending device entry to database: %v", err) } @@ -2138,21 +2131,6 @@ func (m *model) OnHello(remoteID protocol.DeviceID, addr net.Addr, hello protoco }) return errDeviceUnknown } - - if cfg.Paused { - return errDevicePaused - } - - if len(cfg.AllowedNetworks) > 0 && !connections.IsAllowedNetwork(addr.String(), cfg.AllowedNetworks) { - // The connection is not from an allowed network. - return errNetworkNotAllowed - } - - if max := m.cfg.Options().ConnectionLimitMax; max > 0 && m.NumConnections() >= max { - // We're not allowed to accept any more connections. - return errConnLimitReached - } - return nil } From e30898ddb3e51225d4bda8661a1510c5cc9afe08 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Sat, 9 Apr 2022 22:01:24 +0800 Subject: [PATCH 36/37] build: Update go directive to 1.17 (fixes #8258) (#8260) This should fix compiling from the source tarball with Go 1.18. --- build.go | 2 +- go.mod | 25 ++++++++++++++++++++++++- go.sum | 6 ------ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/build.go b/build.go index 7888c834d..71cdf12d6 100644 --- a/build.go +++ b/build.go @@ -883,7 +883,7 @@ func shouldRebuildAssets(target, srcdir string) bool { func updateDependencies() { runPrint(goCmd, "get", "-u", "./cmd/...") - runPrint(goCmd, "mod", "tidy", "-go=1.16", "-compat=1.16") + runPrint(goCmd, "mod", "tidy", "-go=1.17", "-compat=1.17") // We might have updated the protobuf package and should regenerate to match. proto() diff --git a/go.mod b/go.mod index c1ae4cd37..6ff3a7aff 100644 --- a/go.mod +++ b/go.mod @@ -57,4 +57,27 @@ require ( google.golang.org/protobuf v1.27.1 ) -go 1.16 +require ( + github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cheekybits/genny v1.0.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/marten-seemann/qtls-go1-16 v0.1.4 // indirect + github.com/marten-seemann/qtls-go1-17 v0.1.0 // indirect + github.com/marten-seemann/qtls-go1-18 v0.1.0-beta.1 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/nxadm/tail v1.4.8 // indirect + github.com/onsi/ginkgo v1.16.4 // indirect + github.com/oschwald/maxminddb-golang v1.8.0 // indirect + github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/yusufpapurcu/wmi v1.2.2 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect +) + +go 1.17 diff --git a/go.sum b/go.sum index 9f4fcebee..e02031fc9 100644 --- a/go.sum +++ b/go.sum @@ -337,7 +337,6 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -407,7 +406,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= @@ -507,7 +505,6 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210716203947-853a461950ff/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210924151903-3ad01bbaa167 h1:eDd+TJqbgfXruGQ5sJRU7tEtp/58OAx4+Ayjxg4SM+4= golang.org/x/net v0.0.0-20210924151903-3ad01bbaa167/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -585,7 +582,6 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c h1:taxlMj0D/1sOAuv/CbSD+MMDof2vbyPTqz5FNYKpXt8= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -652,8 +648,6 @@ golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6 h1:SIasE1FVIQOWz2GEAHFOmoW7xchJcqlucjSULTL0Ag4= -golang.org/x/tools v0.1.6/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From b947056e624cccbc7f79f42a77fc54e95a58e850 Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Sat, 9 Apr 2022 16:04:56 +0200 Subject: [PATCH 37/37] lib: Removal global connection registry (#8254) --- cmd/stfinddevice/main.go | 2 +- lib/connections/connections_test.go | 6 ++-- lib/connections/quic_dial.go | 16 ++++++---- lib/connections/quic_listen.go | 28 +++++++++-------- lib/connections/registry/registry.go | 16 ---------- lib/connections/relay_dial.go | 3 +- lib/connections/relay_listen.go | 3 +- lib/connections/service.go | 9 ++++-- lib/connections/structs.go | 5 +-- lib/connections/tcp_dial.go | 19 +++++++----- lib/connections/tcp_listen.go | 18 ++++++----- lib/dialer/public.go | 46 +++++++++++++++------------- lib/discover/cache_test.go | 3 +- lib/discover/global.go | 12 ++++++-- lib/discover/global_test.go | 13 +++++--- lib/discover/manager.go | 7 +++-- lib/syncthing/syncthing.go | 6 ++-- 17 files changed, 118 insertions(+), 94 deletions(-) diff --git a/cmd/stfinddevice/main.go b/cmd/stfinddevice/main.go index 688c29b2c..f6e94a3ba 100644 --- a/cmd/stfinddevice/main.go +++ b/cmd/stfinddevice/main.go @@ -84,7 +84,7 @@ func checkServers(deviceID protocol.DeviceID, servers ...string) { } func checkServer(deviceID protocol.DeviceID, server string) checkResult { - disco, err := discover.NewGlobal(server, tls.Certificate{}, nil, events.NoopLogger) + disco, err := discover.NewGlobal(server, tls.Certificate{}, nil, events.NoopLogger, nil) if err != nil { return checkResult{error: err} } diff --git a/lib/connections/connections_test.go b/lib/connections/connections_test.go index a7d4caf19..c1fc17a9f 100644 --- a/lib/connections/connections_test.go +++ b/lib/connections/connections_test.go @@ -21,6 +21,7 @@ import ( "github.com/thejerf/suture/v4" "github.com/syncthing/syncthing/lib/config" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/events" "github.com/syncthing/syncthing/lib/nat" "github.com/syncthing/syncthing/lib/protocol" @@ -414,7 +415,7 @@ func withConnectionPair(b *testing.B, connUri string, h func(client, server inte } natSvc := nat.NewService(deviceId, wcfg) conns := make(chan internalConn, 1) - listenSvc := lf.New(uri, wcfg, tlsCfg, conns, natSvc) + listenSvc := lf.New(uri, wcfg, tlsCfg, conns, natSvc, registry.New()) supervisor.Add(listenSvc) var addr *url.URL @@ -433,7 +434,8 @@ func withConnectionPair(b *testing.B, connUri string, h func(client, server inte if err != nil { b.Fatal(err) } - dialer := df.New(cfg.Options, tlsCfg) + // Purposely using a different registry: Don't want to reuse port between dialer and listener on the same device + dialer := df.New(cfg.Options, tlsCfg, registry.New()) // Relays might take some time to register the device, so dial multiple times clientConn, err := dialer.Dial(ctx, deviceId, addr) diff --git a/lib/connections/quic_dial.go b/lib/connections/quic_dial.go index d47d3b84d..afe60c75e 100644 --- a/lib/connections/quic_dial.go +++ b/lib/connections/quic_dial.go @@ -41,6 +41,7 @@ func init() { type quicDialer struct { commonDialer + registry *registry.Registry } func (d *quicDialer) Dial(ctx context.Context, _ protocol.DeviceID, uri *url.URL) (internalConn, error) { @@ -58,7 +59,7 @@ func (d *quicDialer) Dial(ctx context.Context, _ protocol.DeviceID, uri *url.URL // Given we always pass the connection to quic, it assumes it's a remote connection it never closes it, // So our wrapper around it needs to close it, but it only needs to close it if it's not the listening connection. var createdConn net.PacketConn - listenConn := registry.Get(uri.Scheme, packetConnUnspecified) + listenConn := d.registry.Get(uri.Scheme, packetConnUnspecified) if listenConn != nil { conn = listenConn.(net.PacketConn) } else { @@ -96,7 +97,7 @@ func (d *quicDialer) Dial(ctx context.Context, _ protocol.DeviceID, uri *url.URL type quicDialerFactory struct{} -func (quicDialerFactory) New(opts config.OptionsConfiguration, tlsCfg *tls.Config) genericDialer { +func (quicDialerFactory) New(opts config.OptionsConfiguration, tlsCfg *tls.Config, registry *registry.Registry) genericDialer { // So the idea is that we should probably try dialing every 20 seconds. // However it would still be nice if this was adjustable/proportional to ReconnectIntervalS // But prevent something silly like 1/3 = 0 etc. @@ -104,10 +105,13 @@ func (quicDialerFactory) New(opts config.OptionsConfiguration, tlsCfg *tls.Confi if quicInterval < 10 { quicInterval = 10 } - return &quicDialer{commonDialer{ - reconnectInterval: time.Duration(quicInterval) * time.Second, - tlsCfg: tlsCfg, - }} + return &quicDialer{ + commonDialer: commonDialer{ + reconnectInterval: time.Duration(quicInterval) * time.Second, + tlsCfg: tlsCfg, + }, + registry: registry, + } } func (quicDialerFactory) Priority() int { diff --git a/lib/connections/quic_listen.go b/lib/connections/quic_listen.go index 4e5091f80..ed0eeae4e 100644 --- a/lib/connections/quic_listen.go +++ b/lib/connections/quic_listen.go @@ -40,11 +40,12 @@ type quicListener struct { onAddressesChangedNotifier - uri *url.URL - cfg config.Wrapper - tlsCfg *tls.Config - conns chan internalConn - factory listenerFactory + uri *url.URL + cfg config.Wrapper + tlsCfg *tls.Config + conns chan internalConn + factory listenerFactory + registry *registry.Registry address *url.URL laddr net.Addr @@ -100,8 +101,8 @@ func (t *quicListener) serve(ctx context.Context) error { go svc.Serve(ctx) - registry.Register(t.uri.Scheme, conn) - defer registry.Unregister(t.uri.Scheme, conn) + t.registry.Register(t.uri.Scheme, conn) + defer t.registry.Unregister(t.uri.Scheme, conn) listener, err := quic.Listen(conn, t.tlsCfg, quicConfig) if err != nil { @@ -217,13 +218,14 @@ func (f *quicListenerFactory) Valid(config.Configuration) error { return nil } -func (f *quicListenerFactory) New(uri *url.URL, cfg config.Wrapper, tlsCfg *tls.Config, conns chan internalConn, natService *nat.Service) genericListener { +func (f *quicListenerFactory) New(uri *url.URL, cfg config.Wrapper, tlsCfg *tls.Config, conns chan internalConn, natService *nat.Service, registry *registry.Registry) genericListener { l := &quicListener{ - uri: fixupPort(uri, config.DefaultQUICPort), - cfg: cfg, - tlsCfg: tlsCfg, - conns: conns, - factory: f, + uri: fixupPort(uri, config.DefaultQUICPort), + cfg: cfg, + tlsCfg: tlsCfg, + conns: conns, + factory: f, + registry: registry, } l.ServiceWithError = svcutil.AsService(l.serve, l.String()) l.nat.Store(stun.NATUnknown) diff --git a/lib/connections/registry/registry.go b/lib/connections/registry/registry.go index 4d9be9510..a262f2be8 100644 --- a/lib/connections/registry/registry.go +++ b/lib/connections/registry/registry.go @@ -15,10 +15,6 @@ import ( "github.com/syncthing/syncthing/lib/sync" ) -var ( - Default = New() -) - type Registry struct { mut sync.Mutex available map[string][]interface{} @@ -85,15 +81,3 @@ func (r *Registry) Get(scheme string, preferred func(interface{}) bool) interfac } return best } - -func Register(scheme string, item interface{}) { - Default.Register(scheme, item) -} - -func Unregister(scheme string, item interface{}) { - Default.Unregister(scheme, item) -} - -func Get(scheme string, preferred func(interface{}) bool) interface{} { - return Default.Get(scheme, preferred) -} diff --git a/lib/connections/relay_dial.go b/lib/connections/relay_dial.go index 51f2c6622..969229582 100644 --- a/lib/connections/relay_dial.go +++ b/lib/connections/relay_dial.go @@ -13,6 +13,7 @@ import ( "time" "github.com/syncthing/syncthing/lib/config" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/dialer" "github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/relay/client" @@ -68,7 +69,7 @@ func (d *relayDialer) Dial(ctx context.Context, id protocol.DeviceID, uri *url.U type relayDialerFactory struct{} -func (relayDialerFactory) New(opts config.OptionsConfiguration, tlsCfg *tls.Config) genericDialer { +func (relayDialerFactory) New(opts config.OptionsConfiguration, tlsCfg *tls.Config, _ *registry.Registry) genericDialer { return &relayDialer{commonDialer{ trafficClass: opts.TrafficClass, reconnectInterval: time.Duration(opts.RelayReconnectIntervalM) * time.Minute, diff --git a/lib/connections/relay_listen.go b/lib/connections/relay_listen.go index 4b93d2c92..035ba787a 100644 --- a/lib/connections/relay_listen.go +++ b/lib/connections/relay_listen.go @@ -16,6 +16,7 @@ import ( "github.com/pkg/errors" "github.com/syncthing/syncthing/lib/config" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/dialer" "github.com/syncthing/syncthing/lib/nat" "github.com/syncthing/syncthing/lib/relay/client" @@ -177,7 +178,7 @@ func (t *relayListener) NATType() string { type relayListenerFactory struct{} -func (f *relayListenerFactory) New(uri *url.URL, cfg config.Wrapper, tlsCfg *tls.Config, conns chan internalConn, natService *nat.Service) genericListener { +func (f *relayListenerFactory) New(uri *url.URL, cfg config.Wrapper, tlsCfg *tls.Config, conns chan internalConn, natService *nat.Service, _ *registry.Registry) genericListener { t := &relayListener{ uri: uri, cfg: cfg, diff --git a/lib/connections/service.go b/lib/connections/service.go index 4d394cd96..67d5c9654 100644 --- a/lib/connections/service.go +++ b/lib/connections/service.go @@ -23,6 +23,7 @@ import ( "time" "github.com/syncthing/syncthing/lib/config" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/discover" "github.com/syncthing/syncthing/lib/events" "github.com/syncthing/syncthing/lib/nat" @@ -160,6 +161,7 @@ type service struct { limiter *limiter natService *nat.Service evLogger events.Logger + registry *registry.Registry dialNow chan struct{} dialNowDevices map[protocol.DeviceID]struct{} @@ -170,7 +172,7 @@ type service struct { listenerTokens map[string]suture.ServiceToken } -func NewService(cfg config.Wrapper, myID protocol.DeviceID, mdl Model, tlsCfg *tls.Config, discoverer discover.Finder, bepProtocolName string, tlsDefaultCommonName string, evLogger events.Logger) Service { +func NewService(cfg config.Wrapper, myID protocol.DeviceID, mdl Model, tlsCfg *tls.Config, discoverer discover.Finder, bepProtocolName string, tlsDefaultCommonName string, evLogger events.Logger, registry *registry.Registry) Service { spec := svcutil.SpecWithInfoLogger(l) service := &service{ Supervisor: suture.New("connections.Service", spec), @@ -187,6 +189,7 @@ func NewService(cfg config.Wrapper, myID protocol.DeviceID, mdl Model, tlsCfg *t limiter: newLimiter(myID, cfg), natService: nat.NewService(myID, cfg), evLogger: evLogger, + registry: registry, dialNowDevicesMut: sync.NewMutex(), dialNow: make(chan struct{}, 1), @@ -655,7 +658,7 @@ func (s *service) resolveDialTargets(ctx context.Context, now time.Time, cfg con continue } - dialer := dialerFactory.New(s.cfg.Options(), s.tlsCfg) + dialer := dialerFactory.New(s.cfg.Options(), s.tlsCfg, s.registry) nextDialAt.set(deviceID, addr, now.Add(dialer.RedialFrequency())) // For LAN addresses, increase the priority so that we @@ -755,7 +758,7 @@ func (s *service) createListener(factory listenerFactory, uri *url.URL) bool { l.Debugln("Starting listener", uri) - listener := factory.New(uri, s.cfg, s.tlsCfg, s.conns, s.natService) + listener := factory.New(uri, s.cfg, s.tlsCfg, s.conns, s.natService, s.registry) listener.OnAddressesChanged(s.logListenAddressesChangedEvent) // Retrying a listener many times in rapid succession is unlikely to help, diff --git a/lib/connections/structs.go b/lib/connections/structs.go index 74ec65361..84cb47298 100644 --- a/lib/connections/structs.go +++ b/lib/connections/structs.go @@ -16,6 +16,7 @@ import ( "time" "github.com/syncthing/syncthing/lib/config" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/nat" "github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/stats" @@ -139,7 +140,7 @@ func (c internalConn) String() string { } type dialerFactory interface { - New(config.OptionsConfiguration, *tls.Config) genericDialer + New(config.OptionsConfiguration, *tls.Config, *registry.Registry) genericDialer Priority() int AlwaysWAN() bool Valid(config.Configuration) error @@ -162,7 +163,7 @@ type genericDialer interface { } type listenerFactory interface { - New(*url.URL, config.Wrapper, *tls.Config, chan internalConn, *nat.Service) genericListener + New(*url.URL, config.Wrapper, *tls.Config, chan internalConn, *nat.Service, *registry.Registry) genericListener Valid(config.Configuration) error } diff --git a/lib/connections/tcp_dial.go b/lib/connections/tcp_dial.go index faa4611fc..9f87f4117 100644 --- a/lib/connections/tcp_dial.go +++ b/lib/connections/tcp_dial.go @@ -13,6 +13,7 @@ import ( "time" "github.com/syncthing/syncthing/lib/config" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/dialer" "github.com/syncthing/syncthing/lib/protocol" ) @@ -28,6 +29,7 @@ func init() { type tcpDialer struct { commonDialer + registry *registry.Registry } func (d *tcpDialer) Dial(ctx context.Context, _ protocol.DeviceID, uri *url.URL) (internalConn, error) { @@ -35,7 +37,7 @@ func (d *tcpDialer) Dial(ctx context.Context, _ protocol.DeviceID, uri *url.URL) timeoutCtx, cancel := context.WithTimeout(ctx, 10*time.Second) defer cancel() - conn, err := dialer.DialContextReusePort(timeoutCtx, uri.Scheme, uri.Host) + conn, err := dialer.DialContextReusePortFunc(d.registry)(timeoutCtx, uri.Scheme, uri.Host) if err != nil { return internalConn{}, err } @@ -62,12 +64,15 @@ func (d *tcpDialer) Dial(ctx context.Context, _ protocol.DeviceID, uri *url.URL) type tcpDialerFactory struct{} -func (tcpDialerFactory) New(opts config.OptionsConfiguration, tlsCfg *tls.Config) genericDialer { - return &tcpDialer{commonDialer{ - trafficClass: opts.TrafficClass, - reconnectInterval: time.Duration(opts.ReconnectIntervalS) * time.Second, - tlsCfg: tlsCfg, - }} +func (tcpDialerFactory) New(opts config.OptionsConfiguration, tlsCfg *tls.Config, registry *registry.Registry) genericDialer { + return &tcpDialer{ + commonDialer: commonDialer{ + trafficClass: opts.TrafficClass, + reconnectInterval: time.Duration(opts.ReconnectIntervalS) * time.Second, + tlsCfg: tlsCfg, + }, + registry: registry, + } } func (tcpDialerFactory) Priority() int { diff --git a/lib/connections/tcp_listen.go b/lib/connections/tcp_listen.go index 13a071334..c2b4bb57f 100644 --- a/lib/connections/tcp_listen.go +++ b/lib/connections/tcp_listen.go @@ -32,11 +32,12 @@ type tcpListener struct { svcutil.ServiceWithError onAddressesChangedNotifier - uri *url.URL - cfg config.Wrapper - tlsCfg *tls.Config - conns chan internalConn - factory listenerFactory + uri *url.URL + cfg config.Wrapper + tlsCfg *tls.Config + conns chan internalConn + factory listenerFactory + registry *registry.Registry natService *nat.Service mapping *nat.Mapping @@ -69,8 +70,8 @@ func (t *tcpListener) serve(ctx context.Context) error { t.notifyAddressesChanged(t) defer t.clearAddresses(t) - registry.Register(t.uri.Scheme, tcaddr) - defer registry.Unregister(t.uri.Scheme, tcaddr) + t.registry.Register(t.uri.Scheme, tcaddr) + defer t.registry.Unregister(t.uri.Scheme, tcaddr) l.Infof("TCP listener (%v) starting", tcaddr) defer l.Infof("TCP listener (%v) shutting down", tcaddr) @@ -213,7 +214,7 @@ func (t *tcpListener) NATType() string { type tcpListenerFactory struct{} -func (f *tcpListenerFactory) New(uri *url.URL, cfg config.Wrapper, tlsCfg *tls.Config, conns chan internalConn, natService *nat.Service) genericListener { +func (f *tcpListenerFactory) New(uri *url.URL, cfg config.Wrapper, tlsCfg *tls.Config, conns chan internalConn, natService *nat.Service, registry *registry.Registry) genericListener { l := &tcpListener{ uri: fixupPort(uri, config.DefaultTCPPort), cfg: cfg, @@ -221,6 +222,7 @@ func (f *tcpListenerFactory) New(uri *url.URL, cfg config.Wrapper, tlsCfg *tls.C conns: conns, natService: natService, factory: f, + registry: registry, } l.ServiceWithError = svcutil.AsService(l.serve, l.String()) return l diff --git a/lib/dialer/public.go b/lib/dialer/public.go index cfd632ced..9310cca77 100644 --- a/lib/dialer/public.go +++ b/lib/dialer/public.go @@ -104,32 +104,34 @@ func DialContext(ctx context.Context, network, addr string) (net.Conn, error) { // DialContextReusePort tries dialing via proxy if a proxy is configured, and falls back to // a direct connection reusing the port from the connections registry, if no proxy is defined, or connecting via proxy // fails. It also in parallel dials without reusing the port, just in case reusing the port affects routing decisions badly. -func DialContextReusePort(ctx context.Context, network, addr string) (net.Conn, error) { - // If proxy is configured, there is no point trying to reuse listen addresses. - if proxy.FromEnvironment() != proxy.Direct { - return DialContext(ctx, network, addr) - } +func DialContextReusePortFunc(registry *registry.Registry) func(ctx context.Context, network, addr string) (net.Conn, error) { + return func(ctx context.Context, network, addr string) (net.Conn, error) { + // If proxy is configured, there is no point trying to reuse listen addresses. + if proxy.FromEnvironment() != proxy.Direct { + return DialContext(ctx, network, addr) + } - localAddrInterface := registry.Get(network, func(addr interface{}) bool { - return addr.(*net.TCPAddr).IP.IsUnspecified() - }) - if localAddrInterface == nil { - // Nothing listening, nothing to reuse. - return DialContext(ctx, network, addr) - } + localAddrInterface := registry.Get(network, func(addr interface{}) bool { + return addr.(*net.TCPAddr).IP.IsUnspecified() + }) + if localAddrInterface == nil { + // Nothing listening, nothing to reuse. + return DialContext(ctx, network, addr) + } - laddr, ok := localAddrInterface.(*net.TCPAddr) - if !ok { - return nil, errUnexpectedInterfaceType - } + laddr, ok := localAddrInterface.(*net.TCPAddr) + if !ok { + return nil, errUnexpectedInterfaceType + } - // Dial twice, once reusing the listen address, another time not reusing it, just in case reusing the address - // influences routing and we fail to reach our destination. - dialer := net.Dialer{ - Control: ReusePortControl, - LocalAddr: laddr, + // Dial twice, once reusing the listen address, another time not reusing it, just in case reusing the address + // influences routing and we fail to reach our destination. + dialer := net.Dialer{ + Control: ReusePortControl, + LocalAddr: laddr, + } + return dialTwicePreferFirst(ctx, dialer.DialContext, (&net.Dialer{}).DialContext, "reuse", "non-reuse", network, addr) } - return dialTwicePreferFirst(ctx, dialer.DialContext, (&net.Dialer{}).DialContext, "reuse", "non-reuse", network, addr) } type dialFunc func(ctx context.Context, network, address string) (net.Conn, error) diff --git a/lib/discover/cache_test.go b/lib/discover/cache_test.go index bcc571efd..130e7c97d 100644 --- a/lib/discover/cache_test.go +++ b/lib/discover/cache_test.go @@ -14,6 +14,7 @@ import ( "time" "github.com/syncthing/syncthing/lib/config" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/events" "github.com/syncthing/syncthing/lib/protocol" ) @@ -23,7 +24,7 @@ func setupCache() *manager { cfg.Options.LocalAnnEnabled = false cfg.Options.GlobalAnnEnabled = false - return NewManager(protocol.LocalDeviceID, config.Wrap("", cfg, protocol.LocalDeviceID, events.NoopLogger), tls.Certificate{}, events.NoopLogger, nil).(*manager) + return NewManager(protocol.LocalDeviceID, config.Wrap("", cfg, protocol.LocalDeviceID, events.NoopLogger), tls.Certificate{}, events.NoopLogger, nil, registry.New()).(*manager) } func TestCacheUnique(t *testing.T) { diff --git a/lib/discover/global.go b/lib/discover/global.go index cd4b03b1b..8f3546e2a 100644 --- a/lib/discover/global.go +++ b/lib/discover/global.go @@ -14,12 +14,14 @@ import ( "errors" "fmt" "io" + "net" "net/http" "net/url" "strconv" stdsync "sync" "time" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/dialer" "github.com/syncthing/syncthing/lib/events" "github.com/syncthing/syncthing/lib/protocol" @@ -71,7 +73,7 @@ func (e *lookupError) CacheFor() time.Duration { return e.cacheFor } -func NewGlobal(server string, cert tls.Certificate, addrList AddressLister, evLogger events.Logger) (FinderService, error) { +func NewGlobal(server string, cert tls.Certificate, addrList AddressLister, evLogger events.Logger, registry *registry.Registry) (FinderService, error) { server, opts, err := parseOptions(server) if err != nil { return nil, err @@ -88,10 +90,16 @@ func NewGlobal(server string, cert tls.Certificate, addrList AddressLister, evLo // The http.Client used for announcements. It needs to have our // certificate to prove our identity, and may or may not verify the server // certificate depending on the insecure setting. + var dialContext func(ctx context.Context, network, addr string) (net.Conn, error) + if registry != nil { + dialContext = dialer.DialContextReusePortFunc(registry) + } else { + dialContext = dialer.DialContext + } var announceClient httpClient = &contextClient{&http.Client{ Timeout: requestTimeout, Transport: &http.Transport{ - DialContext: dialer.DialContextReusePort, + DialContext: dialContext, Proxy: http.ProxyFromEnvironment, TLSClientConfig: &tls.Config{ InsecureSkipVerify: opts.insecure, diff --git a/lib/discover/global_test.go b/lib/discover/global_test.go index c8471460c..d7379cb59 100644 --- a/lib/discover/global_test.go +++ b/lib/discover/global_test.go @@ -16,6 +16,7 @@ import ( "testing" "time" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/events" "github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/tlsutil" @@ -56,15 +57,17 @@ func TestGlobalOverHTTP(t *testing.T) { // is only allowed in combination with the "insecure" and "noannounce" // parameters. - if _, err := NewGlobal("http://192.0.2.42/", tls.Certificate{}, nil, events.NoopLogger); err == nil { + registry := registry.New() + + if _, err := NewGlobal("http://192.0.2.42/", tls.Certificate{}, nil, events.NoopLogger, registry); err == nil { t.Fatal("http is not allowed without insecure and noannounce") } - if _, err := NewGlobal("http://192.0.2.42/?insecure", tls.Certificate{}, nil, events.NoopLogger); err == nil { + if _, err := NewGlobal("http://192.0.2.42/?insecure", tls.Certificate{}, nil, events.NoopLogger, registry); err == nil { t.Fatal("http is not allowed without noannounce") } - if _, err := NewGlobal("http://192.0.2.42/?noannounce", tls.Certificate{}, nil, events.NoopLogger); err == nil { + if _, err := NewGlobal("http://192.0.2.42/?noannounce", tls.Certificate{}, nil, events.NoopLogger, registry); err == nil { t.Fatal("http is not allowed without insecure") } @@ -185,7 +188,7 @@ func TestGlobalAnnounce(t *testing.T) { go func() { _ = http.Serve(list, mux) }() url := "https://" + list.Addr().String() + "?insecure" - disco, err := NewGlobal(url, cert, new(fakeAddressLister), events.NoopLogger) + disco, err := NewGlobal(url, cert, new(fakeAddressLister), events.NoopLogger, registry.New()) if err != nil { t.Fatal(err) } @@ -210,7 +213,7 @@ func TestGlobalAnnounce(t *testing.T) { } func testLookup(url string) ([]string, error) { - disco, err := NewGlobal(url, tls.Certificate{}, nil, events.NoopLogger) + disco, err := NewGlobal(url, tls.Certificate{}, nil, events.NoopLogger, registry.New()) if err != nil { return nil, err } diff --git a/lib/discover/manager.go b/lib/discover/manager.go index 686d67310..9f3caf135 100644 --- a/lib/discover/manager.go +++ b/lib/discover/manager.go @@ -19,6 +19,7 @@ import ( "github.com/thejerf/suture/v4" "github.com/syncthing/syncthing/lib/config" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/events" "github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/svcutil" @@ -44,12 +45,13 @@ type manager struct { cert tls.Certificate evLogger events.Logger addressLister AddressLister + registry *registry.Registry finders map[string]cachedFinder mut sync.RWMutex } -func NewManager(myID protocol.DeviceID, cfg config.Wrapper, cert tls.Certificate, evLogger events.Logger, lister AddressLister) Manager { +func NewManager(myID protocol.DeviceID, cfg config.Wrapper, cert tls.Certificate, evLogger events.Logger, lister AddressLister, registry *registry.Registry) Manager { m := &manager{ Supervisor: suture.New("discover.Manager", svcutil.SpecWithDebugLogger(l)), myID: myID, @@ -57,6 +59,7 @@ func NewManager(myID protocol.DeviceID, cfg config.Wrapper, cert tls.Certificate cert: cert, evLogger: evLogger, addressLister: lister, + registry: registry, finders: make(map[string]cachedFinder), mut: sync.NewRWMutex(), @@ -257,7 +260,7 @@ func (m *manager) CommitConfiguration(_, to config.Configuration) (handled bool) if _, ok := m.finders[identity]; ok { continue } - gd, err := NewGlobal(srv, m.cert, m.addressLister, m.evLogger) + gd, err := NewGlobal(srv, m.cert, m.addressLister, m.evLogger, m.registry) if err != nil { l.Warnln("Global discovery:", err) continue diff --git a/lib/syncthing/syncthing.go b/lib/syncthing/syncthing.go index 271acb4d1..b0fe9adbd 100644 --- a/lib/syncthing/syncthing.go +++ b/lib/syncthing/syncthing.go @@ -26,6 +26,7 @@ import ( "github.com/syncthing/syncthing/lib/build" "github.com/syncthing/syncthing/lib/config" "github.com/syncthing/syncthing/lib/connections" + "github.com/syncthing/syncthing/lib/connections/registry" "github.com/syncthing/syncthing/lib/db" "github.com/syncthing/syncthing/lib/db/backend" "github.com/syncthing/syncthing/lib/discover" @@ -276,8 +277,9 @@ func (a *App) startup() error { // Create a wrapper that is then wired after they are both setup. addrLister := &lateAddressLister{} - discoveryManager := discover.NewManager(a.myID, a.cfg, a.cert, a.evLogger, addrLister) - connectionsService := connections.NewService(a.cfg, a.myID, m, tlsCfg, discoveryManager, bepProtocolName, tlsDefaultCommonName, a.evLogger) + connRegistry := registry.New() + discoveryManager := discover.NewManager(a.myID, a.cfg, a.cert, a.evLogger, addrLister, connRegistry) + connectionsService := connections.NewService(a.cfg, a.myID, m, tlsCfg, discoveryManager, bepProtocolName, tlsDefaultCommonName, a.evLogger, connRegistry) addrLister.AddressLister = connectionsService