1
0
Эх сурвалжийг харах

Merge branch 'main' into v2

* main:
  fix(gui): fix previous commit
  fix(gui): mark unseen disconnected devices as inactive (#10048)
  fix(strings): differentiate setup(n) and set(v) up (#10024)
  chore(fs): changes to allow Filesystem to be implemented externally (#10040)
  chore(config): resolve primary STUN servers via SRV record (fixes #10029) (#10031)
  build: push artifacts to Azure (#10044)
  chore(gui, man, authors): update docs, translations, and contributors
Jakob Borg 6 сар өмнө
parent
commit
95b39a791d
83 өөрчлөгдсөн 156 нэмэгдсэн , 201 устгасан
  1. 24 40
      .github/workflows/build-syncthing.yaml
  2. 1 0
      AUTHORS
  3. 1 1
      cmd/infra/strelaypoolsrv/README.md
  4. 1 1
      cmd/syncthing/monitor.go
  5. 1 1
      gui/default/assets/lang/lang-ar.json
  6. 1 1
      gui/default/assets/lang/lang-bg.json
  7. 1 1
      gui/default/assets/lang/lang-ca.json
  8. 1 1
      gui/default/assets/lang/[email protected]
  9. 1 1
      gui/default/assets/lang/lang-cs.json
  10. 1 1
      gui/default/assets/lang/lang-da.json
  11. 1 1
      gui/default/assets/lang/lang-de.json
  12. 1 1
      gui/default/assets/lang/lang-el.json
  13. 1 1
      gui/default/assets/lang/lang-en-AU.json
  14. 1 1
      gui/default/assets/lang/lang-en-GB.json
  15. 1 1
      gui/default/assets/lang/lang-en.json
  16. 1 1
      gui/default/assets/lang/lang-eo.json
  17. 1 1
      gui/default/assets/lang/lang-es.json
  18. 1 1
      gui/default/assets/lang/lang-eu.json
  19. 1 1
      gui/default/assets/lang/lang-fi.json
  20. 1 1
      gui/default/assets/lang/lang-fil.json
  21. 1 1
      gui/default/assets/lang/lang-fr.json
  22. 1 1
      gui/default/assets/lang/lang-fy.json
  23. 3 1
      gui/default/assets/lang/lang-ga.json
  24. 1 1
      gui/default/assets/lang/lang-gl.json
  25. 1 1
      gui/default/assets/lang/lang-he-IL.json
  26. 1 1
      gui/default/assets/lang/lang-hi.json
  27. 1 1
      gui/default/assets/lang/lang-hu.json
  28. 1 1
      gui/default/assets/lang/lang-id.json
  29. 1 1
      gui/default/assets/lang/lang-it.json
  30. 3 1
      gui/default/assets/lang/lang-ko-KR.json
  31. 1 1
      gui/default/assets/lang/lang-lt.json
  32. 1 1
      gui/default/assets/lang/lang-nb.json
  33. 1 1
      gui/default/assets/lang/lang-nl.json
  34. 1 1
      gui/default/assets/lang/lang-pl.json
  35. 1 1
      gui/default/assets/lang/lang-pt-BR.json
  36. 1 1
      gui/default/assets/lang/lang-pt-PT.json
  37. 0 1
      gui/default/assets/lang/lang-ro-RO.json
  38. 1 1
      gui/default/assets/lang/lang-ru.json
  39. 1 1
      gui/default/assets/lang/lang-si.json
  40. 1 1
      gui/default/assets/lang/lang-sk.json
  41. 1 1
      gui/default/assets/lang/lang-sl.json
  42. 1 1
      gui/default/assets/lang/lang-sv.json
  43. 1 1
      gui/default/assets/lang/lang-tr.json
  44. 4 2
      gui/default/assets/lang/lang-uk.json
  45. 1 1
      gui/default/assets/lang/lang-zh-CN.json
  46. 1 1
      gui/default/assets/lang/lang-zh-HK.json
  47. 1 1
      gui/default/assets/lang/lang-zh-TW.json
  48. 2 2
      gui/default/index.html
  49. 0 0
      gui/default/syncthing/core/aboutModalView.html
  50. 1 1
      gui/default/syncthing/core/syncthingController.js
  51. 3 7
      lib/config/config.go
  52. 17 8
      lib/config/optionsconfiguration.go
  53. 1 1
      lib/dialer/internal.go
  54. 0 4
      lib/fs/basicfs.go
  55. 1 1
      lib/fs/basicfs_watch.go
  56. 0 4
      lib/fs/casefs.go
  57. 13 9
      lib/fs/casefs_test.go
  58. 0 4
      lib/fs/errorfs.go
  59. 0 4
      lib/fs/fakefs.go
  60. 16 20
      lib/fs/filesystem.go
  61. 0 4
      lib/fs/logfs.go
  62. 0 4
      lib/fs/metrics.go
  63. 1 5
      lib/fs/mtimefs.go
  64. 3 3
      lib/fs/mtimefs_test.go
  65. 0 4
      lib/fs/walkfs.go
  66. 1 1
      lib/protocol/protocol_test.go
  67. 1 1
      lib/syncthing/syncthing.go
  68. 1 1
      man/stdiscosrv.1
  69. 1 1
      man/strelaysrv.1
  70. 1 1
      man/syncthing-bep.7
  71. 3 11
      man/syncthing-config.5
  72. 1 1
      man/syncthing-device-ids.7
  73. 1 1
      man/syncthing-event-api.7
  74. 3 3
      man/syncthing-faq.7
  75. 1 1
      man/syncthing-globaldisco.7
  76. 1 1
      man/syncthing-localdisco.7
  77. 1 1
      man/syncthing-networking.7
  78. 1 1
      man/syncthing-relay.7
  79. 1 1
      man/syncthing-rest-api.7
  80. 1 1
      man/syncthing-security.7
  81. 1 1
      man/syncthing-stignore.5
  82. 1 1
      man/syncthing-versioning.7
  83. 1 1
      man/syncthing.1

+ 24 - 40
.github/workflows/build-syncthing.yaml

@@ -734,15 +734,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
@@ -788,28 +785,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
@@ -858,15 +849,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
@@ -881,15 +868,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

+ 1 - 0
AUTHORS

@@ -324,6 +324,7 @@ Suhas Gundimeda (snugghash) <[email protected]> <[email protected]>
 Sven Bachmann <[email protected]>
 Syncthing Automation <[email protected]>
 Syncthing Release Automation <[email protected]>
+Sébastien WENSKE <[email protected]>
 Taylor Khan (nelsonkhan) <[email protected]>
 Terrance <[email protected]>
 Thomas <[email protected]>

+ 1 - 1
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.

+ 1 - 1
cmd/syncthing/monitor.go

@@ -64,7 +64,7 @@ func (c *serveCmd) monitorMain() {
 			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

+ 1 - 1
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": "إصدارات الملف",

+ 1 - 1
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": "Версии на файловете",

+ 1 - 1
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",

+ 1 - 1
gui/default/assets/lang/[email protected]

@@ -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",

+ 1 - 1
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ů",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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": "Τήρηση εκδόσεων αρχείων",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 3 - 1
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",
@@ -154,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",

+ 1 - 1
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",

+ 1 - 1
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": "ניהול גרסאות קבצים",

+ 1 - 1
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": "फाइल संस्करणीकरण",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 3 - 1
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": "버전 정리",
@@ -154,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": "파일 버전 관리",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 0 - 1
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",

+ 1 - 1
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": "Управление версиями",

+ 1 - 1
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": "ගොනු අනුවාදය",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 1 - 1
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",

+ 4 - 2
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": "Очищення версій",
@@ -154,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": "Версіонування файлів",
@@ -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}} може повторно порекомендувати цей пристрій."
 }

+ 1 - 1
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": "文件版本控制",

+ 1 - 1
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": "版本控制",

+ 1 - 1
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": "檔案版本控制",

+ 2 - 2
gui/default/index.html

@@ -521,7 +521,7 @@
                             </span>
                             <span ng-if="folder.fsWatcherEnabled && !folder.paused && folderStatus(folder) !== 'stopped' && model[folder.id].watchError" tooltip data-original-title="{{'Periodic scanning at given interval and failed setting up watching for changes, retrying every 1m:' | translate}}<br/>{{model[folder.id].watchError}}">
                               <span class="far fa-clock"></span>&nbsp;{{folder.rescanIntervalS | duration}}&ensp;
-                              <span class="fas fa-eye-slash"></span>&nbsp;<span translate>Failed to setup, retrying</span>
+                              <span class="fas fa-eye-slash"></span>&nbsp;<span translate>Failed to set up, retrying</span>
                             </span>
                           </div>
                           <div ng-if="folder.rescanIntervalS <= 0">
@@ -535,7 +535,7 @@
                             </span>
                             <span ng-if="folder.fsWatcherEnabled && !folder.paused && folderStatus(folder) !== 'stopped' && model[folder.id].watchError" tooltip data-original-title="{{'Disabled periodic scanning and failed setting up watching for changes, retrying every 1m:' | translate}}<br/>{{model[folder.id].watchError}}">
                               <span class="far fa-clock"></span>&nbsp;<span translate>Disabled</span>&ensp;
-                              <span class="fas fa-eye-slash"></span>&nbsp;<span translate>Failed to setup, retrying</span>
+                              <span class="fas fa-eye-slash"></span>&nbsp;<span translate>Failed to set up, retrying</span>
                             </span>
                           </div>
                         </td>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
gui/default/syncthing/core/aboutModalView.html


+ 1 - 1
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 >= 7)) {
                 return status + 'disconnected-inactive';
             } else {
                 return status + 'disconnected';

+ 3 - 7
lib/config/config.go

@@ -68,13 +68,9 @@ var (
 	DefaultTheme = "default"
 	// Default stun servers should be substituted when the configuration
 	// contains <stunServer>default</stunServer>.
-
-	// 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",

+ 17 - 8
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"
@@ -183,15 +185,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)
+			}
+
+			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)
+			}
 
