From e9a2ff3aa61f5181ff794d4d326ce6869118c47a Mon Sep 17 00:00:00 2001 From: Syncthing Release Automation Date: Mon, 7 Apr 2025 03:50:00 +0000 Subject: [PATCH 1/7] chore(gui, man, authors): update docs, translations, and contributors --- AUTHORS | 1 + gui/default/assets/lang/lang-ga.json | 2 ++ gui/default/assets/lang/lang-ko-KR.json | 2 ++ gui/default/assets/lang/lang-uk.json | 4 +++- gui/default/syncthing/core/aboutModalView.html | 2 +- man/stdiscosrv.1 | 2 +- man/strelaysrv.1 | 2 +- man/syncthing-bep.7 | 2 +- man/syncthing-config.5 | 14 +++----------- man/syncthing-device-ids.7 | 2 +- man/syncthing-event-api.7 | 2 +- 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 | 2 +- man/syncthing-security.7 | 2 +- man/syncthing-stignore.5 | 2 +- man/syncthing-versioning.7 | 2 +- man/syncthing.1 | 2 +- 21 files changed, 29 insertions(+), 30 deletions(-) diff --git a/AUTHORS b/AUTHORS index 640ffa731..55debcfd8 100644 --- a/AUTHORS +++ b/AUTHORS @@ -324,6 +324,7 @@ Suhas Gundimeda (snugghash) Sven Bachmann Syncthing Automation Syncthing Release Automation +Sébastien WENSKE Taylor Khan (nelsonkhan) Terrance Thomas <9749173+uhthomas@users.noreply.github.com> diff --git a/gui/default/assets/lang/lang-ga.json b/gui/default/assets/lang/lang-ga.json index 179389503..b74ec41bb 100644 --- a/gui/default/assets/lang/lang-ga.json +++ b/gui/default/assets/lang/lang-ga.json @@ -27,6 +27,7 @@ "Allowed Networks": "Líonraí Ceadaithe", "Alphabetic": "Aibítreach", "Altered by ignoring deletes.": "Athraithe trí neamhaird a dhéanamh ar scriosadh.", + "Always turned on when the folder type is \"{%foldertype%}\".": "Cuirtear ar siúl i gcónaí é nuair is é \"{{foldertype}}\" an cineál fillteáin.", "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.": "Láimhseálann ordú seachtrach an leagan. Caithfidh sé an comhad a bhaint den fhillteán comhroinnte. Má tá spásanna sa chosán chuig an bhfeidhmchlár, ba chóir é a lua.", "Anonymous Usage Reporting": "Tuairisciú Úsáide Gan Ainm", "Anonymous usage report format has changed. Would you like to move to the new format?": "Tá athrú tagtha ar fhormáid na tuarascála úsáide gan ainm. Ar mhaith leat bogadh go dtí an fhormáid nua?", @@ -52,6 +53,7 @@ "Body:": "Comhlacht:", "Bugs": "Fabhtanna", "Cancel": "Cuir ar ceal", + "Cannot be enabled when the folder type is \"{%foldertype%}\".": "Ní féidir é a chumasú nuair is é \"{{foldertype}}\" an cineál fillteáin.", "Changelog": "ChangelogName", "Clean out after": "Glan amach tar éis", "Cleaning Versions": "Leaganacha Glantacháin", diff --git a/gui/default/assets/lang/lang-ko-KR.json b/gui/default/assets/lang/lang-ko-KR.json index c77494573..f583ed148 100644 --- a/gui/default/assets/lang/lang-ko-KR.json +++ b/gui/default/assets/lang/lang-ko-KR.json @@ -27,6 +27,7 @@ "Allowed Networks": "허가된 망", "Alphabetic": "가나다순", "Altered by ignoring deletes.": "삭제 항목 무시로 변경됨", + "Always turned on when the folder type is \"{%foldertype%}\".": "{{foldertype}} 폴더 유형일 때는 항상 활성화되어 있습니다.", "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?": "익명 사용 보고의 형식이 변경되었습니다. 새 형식으로 설정을 변경하시겠습니까?", @@ -52,6 +53,7 @@ "Body:": "내용:", "Bugs": "버그", "Cancel": "취소", + "Cannot be enabled when the folder type is \"{%foldertype%}\".": "{{foldertype}} 폴더 유형일 때는 활성화할 수 없습니다.", "Changelog": "변경 기록", "Clean out after": "보관 기간", "Cleaning Versions": "버전 정리", diff --git a/gui/default/assets/lang/lang-uk.json b/gui/default/assets/lang/lang-uk.json index 5cab32e69..d90a27bdb 100644 --- a/gui/default/assets/lang/lang-uk.json +++ b/gui/default/assets/lang/lang-uk.json @@ -27,6 +27,7 @@ "Allowed Networks": "Дозволені мережі", "Alphabetic": "За абеткою", "Altered by ignoring deletes.": "Змінено, ігноруючи видалення.", + "Always turned on when the folder type is \"{%foldertype%}\".": "Завжди вмикається, якщо тип теки «{{foldertype}}».", "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?": "Формат анонімного звітування про використання змінився. Бажаєте перейти на новий формат?", @@ -52,6 +53,7 @@ "Body:": "Повідомлення:", "Bugs": "Помилки", "Cancel": "Скасувати", + "Cannot be enabled when the folder type is \"{%foldertype%}\".": "Неможливо ввімкнути, якщо тип теки «{{foldertype}}».", "Changelog": "Журнал змін", "Clean out after": "Очистити після", "Cleaning Versions": "Очищення версій", @@ -550,6 +552,6 @@ }, "unknown device": "невідомий пристрій", "{%device%} wants to share folder \"{%folder%}\".": "{{device}} хоче поділитися папкою \"{{folder}}\".", - "{%device%} wants to share folder \"{%folderlabel%}\" ({%folder%}).": "{{device}} хоче поділитися папкою \"{{folderLabel}}\" ({{folder}}).", + "{%device%} wants to share folder \"{%folderlabel%}\" ({%folder%}).": "{{device}} хоче поділитися текою \"{{folderlabel}}\" ({{folder}}).", "{%reintroducer%} might reintroduce this device.": "{{reintroducer}} може повторно порекомендувати цей пристрій." } diff --git a/gui/default/syncthing/core/aboutModalView.html b/gui/default/syncthing/core/aboutModalView.html index 929234d23..9880787e4 100644 --- a/gui/default/syncthing/core/aboutModalView.html +++ b/gui/default/syncthing/core/aboutModalView.html @@ -30,7 +30,7 @@

The Syncthing Authors

-Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Tomasz Wilczyński, Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male, Ben Schulz, Caleb Callaway, Daniel Harte, Emil Lundberg, Eric P, Evgeny Kuznetsov, Lars K.W. Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ross Smith II, Ryan Sullivan, Sergey Mishin, Stefan Tatschner, Wulf Weich, bt90, greatroar, Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Aleksey Vasenev, Alessandro G., Alex Ionescu, Alex Lindeman, Alex Xu, Alexander Seiler, Alexandre Alves, Aman Gupta, Anatoli Babenia, Andreas Sommer, Andrew Dunham, Andrew Meyer, Andrew Rabert, Andrey D, Anjan Momi, Anthony Goeckner, Antoine Lamielle, Anur, Aranjedeath, Arkadiusz Tymiński, Aroun, Arthur Axel fREW Schmidt, Artur Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Beat Reichenbach, 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, Catfriend1, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Kujau, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann, Daniel Martí, Daniel Padrta, Darshil Chanpura, David Rimmer, DeflateAwning, Denis A., Dennis Wilson, DerRockWolf, Devon G. Redekopp, Dimitri Papadopoulos Orfanos, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eng Zer Jun, Eric Lesiuta, Erik Meitner, Evan Spensley, Federico Castagnini, Felix, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Greg, Gusted, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hireworks, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, James O'Beirne, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaspitta, Jauder Ho, Jaya Chithra, Jaya Kumar, Jeffery To, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Julian Lehrhuber, Jörg Thalheim, Jędrzej Kula, K.B.Dharun Krishna, Kalle Laine, Kapil Sareen, Karol Różycki, Kebin Liu, Keith Harrison, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, LSmithx2, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Luke Hamburg, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus B Spencer, Marcus Legendre, Mario Majila, Mark Pulford, Martchus, Martin Polehla, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, Maximilian, MichaIng, Michael Jephcote, Michael Rienstra, Michael Tilli, Migelo, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Naveen, Nicholas Rishel, Nick Busey, 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, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel, Sertonix, Severin von Wnuck-Lipinski, Shaarad Dalvi, Simon Mwepu, Simon Pickup, Sly_tom_cat, Sonu Kumar Saw, Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Sven Bachmann, Taylor Khan, Terrance, Thomas, Thomas Hipp, Tim Abell, Tim Howes, Tim Nordenfur, Tobias Frölich, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tommy van der Vorst, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vik, Vil Brekin, Vladimir Rusinov, WangXi, Will Rouesnel, William A. Kennington III, Xavier O., Yannic A., andresvia, andyleap, boomsquared, chenrui, chucic, cjc7373, cui fliter, d-volution, dashangcun, derekriemer, desbma, diemade, digital, entity0xfe, georgespatton, ghjklw, guangwu, gudvinr, ignacy123, janost, jaseg, jelle van der Waa, jtagcat, klemens, kylosus, luchenhan, luzpaz, marco-m, mathias4833, maxice8, mclang, mv1005, nf, orangekame3, otbutz, overkill, perewa, polyfloyd, red_led, rubenbe, sec65, vapatel2, villekalliomaki, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙, 落心 +Jakob Borg, Audrius Butkevicius, Jesse Lucas, Simon Frei, Tomasz Wilczyński, Alexander Graf, Alexandre Viau, Anderson Mesquita, André Colomb, Antony Male, Ben Schulz, Caleb Callaway, Daniel Harte, Emil Lundberg, Eric P, Evgeny Kuznetsov, Lars K.W. Gohlke, Lode Hoste, Michael Ploujnikov, Nate Morrison, Philippe Schommers, Ross Smith II, Ryan Sullivan, Sergey Mishin, Stefan Tatschner, Wulf Weich, bt90, greatroar, Aaron Bieber, Adam Piggott, Adel Qalieh, Alan Pope, Alberto Donato, Aleksey Vasenev, Alessandro G., Alex Ionescu, Alex Lindeman, Alex Xu, Alexander Seiler, Alexandre Alves, Aman Gupta, Anatoli Babenia, Andreas Sommer, Andrew Dunham, Andrew Meyer, Andrew Rabert, Andrey D, Anjan Momi, Anthony Goeckner, Antoine Lamielle, Anur, Aranjedeath, Arkadiusz Tymiński, Aroun, Arthur Axel fREW Schmidt, Artur Zubilewicz, Aurélien Rainone, BAHADIR YILMAZ, Bart De Vries, Beat Reichenbach, 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, Catfriend1, Cathryne Linenweaver, Cedric Staniewski, Chih-Hsuan Yen, Choongkyu, Chris Howie, Chris Joel, Chris Tonkinson, Christian Kujau, Christian Prescott, Colin Kennedy, Cromefire_, Cyprien Devillez, Dale Visser, Dan, Daniel Barczyk, Daniel Bergmann, Daniel Martí, Daniel Padrta, Darshil Chanpura, David Rimmer, DeflateAwning, Denis A., Dennis Wilson, DerRockWolf, Devon G. Redekopp, Dimitri Papadopoulos Orfanos, Dmitry Saveliev, Domenic Horner, Dominik Heidler, Elias Jarlebring, Elliot Huffman, Emil Hessman, Eng Zer Jun, Eric Lesiuta, Erik Meitner, Evan Spensley, Federico Castagnini, Felix, Felix Ableitner, Felix Lampe, Felix Unterpaintner, Francois-Xavier Gsell, Frank Isemann, Gahl Saraf, Gilli Sigurdsson, Gleb Sinyavskiy, Graham Miln, Greg, Gusted, Han Boetes, HansK-p, Harrison Jones, Heiko Zuerker, Hireworks, Hugo Locurcio, Iain Barnett, Ian Johnson, Ikko Ashimine, Ilya Brin, Iskander Sharipov, Jaakko Hannikainen, Jacek Szafarkiewicz, Jack Croft, Jacob, Jake Peterson, James O'Beirne, James Patterson, Jaroslav Lichtblau, Jaroslav Malec, Jaspitta, Jauder Ho, Jaya Chithra, Jaya Kumar, Jeffery To, Jens Diemer, Jerry Jacobs, Jochen Voss, Johan Andersson, Johan Vromans, John Rinehart, Jonas Thelemann, Jonathan, Jonathan Cross, Jonta, Jose Manuel Delicado, Julian Lehrhuber, Jörg Thalheim, Jędrzej Kula, K.B.Dharun Krishna, Kalle Laine, Kapil Sareen, Karol Różycki, Kebin Liu, Keith Harrison, Keith Turner, Kelong Cong, Ken'ichi Kamada, Kevin Allen, Kevin Bushiri, Kevin White, Jr., Kurt Fitzner, LSmithx2, Lars Lehtonen, Laurent Arnoud, Laurent Etiemble, Leo Arias, Liu Siyuan, Lord Landon Agahnim, Lukas Lihotzki, Luke Hamburg, Majed Abdulaziz, Marc Laporte, Marc Pujol, Marcin Dziadus, Marcus B Spencer, Marcus Legendre, Mario Majila, Mark Pulford, Martchus, Martin Polehla, Mateusz Naściszewski, Mateusz Ż, Matic Potočnik, Matt Burke, Matt Robenolt, Matteo Ruina, Maurizio Tomasi, Max, Max Schulze, MaximAL, Maxime Thirouin, Maximilian, MichaIng, Michael Jephcote, Michael Rienstra, Michael Tilli, Migelo, Mike Boone, MikeLund, MikolajTwarog, Mingxuan Lin, Naveen, Nicholas Rishel, Nick Busey, 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, Ruslan Yevdokymov, Ryan Qian, Sacheendra Talluri, Scott Klupfel, Sertonix, Severin von Wnuck-Lipinski, Shaarad Dalvi, Simon Mwepu, Simon Pickup, Sly_tom_cat, Sonu Kumar Saw, Stefan Kuntz, Steven Eckhoff, Suhas Gundimeda, Sven Bachmann, Sébastien WENSKE, Taylor Khan, Terrance, Thomas, Thomas Hipp, Tim Abell, Tim Howes, Tim Nordenfur, Tobias Frölich, Tobias Klauser, Tobias Nygren, Tobias Tom, Tom Jakubowski, Tommy Thorn, Tommy van der Vorst, Tully Robinson, Tyler Brazier, Tyler Kropp, Unrud, Veeti Paananen, Victor Buinsky, Vik, Vil Brekin, Vladimir Rusinov, WangXi, Will Rouesnel, William A. Kennington III, Xavier O., Yannic A., andresvia, andyleap, boomsquared, chenrui, chucic, cjc7373, cui fliter, d-volution, dashangcun, derekriemer, desbma, diemade, digital, entity0xfe, georgespatton, ghjklw, guangwu, gudvinr, ignacy123, janost, jaseg, jelle van der Waa, jtagcat, klemens, kylosus, luchenhan, luzpaz, marco-m, mathias4833, maxice8, mclang, mv1005, nf, orangekame3, otbutz, overkill, perewa, polyfloyd, red_led, rubenbe, sec65, vapatel2, villekalliomaki, wangguoliang, wouter bolsterlee, xarx00, xjtdy888, 佛跳墙, 落心
diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index 6c77c21e8..afd094a06 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 19, 2025" "v1.29.3" "Syncthing" +.TH "STDISCOSRV" "1" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index cd2597267..509288959 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 19, 2025" "v1.29.3" "Syncthing" +.TH "STRELAYSRV" "1" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index cd3a7878c..65447d49d 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -28,7 +28,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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Apr 04, 2025" "v1.29.3" "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 f14b3a30f..14c5f2dad 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS @@ -1430,15 +1430,7 @@ ECN bits into account. .TP .B stunServer Server to be used for STUN, given as ip:port. The keyword \fBdefault\fP gets -expanded to -\fBstun.callwithus.com:3478\fP, \fBstun.counterpath.com:3478\fP, -\fBstun.counterpath.net:3478\fP, \fBstun.ekiga.net:3478\fP, -\fBstun.hitv.com:3478\fP, \fBstun.ideasip.com:3478\fP, -\fBstun.internetcalls.com:3478\fP, \fBstun.miwifi.com:3478\fP, -\fBstun.schlund.de:3478\fP,\(ga\(gastun.sipgate.net:10000\(ga\(ga, -\fBstun.sipgate.net:3478\fP, \fBstun.voip.aebc.com:3478\fP, -\fBstun.voiparound.com:3478\fP, \fBstun.voipbuster.com:3478\fP, -\fBstun.voipstunt.com:3478\fP and \fBstun.xten.com:3478\fP (this is the default). +expanded to a set of public STUN servers. .sp To configure multiple servers, you can either: repeat \fB\fP tags in the configuration file or enter several servers separated by commas in @@ -1448,7 +1440,7 @@ the GUI. .TP .B stunKeepaliveStartS Interval in seconds between contacting a STUN server to maintain NAT -mapping. Default is \fB24\fP and you can set it to \fB0\fP to disable contacting +mapping. Default is \fB180\fP and you can set it to \fB0\fP to disable contacting STUN servers. The interval is automatically reduced if needed, down to a minimum of \fI\%stunKeepaliveMinS\fP\&. .UNINDENT diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index 2baa9d7bf..eb380cb1b 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Apr 04, 2025" "v1.29.3" "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 a5fd05f4e..fc991ed2b 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index d26172d44..9eb8b0e17 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 @@ -315,7 +315,7 @@ machine with four cores will limit Syncthing to no more than half the system’s CPU power. .SS Why is the setup more complicated than BitTorrent/Resilio Sync? .sp -Security over convenience. In Syncthing you have to setup both sides to +Security over convenience. In Syncthing you have to set up both sides to connect two devices. An attacker can’t do much with a stolen device ID, because you have to add the device on the other side too. You have better control where your files are transferred. @@ -652,7 +652,7 @@ the filesystem watcher on linux: .INDENT 0.0 .INDENT 3.5 Failed to start filesystem watcher for folder yourLabel (yourID): failed to -setup inotify handler. Please increase inotify limits, see \X'tty: link https://docs.syncthing.net/users/faq.html#inotify-limits'\fI\%https://docs.syncthing.net/users/faq.html#inotify\-limits\fP\X'tty: link' +set up inotify handler. Please increase inotify limits, see \X'tty: link https://docs.syncthing.net/users/faq.html#inotify-limits'\fI\%https://docs.syncthing.net/users/faq.html#inotify\-limits\fP\X'tty: link' .UNINDENT .UNINDENT .sp diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index 8e80eddf9..fe58f0147 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index 6621ee264..05425f543 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Apr 04, 2025" "v1.29.3" "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 44ff2d301..e419a71f4 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index 08b104df6..99b7859c6 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -28,7 +28,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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Apr 04, 2025" "v1.29.3" "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 ee6086030..2e3fcf345 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index 689b56960..9cc22b8ad 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index 311e9a2bf..7925e2476 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Apr 04, 2025" "v1.29.3" "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 6c469e743..0eca9f902 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Apr 04, 2025" "v1.29.3" "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 8b52f388a..9e1b5517a 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 19, 2025" "v1.29.3" "Syncthing" +.TH "SYNCTHING" "1" "Apr 04, 2025" "v1.29.3" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS From e48be98cd5ecff3ecd727c96e01cf759ed2cd47c Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Tue, 8 Apr 2025 00:43:19 -0700 Subject: [PATCH 2/7] build: push artifacts to Azure (#10044) Provider migration --- .github/workflows/build-syncthing.yaml | 64 ++++++++++---------------- 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/.github/workflows/build-syncthing.yaml b/.github/workflows/build-syncthing.yaml index 40810699c..84c52fff8 100644 --- a/.github/workflows/build-syncthing.yaml +++ b/.github/workflows/build-syncthing.yaml @@ -726,15 +726,12 @@ jobs: - name: Push artifacts uses: docker://docker.io/rclone/rclone:latest env: - RCLONE_CONFIG_OBJSTORE_TYPE: s3 - RCLONE_CONFIG_OBJSTORE_PROVIDER: ${{ secrets.S3_PROVIDER }} - RCLONE_CONFIG_OBJSTORE_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }} - RCLONE_CONFIG_OBJSTORE_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }} - RCLONE_CONFIG_OBJSTORE_ENDPOINT: ${{ secrets.S3_ENDPOINT }} - RCLONE_CONFIG_OBJSTORE_REGION: ${{ secrets.S3_REGION }} - RCLONE_CONFIG_OBJSTORE_ACL: public-read + RCLONE_CONFIG_OBJSTORE_TYPE: ${{ secrets.AZUREBLOB_TYPE }} + RCLONE_CONFIG_OBJSTORE_ACCOUNT: ${{ secrets.AZUREBLOB_ACCOUNT }} + RCLONE_CONFIG_OBJSTORE_KEY: ${{ secrets.AZUREBLOB_KEY }} + RCLONE_AZUREBLOB_ACCESS_TIER: hot with: - args: sync packages objstore:${{ secrets.S3_BUCKET }}/nightly + args: sync -v packages objstore:nightly # # Push release artifacts to Spaces @@ -780,28 +777,22 @@ jobs: - name: Push to object store (${{ env.VERSION }}) uses: docker://docker.io/rclone/rclone:latest env: - RCLONE_CONFIG_OBJSTORE_TYPE: s3 - RCLONE_CONFIG_OBJSTORE_PROVIDER: ${{ secrets.S3_PROVIDER }} - RCLONE_CONFIG_OBJSTORE_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }} - RCLONE_CONFIG_OBJSTORE_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }} - RCLONE_CONFIG_OBJSTORE_ENDPOINT: ${{ secrets.S3_ENDPOINT }} - RCLONE_CONFIG_OBJSTORE_REGION: ${{ secrets.S3_REGION }} - RCLONE_CONFIG_OBJSTORE_ACL: public-read + RCLONE_CONFIG_OBJSTORE_TYPE: ${{ secrets.AZUREBLOB_TYPE }} + RCLONE_CONFIG_OBJSTORE_ACCOUNT: ${{ secrets.AZUREBLOB_ACCOUNT }} + RCLONE_CONFIG_OBJSTORE_KEY: ${{ secrets.AZUREBLOB_KEY }} + RCLONE_AZUREBLOB_ACCESS_TIER: cool with: - args: sync packages objstore:${{ secrets.S3_BUCKET }}/release/${{ env.VERSION }} + args: sync -v packages objstore:release/${{ env.VERSION }} - name: Push to object store (latest) uses: docker://docker.io/rclone/rclone:latest env: - RCLONE_CONFIG_OBJSTORE_TYPE: s3 - RCLONE_CONFIG_OBJSTORE_PROVIDER: ${{ secrets.S3_PROVIDER }} - RCLONE_CONFIG_OBJSTORE_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }} - RCLONE_CONFIG_OBJSTORE_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }} - RCLONE_CONFIG_OBJSTORE_ENDPOINT: ${{ secrets.S3_ENDPOINT }} - RCLONE_CONFIG_OBJSTORE_REGION: ${{ secrets.S3_REGION }} - RCLONE_CONFIG_OBJSTORE_ACL: public-read + RCLONE_CONFIG_OBJSTORE_TYPE: ${{ secrets.AZUREBLOB_TYPE }} + RCLONE_CONFIG_OBJSTORE_ACCOUNT: ${{ secrets.AZUREBLOB_ACCOUNT }} + RCLONE_CONFIG_OBJSTORE_KEY: ${{ secrets.AZUREBLOB_KEY }} + RCLONE_AZUREBLOB_ACCESS_TIER: hot with: - args: sync objstore:${{ secrets.S3_BUCKET }}/release/${{ env.VERSION }} objstore:${{ secrets.S3_BUCKET }}/release/latest + args: sync -v objstore:release/${{ env.VERSION }} objstore:release/latest # # Push Debian/APT archive @@ -848,15 +839,11 @@ jobs: - name: Pull archive uses: docker://docker.io/rclone/rclone:latest env: - RCLONE_CONFIG_OBJSTORE_TYPE: s3 - RCLONE_CONFIG_OBJSTORE_PROVIDER: ${{ secrets.S3_PROVIDER }} - RCLONE_CONFIG_OBJSTORE_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }} - RCLONE_CONFIG_OBJSTORE_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }} - RCLONE_CONFIG_OBJSTORE_ENDPOINT: ${{ secrets.S3_ENDPOINT }} - RCLONE_CONFIG_OBJSTORE_REGION: ${{ secrets.S3_REGION }} - RCLONE_CONFIG_OBJSTORE_ACL: public-read + RCLONE_CONFIG_OBJSTORE_TYPE: ${{ secrets.AZUREBLOB_TYPE }} + RCLONE_CONFIG_OBJSTORE_ACCOUNT: ${{ secrets.AZUREBLOB_ACCOUNT }} + RCLONE_CONFIG_OBJSTORE_KEY: ${{ secrets.AZUREBLOB_KEY }} with: - args: sync objstore:syncthing-apt/dists dists + args: sync objstore:apt/dists dists - name: Update archive uses: docker://ghcr.io/kastelo/ezapt:latest @@ -871,15 +858,12 @@ jobs: - name: Push archive uses: docker://docker.io/rclone/rclone:latest env: - RCLONE_CONFIG_OBJSTORE_TYPE: s3 - RCLONE_CONFIG_OBJSTORE_PROVIDER: ${{ secrets.S3_PROVIDER }} - RCLONE_CONFIG_OBJSTORE_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }} - RCLONE_CONFIG_OBJSTORE_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }} - RCLONE_CONFIG_OBJSTORE_ENDPOINT: ${{ secrets.S3_ENDPOINT }} - RCLONE_CONFIG_OBJSTORE_REGION: ${{ secrets.S3_REGION }} - RCLONE_CONFIG_OBJSTORE_ACL: public-read + RCLONE_CONFIG_OBJSTORE_TYPE: ${{ secrets.AZUREBLOB_TYPE }} + RCLONE_CONFIG_OBJSTORE_ACCOUNT: ${{ secrets.AZUREBLOB_ACCOUNT }} + RCLONE_CONFIG_OBJSTORE_KEY: ${{ secrets.AZUREBLOB_KEY }} + RCLONE_AZUREBLOB_ACCESS_TIER: hot with: - args: sync dists -v objstore:syncthing-apt/dists + args: sync -v dists objstore:apt/dists # # Build and push to Docker Hub From d7ca483df1c45d2e725c495ffa5c53d322118ea9 Mon Sep 17 00:00:00 2001 From: bt90 Date: Tue, 8 Apr 2025 14:23:57 +0200 Subject: [PATCH 3/7] chore(config): resolve primary STUN servers via SRV record (fixes #10029) (#10031) ### Purpose Fixes #10029 ### Testing ``` [3JPXJ] 2025/04/03 14:36:44.601454 stun.go:146: DEBUG: Running stun for Stun@udp://[::]:22000 via fyc5mja4mz5s0vmz1txx.syncthing.net:9999 [3JPXJ] 2025/04/03 14:36:54.185157 stun.go:170: DEBUG: Stun@udp://[::]:22000 stun discovery on fyc5mja4mz5s0vmz1txx.syncthing.net:9999 resulted in no address [3JPXJ] 2025/04/03 14:36:54.185204 stun.go:146: DEBUG: Running stun for Stun@udp://[::]:22000 via stun.internetcalls.com:3478 ``` ### Documentation https://github.com/syncthing/docs/pull/904 --- lib/config/config.go | 10 +++------- lib/config/optionsconfiguration.go | 25 +++++++++++++++++-------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/lib/config/config.go b/lib/config/config.go index 6805a15eb..e3d9f11c9 100644 --- a/lib/config/config.go +++ b/lib/config/config.go @@ -68,13 +68,9 @@ var ( DefaultTheme = "default" // Default stun servers should be substituted when the configuration // contains default. - - // DefaultPrimaryStunServers are servers provided by us (to avoid causing the public servers burden) - DefaultPrimaryStunServers = []string{ - // Discontinued because of misuse. See https://forum.syncthing.net/t/stun-server-misuse/23319 - //"stun.syncthing.net:3478", - } - DefaultSecondaryStunServers = []string{ + // The primary stun servers are provided by us and are resolved via an SRV record + // The fallback stun servers are used if the primary ones can't be resolved or are down. + DefaultFallbackStunServers = []string{ "stun.counterpath.com:3478", "stun.counterpath.net:3478", "stun.ekiga.net:3478", diff --git a/lib/config/optionsconfiguration.go b/lib/config/optionsconfiguration.go index eecf34dda..32e1b4891 100644 --- a/lib/config/optionsconfiguration.go +++ b/lib/config/optionsconfiguration.go @@ -8,8 +8,10 @@ package config import ( "fmt" + "net" "runtime" "slices" + "strings" "github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/rand" @@ -184,15 +186,22 @@ func (opts OptionsConfiguration) StunServers() []string { for _, addr := range opts.RawStunServers { switch addr { case "default": - defaultPrimaryAddresses := make([]string, len(DefaultPrimaryStunServers)) - copy(defaultPrimaryAddresses, DefaultPrimaryStunServers) - rand.Shuffle(defaultPrimaryAddresses) - addresses = append(addresses, defaultPrimaryAddresses...) + _, records, err := net.LookupSRV("stun", "udp", "syncthing.net") + if err != nil { + l.Warnln("Unable to resolve primary STUN servers via DNS:", err) + } - defaultSecondaryAddresses := make([]string, len(DefaultSecondaryStunServers)) - copy(defaultSecondaryAddresses, DefaultSecondaryStunServers) - rand.Shuffle(defaultSecondaryAddresses) - addresses = append(addresses, defaultSecondaryAddresses...) + for _, record := range records { + priority := record.Priority + target := strings.TrimSuffix(record.Target, ".") + address := fmt.Sprintf("%s:%d", target, record.Port) + l.Debugf("Resolved primary STUN server %s with priority %d", address, priority) + addresses = append(addresses, address) + } + + fallbackAddresses := slices.Clone(DefaultFallbackStunServers) + rand.Shuffle(fallbackAddresses) + addresses = append(addresses, fallbackAddresses...) default: addresses = append(addresses, addr) } From d23cd197e1e06c43106101188e36146f691f4ed5 Mon Sep 17 00:00:00 2001 From: Tommy van der Vorst Date: Tue, 8 Apr 2025 14:39:39 +0200 Subject: [PATCH 4/7] chore(fs): changes to allow Filesystem to be implemented externally (#10040) ### Purpose The `fs.Filesystem` interface contains two parts that cannot be implemented externally because they are private: * `filesystemWrapperType`: this PR changes `unwrapFilesystem` to downcast to a specific concrete type * `underlying`: this PR simply moves it to an unexported interface ### Testing Regular tests pass. --- lib/fs/basicfs.go | 4 ---- lib/fs/casefs.go | 4 ---- lib/fs/casefs_test.go | 22 +++++++++++++--------- lib/fs/errorfs.go | 4 ---- lib/fs/fakefs.go | 4 ---- lib/fs/filesystem.go | 36 ++++++++++++++++-------------------- lib/fs/logfs.go | 4 ---- lib/fs/metrics.go | 4 ---- lib/fs/mtimefs.go | 10 +--------- lib/fs/mtimefs_test.go | 6 +++--- lib/fs/walkfs.go | 4 ---- 11 files changed, 33 insertions(+), 69 deletions(-) diff --git a/lib/fs/basicfs.go b/lib/fs/basicfs.go index 225eb8132..098769870 100644 --- a/lib/fs/basicfs.go +++ b/lib/fs/basicfs.go @@ -336,10 +336,6 @@ func (*BasicFilesystem) underlying() (Filesystem, bool) { return nil, false } -func (*BasicFilesystem) wrapperType() filesystemWrapperType { - return filesystemWrapperTypeNone -} - // basicFile implements the fs.File interface on top of an os.File type basicFile struct { *os.File diff --git a/lib/fs/casefs.go b/lib/fs/casefs.go index c8288f8b2..d88ccc0a4 100644 --- a/lib/fs/casefs.go +++ b/lib/fs/casefs.go @@ -357,10 +357,6 @@ func (f *caseFilesystem) underlying() (Filesystem, bool) { return f.Filesystem, true } -func (*caseFilesystem) wrapperType() filesystemWrapperType { - return filesystemWrapperTypeCase -} - func (f *caseFilesystem) checkCase(name string) error { var err error if name, err = Canonicalize(name); err != nil { diff --git a/lib/fs/casefs_test.go b/lib/fs/casefs_test.go index 851d79508..8bd78cb57 100644 --- a/lib/fs/casefs_test.go +++ b/lib/fs/casefs_test.go @@ -161,10 +161,11 @@ func BenchmarkWalkCaseFakeFS100k(b *testing.B) { b.Fatal(err) } b.Run("rawfs", func(b *testing.B) { - var fakefs *fakeFS - if ffs, ok := unwrapFilesystem(fsys, filesystemWrapperTypeNone); ok { - fakefs = ffs.(*fakeFS) + fakefs, ok := unwrapFilesystem[*fakeFS](fsys) + if !ok { + panic("expected unwrap to fakefs") } + fakefs.resetCounters() benchmarkWalkFakeFS(b, fsys, paths, 0, "") fakefs.reportMetricsPerOp(b) @@ -180,9 +181,10 @@ func BenchmarkWalkCaseFakeFS100k(b *testing.B) { cache: newCaseCache(), }, } - var fakefs *fakeFS - if ffs, ok := unwrapFilesystem(fsys, filesystemWrapperTypeNone); ok { - fakefs = ffs.(*fakeFS) + + fakefs, ok := unwrapFilesystem[*fakeFS](fsys) + if !ok { + panic("expected unwrap to fakefs") } fakefs.resetCounters() benchmarkWalkFakeFS(b, casefs, paths, 0, "") @@ -209,10 +211,12 @@ func BenchmarkWalkCaseFakeFS100k(b *testing.B) { cache: newCaseCache(), }, } - var fakefs *fakeFS - if ffs, ok := unwrapFilesystem(fsys, filesystemWrapperTypeNone); ok { - fakefs = ffs.(*fakeFS) + + fakefs, ok := unwrapFilesystem[*fakeFS](fsys) + if !ok { + panic("expected unwrap to fakefs") } + fakefs.resetCounters() benchmarkWalkFakeFS(b, casefs, paths, otherOpEvery, otherOpPath) fakefs.reportMetricsPerOp(b) diff --git a/lib/fs/errorfs.go b/lib/fs/errorfs.go index 8ed3d8040..439efdffd 100644 --- a/lib/fs/errorfs.go +++ b/lib/fs/errorfs.go @@ -69,7 +69,3 @@ func (fs *errorFilesystem) PlatformData(_ string, _, _ bool, _ XattrFilter) (pro func (*errorFilesystem) underlying() (Filesystem, bool) { return nil, false } - -func (*errorFilesystem) wrapperType() filesystemWrapperType { - return filesystemWrapperTypeError -} diff --git a/lib/fs/fakefs.go b/lib/fs/fakefs.go index 9429350eb..af508f18c 100644 --- a/lib/fs/fakefs.go +++ b/lib/fs/fakefs.go @@ -724,10 +724,6 @@ func (*fakeFS) underlying() (Filesystem, bool) { return nil, false } -func (*fakeFS) wrapperType() filesystemWrapperType { - return filesystemWrapperTypeNone -} - func (fs *fakeFS) resetCounters() { fs.mut.Lock() fs.counters = fakeFSCounters{} diff --git a/lib/fs/filesystem.go b/lib/fs/filesystem.go index 2d7ffbadd..fa34fe9fd 100644 --- a/lib/fs/filesystem.go +++ b/lib/fs/filesystem.go @@ -21,18 +21,6 @@ import ( "github.com/syncthing/syncthing/lib/protocol" ) -type filesystemWrapperType int32 - -const ( - filesystemWrapperTypeNone filesystemWrapperType = iota - filesystemWrapperTypeMtime - filesystemWrapperTypeCase - filesystemWrapperTypeError - filesystemWrapperTypeWalk - filesystemWrapperTypeLog - filesystemWrapperTypeMetrics -) - type XattrFilter interface { Permit(string) bool GetMaxSingleEntrySize() int @@ -75,10 +63,11 @@ type Filesystem interface { PlatformData(name string, withOwnership, withXattrs bool, xattrFilter XattrFilter) (protocol.PlatformData, error) GetXattr(name string, xattrFilter XattrFilter) ([]protocol.Xattr, error) SetXattr(path string, xattrs []protocol.Xattr, xattrFilter XattrFilter) error +} +type wrappingFilesystem interface { // Used for unwrapping things underlying() (Filesystem, bool) - wrapperType() filesystemWrapperType } // The File interface abstracts access to a regular file, being a somewhat @@ -353,16 +342,23 @@ func Canonicalize(file string) (string, error) { return file, nil } -// unwrapFilesystem removes "wrapping" filesystems to expose the filesystem of the requested wrapperType, if it exists. -func unwrapFilesystem(fs Filesystem, wrapperType filesystemWrapperType) (Filesystem, bool) { - var ok bool +// unwrapFilesystem removes "wrapping" filesystems to expose the filesystem of the requested wrapper type T, if it exists. +func unwrapFilesystem[T Filesystem](fs Filesystem) (T, bool) { for { - if fs.wrapperType() == wrapperType { - return fs, true + if unwrapped, ok := fs.(T); ok { + return unwrapped, true } - fs, ok = fs.underlying() + + wrappingFs, ok := fs.(wrappingFilesystem) if !ok { - return nil, false + var x T + return x, false + } + + fs, ok = wrappingFs.underlying() + if !ok { + var x T + return x, false } } } diff --git a/lib/fs/logfs.go b/lib/fs/logfs.go index bb90d797f..073a98888 100644 --- a/lib/fs/logfs.go +++ b/lib/fs/logfs.go @@ -177,7 +177,3 @@ func (fs *logFilesystem) Usage(name string) (Usage, error) { func (fs *logFilesystem) underlying() (Filesystem, bool) { return fs.Filesystem, true } - -func (*logFilesystem) wrapperType() filesystemWrapperType { - return filesystemWrapperTypeLog -} diff --git a/lib/fs/metrics.go b/lib/fs/metrics.go index a97660ce0..5e25d6819 100644 --- a/lib/fs/metrics.go +++ b/lib/fs/metrics.go @@ -273,10 +273,6 @@ func (m *metricsFS) underlying() (Filesystem, bool) { return m.next, true } -func (m *metricsFS) wrapperType() filesystemWrapperType { - return filesystemWrapperTypeMetrics -} - type metricsFile struct { fs *metricsFS next File diff --git a/lib/fs/mtimefs.go b/lib/fs/mtimefs.go index ba1d1ecc5..5af16cb2a 100644 --- a/lib/fs/mtimefs.go +++ b/lib/fs/mtimefs.go @@ -146,10 +146,6 @@ func (f *mtimeFS) underlying() (Filesystem, bool) { return f.Filesystem, true } -func (*mtimeFS) wrapperType() filesystemWrapperType { - return filesystemWrapperTypeMtime -} - func (f *mtimeFS) save(name string, real, virtual time.Time) { if f.caseInsensitive { name = UnicodeLowercaseNormalized(name) @@ -255,13 +251,9 @@ func (t *MtimeMapping) Unmarshal(bs []byte) error { } func GetMtimeMapping(fs Filesystem, file string) (MtimeMapping, error) { - fs, ok := unwrapFilesystem(fs, filesystemWrapperTypeMtime) + mtimeFs, ok := unwrapFilesystem[*mtimeFS](fs) if !ok { return MtimeMapping{}, errors.New("failed to unwrap") } - mtimeFs, ok := fs.(*mtimeFS) - if !ok { - return MtimeMapping{}, errors.New("unwrapping failed") - } return mtimeFs.load(file) } diff --git a/lib/fs/mtimefs_test.go b/lib/fs/mtimefs_test.go index 22f02b383..4e0687666 100644 --- a/lib/fs/mtimefs_test.go +++ b/lib/fs/mtimefs_test.go @@ -261,7 +261,7 @@ func newMtimeFS(path string, db database, options ...MtimeFSOption) *mtimeFS { func newMtimeFSWithWalk(path string, db database, options ...MtimeFSOption) (*mtimeFS, *walkFilesystem) { fs := NewFilesystem(FilesystemTypeBasic, path, NewMtimeOption(db, options...)) - wfs, _ := unwrapFilesystem(fs, filesystemWrapperTypeWalk) - mfs, _ := unwrapFilesystem(fs, filesystemWrapperTypeMtime) - return mfs.(*mtimeFS), wfs.(*walkFilesystem) + wfs, _ := unwrapFilesystem[*walkFilesystem](fs) + mfs, _ := unwrapFilesystem[*mtimeFS](fs) + return mfs, wfs } diff --git a/lib/fs/walkfs.go b/lib/fs/walkfs.go index 11d0203d6..36bce97a7 100644 --- a/lib/fs/walkfs.go +++ b/lib/fs/walkfs.go @@ -153,7 +153,3 @@ func (f *walkFilesystem) Walk(root string, walkFn WalkFunc) error { func (f *walkFilesystem) underlying() (Filesystem, bool) { return f.Filesystem, true } - -func (*walkFilesystem) wrapperType() filesystemWrapperType { - return filesystemWrapperTypeWalk -} From 5f5d672a7d16c4e38a84e8af2feb7c04e1287212 Mon Sep 17 00:00:00 2001 From: Paul Donald Date: Tue, 8 Apr 2025 14:45:05 +0200 Subject: [PATCH 5/7] fix(strings): differentiate setup(n) and set(v) up (#10024) Correct GUI strings, translations and comments to use proper grammar. --- cmd/infra/strelaypoolsrv/README.md | 2 +- cmd/syncthing/monitor.go | 2 +- gui/default/assets/lang/lang-ar.json | 2 +- gui/default/assets/lang/lang-bg.json | 2 +- gui/default/assets/lang/lang-ca.json | 2 +- 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-en.json | 2 +- gui/default/assets/lang/lang-eo.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-fil.json | 2 +- gui/default/assets/lang/lang-fr.json | 2 +- gui/default/assets/lang/lang-fy.json | 2 +- gui/default/assets/lang/lang-ga.json | 2 +- gui/default/assets/lang/lang-gl.json | 2 +- gui/default/assets/lang/lang-he-IL.json | 2 +- gui/default/assets/lang/lang-hi.json | 2 +- gui/default/assets/lang/lang-hu.json | 2 +- gui/default/assets/lang/lang-id.json | 2 +- gui/default/assets/lang/lang-it.json | 2 +- gui/default/assets/lang/lang-ko-KR.json | 2 +- 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 | 1 - gui/default/assets/lang/lang-ru.json | 2 +- gui/default/assets/lang/lang-si.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 +- gui/default/index.html | 4 ++-- lib/dialer/internal.go | 2 +- lib/fs/basicfs_watch.go | 2 +- lib/protocol/protocol_test.go | 2 +- lib/syncthing/syncthing.go | 2 +- 50 files changed, 50 insertions(+), 51 deletions(-) diff --git a/cmd/infra/strelaypoolsrv/README.md b/cmd/infra/strelaypoolsrv/README.md index a3cb3ce46..d40acae24 100644 --- a/cmd/infra/strelaypoolsrv/README.md +++ b/cmd/infra/strelaypoolsrv/README.md @@ -10,7 +10,7 @@ to NAT or firewall issues. There is very little reason why you'd want to run this yourself, as `relaypoolsrv` is just used for announcement and lookup of public relay -servers. If you are looking to setup a private or a public relay, please +servers. If you are looking to set up a private or a public relay, please check the documentation for [relaysrv](https://github.com/syncthing/relaysrv), which also explains how to join the default public pool. diff --git a/cmd/syncthing/monitor.go b/cmd/syncthing/monitor.go index a25f390fb..f91ee8323 100644 --- a/cmd/syncthing/monitor.go +++ b/cmd/syncthing/monitor.go @@ -64,7 +64,7 @@ func monitorMain(options serveOptions) { fileDst, err = open(logFile) } if err != nil { - l.Warnln("Failed to setup logging to file, proceeding with logging to stdout only:", err) + l.Warnln("Failed to set up logging to file, proceeding with logging to stdout only:", err) } else { if build.IsWindows { // Translate line breaks to Windows standard diff --git a/gui/default/assets/lang/lang-ar.json b/gui/default/assets/lang/lang-ar.json index 23f6063d4..5d7dbd1db 100644 --- a/gui/default/assets/lang/lang-ar.json +++ b/gui/default/assets/lang/lang-ar.json @@ -154,7 +154,7 @@ "Failed Items": "العناصر الفاشلة", "Failed to load file versions.": "لم يُتَوَصَّل لنسخة الملف.", "Failed to load ignore patterns.": "فشل التَّوَصُّل إلى مُرَشِّحات التجاهل.", - "Failed to setup, retrying": "فشل الإعداد، تجري المحاولة مرة أخرى", + "Failed to set up, retrying": "فشل الإعداد، تجري المحاولة مرة أخرى", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "يُتوقع فشل الاتصال بخوادم IPv6، إذا لم يكن IPv6 متاحا.", "File Pull Order": "ترتيب استيراد الملفات", "File Versioning": "إصدارات الملف", diff --git a/gui/default/assets/lang/lang-bg.json b/gui/default/assets/lang/lang-bg.json index 7f82c8f82..a7608ea68 100644 --- a/gui/default/assets/lang/lang-bg.json +++ b/gui/default/assets/lang/lang-bg.json @@ -156,7 +156,7 @@ "Failed Items": "Елементи с грешка", "Failed to load file versions.": "Грешка при зареждане на версии.", "Failed to load ignore patterns.": "Грешка при зареждане на шаблони за пренебрегване.", - "Failed to setup, retrying": "Грешка при настройване, извършва се повторен опит", + "Failed to set up, retrying": "Грешка при настройване, извършва се повторен опит", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Неуспешна връзка към сървъри по IPv6 може да се очаква ако няма свързаност по IPv6.", "File Pull Order": "Ред на изтегляне", "File Versioning": "Версии на файловете", diff --git a/gui/default/assets/lang/lang-ca.json b/gui/default/assets/lang/lang-ca.json index ad83adba1..e063dc039 100644 --- a/gui/default/assets/lang/lang-ca.json +++ b/gui/default/assets/lang/lang-ca.json @@ -154,7 +154,7 @@ "Failed Items": "Elements fallats", "Failed to load file versions.": "No s'han pogut carregar les versions dels fitxers.", "Failed to load ignore patterns.": "No s'han pogut carregar els patrons ignorats.", - "Failed to setup, retrying": "No s'ha pogut configurar, s'està tornant a provar", + "Failed to set up, retrying": "No s'ha pogut configurar, s'està tornant a provar", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "S'espera que no es pugui connectar als servidors IPv6 si no hi ha connectivitat IPv6.", "File Pull Order": "Ordre d'agafar fitxers", "File Versioning": "Versionat de Fitxers", diff --git a/gui/default/assets/lang/lang-ca@valencia.json b/gui/default/assets/lang/lang-ca@valencia.json index 41a46113b..883291b8c 100644 --- a/gui/default/assets/lang/lang-ca@valencia.json +++ b/gui/default/assets/lang/lang-ca@valencia.json @@ -150,7 +150,7 @@ "Failed Items": "Objectes fallits", "Failed to load file versions.": "No s'han pogut carregar les versions dels fitxers.", "Failed to load ignore patterns.": "No s'han pogut carregar els patrons ignorats.", - "Failed to setup, retrying": "Errada en la configuració, reintentant", + "Failed to set up, retrying": "Errada en la configuració, reintentant", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "És possible que es produïsca una fallada al connectar als servidors IPv6 si no hi ha connectivitat IPv6.", "File Pull Order": "Ordre de fitxers del pull", "File Versioning": "Versionat de fitxer", diff --git a/gui/default/assets/lang/lang-cs.json b/gui/default/assets/lang/lang-cs.json index 90d51326c..26f54c026 100644 --- a/gui/default/assets/lang/lang-cs.json +++ b/gui/default/assets/lang/lang-cs.json @@ -154,7 +154,7 @@ "Failed Items": "Nezdařené položky", "Failed to load file versions.": "Nepodařilo se nahrát verze souboru.", "Failed to load ignore patterns.": "Načtení vzorů ignorovaného se nezdařilo.", - "Failed to setup, retrying": "Nastavování se nezdařilo, zkouší se znovu", + "Failed to set up, retrying": "Nastavování se nezdařilo, zkouší se znovu", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Je v pořádku, když se připojení k IPv6 serverům nezdaří, pokud není k dispozici IPv6 konektivita.", "File Pull Order": "Pořadí stahování souborů", "File Versioning": "Správa verzí souborů", diff --git a/gui/default/assets/lang/lang-da.json b/gui/default/assets/lang/lang-da.json index d8f7433a9..30294efc8 100644 --- a/gui/default/assets/lang/lang-da.json +++ b/gui/default/assets/lang/lang-da.json @@ -154,7 +154,7 @@ "Failed Items": "Mislykkede filer", "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", + "Failed to set up, 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.", "File Pull Order": "Hentningsrækkefølge for filer", "File Versioning": "Filversionering", diff --git a/gui/default/assets/lang/lang-de.json b/gui/default/assets/lang/lang-de.json index 46489c8f8..2a62d8e1c 100644 --- a/gui/default/assets/lang/lang-de.json +++ b/gui/default/assets/lang/lang-de.json @@ -156,7 +156,7 @@ "Failed Items": "Fehlgeschlagene Elemente", "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 Einrichten, erneuter Versuch", + "Failed to set up, retrying": "Fehler beim Einrichten, erneuter Versuch", "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.", "File Pull Order": "Dateiübertragungsreihenfolge", "File Versioning": "Dateiversionierung", diff --git a/gui/default/assets/lang/lang-el.json b/gui/default/assets/lang/lang-el.json index cc01555d5..6605ca991 100644 --- a/gui/default/assets/lang/lang-el.json +++ b/gui/default/assets/lang/lang-el.json @@ -154,7 +154,7 @@ "Failed Items": "Αρχεία που απέτυχαν", "Failed to load file versions.": "Η φόρτωση των εκδόσεων αρχείων απέτυχε.", "Failed to load ignore patterns.": "Αποτυχία φόρτωσης μοτίβων παράβλεψης.", - "Failed to setup, retrying": "Αποτυχία ενεργοποίησης, γίνεται νέα προσπάθεια", + "Failed to set up, retrying": "Αποτυχία ενεργοποίησης, γίνεται νέα προσπάθεια", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Είναι φυσιολογική η αποτυχία σύνδεσης σε εξυπηρετητές IPv6 όταν δεν υπάρχει συνδεσιμότητα IPv6.", "File Pull Order": "Σειρά με την οποία θα κατεβαίνουν τα αρχεία", "File Versioning": "Τήρηση εκδόσεων αρχείων", diff --git a/gui/default/assets/lang/lang-en-AU.json b/gui/default/assets/lang/lang-en-AU.json index a970d9841..a68e9d2f1 100644 --- a/gui/default/assets/lang/lang-en-AU.json +++ b/gui/default/assets/lang/lang-en-AU.json @@ -150,7 +150,7 @@ "Failed Items": "Failed Items", "Failed to load file versions.": "Failed to load file versions.", "Failed to load ignore patterns.": "Failed to load ignore patterns.", - "Failed to setup, retrying": "Failed to setup, retrying", + "Failed to set up, retrying": "Failed to set up, retrying", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.", "File Pull Order": "File Pull Order", "File Versioning": "File Versioning", diff --git a/gui/default/assets/lang/lang-en-GB.json b/gui/default/assets/lang/lang-en-GB.json index 1b6762c09..1602bc92a 100644 --- a/gui/default/assets/lang/lang-en-GB.json +++ b/gui/default/assets/lang/lang-en-GB.json @@ -154,7 +154,7 @@ "Failed Items": "Failed Items", "Failed to load file versions.": "Failed to load file versions.", "Failed to load ignore patterns.": "Failed to load ignore patterns.", - "Failed to setup, retrying": "Failed to setup, retrying", + "Failed to set up, retrying": "Failed to set up, retrying", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.", "File Pull Order": "File Pull Order", "File Versioning": "File Versioning", diff --git a/gui/default/assets/lang/lang-en.json b/gui/default/assets/lang/lang-en.json index e58b799e6..916eea972 100644 --- a/gui/default/assets/lang/lang-en.json +++ b/gui/default/assets/lang/lang-en.json @@ -156,7 +156,7 @@ "Failed Items": "Failed Items", "Failed to load file versions.": "Failed to load file versions.", "Failed to load ignore patterns.": "Failed to load ignore patterns.", - "Failed to setup, retrying": "Failed to setup, retrying", + "Failed to set up, retrying": "Failed to set up, retrying", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.", "File Pull Order": "File Pull Order", "File Versioning": "File Versioning", diff --git a/gui/default/assets/lang/lang-eo.json b/gui/default/assets/lang/lang-eo.json index 26984bef0..d306f946d 100644 --- a/gui/default/assets/lang/lang-eo.json +++ b/gui/default/assets/lang/lang-eo.json @@ -106,7 +106,7 @@ "Error": "Eraro", "External File Versioning": "Ekstera Versionado de Dosiero", "Failed Items": "Malsukcesaj Eroj", - "Failed to setup, retrying": "Malsukcesis agordi, provante denove", + "Failed to set up, retrying": "Malsukcesis agordi, provante denove", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Malsukceso por konekti al IPv6 serviloj atendante se ekzistas neniu IPv6 konektebleco.", "File Pull Order": "Ordo por Tiri Dosieron", "File Versioning": "Versionado de Dosieroj", diff --git a/gui/default/assets/lang/lang-es.json b/gui/default/assets/lang/lang-es.json index fea96535a..67d42927e 100644 --- a/gui/default/assets/lang/lang-es.json +++ b/gui/default/assets/lang/lang-es.json @@ -154,7 +154,7 @@ "Failed Items": "Elementos fallidos", "Failed to load file versions.": "Error al cargar las versiones de los archivos.", "Failed to load ignore patterns.": "No se pudieron cargar los patrones de ignorar.", - "Failed to setup, retrying": "Fallo en la configuración, reintentando", + "Failed to set up, retrying": "Fallo en la configuración, 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.", "File Pull Order": "Orden de Obtención de los Archivos", "File Versioning": "Versionado de ficheros", diff --git a/gui/default/assets/lang/lang-eu.json b/gui/default/assets/lang/lang-eu.json index 7ea952864..1c9799eb9 100644 --- a/gui/default/assets/lang/lang-eu.json +++ b/gui/default/assets/lang/lang-eu.json @@ -130,7 +130,7 @@ "External File Versioning": "Fitxategi bertsioen kanpoko kudeaketa", "Failed Items": "Huts egin duten fitxategiak", "Failed to load ignore patterns.": "Huts egin du baztertze ereduak kargatzean.", - "Failed to setup, retrying": "Konfigurazioan huts egitea, berriro saiatuz", + "Failed to set up, retrying": "Konfigurazioan huts egitea, berriro saiatuz", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "IPv6 zerbitzariei buruzko konexioak huts eginen du, IPv6 konektibitaterik ez bada", "File Pull Order": "Fitxategiak berreskuratzeko ordena", "File Versioning": "Fitxategiak zaintzeko metodoa", diff --git a/gui/default/assets/lang/lang-fi.json b/gui/default/assets/lang/lang-fi.json index b6ee38807..09dbbcad2 100644 --- a/gui/default/assets/lang/lang-fi.json +++ b/gui/default/assets/lang/lang-fi.json @@ -122,7 +122,7 @@ "External": "Ulkoinen", "External File Versioning": "Ulkoinen tiedostoversionti", "Failed Items": "Epäonnistuneet kohteet", - "Failed to setup, retrying": "Käyttöönotto epäonnistui, Yritetään uudelleen", + "Failed to set up, retrying": "Käyttöönotto epäonnistui, Yritetään uudelleen", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Yhteys IPv6-palvelimiin todennäköisesti epäonnistuu, koska IPv6-yhteyksiä ei ole.", "File Pull Order": "Tiedostojen noutojärjestys", "File Versioning": "Tiedostoversiointi", diff --git a/gui/default/assets/lang/lang-fil.json b/gui/default/assets/lang/lang-fil.json index 8d4b94bea..8a2cdc19f 100644 --- a/gui/default/assets/lang/lang-fil.json +++ b/gui/default/assets/lang/lang-fil.json @@ -154,7 +154,7 @@ "Failed Items": "Mga Nabigong Item", "Failed to load file versions.": "Nabigong i-load ang mga bersyon ng file.", "Failed to load ignore patterns.": "Nabigong i-load ang mga ignore pattern.", - "Failed to setup, retrying": "Nabigong i-set up, sinusubukan muli", + "Failed to set up, retrying": "Nabigong i-set up, sinusubukan muli", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Inaasahan ang pagbigo sa pagkonekta sa mga IPv6 na server kapag walang konektibidad sa IPv6.", "File Pull Order": "Order ng Pagkuha ng File", "File Versioning": "File Versioning", diff --git a/gui/default/assets/lang/lang-fr.json b/gui/default/assets/lang/lang-fr.json index cb701ee33..90a2ddf0f 100644 --- a/gui/default/assets/lang/lang-fr.json +++ b/gui/default/assets/lang/lang-fr.json @@ -156,7 +156,7 @@ "Failed Items": "Éléments en échec", "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", + "Failed to set up, 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.", "File Pull Order": "Ordre de récupération des fichiers", "File Versioning": "Préservation des fichiers", diff --git a/gui/default/assets/lang/lang-fy.json b/gui/default/assets/lang/lang-fy.json index 8bf70b38e..592989d1f 100644 --- a/gui/default/assets/lang/lang-fy.json +++ b/gui/default/assets/lang/lang-fy.json @@ -146,7 +146,7 @@ "Error": "Flater", "External File Versioning": "Ekstern ferzjebehear foar triemen", "Failed Items": "Mislearre items", - "Failed to setup, retrying": "Ynskeakeljen mislearre, wurd no opnij besocht", + "Failed to set up, retrying": "Ynskeakeljen mislearre, wurd no opnij besocht", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Mislearjen fan it ferbinen mei IPv6-tsjinners wurd ferwachte as der gjin stipe foar IPv6-ferbinings is.", "File Pull Order": "Triemlûkfolchoarder", "File Versioning": "Triemferzjebehear", diff --git a/gui/default/assets/lang/lang-ga.json b/gui/default/assets/lang/lang-ga.json index b74ec41bb..5a9b6d84c 100644 --- a/gui/default/assets/lang/lang-ga.json +++ b/gui/default/assets/lang/lang-ga.json @@ -156,7 +156,7 @@ "Failed Items": "Míreanna Teipthe", "Failed to load file versions.": "Theip ar luchtú leaganacha comhaid.", "Failed to load ignore patterns.": "Theip ar phatrúin neamhairde a luchtú.", - "Failed to setup, retrying": "Theip ar thus, ag triail arís", + "Failed to set up, retrying": "Theip ar thus, ag triail arís", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Táthar ag súil le mainneachtain ceangal le freastalaithe IPv6 mura bhfuil nascacht IPv6 ann.", "File Pull Order": "Ordú Tarraingthe Comhad", "File Versioning": "Leagan Comhaid", diff --git a/gui/default/assets/lang/lang-gl.json b/gui/default/assets/lang/lang-gl.json index ffd742ac1..3fd9b1a6b 100644 --- a/gui/default/assets/lang/lang-gl.json +++ b/gui/default/assets/lang/lang-gl.json @@ -153,7 +153,7 @@ "Failed Items": "Elmentos fallados", "Failed to load file versions.": "Fallou a carga das versións dos ficheiros.", "Failed to load ignore patterns.": "Fallou a carga de patróns ignorados.", - "Failed to setup, retrying": "Fallou a configuración, reintentando", + "Failed to set up, retrying": "Fallou a configuración, reintentando", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "É de agardar o fallo ao conectar con servidores IPv6 se non hai conexión por IPv6.", "File Pull Order": "Orde de Obtención de Arquivos", "File Versioning": "Versionado de Ficheiros", diff --git a/gui/default/assets/lang/lang-he-IL.json b/gui/default/assets/lang/lang-he-IL.json index 260a1a9c8..15cad7a67 100644 --- a/gui/default/assets/lang/lang-he-IL.json +++ b/gui/default/assets/lang/lang-he-IL.json @@ -154,7 +154,7 @@ "Failed Items": "פריטים שנכשלו", "Failed to load file versions.": "טעינת גרסאות קבצים נכשלה.", "Failed to load ignore patterns.": "טעינת דפוסי התעלמות נכשלה.", - "Failed to setup, retrying": "ההגדרה נכשלה, מנסה שוב", + "Failed to set up, retrying": "ההגדרה נכשלה, מנסה שוב", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "צפוי כשל בהתחברות לשרתי IPv6 אם אין קישוריות IPv6.", "File Pull Order": "סדר משיכת קבצים", "File Versioning": "ניהול גרסאות קבצים", diff --git a/gui/default/assets/lang/lang-hi.json b/gui/default/assets/lang/lang-hi.json index cd0e527a4..5aa71dfd3 100644 --- a/gui/default/assets/lang/lang-hi.json +++ b/gui/default/assets/lang/lang-hi.json @@ -154,7 +154,7 @@ "Failed Items": "विफल वस्तुएं", "Failed to load file versions.": "फाइल संस्करण लोड करने में विफल।", "Failed to load ignore patterns.": "नजरअंदाज प्रतिमान लोड करने में विफल।", - "Failed to setup, retrying": "स्थापना करने में विफल, पुनः प्रयास किया जा रहा है", + "Failed to set up, retrying": "स्थापना करने में विफल, पुनः प्रयास किया जा रहा है", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "यदि IPv6 संयोजकता नहीं है तो IPv6 सर्वर से जुड़ने में विफलता अपेक्षित है।", "File Pull Order": "फाइल खींचने का क्रम", "File Versioning": "फाइल संस्करणीकरण", diff --git a/gui/default/assets/lang/lang-hu.json b/gui/default/assets/lang/lang-hu.json index 7d84f226f..190c67c92 100644 --- a/gui/default/assets/lang/lang-hu.json +++ b/gui/default/assets/lang/lang-hu.json @@ -146,7 +146,7 @@ "Failed Items": "Hibás elemek", "Failed to load file versions.": "Nem sikerült betölteni a fájlverziókat.", "Failed to load ignore patterns.": "Nem sikerült betölteni a mellőzési mintákat.", - "Failed to setup, retrying": "Telepítés nem sikerült, újrapróbálkozás", + "Failed to set up, retrying": "Telepítés nem sikerült, újrapróbálkozás", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Mivel nincs IPv6 kapcsolat, ezért várhatóan nem fog sikerülni IPv6-os szerverekhez csatlakozni.", "File Pull Order": "Fájlküldési sorrend", "File Versioning": "Fájlverzió-követés", diff --git a/gui/default/assets/lang/lang-id.json b/gui/default/assets/lang/lang-id.json index 3d50a8617..af79c4adb 100644 --- a/gui/default/assets/lang/lang-id.json +++ b/gui/default/assets/lang/lang-id.json @@ -146,7 +146,7 @@ "Failed Items": "Berkas yang gagal", "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", + "Failed to set up, 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.", "File Pull Order": "Urutan Penarikan Berkas", "File Versioning": "Pemversian Berkas", diff --git a/gui/default/assets/lang/lang-it.json b/gui/default/assets/lang/lang-it.json index f5d1593b2..513eb45cc 100644 --- a/gui/default/assets/lang/lang-it.json +++ b/gui/default/assets/lang/lang-it.json @@ -156,7 +156,7 @@ "Failed Items": "Elementi Errati", "Failed to load file versions.": "Impossibile caricare le versioni dei file.", "Failed to load ignore patterns.": "Impossibile caricare gli schemi di esclusione.", - "Failed to setup, retrying": "Configurazione fallita, riprovo", + "Failed to set up, retrying": "Configurazione fallita, riprovo", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "La connessione a server IPv6 fallisce se non c'è connettività IPv6.", "File Pull Order": "Ordine Prelievo File", "File Versioning": "Controllo Versione File", diff --git a/gui/default/assets/lang/lang-ko-KR.json b/gui/default/assets/lang/lang-ko-KR.json index f583ed148..28d1890ab 100644 --- a/gui/default/assets/lang/lang-ko-KR.json +++ b/gui/default/assets/lang/lang-ko-KR.json @@ -156,7 +156,7 @@ "Failed Items": "실패 항목", "Failed to load file versions.": "파일 버전을 불러오기에 실패했습니다.", "Failed to load ignore patterns.": "무시 양식을 불러오기에 실패했습니다.", - "Failed to setup, retrying": "설정 적용 실패; 재시도 중", + "Failed to set up, retrying": "설정 적용 실패; 재시도 중", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "IPv6에 연결되어 있지 않을 때는 IPv6 서버에 접속하지 못하는 것이 정상입니다.", "File Pull Order": "파일 수신 순서", "File Versioning": "파일 버전 관리", diff --git a/gui/default/assets/lang/lang-lt.json b/gui/default/assets/lang/lang-lt.json index a2e3c0201..8e9b32ecc 100644 --- a/gui/default/assets/lang/lang-lt.json +++ b/gui/default/assets/lang/lang-lt.json @@ -144,7 +144,7 @@ "Failed Items": "Nepavykę siuntimai", "Failed to load file versions.": "Nepavyko įkelti failo versijų.", "Failed to load ignore patterns.": "Nepavyko įkelti nepaisymo šablonų.", - "Failed to setup, retrying": "Nepavyko nustatyti, bandoma iš naujo", + "Failed to set up, retrying": "Nepavyko nustatyti, bandoma iš naujo", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Nesėkmė prisijungti prie IPv6 serverių yra tikėtina, jei nėra IPv6 ryšio.", "File Pull Order": "Failų siuntimo tvarka", "File Versioning": "Versijų valdymas", diff --git a/gui/default/assets/lang/lang-nb.json b/gui/default/assets/lang/lang-nb.json index b76287a78..63aed272c 100644 --- a/gui/default/assets/lang/lang-nb.json +++ b/gui/default/assets/lang/lang-nb.json @@ -154,7 +154,7 @@ "Failed Items": "Elementsynkronisering som har mislyktes", "Failed to load file versions.": "Lasting av fil-versjoner feilet.", "Failed to load ignore patterns.": "Lasting av ignorer mønstre feilet.", - "Failed to setup, retrying": "Klarte ikke å utføre oppsett, prøver igjen", + "Failed to set up, retrying": "Klarte ikke å utføre oppsett, prøver igjen", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Å ikke klare å koble til IPv6-tjenere er forventet hvis det ikke er noen IPv6-tilknytning.", "File Pull Order": "Filenes henterekkefølge", "File Versioning": "Versjonskontroll", diff --git a/gui/default/assets/lang/lang-nl.json b/gui/default/assets/lang/lang-nl.json index ab50da08a..df5710368 100644 --- a/gui/default/assets/lang/lang-nl.json +++ b/gui/default/assets/lang/lang-nl.json @@ -154,7 +154,7 @@ "Failed Items": "Mislukte items", "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", + "Failed to set up, 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.", "File Pull Order": "Volgorde voor binnenhalen van bestanden", "File Versioning": "Versiebeheer", diff --git a/gui/default/assets/lang/lang-pl.json b/gui/default/assets/lang/lang-pl.json index cf687ac0d..8871404ae 100644 --- a/gui/default/assets/lang/lang-pl.json +++ b/gui/default/assets/lang/lang-pl.json @@ -156,7 +156,7 @@ "Failed Items": "Elementy zakończone niepowodzeniem", "Failed to load file versions.": "Nie udało się załadować wersji plików.", "Failed to load ignore patterns.": "Nie udało się załadować wzorców ignorowania.", - "Failed to setup, retrying": "Nie udało się ustawić; ponawiam próbę", + "Failed to set up, retrying": "Nie udało się ustawić; ponawiam próbę", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Błąd połączenia do serwerów IPv6 może wystąpić, gdy w ogóle nie ma połączenia po IPv6.", "File Pull Order": "Kolejność pobierania plików", "File Versioning": "Wersjonowanie plików", diff --git a/gui/default/assets/lang/lang-pt-BR.json b/gui/default/assets/lang/lang-pt-BR.json index 2e3569114..20f3d0ec1 100644 --- a/gui/default/assets/lang/lang-pt-BR.json +++ b/gui/default/assets/lang/lang-pt-BR.json @@ -156,7 +156,7 @@ "Failed Items": "Itens com falha", "Failed to load file versions.": "Falha ao carregar versões do arquivo.", "Failed to load ignore patterns.": "Falha ao carregar os padrões para ignorar.", - "Failed to setup, retrying": "Não foi possível configurar, tentando novamente", + "Failed to set up, retrying": "Não foi possível configurar, tentando novamente", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Falhas na conexão a servidores IPv6 são esperadas caso não haja conectividade IPv6.", "File Pull Order": "Ordem de retirada do arquivo", "File Versioning": "Versionamento de arquivos", diff --git a/gui/default/assets/lang/lang-pt-PT.json b/gui/default/assets/lang/lang-pt-PT.json index 9a2d61900..d07fbb2ad 100644 --- a/gui/default/assets/lang/lang-pt-PT.json +++ b/gui/default/assets/lang/lang-pt-PT.json @@ -156,7 +156,7 @@ "Failed Items": "Itens que falharam", "Failed to load file versions.": "Falha ao carregar as versões do ficheiro.", "Failed to load ignore patterns.": "Falha ao carregar os padrões de exclusão.", - "Failed to setup, retrying": "A preparação falhou, a tentar novamente", + "Failed to set up, retrying": "A preparação falhou, a tentar novamente", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "São esperadas falhas na ligação a servidores IPv6 se não existir conectividade IPv6.", "File Pull Order": "Ordem de obtenção de ficheiros", "File Versioning": "Gestão de versões de ficheiros", diff --git a/gui/default/assets/lang/lang-ro-RO.json b/gui/default/assets/lang/lang-ro-RO.json index 71c61fad8..9ed7d2eb4 100644 --- a/gui/default/assets/lang/lang-ro-RO.json +++ b/gui/default/assets/lang/lang-ro-RO.json @@ -143,7 +143,6 @@ "Error": "Eroare", "External File Versioning": "Administrare externă a versiunilor documentului", "Failed Items": "Failed Items", - "Failed to setup, retrying": "Failed to setup, retrying", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.", "File Pull Order": "File Pull Order", "File Versioning": "Versiune Fișier", diff --git a/gui/default/assets/lang/lang-ru.json b/gui/default/assets/lang/lang-ru.json index c1844bb52..64b4800c5 100644 --- a/gui/default/assets/lang/lang-ru.json +++ b/gui/default/assets/lang/lang-ru.json @@ -154,7 +154,7 @@ "Failed Items": "Сбойные объекты", "Failed to load file versions.": "Не удалось загрузить версии файлов.", "Failed to load ignore patterns.": "Не удалось загрузить шаблоны игнорирования.", - "Failed to setup, retrying": "Не удалось настроить, пробуем ещё", + "Failed to set up, retrying": "Не удалось настроить, пробуем ещё", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Если нет IPv6-соединений, при подключении к IPv6-серверам произойдёт ошибка.", "File Pull Order": "Порядок получения файлов", "File Versioning": "Управление версиями", diff --git a/gui/default/assets/lang/lang-si.json b/gui/default/assets/lang/lang-si.json index 4e8129d85..f0257118b 100644 --- a/gui/default/assets/lang/lang-si.json +++ b/gui/default/assets/lang/lang-si.json @@ -143,7 +143,7 @@ "Failed Items": "අසාර්ථක අයිතම", "Failed to load file versions.": "ගොනු අනුවාද පූරණය කිරීමට අසමත් විය.", "Failed to load ignore patterns.": "නොසලකා හැරීමේ රටා පූරණය කිරීමට අසමත් විය.", - "Failed to setup, retrying": "පිහිටුවීමට අසමත් විය, උත්සාහ කරමින්", + "Failed to set up, retrying": "පිහිටුවීමට අසමත් විය, උත්සාහ කරමින්", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "IPv6 සම්බන්ධතාවක් නොමැති නම් IPv6 සේවාදායක වෙත සම්බන්ධ වීමට අසමත් වීම අපේක්ෂා කෙරේ.", "File Pull Order": "ගොනු ඇදීමේ නියෝගය", "File Versioning": "ගොනු අනුවාදය", diff --git a/gui/default/assets/lang/lang-sk.json b/gui/default/assets/lang/lang-sk.json index 33dac0d71..d45e017ea 100644 --- a/gui/default/assets/lang/lang-sk.json +++ b/gui/default/assets/lang/lang-sk.json @@ -153,7 +153,7 @@ "Failed Items": "Zlyhané položky", "Failed to load file versions.": "Nepodarilo sa načítať verzie súborov.", "Failed to load ignore patterns.": "Nepodarilo sa načítať ignorované vzory.", - "Failed to setup, retrying": "Nepodarilo sa nastaviť, opakujem", + "Failed to set up, retrying": "Nepodarilo sa nastaviť, opakujem", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Zlyhanie pripojenia k IPv6 serverom je očakávané ak neexistujú žiadne IPv6 pripojenia.", "File Pull Order": "Poradie sťahovania súborov", "File Versioning": "Verzie súborov", diff --git a/gui/default/assets/lang/lang-sl.json b/gui/default/assets/lang/lang-sl.json index b5bc23714..fcb4168d8 100644 --- a/gui/default/assets/lang/lang-sl.json +++ b/gui/default/assets/lang/lang-sl.json @@ -131,7 +131,7 @@ "External File Versioning": "Zunanje beleženje različic datotek", "Failed Items": "Neuspeli predmeti", "Failed to load ignore patterns.": "Prezrih vzorcev ni bilo mogoče naložiti.", - "Failed to setup, retrying": "Nastavitev ni uspela, ponovni poskus", + "Failed to set up, retrying": "Nastavitev ni uspela, ponovni poskus", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "Neuspeh povezav z IPv6 strežniki je pričakovan, če ni IPv6 povezljivost.", "File Pull Order": "Vrstni red prenosa datotek", "File Versioning": "Beleženje različic datotek", diff --git a/gui/default/assets/lang/lang-sv.json b/gui/default/assets/lang/lang-sv.json index 597c9526f..d04b1b79f 100644 --- a/gui/default/assets/lang/lang-sv.json +++ b/gui/default/assets/lang/lang-sv.json @@ -154,7 +154,7 @@ "Failed Items": "Misslyckade objekt", "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 ignoreringsmönster.", - "Failed to setup, retrying": "Det gick inte att ställa in, försöker igen", + "Failed to set up, 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.", "File Pull Order": "Filhämtningsprioritering", "File Versioning": "Filversionshantering", diff --git a/gui/default/assets/lang/lang-tr.json b/gui/default/assets/lang/lang-tr.json index 456b00b96..e5de4c141 100644 --- a/gui/default/assets/lang/lang-tr.json +++ b/gui/default/assets/lang/lang-tr.json @@ -156,7 +156,7 @@ "Failed Items": "Başarısız Olan Öğeler", "Failed to load file versions.": "Dosya sürümlerini yükleme başarısız.", "Failed to load ignore patterns.": "Yoksayma şekillerini yükleme başarısız.", - "Failed to setup, retrying": "Ayarlama başarısız, yeniden deneniyor", + "Failed to set up, retrying": "Ayarlama başarısız, yeniden deneniyor", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "IPv6 bağlanabilirliği yoksa IPv6 sunucularına bağlanma hatası beklenmekte.", "File Pull Order": "Dosya Çekme Sırası", "File Versioning": "Dosya Sürümlendirme", diff --git a/gui/default/assets/lang/lang-uk.json b/gui/default/assets/lang/lang-uk.json index d90a27bdb..6107e9a99 100644 --- a/gui/default/assets/lang/lang-uk.json +++ b/gui/default/assets/lang/lang-uk.json @@ -156,7 +156,7 @@ "Failed Items": "Невдалі", "Failed to load file versions.": "Не вдалося завантажити версії файлів.", "Failed to load ignore patterns.": "Не вдалося завантажити шаблони ігнорування.", - "Failed to setup, retrying": "Не вдалося налаштувати, повторна спроба", + "Failed to set up, retrying": "Не вдалося налаштувати, повторна спроба", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "За відсутності з'єднання IPv6 очікується неможливість під'єднання до серверів IPv6.", "File Pull Order": "Порядок витягнення файлів", "File Versioning": "Версіонування файлів", diff --git a/gui/default/assets/lang/lang-zh-CN.json b/gui/default/assets/lang/lang-zh-CN.json index c07b4cc71..19de2a862 100644 --- a/gui/default/assets/lang/lang-zh-CN.json +++ b/gui/default/assets/lang/lang-zh-CN.json @@ -156,7 +156,7 @@ "Failed Items": "失败的项目", "Failed to load file versions.": "加载文件版本失败。", "Failed to load ignore patterns.": "加载忽略模式失败。", - "Failed to setup, retrying": "设置失败,正在重试", + "Failed to set up, retrying": "设置失败,正在重试", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "如果本机没有配置 IPv6,则无法连接 IPv6 服务器是正常的。", "File Pull Order": "文件拉取顺序", "File Versioning": "文件版本控制", diff --git a/gui/default/assets/lang/lang-zh-HK.json b/gui/default/assets/lang/lang-zh-HK.json index bac06d4a7..7549a976d 100644 --- a/gui/default/assets/lang/lang-zh-HK.json +++ b/gui/default/assets/lang/lang-zh-HK.json @@ -145,7 +145,7 @@ "Failed Items": "失敗的項目", "Failed to load file versions.": "無法加載文件版本。", "Failed to load ignore patterns.": "無法加載忽略模式。", - "Failed to setup, retrying": "設置失敗,正在重試。", + "Failed to set up, retrying": "設置失敗,正在重試。", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "如果本機沒有配置IPv6,則無法連接IPv6服務器是正常的。", "File Pull Order": "文件拉取順序", "File Versioning": "版本控制", diff --git a/gui/default/assets/lang/lang-zh-TW.json b/gui/default/assets/lang/lang-zh-TW.json index 8b93d30cd..6735ed26e 100644 --- a/gui/default/assets/lang/lang-zh-TW.json +++ b/gui/default/assets/lang/lang-zh-TW.json @@ -154,7 +154,7 @@ "Failed Items": "失敗的項目", "Failed to load file versions.": "無法載入檔案版本。", "Failed to load ignore patterns.": "無法載入忽略模式。", - "Failed to setup, retrying": "無法設定,正在重試", + "Failed to set up, retrying": "無法設定,正在重試", "Failure to connect to IPv6 servers is expected if there is no IPv6 connectivity.": "若沒有 IPv6 連線能力,則無法連接 IPv6 伺服器為正常現象。", "File Pull Order": "提取檔案的順序", "File Versioning": "檔案版本控制", diff --git a/gui/default/index.html b/gui/default/index.html index 2140ef1dc..aba8a411a 100644 --- a/gui/default/index.html +++ b/gui/default/index.html @@ -521,7 +521,7 @@  {{folder.rescanIntervalS | duration}}  -  Failed to setup, retrying +  Failed to set up, retrying
@@ -535,7 +535,7 @@  Disabled  -  Failed to setup, retrying +  Failed to set up, retrying
diff --git a/lib/dialer/internal.go b/lib/dialer/internal.go index c4a4e153e..c810359ef 100644 --- a/lib/dialer/internal.go +++ b/lib/dialer/internal.go @@ -28,7 +28,7 @@ func init() { TLSHandshakeTimeout: 10 * time.Second, } - // Defer this, so that logging gets setup. + // Defer this, so that logging gets set up. go func() { time.Sleep(500 * time.Millisecond) l.Infoln("Proxy settings detected") diff --git a/lib/fs/basicfs_watch.go b/lib/fs/basicfs_watch.go index bf20c6439..f785c06c9 100644 --- a/lib/fs/basicfs_watch.go +++ b/lib/fs/basicfs_watch.go @@ -54,7 +54,7 @@ func (f *BasicFilesystem) Watch(name string, ignore Matcher, ctx context.Context if err != nil { notify.Stop(backendChan) if reachedMaxUserWatches(err) { - err = errors.New("failed to setup inotify handler. Please increase inotify limits, see https://docs.syncthing.net/users/faq.html#inotify-limits") + err = errors.New("failed to set up inotify handler. Please increase inotify limits, see https://docs.syncthing.net/users/faq.html#inotify-limits") } return nil, nil, err } diff --git a/lib/protocol/protocol_test.go b/lib/protocol/protocol_test.go index c4f304126..fe2646b08 100644 --- a/lib/protocol/protocol_test.go +++ b/lib/protocol/protocol_test.go @@ -205,7 +205,7 @@ func TestClusterConfigFirst(t *testing.T) { case c.outbox <- asyncMessage{&bep.Ping{}, nil}: t.Fatal("able to send ping before cluster config") case <-time.After(100 * time.Millisecond): - // Allow some time for c.writerLoop to setup after c.Start + // Allow some time for c.writerLoop to set up after c.Start } c.ClusterConfig(&ClusterConfig{}) diff --git a/lib/syncthing/syncthing.go b/lib/syncthing/syncthing.go index 7d562abf7..cf1397f1e 100644 --- a/lib/syncthing/syncthing.go +++ b/lib/syncthing/syncthing.go @@ -269,7 +269,7 @@ func (a *App) startup() error { // Chicken and egg, discovery manager depends on connection service to tell it what addresses it's listening on // Connection service depends on discovery manager to get addresses to connect to. - // Create a wrapper that is then wired after they are both setup. + // Create a wrapper that is then wired after they are both set up. addrLister := &lateAddressLister{} connRegistry := registry.New() From 8372c0288f6695c781ba6030220825ace2b25f87 Mon Sep 17 00:00:00 2001 From: tomasz1986 Date: Tue, 8 Apr 2025 22:08:00 +0200 Subject: [PATCH 6/7] fix(gui): mark unseen disconnected devices as inactive (#10048) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, the "Disconnected (Inactive)" status is only given to devices that have not been seen for 7 days or longer. However, this is not the case when adding a new device, or after resetting the database. Those devices are only marked as "Disconnected", and they will stay like that even if a long time passes without any connectivity. Moreover, the lack of an "Inactive" status may confuse the user to believe that their disconnect is only temporary. For this reason, always mark devices that have not been seen yet as "Disconnected (Inactive)". Signed-off-by: Tomasz Wilczyński --- gui/default/syncthing/core/syncthingController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/default/syncthing/core/syncthingController.js b/gui/default/syncthing/core/syncthingController.js index a7ac07d5d..05fc80e74 100644 --- a/gui/default/syncthing/core/syncthingController.js +++ b/gui/default/syncthing/core/syncthingController.js @@ -1165,7 +1165,7 @@ angular.module('syncthing.core') } // Disconnected - if (!unused && $scope.deviceStats[deviceCfg.deviceID] && $scope.deviceStats[deviceCfg.deviceID].lastSeenDays && $scope.deviceStats[deviceCfg.deviceID].lastSeenDays >= 7) { + if (!unused && $scope.deviceStats[deviceCfg.deviceID] && (!$scope.deviceStats[deviceCfg.deviceID].lastSeenDays || ($scope.deviceStats[deviceCfg.deviceID].lastSeenDays && $scope.deviceStats[deviceCfg.deviceID].lastSeenDays >= 7)) { return status + 'disconnected-inactive'; } else { return status + 'disconnected'; From fa0d933e4963e7074f86e63538be2f578ca0b04d Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 9 Apr 2025 15:39:09 +0200 Subject: [PATCH 7/7] fix(gui): fix previous commit --- gui/default/syncthing/core/syncthingController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/default/syncthing/core/syncthingController.js b/gui/default/syncthing/core/syncthingController.js index 05fc80e74..95a1aa190 100644 --- a/gui/default/syncthing/core/syncthingController.js +++ b/gui/default/syncthing/core/syncthingController.js @@ -1165,7 +1165,7 @@ angular.module('syncthing.core') } // Disconnected - if (!unused && $scope.deviceStats[deviceCfg.deviceID] && (!$scope.deviceStats[deviceCfg.deviceID].lastSeenDays || ($scope.deviceStats[deviceCfg.deviceID].lastSeenDays && $scope.deviceStats[deviceCfg.deviceID].lastSeenDays >= 7)) { + if (!unused && $scope.deviceStats[deviceCfg.deviceID] && (!$scope.deviceStats[deviceCfg.deviceID].lastSeenDays || $scope.deviceStats[deviceCfg.deviceID].lastSeenDays >= 7)) { return status + 'disconnected-inactive'; } else { return status + 'disconnected';