-			defaultSecondaryAddresses := make([]string, len(DefaultSecondaryStunServers))
-			copy(defaultSecondaryAddresses, DefaultSecondaryStunServers)
-			rand.Shuffle(defaultSecondaryAddresses)
-			addresses = append(addresses, defaultSecondaryAddresses...)
+			fallbackAddresses := slices.Clone(DefaultFallbackStunServers)
+			rand.Shuffle(fallbackAddresses)
+			addresses = append(addresses, fallbackAddresses...)
 		default:
 			addresses = append(addresses, addr)
 		}

+ 1 - 1
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")

+ 0 - 4
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

+ 1 - 1
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
 	}

+ 0 - 4
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 {

+ 13 - 9
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)

+ 0 - 4
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
-}

+ 0 - 4
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{}

+ 16 - 20
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 {
+			var x T
+			return x, false
+		}
+
+		fs, ok = wrappingFs.underlying()
 		if !ok {
-			return nil, false
+			var x T
+			return x, false
 		}
 	}
 }

+ 0 - 4
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
-}

+ 0 - 4
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

+ 1 - 5
lib/fs/mtimefs.go

@@ -143,10 +143,6 @@ func (f *mtimeFS) underlying() (Filesystem, bool) {
 	return f.Filesystem, true
 }
 
-func (*mtimeFS) wrapperType() filesystemWrapperType {
-	return filesystemWrapperTypeMtime
-}
-
 func (f *mtimeFS) save(name string, ondisk, virtual time.Time) {
 	if f.caseInsensitive {
 		name = UnicodeLowercaseNormalized(name)
@@ -209,7 +205,7 @@ func (f mtimeFile) unwrap() File {
 }
 
 func GetMtimeMapping(fs Filesystem, file string) (ondisk, virtual time.Time) {
-	fs, ok := unwrapFilesystem(fs, filesystemWrapperTypeMtime)
+	fs, ok := unwrapFilesystem[*mtimeFS](fs)
 	if !ok {
 		return time.Time{}, time.Time{}
 	}

+ 3 - 3
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
 }

+ 0 - 4
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
-}

+ 1 - 1
lib/protocol/protocol_test.go

@@ -203,7 +203,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{})

+ 1 - 1
lib/syncthing/syncthing.go

@@ -268,7 +268,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()

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 3 - 11
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<stunServer>\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

+ 1 - 1
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

+ 1 - 1
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

+ 3 - 3
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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?

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно