summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Wilhelm <shieldwed@outlook.com>2019-04-15 02:13:48 +0200
committerDaniel Wilhelm <shieldwed@outlook.com>2019-04-15 02:13:48 +0200
commit6394794a2d79cc0e18e37303d751f9e46042719b (patch)
treef759fbac3eced54ff7ce3ac6fdd0c2ea6c2b053c
parent10.11 (diff)
downloadFreeFileSync-6394794a2d79cc0e18e37303d751f9e46042719b.tar.gz
FreeFileSync-6394794a2d79cc0e18e37303d751f9e46042719b.tar.bz2
FreeFileSync-6394794a2d79cc0e18e37303d751f9e46042719b.zip
remove files deleted in upstream
-rwxr-xr-xFreeFileSync/Build/Help/FreeFileSync.hhc99
-rwxr-xr-xFreeFileSync/Build/Help/FreeFileSync.hhp33
-rwxr-xr-xFreeFileSync/Build/Help/html/base.css94
-rwxr-xr-xFreeFileSync/Build/Help/html/command-line.html118
-rwxr-xr-xFreeFileSync/Build/Help/html/comparison-settings.html126
-rwxr-xr-xFreeFileSync/Build/Help/html/daylight-saving-time.html66
-rwxr-xr-xFreeFileSync/Build/Help/html/exclude-items.html104
-rwxr-xr-xFreeFileSync/Build/Help/html/expert-settings.html94
-rwxr-xr-xFreeFileSync/Build/Help/html/external-applications.html87
-rwxr-xr-xFreeFileSync/Build/Help/html/freefilesync.html53
-rwxr-xr-xFreeFileSync/Build/Help/html/ftp-setup.html79
-rwxr-xr-xFreeFileSync/Build/Help/html/macros.html238
-rwxr-xr-xFreeFileSync/Build/Help/html/performance.html73
-rwxr-xr-xFreeFileSync/Build/Help/html/realtimesync.html122
-rwxr-xr-xFreeFileSync/Build/Help/html/run-as-service.html50
-rwxr-xr-xFreeFileSync/Build/Help/html/schedule-batch-jobs.html120
-rwxr-xr-xFreeFileSync/Build/Help/html/synchronization-settings.html39
-rwxr-xr-xFreeFileSync/Build/Help/html/tips-and-tricks.html113
-rwxr-xr-xFreeFileSync/Build/Help/html/variable-drive-letters.html48
-rwxr-xr-xFreeFileSync/Build/Help/html/versioning.html83
-rwxr-xr-xFreeFileSync/Build/Help/html/volume-shadow-copy.html55
-rwxr-xr-xFreeFileSync/Build/Help/images/add-folder-pair.pngbin5822 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/automator-file-dropped.pngbin33088 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/basic-step-choose-folders.pngbin2725 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/basic-step-compare.pngbin2711 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/basic-step-start-sync.pngbin2678 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/basic-step-sync-config.pngbin1936 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/calendar-job-added.pngbin50602 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/com-settings-context.pngbin7996 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/command-line-syntax.pngbin8021 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/comparison-settings.pngbin27085 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/comparison-variant-double-click.pngbin3916 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/config-double-click.pngbin9812 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/config-multiple-selection.pngbin9804 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/copy-alternative-path.pngbin2637 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/dialog-drag-move.pngbin10324 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/direct-synchronize.pngbin4705 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/explorer-context.pngbin3946 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/filter-context.pngbin2893 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/filter-zero-file-size.pngbin963 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/filter.pngbin19163 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/freefilesync-logo.pngbin7488 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/gnome-scheduler.pngbin44019 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/ignore-time-shift.pngbin11862 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/launch-automator.pngbin35257 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/main-window.pngbin45163 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/new-calendar-alarm.pngbin64123 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/open-finder-items.pngbin88104 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/path-by-volume-name.pngbin2768 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/performance.pngbin5380 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/realtimesync-create-shortcut.pngbin6240 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/realtimesync-logo.pngbin5396 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/realtimesync-main-window.pngbin12197 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/realtimesync-monitor-usb.pngbin11337 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/realtimesync-schedule.pngbin8443 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/realtimesync-shortcut-properties.pngbin10587 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/remove-drop-down-path.pngbin6619 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/remove-local-settings.pngbin5800 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/save-automator.pngbin9381 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/select-time-span.pngbin13735 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/setup-batch-job.pngbin14211 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/sftp-cloud-picker.pngbin495 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/sftp-login.pngbin7534 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/sftp-performance.pngbin4532 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/show-thumbnails.pngbin27962 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/sync-settings-context.pngbin4037 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/synchronization-settings.pngbin33975 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/synchronization-variant-double-click.pngbin4072 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/two-folder-drop.pngbin8044 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/versioning.pngbin10599 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/view-filter-default.pngbin3708 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/windows-scheduler.pngbin8897 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Help/images/xp-scheduler.pngbin17907 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/Languages/slovak.lng2086
-rwxr-xr-xFreeFileSync/Build/Languages/turkish.lng2091
-rwxr-xr-xFreeFileSync/Build/Languages/ukrainian.lng2107
-rwxr-xr-xFreeFileSync/Build/ding.wavbin134636 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/gong.wavbin460504 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/harp.wavbin364076 -> 0 bytes
-rwxr-xr-xFreeFileSync/Build/styles.gtk_rc7
-rwxr-xr-xFreeFileSync/Source/base/error_log.h45
-rwxr-xr-xFreeFileSync/Source/base/hard_filter.cpp366
-rwxr-xr-xFreeFileSync/Source/base/hard_filter.h241
-rwxr-xr-xFreeFileSync/Source/fs/concrete_impl.h213
-rwxr-xr-xFreeFileSync/Source/ui/search.cpp115
-rwxr-xr-xFreeFileSync/Source/ui/search.h19
-rwxr-xr-xFreeFileSync/Source/ui/version_check_impl.h59
-rwxr-xr-xwx+/zlib_wrap.cpp53
-rwxr-xr-xwx+/zlib_wrap.h114
-rwxr-xr-xzen/xml_io.cpp83
-rwxr-xr-xzen/xml_io.h26
-rwxr-xr-xzenXml/zenxml/bind.h390
-rwxr-xr-xzenXml/zenxml/error.h19
-rwxr-xr-xzenXml/zenxml/io.h98
94 files changed, 0 insertions, 10026 deletions
diff --git a/FreeFileSync/Build/Help/FreeFileSync.hhc b/FreeFileSync/Build/Help/FreeFileSync.hhc
deleted file mode 100755
index 637167ca..00000000
--- a/FreeFileSync/Build/Help/FreeFileSync.hhc
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML>
-<HEAD>
-<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
-<!-- Sitemap 1.0 -->
-</HEAD><BODY>
-<OBJECT type="text/site properties">
- <param name="Window Styles" value="0x800025">
- <param name="ImageType" value="Folder">
-</OBJECT>
-<UL>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="FreeFileSync">
- <param name="Local" value="html\freefilesync.html">
- <param name="ImageNumber" value="2">
- </OBJECT>
- <UL>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="# Overview">
- <param name="Local" value="html\freefilesync.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Command Line">
- <param name="Local" value="html\command-line.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Comparison Settings">
- <param name="Local" value="html\comparison-settings.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Daylight Saving Time">
- <param name="Local" value="html\daylight-saving-time.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Exclude Items">
- <param name="Local" value="html\exclude-items.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Expert Settings">
- <param name="Local" value="html\expert-settings.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="External Applications">
- <param name="Local" value="html\external-applications.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Macros">
- <param name="Local" value="html\macros.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Performance">
- <param name="Local" value="html\performance.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Schedule Batch Jobs">
- <param name="Local" value="html\schedule-batch-jobs.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Synchronization Settings">
- <param name="Local" value="html\synchronization-settings.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="(S)FTP Setup">
- <param name="Local" value="html\ftp-setup.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Tips and Tricks">
- <param name="Local" value="html\tips-and-tricks.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Variable Drive Letters">
- <param name="Local" value="html\variable-drive-letters.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Versioning">
- <param name="Local" value="html\versioning.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Volume Shadow Copy">
- <param name="Local" value="html\volume-shadow-copy.html">
- </OBJECT>
- </UL>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="RealTimeSync">
- <param name="Local" value="html\realtimesync.html">
- <param name="ImageNumber" value="2">
- </OBJECT>
- <UL>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="# Overview">
- <param name="Local" value="html\realtimesync.html">
- </OBJECT>
- <LI> <OBJECT type="text/sitemap">
- <param name="Name" value="Run as Service">
- <param name="Local" value="html\run-as-service.html">
- </OBJECT>
- </UL>
-</UL>
-</BODY></HTML>
diff --git a/FreeFileSync/Build/Help/FreeFileSync.hhp b/FreeFileSync/Build/Help/FreeFileSync.hhp
deleted file mode 100755
index 45b4497c..00000000
--- a/FreeFileSync/Build/Help/FreeFileSync.hhp
+++ /dev/null
@@ -1,33 +0,0 @@
-[OPTIONS]
-Compatibility=1.1 or later
-Compiled file=..\FreeFileSync.chm
-Contents file=FreeFileSync.hhc
-Default topic=html\freefilesync.html
-Display compile progress=No
-Full-text search=Yes
-Language=0x409 Englisch (USA)
-Title=FreeFileSync - Help
-
-
-[FILES]
-html\command-line.html
-html\comparison-settings.html
-html\daylight-saving-time.html
-html\exclude-items.html
-html\expert-settings.html
-html\external-applications.html
-html\freefilesync.html
-html\macros.html
-html\performance.html
-html\schedule-batch-jobs.html
-html\synchronization-settings.html
-html\ftp-setup.html
-html\tips-and-tricks.html
-html\variable-drive-letters.html
-html\versioning.html
-html\volume-shadow-copy.html
-html\realtimesync.html
-html\run-as-service.html
-
-[INFOTYPES]
-
diff --git a/FreeFileSync/Build/Help/html/base.css b/FreeFileSync/Build/Help/html/base.css
deleted file mode 100755
index 5175281a..00000000
--- a/FreeFileSync/Build/Help/html/base.css
+++ /dev/null
@@ -1,94 +0,0 @@
-*
-{
-}
-
-body
-{
- font-family: "Segoe UI", Verdana, Tahoma, sans-serif;
- text-align:justify;
-}
-
-h1
-{
- font-size: 22px;
-}
-
-h2
-{
- font-size: 17px;
-}
-
-ul
-{
- list-style: disc;
-}
-
-ol
-{
- margin: 0
-}
-
-table th
-{
- text-align: left;
- padding: 0 20px 0 0;
- border-bottom: 1px solid black;
-}
-
-table td
-{
- padding: 0 20px 0 0;
- vertical-align: top;
-}
-
-.half-line { line-height: .5em; }
-
-.bluebox
-{
- padding: 6px 15px;
- background: #ccccff;
- border: 1px solid #000080;
-}
-
-.greybox
-{
- padding: 6px 15px;
- background: #f8f8f8;
- box-shadow: 1px 1px 4px #888;
-}
-
-.command-line
-{
- font-family: "Courier New", Courier, monospace;
- text-align: left;
-}
-
-.command-line-comment
-{
- color: #808080;
- font-weight: bold;
- font-style: italic;
-}
-
-.file-path
-{
- font-family: Consolas, "Courier New", Courier, monospace;
- text-align: left;
-}
-
-.separation_line
-{
- border-bottom: 1px solid #AAA;
- margin: 10px 0 20px 0;
-}
-
-.tip
-{
- font-weight: bold;
- margin-bottom: 5px;
-}
-
-.screen-snippet
-{
- box-shadow: 1px 1px 2px #888;
-}
diff --git a/FreeFileSync/Build/Help/html/command-line.html b/FreeFileSync/Build/Help/html/command-line.html
deleted file mode 100755
index 78a9fc75..00000000
--- a/FreeFileSync/Build/Help/html/command-line.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Command Line Usage</title>
-</head>
-
-<body>
- <h1>Command Line Usage</h1>
-
- <p>
- FreeFileSync supports additional synchronization scenarios via a command line interface.
- To get a syntax overview, open the console, go to the directory where FreeFileSync is installed and type:
- </p>
-
- <div class="greybox">
- <span class="command-line">FreeFileSync.exe -h</span> <span style="margin: 0 40px">or</span> <span class="command-line">FreeFileSync.exe --help</span>
- </div>
-
- <br>
- <img src="../images/command-line-syntax.png" alt="Command line syntax">
- <br><br>
-
- <h2>1. Run a FreeFileSync batch job</h2>
- <p>
- In order to start synchronization in batch mode, supply the path of a ffs_batch configuration file as the first argument for FreeFileSync.exe:
- </p>
-
- <div class="greybox">
- <div class="command-line">FreeFileSync.exe &quot;D:\Backup Projects.ffs_batch&quot;</div>
- </div>
-
- <p>After synchronization one of the following status codes is returned:</p>
-
- <div class="greybox">
- <b>Return Codes</b><br>
- 0 - Synchronization completed successfully<br>
- 1 - Synchronization completed with warnings<br>
- 2 - Synchronization completed with errors<br>
- 3 - Synchronization was aborted
- </div>
-
- <p>
- You can evaluate these codes from a script (e.g. a cmd or bat file on Windows)
- and check if synchronization completed successfully:
- </p>
-
- <div class="greybox">
- <div class="command-line">
- &quot;C:\Program Files\FreeFileSync\FreeFileSync.exe&quot; &quot;D:\Backup Projects.ffs_batch&quot;<br>
- if errorlevel 1 (<br>
- &nbsp;&nbsp;<span class="command-line-comment">::if return code is 1 or greater, something went wrong, add special treatment here</span><br>
- &nbsp;&nbsp;echo Errors occurred during synchronization...<br>
- &nbsp;&nbsp;pause<br>
- )
- </div>
- </div>
-
- <p>Instead of showing an error message, you can also send an email notification (using a third party tool).</p>
-
- <div class="bluebox">
- <b>Attention</b><br>
- If you are running the batch job unattended, make sure your script is not blocked showing a notification dialog. Consider the
- following options when setting up the FreeFileSync batch job:
- <div class="half-line">&nbsp;</div>
-
- <ul style="margin: 0">
- <li>Set <i>When finished</i> to <b>Exit</b> to skip the summary dialog after synchronization.
- <li>Set up error handling to <b>Ignore errors</b> or <b>Cancel</b> to stop the synchronization at the first error.
- </ul>
- </div>
- <br>
-
- <h2>2. Start a FreeFileSync GUI configuration</h2>
- <p>
- If you pass a ffs_gui file, FreeFileSync will start in GUI mode and immediately start comparison (but only if all directories exist):
- </p>
-
- <div class="greybox">
- <div class="command-line">FreeFileSync.exe &quot;D:\Manual Backup.ffs_gui&quot;</div>
- </div>
- <br>
-
- <h2>3. Customize an existing configuration</h2>
- <p>
- You can replace the directories of a given ffs_gui or ffs_batch configuration file by using the <span class="command-line">-DirPair</span> parameter:
- </p>
-
- <div class="greybox">
- <div class="command-line">FreeFileSync.exe &quot;D:\Manual Backup.ffs_gui&quot; -dirpair C:\NewSource D:\NewTarget</div>
- </div>
- <br>
-
- <h2>4. Merge multiple configurations</h2>
- <p>
- When more than one configuration file is provided, FreeFileSync will merge
- everything into a single configuration with multiple folder pairs and start in GUI mode:
- </p>
-
- <div class="greybox">
- <div class="command-line">FreeFileSync.exe &quot;D:\Manual Backup.ffs_gui&quot; &quot;D:\Backup Projects.ffs_batch&quot;</div>
- </div>
- <br>
-
-
- <h2>5. Use a different GlobalSettings.xml file</h2>
- <p>
- By default, FreeFileSync uses a single GlobalSettings.xml file containing options that apply to all synchronization tasks;
- for examples see <a href="expert-settings.html">Expert Settings</a>.
- If you want FreeFileSync to use a different settings file instead, you can specify the path via command line:
- </p>
-
- <div class="greybox">
- <div class="command-line">FreeFileSync.exe &quot;D:\My GlobalSettings.xml&quot;</div>
- </div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/comparison-settings.html b/FreeFileSync/Build/Help/html/comparison-settings.html
deleted file mode 100755
index d83877c8..00000000
--- a/FreeFileSync/Build/Help/html/comparison-settings.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Comparison Settings</title>
-</head>
-
-<body>
- <h1>Comparison Settings</h1>
- <p>
- <img src="../images/comparison-settings.png" alt="Comparison settings dialog">
- <br><br>
- </p>
-
- <h2>Comparison variants</h2>
- <p>
- When comparing two folders, FreeFileSync analyses the <b>paths relative to the left and right base folders</b> of the contained files.
- If the relative path matches, FreeFileSync decides how the file pair is categorized by considering the selected comparison variant:
- </p>
-
- <b>I. Compare by <i>File time and size</i></b>
- <p>
- This variant considers two files equal when both <b>modification time and file size</b> match.
- It should be selected when synchronizing files with a backup location.
- Whenever a file is changed, its file modification time is also updated.
- Therefore, a comparison by <i>File Time and size</i> will detect all files that should be synchronized.
- The following categories are distinguished:
- </p>
- <ol style="list-style: upper-roman">
- <li><b>file exists on one side only</b>
- <ul>
- <li>left only
- <li>right only
- </ul>
-
- <li><b>file exists on both sides</b>
- <ol style="list-style: lower-roman">
- <li><b>different date</b>
- <ul>
- <li>left newer
- <li>right newer
- </ul>
- <li><b>same date</b>
- <ul>
- <li>equal
- <li>conflict (same date, different size)
- </ul>
- </ol>
- </ol>
- <br>
-
- <b>II. Compare by <i>File content</i></b>
- <p>
- Two files are marked as equal if they have <b>identical content</b>.
- This variant should be selected when doing consistency checks to see if the files on both sides are bit-wise identical.
- Naturally, it is the slowest of all comparison variants, so its usefulness for the purpose of synchronization is limited.
- If used for synchronization, it can serve as a fallback when modification times are not reliable. For example
- certain mobile phones and legacy FTP servers do not preserve modification times, so the only way to detect different files when the
- file sizes are the same is by reading their content.
- </p>
- <ol style="list-style: upper-roman">
- <li><b>file exists on one side only</b>
- <ul>
- <li>left only
- <li>right only
- </ul>
-
- <li><b>file exists on both sides</b>
- <ul>
- <li>equal
- <li>different content
- </ul>
- </ol>
- <br>
-
- <b>III. Compare by <i>File size</i></b>
- <p>
- Two files are considered equal if they have the <b>same file size</b>.
- Since it's possible for files that have the same size to have different content, this variant should only be used when file modification times are not
- available or reliable, e.g. in certain MTP and FTP synchronization scenarios, and where a comparison by content would be too slow.
- </p>
- <ol style="list-style: upper-roman">
- <li><b>file exists on one side only</b>
- <ul>
- <li>left only
- <li>right only
- </ul>
-
- <li><b>file exists on both sides</b>
- <ul>
- <li>equal
- <li>different size
- </ul>
- </ol>
- <br>
-
- <h2>Symbolic Link Handling</h2>
- <p>
- FreeFileSync lets you choose to include symbolic links (also called symlinks or soft links)
- when scanning directories rather than skipping over them. When included, you can select between two ways to handle them:
- </p>
-
- <ol>
- <li><b>Follow:</b>
- Treat symbolic links like the object they are pointing to. Links
- pointing to directories are traversed like ordinary directories and
- the target of each link is copied during synchronization.<br>&nbsp;
-
- <li><b>Direct:</b>
- Evaluate the symbolic link object directly. Symbolic links will be shown as separate entities.
- Links pointing to directories are not traversed and the link object itself
- is copied during synchronization.
- </ol>
- <br>
-
- <div class="bluebox">
- <b>Note</b>
- <ul style="margin: 0">
- <li>Under Windows the symbolic link options apply to symbolic links, volume mount points and NTFS junction points.
- <li>Copying symbolic links requires FreeFileSync to be started with administrator rights.
- </ul>
- </div>
-
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/daylight-saving-time.html b/FreeFileSync/Build/Help/html/daylight-saving-time.html
deleted file mode 100755
index 1b68d93e..00000000
--- a/FreeFileSync/Build/Help/html/daylight-saving-time.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Daylight Saving Time</title>
-</head>
-
-<body>
- <h1>Daylight Saving Time<span style="font-weight: normal"> (Windows)</span></h1>
-
- <p>
- A common problem synchronization software has to handle is +-1 hour
- file time shifts after a Daylight Saving Time (DST) switch has
- occurred. This can be observed, for example, when a FAT32- or exFAT-formatted
- volume (in the following called "FAT") is compared against an NTFS volume,
- like when synchronizing a USB memory stick against a local disk.
- Files that previously appeared to be in sync are
- now shown with a one hour modification time offset, although they
- have not been modified by the user or the operating system.
- </p>
-
- <p>
- The reason for this behavior lies in the way NTFS and FAT
- store file times: NTFS stores time in UTC format, while FAT uses
- local time.
- </p>
-
- <p>
- When times of these two different formats are compared, one format
- has to be converted into the other first. In either way, Windows uses
- the current DST status as well as the current time zone for
- its calculations. Consequently, the result of this comparison is
- dependent from current system settings with the effect that file times
- that used to be the same show up as different after a DST switch or when the time zone has changed.
- </p>
-
- <p>
- For a detailed discussion about this issue see:<br>
- <a rel="nofollow" target="_blank" href="https://www.codeproject.com/Articles/1144/Beating-the-Daylight-Savings-Time-bug-and-getting">https://www.codeproject.com/Articles/1144/Beating-the-Daylight-Savings-Time-bug</a>
- <br><br>
- </p>
-
- <h2>Solutions:</h2>
-
- <ol>
- <li><p>
- In FreeFileSync's comparison settings you can enter one or more time shifts to ignore during comparison:
- If you need to handle differences due to daylight saving time, enter a single one hour shift.
- If the differences are caused by changing the time zone, enter one or more time shifts as needed.
- <br>
- </p>
- <img src="../images/ignore-time-shift.png" class="screen-snippet" alt="Ignore daylight saving time shift"><br>
- <br>
- <div class="bluebox">
- <b>Note</b><br>
- File times have to be equal or differ by exactly the time shift entered to be considered the same.
- Therefore, the time shift setting should not be confused with a time interval or tolerance.
- </div>
- <br>
-
- <li>Alternatively, you can avoid the problem in the first place by only synchronizing from FAT to FAT or NTFS to NTFS file systems.
- Since most local disks are formatted with NTFS and USB memory sticks with FAT, this situation could be handled by formatting the USB stick with NTFS as well.
- </ol>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/exclude-items.html b/FreeFileSync/Build/Help/html/exclude-items.html
deleted file mode 100755
index 0563f5ef..00000000
--- a/FreeFileSync/Build/Help/html/exclude-items.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Exclude Items via Filter</title>
-</head>
-
-<body>
- <h1>Exclude Items via Filter</h1>
-
- <p>
- <img src="../images/filter.png" alt="File exclude filter"><br>
- <br>
- Files and directories are only considered for synchronization if they pass
- all filter rules. They have to match <b>at least one</b> entry in the
- include list and <b>none</b> of the entries in the exclude list as presented in the filter configuration dialog:
- </p>
-
- <div class="greybox">
- <ul style="margin: 0">
- <li>Each list item must be a file or directory path <b>relative</b> to synchronization base directories.
-
- <li>Multiple items must be separated by <b>|</b> or a <b>new line</b>.
-
- <li>Wild cards <b>*</b> and <b>?</b> may be used: <b>*</b> means zero or more characters while <b>?</b> represents exactly one character.
- </ul>
- </div>
- <br>
-
- <h2>Example: <span style="font-weight:normal">Exclude specific items from a mirror-sync, <span class="file-path">C:\Source</span> to <span class="file-path">D:\Target</span></span></h2>
-
- <table style="border-spacing:0;">
- <tr>
- <th>Filter description</th>
- <th>Filter phrase</th>
- </tr>
- <tr>
- <td>Single file <span class="file-path">C:\Source\file.txt</span></td>
- <td><span class="file-path">\file.txt</span></td>
- </tr>
- <tr>
- <td>Single folder <span class="file-path">C:\Source\SubFolder</span></td>
- <td><span class="file-path">\SubFolder\</span></td>
- </tr>
- <tr>
- <td>All files (and folders) named <span class="file-path">thumbs.db</span></td>
- <td><span class="file-path">*\thumbs.db</span></td>
- </tr>
- <tr>
- <td>All <span class="file-path">*.tmp</span> files located in <span class="file-path">SubFolder</span></td>
- <td><span class="file-path">\SubFolder\*.tmp</span></td>
- </tr>
- <tr>
- <td>Files and folders containing <span class="file-path">temp</span> somewhere in their path</td>
- <td><span class="file-path">*temp*</span></td>
- </tr>
- <tr>
- <td>Multiple entries separated by vertical bar</td>
- <td><span class="file-path">*.tmp | *.doc | *.bak</span></td>
- </tr>
- <tr>
- <td>All subdirectories of the base directories</td>
- <td><span class="file-path">*\</span></td>
- </tr>
- <tr>
- <td><span class="file-path">*.txt</span> files located in subdirectories of base directories</td>
- <td><span class="file-path">\*\*.txt</span></td>
- </tr>
- </table>
- <br>
-
- <h2>Example: <span style="font-weight:normal">Exclude a sub folder except for certain files</span></h2>
- <p>
- Set up <b>two folder pairs</b> with the same source and target paths but with <b>distinct local filters</b>:<br>
- Folder pair 1; local <em>exclude</em> filter: <span class="file-path">\SubFolder\</span><br>
- Folder pair 2; local <em>include</em> filter: <span class="file-path">\SubFolder\*.txt</span>
- </p>
- <br>
-
- <h2>Example: <span style="font-weight:normal">Exclude empty folders</span></h2>
- <p>
- <img src="../images/filter-zero-file-size.png" class="screen-snippet" alt="Filter with file size zero" style="float: right; margin-left: 10px">
- Set up a <b>file size filter</b> with a lower limit of <b>0 bytes</b>. Both the <em>time span</em>
- and <em>file size</em> filters match files only, so this will exclude all folders.
- During synchronization however some excluded folders will still be synchronized if they contain at least one non-excluded item, i.e. when they are not empty.<br>
- </p>
- <br style="clear:both">
-
- <div class="bluebox">
- <b>Note</b>
- <ul style="margin: 0">
- <li>For simple exclusions, just right-click and exclude one item or a list
- of items directly via the <b>context menu</b> on main dialog.
-
- <li>A filter phrase is compared against
- <b>both</b> file and directory paths. If you want to consider directories
- only, you can give a hint by appending a path separator.
-
- <li>On Windows both slash (<b>/</b>) and backslash (<b>\</b>) may be used as the path separator character.
- </ul>
- </div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/expert-settings.html b/FreeFileSync/Build/Help/html/expert-settings.html
deleted file mode 100755
index 2791c5fb..00000000
--- a/FreeFileSync/Build/Help/html/expert-settings.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Expert Settings</title>
-</head>
-
-<body>
- <h1>Expert Settings</h1>
-
- <p>
- FreeFileSync has a number of special-purpose settings that can only be accessed
- by manually opening the global configuration file <span class="file-path">GlobalSettings.xml</span>.
- Note that this file is read once when FreeFileSync starts and saved again on exit.
- Therefore, you should <b>apply manual changes only while FreeFileSync is not running.</b>
- For the portable FreeFileSync variant the file is found in the installation folder,
- for local installations go to:
- </p>
-
- <table style="border-spacing:0;">
- <tr><td>Windows:</span></td> <td><b><span class="command-line">%AppData%\FreeFileSync</span></b></td></tr>
- <tr><td>Linux:</td> <td>&lt;installation folder&gt;</td></tr>
- <tr><td>macOS:</td> <td><b><span class="command-line">~/Library/Application Support/FreeFileSync</span></b></td></tr>
- </table>
- <br>
-
- <div class="greybox">
- <div class="command-line">
- &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br>
- &lt;FreeFileSync XmlType=&quot;GLOBAL&quot;&gt;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&lt;General&gt;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<b>FileTimeTolerance</b> Seconds=&quot;2&quot;/&gt;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<b>FolderAccessTimeout</b> Seconds=&quot;20&quot;/&gt;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<b>RunWithBackgroundPriority</b> Enabled=&quot;false&quot;/&gt;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<b>LockDirectoriesDuringSync</b> Enabled=&quot;true&quot;/&gt;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<b>VerifyCopiedFiles</b> Enabled=&quot;false&quot;/&gt;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<b>NotificationSound</b> CompareFinished=&quot;ding.wav&quot; SyncFinished=&quot;harp.wav&quot;/&gt;
- </div>
- </div>
- <br>
-
- <p>
- <b>FileTimeTolerance:</b><br>
- By default file modification times
- are allowed to have a 2 second difference while still being
- considered equal. This is required by FAT/FAT32 file systems which
- store file times only with a 2-second precision.
- </p>
-
- <p>
- <b>FolderAccessTimeout:</b><br>
- When testing if a particular folder path exists FreeFileSync will time out
- after the specified number of seconds if the operating system does not respond (e.g. non-reachable network share).
- </p>
-
- <p>
- <b>RunWithBackgroundPriority:</b><br>
- While synchronization is running, other applications that are accessing the same
- data locations may experience a noticeable slowdown. Enable this
- setting to lower FreeFileSync's resource consumption at the cost of a
- significantly slower synchronization speed.
- </p>
-
- <p>
- <b>LockDirectoriesDuringSync:</b><br>
- In order to prevent multiple synchronization tasks from reading and writing the same files,
- FreeFileSync instances are serialized with lock files (<span class="file-path">sync.ffs_lock</span>).
- The lock files are only recognized by FreeFileSync and make sure that at most,
- a single synchronization is running against a certain folder at a time while
- other instances are queued to wait.
- This ensures that only consistent sets of files are subject to synchronization.
- The primary use case are network synchronization scenarios where
- multiple users run FreeFileSync concurrently against a shared network folder.
- </p>
-
- <p>
- <b>VerifyCopiedFiles:</b><br>
- If active, FreeFileSync will binary-compare source and target files after
- copying and report verification errors. Note that this may double
- file copy times and is no guarantee that data has not already been
- corrupted prior to copying. Additionally, corruption may be hidden by
- deceptively reading valid data from various buffers in the
- application and hardware stack:<br>
- <a rel="nofollow" target="_blank" href="https://blogs.msdn.microsoft.com/oldnewthing/20120919-00/?p=6563/">Does
- the CopyFile function verify that the data reached its final destination successfully?</a>
- </p>
-
- <p>
- <b>NotificationSound:</b><br>
- Select sound files from the FreeFileSync installation directory to be played after comparison or synchronization. Set empty names if no sound should be played.
- </p>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/external-applications.html b/FreeFileSync/Build/Help/html/external-applications.html
deleted file mode 100755
index cfe79d64..00000000
--- a/FreeFileSync/Build/Help/html/external-applications.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>External Applications</title>
-</head>
-
-<body>
- <h1>External Applications</h1>
-
- <p>
- When you double-click on one of the rows on the main dialog, FreeFileSync opens the operating system's file browser
- by default. On Windows, it calls <span class="command-line">explorer /select, &quot;%local_path%&quot;</span>, on
- Linux <span class="command-line">xdg-open &quot;%folder_path%&quot;</span> and on macOS <span class="command-line">open -R &quot;%local_path%&quot;</span>.
- To customize this behavior or integrate other external applications into FreeFileSync,
- navigate to <b>Menu &rarr; Tools &rarr; Options &rarr; Customize context menu</b> and add or replace a command.
- </p>
-
- <p>
- The <b>first entry</b> will be executed when <b>double-clicking</b> a row on the main grid or when pressing <b>ENTER</b>.
- All other entries can be accessed quickly by pressing the associated <b>numeric keys</b> or via the context menu that is shown after a right mouse click.
- </p>
-
- <p>
- In addition to regular <a href="macros.html">Macros</a>, the following special macros are available:
- </p>
-
- <div class="greybox">
- <table style="border-spacing:0;">
- <tr>
- <th>Macro</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><div class="command-line">%item_path%</div></td>
- <td>Full file or folder path</td>
- </tr>
- <tr>
- <td><div class="command-line">%folder_path%</div></td>
- <td>Parent folder path</td>
- </tr>
- <tr>
- <td><div class="command-line">%local_path%</div></td>
- <td>Creates a temporary local copy for files located on SFTP and MTP storage. Identical to %item_path% for files on local disks and network shares.</td>
- </tr>
- </table>
-
- <p>
- <b>Note:</b> To refer to the item on the opposite side, append "2" to the macro name: e.g.
- <span class="command-line">%item_path2%, %folder_path2%, %local_path2%</span>.
- </p>
-
- </div>
- <br>
-
- <h2>Examples:</h2>
-
- <ul>
- <li>Start file content comparison tool (WinMerge):<br>
- <div class="command-line">&quot;C:\Program Files (x86)\WinMerge\WinMergeU.exe&quot; &quot;%local_path%&quot; &quot;%local_path2%&quot;</div>
- <br>
- opendiff on macOS (requires Xcode):<br>
- <div class="command-line">opendiff &quot;%local_path%&quot; &quot;%local_path2%&quot;</div><br>
-
- <li>Show file in Windows Explorer:<br>
- <div class="command-line">explorer /select, &quot;%local_path%&quot;</div><br>
-
- <li>Open file with associated application:<br>
- <div class="command-line">&quot;%local_path%&quot;</div><br>
-
- <li>Open Command Prompt for selected item:<br>
- <div class="command-line">cmd /k cd /D &quot;%folder_path%&quot;</div><br>
-
- <li>Write list of selected file paths to a text file:<br>
- <div class="command-line">cmd /c echo %item_path% >> %csidl_Desktop%\file_list.txt</div><br>
-
- <li>Preview files using Quick Look on macOS:<br>
- <div class="command-line">qlmanage -p &quot;%local_path%&quot;</div>
- </ul>
-
- <div class="bluebox">
- <b>Note</b><br>
- Macros need to be protected with quotation marks if they can resolve to file paths containing whitespace characters.
- </div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/freefilesync.html b/FreeFileSync/Build/Help/html/freefilesync.html
deleted file mode 100755
index cd3d648a..00000000
--- a/FreeFileSync/Build/Help/html/freefilesync.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>FreeFileSync - Folder Comparison and Synchronization</title>
-</head>
-
-<body>
- <h1 style="text-align: center">
- <img src="../images/freefilesync-logo.png" alt="FreeFileSync"><br>
- <span style="font-weight: normal"><i>Folder Comparison and Synchronization</i></span>
- </h1>
-
- <h2>Basic usage:</h2>
-
- <ol>
- <li>Choose left and right folders.<br>
- <img src="../images/basic-step-choose-folders.png" class="screen-snippet" alt="Choose left and right directories">
-
- <li><b>Compare</b> them.<br>
- <img src="../images/basic-step-compare.png" class="screen-snippet" alt="Start comparison">
-
- <li>Select synchronization settings.<br>
- <img src="../images/basic-step-sync-config.png" class="screen-snippet" alt="Select synchronization settings">
-
- <li>Press <b>Synchronize</b> to begin synchronization.<br>
- <img src="../images/basic-step-start-sync.png" class="screen-snippet" alt="Press Synchronize to begin synchronization">
- </ol>
- <br>
-
- <h2>Main Dialog Overview</h2>
-
- <img style="float:left; margin-right:45px; margin-bottom:15px" src="../images/main-window.png" alt="FreeFileSync main window">
- <div style="display: inline-block; min-width: 150px">
- <ol>
- <li>Start comparison
- <li>Change comparison settings
- <li>Include/exclude specific files
- <li>Change synchronization settings
- <li>Start synchronization
- <li>Add folder pairs
- <li>Select left and right folders
- <li>Save/load configuration
- <li>Tree overview panel
- <li>Synchronization preview
- <li>Select categories to show on grid
- <li>Synchronization statistics
- </ol>
- </div>
- <div style="clear:both"></div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/ftp-setup.html b/FreeFileSync/Build/Help/html/ftp-setup.html
deleted file mode 100755
index e75c54d3..00000000
--- a/FreeFileSync/Build/Help/html/ftp-setup.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>SFTP and FTP Setup</title>
-</head>
-
-<body>
- <h1>SFTP and FTP Setup <span style="font-weight: normal">(Windows, macOS)</span></h1>
-
- <p>
- FreeFileSync supports synchronization with SFTP and FTP natively. Just enter your login information into the dialog shown for cloud folder selection:
- <img src="../images/sftp-cloud-picker.png" alt="Cloud folder button"><br>
- <br>
- <img src="../images/sftp-login.png" alt="Enter SFTP login data">
- </p>
-
- <div class="bluebox">
- <b>Note</b><br>In case the (S)FTP server sets file <b>modification times</b> to the <b>current time</b>
- you can do a <a href="comparison-settings.html">Compare by File Size</a> as a workaround.
- Another solution is to set up the <i>Two way</i> variant and have the files with the newer dates
- be copied back from the server during the next synchronization.
- </div>
- <br>
-
- <h2>Configure SFTP for best performance</h2>
- <p>
- By default, FreeFileSync creates one connection to the server and uses one SFTP channel, i.e. only a single SFTP command can be sent and received at a time.
- Since most of this time is spent waiting due to the high latency of the remote connection, you can speed up reading large folder hierarchies
- by increasing both the connection and channel count.<br>
- <br>
- <em>The folder reading time is reduced by a factor of <b>N</b> x <b>M</b> when using N connections with M channels each.</em>
- </p>
-
- <b>Example</b>: 10 connections using 2 channels each can yield a <b>20</b> times faster folder reading.<br>
-
- <div class="half-line">&nbsp;</div>
- <img src="../images/sftp-performance.png" class="screen-snippet" alt="Set up SFTP for best performance">
- <div class="half-line">&nbsp;</div>
-
- <ul style="margin: 0">
- <li>The creation of additional connections and channels takes time. If you are only scanning a small remote folder,
- setting up too many connections and channels might actually slow the overall process down.
- Creating extra connections is slower than creating extra channels.<br>&nbsp;
-
- <li>SFTP servers have internal limits on the number of allowed connections and channels.
- Generally, servers expect one connection per user, so this number should be kept rather low.
- If too many connections and channels are used, the server may decide to stop responding.<br>&nbsp;
-
- <li>Unlike connections, additional SFTP channels are (currently) only used during folder reading (comparison), but not during synchronization.
- </ul>
- <br>
- <div class="bluebox">
- <b>Advice</b><br>Start with low numbers and make tests with different combinations of connections and channels for your
- particular SFTP synchronization scenario to see what gives the highest speed.
- Note, however, that FreeFileSync <b>reuses existing</b> SFTP connections/channels.
- Therefore, you should <b>restart</b> FreeFileSync before measuring SFTP speed.
- </div>
- <br>
-
- <h1>SFTP Setup <span style="font-weight: normal">(Linux)</span></h1>
-
- <p>An SFTP share can be mapped to a local folder for use with FreeFileSync:</p>
-
- <div class="greybox">
- <ul style="margin: 0">
- <li>Install:
- <div class="command-line">sudo apt-get install sshfs</div><br>
-
- <li>Mount SFTP share:
- <div class="command-line">sshfs ssh-account@ssh-server:&lt;path&gt; mountpoint</div><br>
-
- <li>Unmount:<br>
- <div class="command-line">fusermount -u mountpoint</div>
- </ul>
- </div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/macros.html b/FreeFileSync/Build/Help/html/macros.html
deleted file mode 100755
index b173aeb4..00000000
--- a/FreeFileSync/Build/Help/html/macros.html
+++ /dev/null
@@ -1,238 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Macros</title>
-</head>
-
-<body>
- <h1>Macros</h1>
-
- <p>
- All directory paths may contain macros that are expanded during
- synchronization. The beginnings and ends of each macro are marked by a <b>%</b> character. In addition to special macros
- handling time and date, the <b>operating system's environment variables</b> may also be used.
- <br><br>
- </p>
-
- <h2>Internal macros</h2>
-
- <div class="greybox">
- <table style="border-spacing:0;">
- <tr>
- <th>Macro</th>
- <th>Example</th>
- </tr>
- <tr>
- <td><span class="command-line">%date%</span></td>
- <td><span class="file-path">2016-12-31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>format: [YYYY-MM-DD]</td>
- </tr>
- <tr>
- <td><span class="command-line">%time%</span></td>
- <td><span class="file-path">112233&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>format: [hhmmss]</td>
- </tr>
- <tr>
- <td><span class="command-line">%timestamp%</span></td>
- <td><span class="file-path">2016-12-31 112233&nbsp;</span>format: [YYYY-MM-DD hhmmss]</td>
- </tr>
- <tr><td>&nbsp;</td><td>&nbsp;</td></tr>
- <tr>
- <td><span class="command-line">%year%</span></td>
- <td><span class="file-path">2016</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%month%</span></td>
- <td><span class="file-path">12</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%day%</span></td>
- <td><span class="file-path">31</span></td>
- </tr>
- <tr><td>&nbsp;</td><td>&nbsp;</td></tr>
- <tr>
- <td><span class="command-line">%hour%</span></td>
- <td><span class="file-path">11</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%min%</span></td>
- <td><span class="file-path">22</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%sec%</span></td>
- <td><span class="file-path">33</span></td>
- </tr>
- <tr><td>&nbsp;</td><td>&nbsp;</td></tr>
- <tr>
- <td><span class="command-line">%weekday%</span></td>
- <td><span class="file-path">Monday&nbsp;</span>(day of the week)</td>
- </tr>
-
- <tr>
- <td><span class="command-line">%week%</span></td>
- <td><span class="file-path">52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>(calendar week)</td>
- </tr>
- </table>
- </div>
- <br>
-
- <h2>Environment variables<span style="font-weight: normal"> (Windows)</span></h2>
-
- <div class="greybox">
- <table style="border-spacing:0;">
- <tr>
- <th>Macro</th>
- <th>Example</th>
- </tr>
- <tr>
- <td><span class="command-line">%AllUsersProfile%</span></td>
- <td><span class="file-path">C:\ProgramData</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%AppData%</span></td>
- <td><span class="file-path">C:\Users\Zenju\AppData\Roaming</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%ComputerName%</span></td>
- <td><span class="file-path">Zenju-PC</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%LocalAppData%</span></td>
- <td><span class="file-path">C:\Users\Zenju\AppData\Local</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%ProgramData%</span></td>
- <td><span class="file-path">C:\ProgramData</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%ProgramFiles%</span></td>
- <td><span class="file-path">C:\Program Files</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%ProgramFiles(x86)%</span></td>
- <td><span class="file-path">C:\Program Files (x86)</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%Public%</span></td>
- <td><span class="file-path">C:\Users\Public</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%Temp%</span></td>
- <td><span class="file-path">C:\Windows\Temp</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%UserName%</span></td>
- <td><span class="file-path">Zenju</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%UserProfile%</span></td>
- <td><span class="file-path">C:\Users\Zenju</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%WinDir%</span></td>
- <td><span class="file-path">C:\Windows</span></td>
- </tr>
- </table>
- </div>
- <br>
-
- <h2>Special folder locations<span style="font-weight: normal"> (Windows)</span></h2>
-
- <div class="greybox">
- <table style="border-spacing:0;">
- <tr>
- <th>Macro</th>
- <th>Example</th>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Desktop%</span></td>
- <td><span class="file-path">C:\Users\Zenju\Desktop</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Documents%</span></td>
- <td><span class="file-path">C:\Users\Zenju\Documents</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Pictures%</span></td>
- <td><span class="file-path">C:\Users\Zenju\Pictures</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Music%</span></td>
- <td><span class="file-path">C:\Users\Zenju\Music</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Videos%</span></td>
- <td><span class="file-path">C:\Users\Zenju\Videos</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Downloads%</span></td>
- <td><span class="file-path">C:\Users\Zenju\Downloads</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Favorites%</span></td>
- <td><span class="file-path">C:\Users\Zenju\Favorites</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Resources%</span></td>
- <td><span class="file-path">C:\Windows\Resources</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Quicklaunch%</span></td>
- <td><span class="file-path">C:\Users\Zenju\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_StartMenu%</span></td>
- <td><span class="file-path">C:\Users\Zenju\AppData\Roaming\Microsoft\Windows\Start Menu</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Programs%</span></td>
- <td><span class="file-path">C:\Users\Zenju\AppData\Roaming\Microsoft\Windows\Start Menu\Programs</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Startup%</span></td>
- <td><span class="file-path">C:\Users\Zenju\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartUp</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Nethood%</span></td>
- <td><span class="file-path">C:\Users\Zenju\AppData\Roaming\Microsoft\Windows\Network Shortcuts</span></td>
- </tr>
- <tr>
- <td><span class="command-line">%csidl_Templates%</span></td>
- <td><span class="file-path">C:\Users\Zenju\AppData\Roaming\Microsoft\Windows\Templates</span></td>
- </tr>
- </table>
-
- <p>
- <b>Note:</b> Most macros listed here also have a variant for public folders, e.g.
- <span class="command-line">%csidl_Documents%</span> has <span class="command-line">%csidl_PublicDocuments%</span>.
- </p>
- </div>
- <br>
-
- <p>
- <b>Hint:</b> You can add a flexibility to an ffs_batch configuration file
- by creating new temporary environment variables in a bat or cmd file that are evaluated by FreeFileSync at runtime:
- <br><br>
- </p>
-
- <h2>Example:</h2>
- <p>
- The FreeFileSync batch file <span class="file-path">C:\SyncJob.ffs_batch</span> contains
- macro <span class="command-line">%MyVar%</span> instead of an absolute target folder and is invoked by a cmd file:
- </p>
-
- <div class="greybox">
- <div class="command-line">set MyVar=C:\Target<br>
- &quot;C:\Program files\FreeFileSync\FreeFileSync.exe&quot; C:\SyncJob.ffs_batch<br>
- <div class="command-line-comment">::%MyVar% is resolved as C:\Target during synchronization</div>
- </div>
- </div>
- <br>
-
- <div class="bluebox">
- <b>Note</b><br>
- Temporary environment variables created with the <span class="command-line">set</span> command are only valid if the synchronization is started by calling the
- FreeFileSync executable directly. Using <span class="command-line">start /wait</span> would create a new program context without these temporary variables.
- </div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/performance.html b/FreeFileSync/Build/Help/html/performance.html
deleted file mode 100755
index 69922c12..00000000
--- a/FreeFileSync/Build/Help/html/performance.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Performance Improvements</title>
-</head>
-
-<body>
- <h1>Performance Improvements</h1>
-
- <p>
- <img src="../images/performance.png" class="screen-snippet" alt="Performance settings" style="float:right; margin-left: 10px;">
- FreeFileSync can be set up to issue multiple file accesses
- in parallel. This speeds up synchronization times dramatically in
- cases where single I/O operations have significant latency
- (e.g. long response times on a slow network connection)
- or they cannot use the full bandwidth available
- (e.g. an SFTP server that has a speed limit for each connection).<br>
- <br>
- The number of parallel file operations that FreeFileSync should use
- can be set up for each device individually
- in the <b>Comparison Settings</b> dialog.
- It is evaluated for all folder pairs of a configuration as follows:
- </p>
- <ul>
- <li><b>During comparison</b> FreeFileSync groups all folders by their root devices.<br>
- <div class="half-line">&nbsp;</div>
- For example, consider a configuration with two folder pairs and parallel file operations set up:
-
- <div style="background-color: #eee; border: 1px solid #ccc; padding: 5px 10px; margin: .5em 0;">
- <table style="border-spacing:0; display: inline-block; vertical-align: middle;">
- <tr><td><span class="file-path">C:\Source </span></td> <td>&harr;</td> <td><span class="file-path">D:\Target</span></td></tr>
- <tr><td><span class="file-path">C:\Source2</span></td> <td>&harr;</td> <td><span class="file-path">E:\Target</span></td></tr>
- </table>
- <table style="border-spacing:0; text-align: center; display: inline-block; vertical-align: middle;">
- <tr>
- <td style="font-style: italic;">Parallel operations</td>
- <td style="font-style: italic;">Device root</td>
- </tr>
- <tr><td>1</td> <td><span class="file-path">C:\</span></td></tr>
- <tr><td>2</td> <td><span class="file-path">D:\</span></td></tr>
- <tr><td>3</td> <td><span class="file-path">E:\</span></td></tr>
- </table>
- </div>
-
- FreeFileSync will put the folders <span class="file-path">C:\Source</span> and
- <span class="file-path">C:\Source2</span>
- into the same group and allow only 1 file operation at a time.
- Folder <span class="file-path">D:\Target</span> will be traversed using 2 operations,
- and <span class="file-path">E:\Target</span> using 3 operations at a time.
- In total FreeFileSync will be scanning all four folders
- employing 6 file operations in parallel.<br>
- <br>
-
- <li><b>When synchronizing</b> a folder pair FreeFileSync
- will use the <b>maximum</b> of the number of parallel operations
- that the two folders support.<br>
- <br>
- In the previous example the folder pair
- <span class="file-path">C:\Source</span> &harr; <span class="file-path">D:\Target</span>
- will be synchronized using 2 parallel operations, and
- <span class="file-path">C:\Source2</span> &harr; <span class="file-path">E:\target</span>
- will be using 3.
- </ul>
- <div class="bluebox">
- <b>Note</b><br>
- FreeFileSync implements parallel file operations by opening multiple connections to a device.
- Some devices like SFTP servers have limits on how many connections they allow and will
- fail if too many are attempted; see <a href="ftp-setup.html">(S)FTP Setup</a>.
- </div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/realtimesync.html b/FreeFileSync/Build/Help/html/realtimesync.html
deleted file mode 100755
index 325316b3..00000000
--- a/FreeFileSync/Build/Help/html/realtimesync.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>RealTimeSync - Automated Synchronization</title>
-</head>
-
-<body>
- <h1 style="text-align: center">
- <img src="../images/realtimesync-logo.png" alt="RealTimeSync"><br>
- <i><span style="font-weight: normal">Automated Synchronization</span></i>
- </h1>
-
- <p>
- The primary function of RealTimeSync is to execute a command line each time it <b>detects changes</b> in one of the monitored directories,
- or when a <b>directory becomes available</b> (e. g. insert of a USB-stick). Usually this command line will trigger a FreeFileSync batch job.<br>
- <br>
-
- RealTimeSync will register to receive change notifications directly from the operating system in order to avoid the overhead of
- repeatedly polling for changes.
- Each time a file or folder is created/updated/deleted in the monitored directories or their sub directories, RealTimeSync will run the command line.
- <br><br>
- </p>
-
- <h2>Example: <span style="font-weight:normal">Real time synchronization - in combination with FreeFileSync</span></h2>
- <p>
- Start RealTimeSync.exe located in FreeFileSync's installation directory and
- enter the folders you want to monitor. Instead of doing this manually you can import an ffs_batch
- file via <b>Menu &rarr; File &rarr; Open</b> or simply via <b>drag and drop</b>.
- RealTimeSync will not only extract all directories relevant for synchronization,
- but will also set up the command line to execute the ffs_batch file each time changes are detected.
- Now press <b>Start</b> to begin monitoring.
- </p>
- <div style="margin-left: 1.3cm">
- <img src="../images/realtimesync-main-window.png" alt="RealTimeSync main window">
- </div>
- <br>
-
- <div class="bluebox">
- <b>Note</b>
- <ul style="margin: 0">
- <li>The command should <b>not</b> <b>block</b> progress. If you call a FreeFileSync batch job,
- make sure it won't show any popup dialogs. See notes in <a href="command-line.html">Command Line Usage</a>.
- <br>&nbsp;
-
- <li>RealTimeSync will skip showing the main dialog and begin monitoring immediately if
- you pass an ffs_real configuration file <b>or</b> a FreeFileSync ffs_batch file as the first
- command line argument to RealTimeSync.exe. This can be used to integrate RealTimeSync into the operating system's auto start:<br>
- <div class="command-line">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;C:\Program Files\FreeFileSync\RealTimeSync.exe&quot; &quot;D:\Backup Projects.ffs_real&quot;</div>
- <div class="command-line">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;C:\Program Files\FreeFileSync\RealTimeSync.exe&quot; &quot;D:\Backup Projects.ffs_batch&quot;</div>
- <br>
-
- <li>RealTimeSync does not require to start FreeFileSync. It can also be used in other scenarios, like sending an email whenever a certain directory is modified.
- </ul>
- </div>
- <br>
-
- <h2>Example: <span style="font-weight:normal">Automatic synchronization when a USB stick is inserted</span></h2>
- <p>
- Save an ffs_batch configuration in the USB stick's root directory,
- e.g. <span class="file-path">H:\</span> and let FreeFileSync run it when the stick is mounted.
- But, instead of hard coding the USB drive letter <span class="file-path">H:\</span> (which may change occasionally),
- refer to the USB stick via its <a href="variable-drive-letters.html">volume name</a> instead.<br>
- <br>
- Configure RealTimeSync as follows:<br>
- </p>
- <div style="display:inline-block; margin-left: 1.3cm; text-align: center;">
- <img src="../images/realtimesync-monitor-usb.png" alt="Monitor USB stick insert"><br>
-
- <i>"Backup" is the volume name of the USB stick in our example.</i>
- </div>
-
- <p>
- Whenever directory <span class="file-path">H:\Data</span> becomes available, RealTimeSync executes the command line which starts the batch job located
- on the stick. RealTimeSync will also trigger each time files are modified in <span class="file-path">H:\Data</span>.
- </p>
-
- <div class="bluebox">
- <b>Note</b><br>
- The full path of the last changed file and the action that triggered the
- change notification (create, update or delete) are written
- to the environment variables <b><span class="command-line">%change_path%</span></b> and <b><span class="command-line">%change_action%</span></b>.
- </div>
- <br>
-
- <h2>Example: <span style="font-weight:normal">Log names of changed files and directories (Windows)</span></h2>
- <div class="greybox">
- Show which file or directory has triggered a change. Enter command line:<br>
- <div class="command-line">
- &nbsp;&nbsp;&nbsp;&nbsp;cmd /c echo %change_action% &quot;%change_path%&quot; &amp; pause
- </div>
- <br>
-
- Write a list of all changes to a log file:<br>
- <div class="command-line">
- &nbsp;&nbsp;&nbsp;&nbsp;cmd /c echo %change_action% &quot;%change_path%&quot; &gt;&gt; %csidl_Desktop%\log.txt
- </div>
- </div>
- <br>
- <div class="bluebox">
- <b>Note</b><br>
- When RealTimeSync executes a Windows batch file (bat or cmd) a black console window is shown. You can hide it using the Visual Basic script
- <span class="file-path">HideConsole.vbs</span> located in FreeFileSync's installation directory:
- <br><br>
- <div class="command-line">wscript &quot;C:\Program files\FreeFileSync\HideConsole.vbs&quot; C:\MyBatchFile.cmd</div>
- </div>
- <br>
-
- <h2>Limitations:</h2>
- <ul>
- <li>If multiple changes happen at the same time, only the path of the first file is written to variable <b><span class="command-line">%changed_file%</span></b>.
- <li>While RealTimeSync is executing the command line, monitoring for changed files is deliberately inactive.
- </ul>
- <p>
- The command line usually starts a synchronization task using FreeFileSync which naturally leads to additional file change notifications.
- Therefore, the RealTimeSync change detection has to be deactivated to not go into an endless loop.
- On the other hand, it is not likely that changes (other than those from FreeFileSync) happen in first place since RealTimeSync runs the command line only after the user-specified idle time has passed.
- This makes sure the monitored folders are not in heavy use. In any case, files changed during the execution of FreeFileSync will be synchronized the next time FreeFileSync runs.
- </p>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/run-as-service.html b/FreeFileSync/Build/Help/html/run-as-service.html
deleted file mode 100755
index 165ed84b..00000000
--- a/FreeFileSync/Build/Help/html/run-as-service.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Run as Service</title>
-</head>
-
-<body>
- <h1>Run as Service <span style="font-weight: normal">(Windows)</span></h1>
-
- <p>
- RealTimeSync is designed to run as a background process which does not need further attention.
- Depending on your requirements, there are a number of ways to start it automatically.
- Generally, the goal is to execute a command line of the form:
- </p>
-
- <div class="greybox">
- <div class="command-line">&lt;FreeFileSync installation folder&gt;\RealTimeSync.exe &lt;path to *.ffs_real or *.ffs_batch file&gt;</div>
- </div>
- <br>
-
- <h2>Example:</h2>
-
- <div class="greybox">
- <div class="command-line">&quot;C:\Program Files\FreeFileSync\RealTimeSync.exe&quot; &quot;D:\Backup Projects.ffs_real&quot;</div>
- </div>
- <br>
-
- <ol>
- <li><p>
- RealTimeSync should start monitoring when a user logs in:<br>
- Create a new shortcut, enter the command line from above as target and place it into the Windows autostart folder.
- (Enter <span class="command-line"><b>shell:startup</b></span> in the Windows Explorer address bar to find the folder quickly.)
-
- </p>
- <img src="../images/realtimesync-create-shortcut.png" alt="Create shortcut"><br><br>
- <img src="../images/realtimesync-shortcut-properties.png" alt="Shortcut properties">
- <br>&nbsp;
-
- <li><p>
- RealTimeSync should be monitoring while Windows is running, irrespective of currently logged in users:<br>
- Create a new task in your operating systems's task scheduler and have it execute the command line above when the system starts.
- See <a href="schedule-batch-jobs.html">Schedule Batch Jobs</a> for an example of how to add a task. Then change
- the user which runs the task to <b>SYSTEM</b> - a special user account always running in the background.
- </p>
- <img src="../images/realtimesync-schedule.png" alt="Schedule RealTimeSync">
- </ol>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/schedule-batch-jobs.html b/FreeFileSync/Build/Help/html/schedule-batch-jobs.html
deleted file mode 100755
index 4a836801..00000000
--- a/FreeFileSync/Build/Help/html/schedule-batch-jobs.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Schedule Batch Jobs</title>
-</head>
-
-<body>
- <h1>Schedule Batch Jobs</h1>
-
- <ol>
- <li>Create a new batch job via FreeFileSync's main dialog: <b>Menu &rarr; File &rarr; Save as a batch job...</b><br>&nbsp;
- <br>
- <img src="../images/setup-batch-job.png" alt="Setup a FreeFileSync batch job">
- <br><br>
-
-
- <li>By default, FreeFileSync will show a progress dialog during synchronization and will wait while the summary dialog is shown.
- If the progress dialog is not needed, enable checkbox <b>Run minimized</b> and
- also set <b>Auto-Close</b> if you want to skip the summary dialog at the end.
- <br><br>
-
- <div class="bluebox">
- <b>Note</b><br>
- Even if the progress dialog is not shown at the beginning, you can make it visible at any time <b>during</b>
- synchronization by double-clicking the FreeFileSync icon in the notification area.
- </div>
- <br>
-
- <li>If you don't want error or warning messages to stall synchronization when no user is available to respond,
- either check <b>Ignore errors</b> or set <b>Cancel</b> to stop the synchronization at the first error.<br>
- &nbsp;
-
- <li>Set up the FreeFileSync batch job in your operating system's scheduler:<br>
- </ol>
-
- <br>
- <hr/>
-
- <h2>A. Windows Task Scheduler:</h2>
- <ul>
- <li>Open the Task Scheduler either via the start menu, or enter <span class="command-line"><b>taskschd.msc</b></span> in the run dialog (keyboard shortcut: Windows + R).
-
- <li>Create a new <b>basic task</b> and follow the wizard.
-
- <li>Make <b>Program/script</b> point to the location of FreeFileSync.exe and insert the ffs_batch file into <b>Add arguments</b>.
-
- <li>Use quotation marks to protect spaces in path names, e.g. <span class="file-path">&quot;D:\Backup Projects.ffs_batch&quot;</span><br>
- <br>
- <img src="../images/windows-scheduler.png" alt="Windows Task Scheduler">
- </ul>
-
- <div class="bluebox">
- <b>Note</b><br>
- <ul>
- <li>In Windows 7 <i>Program/script</i> always needs to point to an executable file like FreeFileSync.exe even
- when the ffs_batch file association is registered. If an ffs_batch file was entered instead, the task would return with
- error code 2147942593 (0x800700C1), &quot;%1 is not a valid Win32 application&quot;.<br>
- For Windows 8 and later this limitation does not apply and you may enter the ffs_batch file path directly into <i>Program/script</i> and leave out <i>Add arguments</i>.
-
- <li>If you schedule FreeFileSync to run under a different user account, note that settings (e.g. <span class="file-path">GlobalSettings.xml</span>)
- will also be read from a different path, <span class="file-path">C:\Users\&lt;username&gt;\AppData\Roaming\FreeFileSync</span>, or in the case of the SYSTEM account from
- <span class="file-path">C:\Windows\System32\config\systemprofile\AppData\Roaming\FreeFileSync</span>.
- </ul>
- </div>
- <br>
-
- <hr/>
-
- <h2>B. macOS Automator and Calendar:</h2>
- <ul>
- <li>Open Launchpad and run <b>Automator</b>.<br>
- <img src="../images/launch-automator.png" class="screen-snippet" alt="Launch macOS Automator"><br>&nbsp;
-
- <li>Create a new <b>Calendar Alarm</b>.<br>
- <img src="../images/new-calendar-alarm.png" alt="Create Calendar Alarm"><br>&nbsp;
-
- <li>Drag and drop the ffs_batch file on the workflow panel.<br>
- <img src="../images/automator-file-dropped.png" class="screen-snippet" alt="Drop FreeFileSync batch file in Automator"><br>&nbsp;
-
- <li>Drag and drop action <i>Files & Folders/Open Finder Items</i> and add it to the workflow.<br>
- <img src="../images/open-finder-items.png" alt="Add open Finder items"><br>&nbsp;
-
- <li>Go to <b>File &rarr; Save...</b> and save the Automator job.<br>
- <img src="../images/save-automator.png" class="screen-snippet" alt="Save Automator job"><br>&nbsp;
-
- <li>The Calendar app will start automatically with the Automator job scheduled to the current day. You can now select a different time for synchronization or make it a recurring task.<br>
- <img src="../images/calendar-job-added.png" class="screen-snippet" alt="Edit batch job in Calendar"><br>&nbsp;
- </ul>
- <hr/>
-
- <h2>C. Windows XP Scheduled Tasks:</h2>
- <ul>
- <li>Go to <b>Start &rarr; Control Panel &rarr; Scheduled Tasks</b> and select <b>Add Scheduled Task</b>.
-
- <li>Follow the wizard and select <span class="file-path">FreeFileSync.exe</span> as program to run.
-
- <li>Fill the input field <b>Run:</b>
- <span class="command-line">&lt;FreeFileSync installation folder&gt;\FreeFileSync.exe &lt;job name&gt;.ffs_batch</span><br>
- <br>
- <img src="../images/xp-scheduler.png" alt="Windows XP Task Scheduler"><br>&nbsp;
- </ul>
- <hr/>
-
- <h2>D. Ubuntu Linux Gnome Scheduled Tasks:</h2>
- <ul>
- <li>Install Gnome-schedule if necessary: <span class="command-line">sudo apt-get install gnome-schedule</span>
-
- <li>Search the Ubuntu Unity Dash for <b>Scheduled tasks</b>
-
- <li>Enter the command:
- <span class="command-line">&lt;FreeFileSync installation folder&gt;/FreeFileSync &lt;job name&gt;.ffs_batch</span><br>
-
- <li>Select <b>X application</b> since FreeFileSync requires access to GUI
- <br>
- <img src="../images/gnome-scheduler.png" class="screen-snippet" alt="Gnome Scheduler">
- </ul>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/synchronization-settings.html b/FreeFileSync/Build/Help/html/synchronization-settings.html
deleted file mode 100755
index 0f4f4fe7..00000000
--- a/FreeFileSync/Build/Help/html/synchronization-settings.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Synchronization Settings</title>
-</head>
-
-<body>
- <h1>Synchronization Settings</h1>
- <p>
- <img src="../images/synchronization-settings.png" alt="Synchronization settings dialog">
- <br><br>
- </p>
-
- <h2>Detect Moved Files</h2>
- <p>
- FreeFileSync is able to detect moved files on one side and can quickly apply the same move on the target side during
- synchronization instead of a slow copy and delete. To make this work, FreeFileSync requires database files (sync.ffs_db)
- to compare the current file system state against the time of the last synchronization.
- </p>
- <p>
- The <i>Two way</i> variant already creates database files, therefore, detection of moved files is always active.<br>
- The <i>Mirror</i> variant however, does not need the database files to find synchronization directions, so detection of moved files
- is not available by default. If you don't mind the creation of the database files, you can enable this feature by
- selecting the <b>Detect moved files</b> checkbox.
- </p>
-
- <div class="bluebox">
- <b>Note</b>
- <ul style="margin: 0">
- <li>Detection of moved files is not yet possible when synchronizing a folder pair for the first time. Only beginning with the <b>second sync</b>
- the database files are available to determine moved files.
- <li>Detection is not supported by all file systems. Most notably, certain file moves on the FAT file system cannot be detected.
- Also virtualized file systems, e.g. a mounted WebDAV drive, might not support move detection. In these cases FreeFileSync will automatically fall back to copy and delete.
- </ul>
- </div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/tips-and-tricks.html b/FreeFileSync/Build/Help/html/tips-and-tricks.html
deleted file mode 100755
index 838ae087..00000000
--- a/FreeFileSync/Build/Help/html/tips-and-tricks.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Tips and Tricks</title>
-</head>
-
-<body>
- <h1>Tips and Tricks</h1>
-
- <div class="tip" id="single-click-settings-change">
- Change settings with a single mouse click: Press and hold the right mouse button until the context menu is shown, then release while over the selection:
- </div>
- <img style="vertical-align: top;" src="../images/com-settings-context.png" class="screen-snippet" alt="Comparison settings context menu">
- <img style="vertical-align: top;" src="../images/filter-context.png" class="screen-snippet" alt="Filter context menu">
- <img style="vertical-align: top;" src="../images/sync-settings-context.png" class="screen-snippet" alt="Synchronization settings context menu"><br>
- <div class="separation_line"></div>
-
- <div class="tip" id="select-multiple-configurations">
- Select multiple configurations at a time:
- </div>
- <img style="float:left; margin-right:10px" src="../images/config-multiple-selection.png" class="screen-snippet" alt="Select multiple configurations">
- Select a few items via mouse, and refine the selection by holding the Control key while clicking.<br>
- <div style="clear:both"></div>
- <div class="separation_line"></div>
-
- <div class="tip" id="start-comparison-directly">
- Start comparison directly by double-clicking on a configuration:
- </div>
- <img src="../images/config-double-click.png" class="screen-snippet" alt="Double-click on configuration">
- <div class="separation_line"></div>
-
- <div class="tip" id="sync-multiple-folders">
- Synchronize multiple folder pairs at a time with different configurations:
- </div>
- <img src="../images/add-folder-pair.png" class="screen-snippet" alt="Add folder pair">
- <div class="separation_line"></div>
-
- <div class="tip" id="start-sync-directly">
- Start synchronization directly without clicking on compare first:
- </div>
- <img src="../images/direct-synchronize.png" class="screen-snippet" alt="Start synchronization directly">
- <div class="separation_line"></div>
-
- <div class="tip" id="mouse-window-drag">
- Move a window by clicking on a free area and holding the mouse button:
- </div>
- <img src="../images/dialog-drag-move.png" class="screen-snippet" alt="Move dialog via mouse">
- <div class="separation_line"></div>
-
- <div class="tip" id="open-config-from-explorer">
- Open a batch configuration for edit via the Windows Explorer context menu:
- </div>
- <img src="../images/explorer-context.png" class="screen-snippet" alt="Explorer context menu">
- <div class="separation_line"></div>
-
- <div class="tip" id="two-folder-drop">
- Drag and drop two folders at a time from Windows Explorer to fill a folder pair in one go:
- </div>
- <img src="../images/two-folder-drop.png" class="screen-snippet" alt="Two-folder drop">
- <div class="separation_line"></div>
-
- <div class="tip" id="copy-to-alternate-folder">
- Copy files selected on the main dialog to an alternate folder and thereby save a "diff":
- </div>
- <img src="../images/copy-alternative-path.png" class="screen-snippet" alt="Copy to alternative path">
- <div class="separation_line"></div>
-
- <div class="tip" id="variable-drive-letter">
- Use a volume name instead of a drive letter:
- </div>
- <img src="../images/path-by-volume-name.png" class="screen-snippet" alt="Drive letter by volume name">
- <div class="separation_line"></div>
-
- <div class="tip" id="show-thumbnails">
- Show thumbnail icons via the column header context menu:
- </div>
- <img src="../images/show-thumbnails.png" class="screen-snippet" alt="Show thumbnail icons">
- <div class="separation_line"></div>
-
- <div class="tip" id="save-view-filter">
- Save the current view filter selection as default:
- </div>
- <img src="../images/view-filter-default.png" class="screen-snippet" alt="Save view filter settings">
- <div class="separation_line"></div>
-
- <div class="tip" id="remove-local-settings">
- Remove local settings from individual folder pairs:
- </div>
- <img src="../images/remove-local-settings.png" class="screen-snippet" alt="Remove local settings">
- <div class="separation_line"></div>
-
- <div class="tip" id="remove-obsolete-paths">
- Remove obsolete paths from the folder drop-down list by pressing the Delete key:
- </div>
- <img src="../images/remove-drop-down-path.png" class="screen-snippet" alt="Remove drop-down path">
- <div class="separation_line"></div>
-
- <div class="tip" id="select-time-span">
- Select a time span for files to include via the date column context menu:
- </div>
- <img src="../images/select-time-span.png" class="screen-snippet" alt="Select time span">
- <div class="separation_line"></div>
-
- <div class="tip" id="double-click-dialog-confirm">
- Double-click on comparison and synchronization variants to confirm the dialog:
- </div>
- <img src="../images/comparison-variant-double-click.png" class="screen-snippet" alt="Double-click comparison variant">
- <img src="../images/synchronization-variant-double-click.png" class="screen-snippet" alt="Double-click synchronization variant">
- <br>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/variable-drive-letters.html b/FreeFileSync/Build/Help/html/variable-drive-letters.html
deleted file mode 100755
index 008b32c4..00000000
--- a/FreeFileSync/Build/Help/html/variable-drive-letters.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Variable Drive Letters</title>
-</head>
-
-<body>
- <h1>Variable Drive Letters</h1>
-
- <p>
- USB memory sticks or external hard disks often get different
- drive letters assigned when plugged into distinct computers. FreeFileSync
- offers two solutions to handle this problem:
- </p>
-
- <p><b>Option 1: </b>Specify a folder path by using the volume name:</p>
-
- <div class="greybox">
- Enter the path as <span class="file-path">[USB-NAME]\folder</span> instead of <span class="file-path">E:\folder</span> where USB-NAME
- is the volume name of the USB stick which is currently mounted in drive <span class="file-path">E:\</span>.
- </div>
- <br>
-
- <div class="bluebox">
- <b>Note</b><br>
- It is not required to look up and enter the volume name manually. Just select the corresponding entry in the drop down menu.<br>
- <img src="../images/path-by-volume-name.png" class="screen-snippet" alt="Drive letter by volume name">
- </div>
- <br>
-
- <p><b>Option 2: </b>Use a relative directory name:</p>
-
- <div class="greybox">
- <ul style="margin: 0">
- <li>Use <span class="file-path">\folder</span> instead of <span class="file-path">E:\folder</span>
-
- <li>Save and copy synchronization settings to the USB stick: <span class="file-path">E:\Backup.ffs_gui</span>
-
- <li>Start FreeFileSync by double-clicking on <span class="file-path">E:\Backup.ffs_gui</span><br>
- </ul>
- <br>
- The working directory is then automatically set to <span class="file-path">E:\</span> by the operating system so that the
- relative path <span class="file-path">\folder</span> will be resolved as <span class="file-path">E:\folder</span> during synchronization.
- </div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/versioning.html b/FreeFileSync/Build/Help/html/versioning.html
deleted file mode 100755
index 71ecff49..00000000
--- a/FreeFileSync/Build/Help/html/versioning.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>File Versioning</title>
-</head>
-
-<body>
- <h1>File Versioning</h1>
- <p>
- When you need to preserve files that have been deleted or overwritten,
- it's often sufficient to select <b>Recycle bin</b> in synchronization
- settings. However, this is only available for local drives and offers
- little control on how to store and how long to keep the files.
- FreeFileSync therefore has an additional option, <b>Versioning</b>.
- <br><br>
- </p>
-
- <h2>1. Keep only the most recent versions</h2>
- <p>
- In synchronization settings, set deletion handling to <b>Versioning</b> and naming convention to
- <b>Replace</b>. Deleted files will be moved to the specified folder
- without any decoration and will replace already existing older
- versions.<br>
- <img src="../images/versioning.png" class="screen-snippet" alt="Versioning">
- <br><br>
- </p>
-
- <h2>2. Keep multiple versions of old files</h2>
- <ol type="A">
- <li><p>
- Set deletion handling to <b>Versioning</b>
- and naming convention to <b>Time stamp [File]</b>. FreeFileSync will move
- deleted files into the provided folder and add a time stamp to each
- file name. The structure of the synchronized folders is preserved so
- that old versions of a file can be conveniently accessed via a file
- browser.
- </p>
- <p><b>Example:</b> Last versions of the file <span class="file-path">Folder\File.txt</span> inside folder <span class="file-path">D:\Revisions</span> </p>
- <div class="greybox">
- <div class="file-path">
- D:\Revisions\Folder\File.txt <b>2012-12-12 111111</b>.txt<br>
- D:\Revisions\Folder\File.txt <b>2012-12-12 122222</b>.txt<br>
- D:\Revisions\Folder\File.txt <b>2012-12-12 133333</b>.txt
- </div>
- </div>
- <br>
-
- <li><p>
- With naming convention <b>Time stamp [Folder]</b> files are moved into a time-stamped subfolder
- of the versioning folder while their names remain unchanged.
- This makes it easy to manually undo a synchronization by moving the deleted files from the
- versioning folder back to their original folders.
- </p>
- <p><b>Example:</b> Last versions of the file <span class="file-path">Folder\File.txt</span> inside folder <span class="file-path">D:\Revisions</span> </p>
- <div class="greybox">
- <div class="file-path">
- D:\Revisions\<b>2012-12-12 111111</b>\Folder\File.txt<br>
- D:\Revisions\<b>2012-12-12 122222</b>\Folder\File.txt<br>
- D:\Revisions\<b>2012-12-12 133333</b>\Folder\File.txt
- </div>
- </div>
- </ol>
- <br>
-
- <h2>3. Save versions at certain intervals</h2>
- <p>
- With naming convention <b>Replace</b>
- it is possible to refine the granularity of versions to keep by adding <a href="macros.html">Macros</a>
- to the versioning folder path. For example, you can save deleted files
- on a daily basis by adding the <b><span class="command-line">%date%</span></b> macro:
- </p>
- <p><b>Example:</b> Last versions of the file <span class="file-path">Folder\File.txt</span> inside folder <span class="file-path">D:\Revisions\%date%</span> </p>
- <div class="greybox">
- <div class="file-path">
- D:\Revisions\<b>2012-12-11</b>\Folder\File.txt<br>
- D:\Revisions\<b>2012-12-12</b>\Folder\File.txt<br>
- D:\Revisions\<b>2012-12-13</b>\Folder\File.txt
- </div>
- </div>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/html/volume-shadow-copy.html b/FreeFileSync/Build/Help/html/volume-shadow-copy.html
deleted file mode 100755
index fa98238a..00000000
--- a/FreeFileSync/Build/Help/html/volume-shadow-copy.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="base.css" >
- <title>Volume Shadow Copy</title>
-</head>
-
-<body>
- <h1>Volume Shadow Copy<span style="font-weight: normal"> (Windows only)</span></h1>
-
- <p>
- FreeFileSync supports copying locked or shared files by creating a Volume Shadow
- Copy of the source drive. This feature can be configured via <b>Menu &rarr; Tools &rarr; Options: Copy locked files</b>.
- </p>
-
- <div class="bluebox">
- <b>Note</b>
- <ul style="margin: 0">
- <li>The volume snapshot created by the Volume Shadow Copy Service is only used for copying files that are actually locked.
- <li>Accessing the Volume Shadow Copy Service requires FreeFileSync to be started with administrator rights.
- </ul>
- </div>
- <br>
-
- <h2>Troubleshooting</h2>
- <p>
- If you experience problems using the Volume Shadow Copy Service, a renewal of registration might help.
- Create and execute a cmd batch file and insert the following lines or enter directly via command line:
- </p>
-
- <div class="greybox">
- <div class="command-line">
- cd /d %windir%\system32<br>
- Net stop vss<br>
- Net stop swprv<br>
- regsvr32 ole32.dll<br>
- regsvr32 oleaut32.dll<br>
- regsvr32 vss_ps.dll<br>
- Vssvc /register<br>
- regsvr32 /i swprv.dll<br>
- regsvr32 /i eventcls.dll<br>
- regsvr32 es.dll<br>
- regsvr32 stdprov.dll<br>
- regsvr32 vssui.dll<br>
- regsvr32 msxml.dll<br>
- regsvr32 msxml3.dll<br>
- regsvr32 msxml4.dll
- </div>
- </div>
- <p>
- Reference: <a rel="nofollow" target="_blank" href="http://support.microsoft.com/kb/940032">http://support.microsoft.com/kb/940032</a>
- </p>
-</body>
-</html>
diff --git a/FreeFileSync/Build/Help/images/add-folder-pair.png b/FreeFileSync/Build/Help/images/add-folder-pair.png
deleted file mode 100755
index eb4236c0..00000000
--- a/FreeFileSync/Build/Help/images/add-folder-pair.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/automator-file-dropped.png b/FreeFileSync/Build/Help/images/automator-file-dropped.png
deleted file mode 100755
index 7d94a0bf..00000000
--- a/FreeFileSync/Build/Help/images/automator-file-dropped.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/basic-step-choose-folders.png b/FreeFileSync/Build/Help/images/basic-step-choose-folders.png
deleted file mode 100755
index e0887b0a..00000000
--- a/FreeFileSync/Build/Help/images/basic-step-choose-folders.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/basic-step-compare.png b/FreeFileSync/Build/Help/images/basic-step-compare.png
deleted file mode 100755
index 8963f9fa..00000000
--- a/FreeFileSync/Build/Help/images/basic-step-compare.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/basic-step-start-sync.png b/FreeFileSync/Build/Help/images/basic-step-start-sync.png
deleted file mode 100755
index f7309bfc..00000000
--- a/FreeFileSync/Build/Help/images/basic-step-start-sync.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/basic-step-sync-config.png b/FreeFileSync/Build/Help/images/basic-step-sync-config.png
deleted file mode 100755
index 6656c437..00000000
--- a/FreeFileSync/Build/Help/images/basic-step-sync-config.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/calendar-job-added.png b/FreeFileSync/Build/Help/images/calendar-job-added.png
deleted file mode 100755
index 3c60bc0d..00000000
--- a/FreeFileSync/Build/Help/images/calendar-job-added.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/com-settings-context.png b/FreeFileSync/Build/Help/images/com-settings-context.png
deleted file mode 100755
index 690d7bbd..00000000
--- a/FreeFileSync/Build/Help/images/com-settings-context.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/command-line-syntax.png b/FreeFileSync/Build/Help/images/command-line-syntax.png
deleted file mode 100755
index ebb2d895..00000000
--- a/FreeFileSync/Build/Help/images/command-line-syntax.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/comparison-settings.png b/FreeFileSync/Build/Help/images/comparison-settings.png
deleted file mode 100755
index 9f638a4e..00000000
--- a/FreeFileSync/Build/Help/images/comparison-settings.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/comparison-variant-double-click.png b/FreeFileSync/Build/Help/images/comparison-variant-double-click.png
deleted file mode 100755
index 5ad6f256..00000000
--- a/FreeFileSync/Build/Help/images/comparison-variant-double-click.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/config-double-click.png b/FreeFileSync/Build/Help/images/config-double-click.png
deleted file mode 100755
index 54ec22d3..00000000
--- a/FreeFileSync/Build/Help/images/config-double-click.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/config-multiple-selection.png b/FreeFileSync/Build/Help/images/config-multiple-selection.png
deleted file mode 100755
index 8e26b523..00000000
--- a/FreeFileSync/Build/Help/images/config-multiple-selection.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/copy-alternative-path.png b/FreeFileSync/Build/Help/images/copy-alternative-path.png
deleted file mode 100755
index 1baeadb4..00000000
--- a/FreeFileSync/Build/Help/images/copy-alternative-path.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/dialog-drag-move.png b/FreeFileSync/Build/Help/images/dialog-drag-move.png
deleted file mode 100755
index b1f9cda3..00000000
--- a/FreeFileSync/Build/Help/images/dialog-drag-move.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/direct-synchronize.png b/FreeFileSync/Build/Help/images/direct-synchronize.png
deleted file mode 100755
index f3fdbe1f..00000000
--- a/FreeFileSync/Build/Help/images/direct-synchronize.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/explorer-context.png b/FreeFileSync/Build/Help/images/explorer-context.png
deleted file mode 100755
index f6a0e4a3..00000000
--- a/FreeFileSync/Build/Help/images/explorer-context.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/filter-context.png b/FreeFileSync/Build/Help/images/filter-context.png
deleted file mode 100755
index 94ce3237..00000000
--- a/FreeFileSync/Build/Help/images/filter-context.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/filter-zero-file-size.png b/FreeFileSync/Build/Help/images/filter-zero-file-size.png
deleted file mode 100755
index 7bb88f66..00000000
--- a/FreeFileSync/Build/Help/images/filter-zero-file-size.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/filter.png b/FreeFileSync/Build/Help/images/filter.png
deleted file mode 100755
index 33d7264c..00000000
--- a/FreeFileSync/Build/Help/images/filter.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/freefilesync-logo.png b/FreeFileSync/Build/Help/images/freefilesync-logo.png
deleted file mode 100755
index d893a6e7..00000000
--- a/FreeFileSync/Build/Help/images/freefilesync-logo.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/gnome-scheduler.png b/FreeFileSync/Build/Help/images/gnome-scheduler.png
deleted file mode 100755
index 0cd5ef12..00000000
--- a/FreeFileSync/Build/Help/images/gnome-scheduler.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/ignore-time-shift.png b/FreeFileSync/Build/Help/images/ignore-time-shift.png
deleted file mode 100755
index cec19888..00000000
--- a/FreeFileSync/Build/Help/images/ignore-time-shift.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/launch-automator.png b/FreeFileSync/Build/Help/images/launch-automator.png
deleted file mode 100755
index 5ca7b7a2..00000000
--- a/FreeFileSync/Build/Help/images/launch-automator.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/main-window.png b/FreeFileSync/Build/Help/images/main-window.png
deleted file mode 100755
index 667e45a1..00000000
--- a/FreeFileSync/Build/Help/images/main-window.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/new-calendar-alarm.png b/FreeFileSync/Build/Help/images/new-calendar-alarm.png
deleted file mode 100755
index 161a9a7f..00000000
--- a/FreeFileSync/Build/Help/images/new-calendar-alarm.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/open-finder-items.png b/FreeFileSync/Build/Help/images/open-finder-items.png
deleted file mode 100755
index 1112c91e..00000000
--- a/FreeFileSync/Build/Help/images/open-finder-items.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/path-by-volume-name.png b/FreeFileSync/Build/Help/images/path-by-volume-name.png
deleted file mode 100755
index 7b0ab2e9..00000000
--- a/FreeFileSync/Build/Help/images/path-by-volume-name.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/performance.png b/FreeFileSync/Build/Help/images/performance.png
deleted file mode 100755
index 435762b4..00000000
--- a/FreeFileSync/Build/Help/images/performance.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/realtimesync-create-shortcut.png b/FreeFileSync/Build/Help/images/realtimesync-create-shortcut.png
deleted file mode 100755
index fcf0f7f1..00000000
--- a/FreeFileSync/Build/Help/images/realtimesync-create-shortcut.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/realtimesync-logo.png b/FreeFileSync/Build/Help/images/realtimesync-logo.png
deleted file mode 100755
index 40ad9645..00000000
--- a/FreeFileSync/Build/Help/images/realtimesync-logo.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/realtimesync-main-window.png b/FreeFileSync/Build/Help/images/realtimesync-main-window.png
deleted file mode 100755
index 326cda46..00000000
--- a/FreeFileSync/Build/Help/images/realtimesync-main-window.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/realtimesync-monitor-usb.png b/FreeFileSync/Build/Help/images/realtimesync-monitor-usb.png
deleted file mode 100755
index f6f3e78a..00000000
--- a/FreeFileSync/Build/Help/images/realtimesync-monitor-usb.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/realtimesync-schedule.png b/FreeFileSync/Build/Help/images/realtimesync-schedule.png
deleted file mode 100755
index 416e32f8..00000000
--- a/FreeFileSync/Build/Help/images/realtimesync-schedule.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/realtimesync-shortcut-properties.png b/FreeFileSync/Build/Help/images/realtimesync-shortcut-properties.png
deleted file mode 100755
index e089672f..00000000
--- a/FreeFileSync/Build/Help/images/realtimesync-shortcut-properties.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/remove-drop-down-path.png b/FreeFileSync/Build/Help/images/remove-drop-down-path.png
deleted file mode 100755
index 863349ca..00000000
--- a/FreeFileSync/Build/Help/images/remove-drop-down-path.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/remove-local-settings.png b/FreeFileSync/Build/Help/images/remove-local-settings.png
deleted file mode 100755
index 5acd9962..00000000
--- a/FreeFileSync/Build/Help/images/remove-local-settings.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/save-automator.png b/FreeFileSync/Build/Help/images/save-automator.png
deleted file mode 100755
index 738af1de..00000000
--- a/FreeFileSync/Build/Help/images/save-automator.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/select-time-span.png b/FreeFileSync/Build/Help/images/select-time-span.png
deleted file mode 100755
index ea0cb37c..00000000
--- a/FreeFileSync/Build/Help/images/select-time-span.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/setup-batch-job.png b/FreeFileSync/Build/Help/images/setup-batch-job.png
deleted file mode 100755
index 4eb8556b..00000000
--- a/FreeFileSync/Build/Help/images/setup-batch-job.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/sftp-cloud-picker.png b/FreeFileSync/Build/Help/images/sftp-cloud-picker.png
deleted file mode 100755
index 588d102c..00000000
--- a/FreeFileSync/Build/Help/images/sftp-cloud-picker.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/sftp-login.png b/FreeFileSync/Build/Help/images/sftp-login.png
deleted file mode 100755
index 0a3f3b7a..00000000
--- a/FreeFileSync/Build/Help/images/sftp-login.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/sftp-performance.png b/FreeFileSync/Build/Help/images/sftp-performance.png
deleted file mode 100755
index f982277f..00000000
--- a/FreeFileSync/Build/Help/images/sftp-performance.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/show-thumbnails.png b/FreeFileSync/Build/Help/images/show-thumbnails.png
deleted file mode 100755
index 41f1d582..00000000
--- a/FreeFileSync/Build/Help/images/show-thumbnails.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/sync-settings-context.png b/FreeFileSync/Build/Help/images/sync-settings-context.png
deleted file mode 100755
index e6b3d924..00000000
--- a/FreeFileSync/Build/Help/images/sync-settings-context.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/synchronization-settings.png b/FreeFileSync/Build/Help/images/synchronization-settings.png
deleted file mode 100755
index ae2b4be3..00000000
--- a/FreeFileSync/Build/Help/images/synchronization-settings.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/synchronization-variant-double-click.png b/FreeFileSync/Build/Help/images/synchronization-variant-double-click.png
deleted file mode 100755
index 0cd13905..00000000
--- a/FreeFileSync/Build/Help/images/synchronization-variant-double-click.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/two-folder-drop.png b/FreeFileSync/Build/Help/images/two-folder-drop.png
deleted file mode 100755
index fe63d164..00000000
--- a/FreeFileSync/Build/Help/images/two-folder-drop.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/versioning.png b/FreeFileSync/Build/Help/images/versioning.png
deleted file mode 100755
index 9d4260ca..00000000
--- a/FreeFileSync/Build/Help/images/versioning.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/view-filter-default.png b/FreeFileSync/Build/Help/images/view-filter-default.png
deleted file mode 100755
index 1a725dec..00000000
--- a/FreeFileSync/Build/Help/images/view-filter-default.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/windows-scheduler.png b/FreeFileSync/Build/Help/images/windows-scheduler.png
deleted file mode 100755
index 14788118..00000000
--- a/FreeFileSync/Build/Help/images/windows-scheduler.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Help/images/xp-scheduler.png b/FreeFileSync/Build/Help/images/xp-scheduler.png
deleted file mode 100755
index 4d2f5907..00000000
--- a/FreeFileSync/Build/Help/images/xp-scheduler.png
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/Languages/slovak.lng b/FreeFileSync/Build/Languages/slovak.lng
deleted file mode 100755
index 4e0894dd..00000000
--- a/FreeFileSync/Build/Languages/slovak.lng
+++ /dev/null
@@ -1,2086 +0,0 @@
-<header>
- <language>Slovenčina</language>
- <translator>slavusec</translator>
- <locale>sk_SK</locale>
- <image>flag_slovakia.png</image>
- <plural_count>3</plural_count>
- <plural_definition>n==1 ? 0 : n>=2 && n<=4 ? 1 : 2</plural_definition>
-</header>
-
-<source>No log entries</source>
-<target></target>
-
-<source>Published under the GNU General Public License:</source>
-<target></target>
-
-<source>Feedback and suggestions are welcome:</source>
-<target></target>
-
-<source>&Delete logs after x days:</source>
-<target></target>
-
-<source>Default log path:</source>
-<target></target>
-
-<source>Access timeout (in seconds):</source>
-<target></target>
-
-<source>Run a command:</source>
-<target></target>
-
-<source>&Override default log path:</source>
-<target></target>
-
-<source>Show &log</source>
-<target></target>
-
-<source>The server returned an error:</source>
-<target></target>
-
-<source>You may close this page now and continue with FreeFileSync.</source>
-<target></target>
-
-<source>Authentication failed.</source>
-<target></target>
-
-<source>Authentication completed.</source>
-<target></target>
-
-<source>Removing old file versions:</source>
-<target></target>
-
-<source>Searching for old file versions:</source>
-<target></target>
-
-<source>%x items</source>
-<target></target>
-
-<source>%x/sec</source>
-<target></target>
-
-<source>Quit %x</source>
-<target></target>
-
-<source>Hide %x</source>
-<target></target>
-
-<source>Hide Others</source>
-<target></target>
-
-<source>Show All</source>
-<target></target>
-
-<source>Services</source>
-<target></target>
-
-<source>Warnings:</source>
-<target></target>
-
-<source>Errors:</source>
-<target></target>
-
-<source>The name %x is used by more than one item in the folder.</source>
-<target></target>
-
-<source>Both sides have changed since last synchronization.</source>
-<target>Od poslednej synchronizácie došlo ku zmene obidvoch strán.</target>
-
-<source>Cannot determine sync-direction:</source>
-<target>Nie je možné určit smer synchronizácie:</target>
-
-<source>No change since last synchronization.</source>
-<target>Žiadne zmeny od poslednej synchronizácie.</target>
-
-<source>The database entry is not in sync considering current settings.</source>
-<target>Databázové položky nie sú podľa aktuálnej konfigurácie synchronné.</target>
-
-<source>Setting default synchronization directions: Old files will be overwritten with newer files.</source>
-<target>Je nastavený predvolený spôsob synchronizácie: Staré súbory budú nahradené novými.</target>
-
-<source>Creating file %x</source>
-<target>Vytváranie súboru %x</target>
-
-<source>Creating folder %x</source>
-<target>Vytváranie priečinka %x</target>
-
-<source>Creating symbolic link %x</source>
-<target>Vytváranie symbolického odkazu %x</target>
-
-<source>Moving file %x to the recycle bin</source>
-<target>Presúvanie súboru %x do Koša</target>
-
-<source>Moving folder %x to the recycle bin</source>
-<target>Presúvanie priečinka %x do Koša</target>
-
-<source>Moving symbolic link %x to the recycle bin</source>
-<target>Presúvanie symbolického odkazu %x do Koša</target>
-
-<source>Deleting file %x</source>
-<target>Zmazanie súboru %x</target>
-
-<source>Deleting folder %x</source>
-<target>Zmazanie priečinka %x</target>
-
-<source>Deleting symbolic link %x</source>
-<target>Zmazanie symbolického odkazu %x</target>
-
-<source>Checking recycle bin availability for folder %x...</source>
-<target>Kontrola Koša pre priečinok %x...</target>
-
-<source>The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored:</source>
-<target>Premiestnenie do Koša nie je možné pri nasledujúcich priečinkoch. Zmazané alebo prepísané súbory nebude možné obnoviť:</target>
-
-<source>An exception occurred</source>
-<target>Vyskytla sa chyba</target>
-
-<source>A directory path is expected after %x.</source>
-<target>Očakávaná adresárová cesta po %x.</target>
-
-<source>Syntax error</source>
-<target>Chyba syntaxu</target>
-
-<source>A left and a right directory path are expected after %x.</source>
-<target>Bude očakávaná pravá a ľavá adresárová cesta po %x.</target>
-
-<source>Cannot find file %x.</source>
-<target>Nie je možné nájsť súbor %x.</target>
-
-<source>Error</source>
-<target>Chyba</target>
-
-<source>File %x does not contain a valid configuration.</source>
-<target>Súbor %x neobsahuje platnú konfiguráciu.</target>
-
-<source>Unequal number of left and right directories specified.</source>
-<target>Bol zistený nezhodný počet ľavých a pravých adresárov.</target>
-
-<source>The config file must not contain settings at directory pair level when directories are set via command line.</source>
-<target>Konfiguračný súbor nesmie obsahovať nastavenia na úrovni adresárových párov pokiaľ je zadány cez príkazový riadok.</target>
-
-<source>Directories cannot be set for more than one configuration file.</source>
-<target>Adresáre nemôžu obsahovať viac ako jeden konfiguračný súbor.</target>
-
-<source>Command line</source>
-<target>Príkazový riadok</target>
-
-<source>Syntax:</source>
-<target>Syntax:</target>
-
-<source>config files:</source>
-<target>konfiguračné súbory:</target>
-
-<source>directory</source>
-<target>adresár</target>
-
-<source>global config file:</source>
-<target>globálny konfiguračný súbor:</target>
-
-<source>Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files.</source>
-<target>Ľubovolný počet konfiguračných súborov FreeFileSync typu "ffs_gui" a/alebo "ffs_batch".</target>
-
-<source>Any number of alternative directory pairs for at most one config file.</source>
-<target>Ľubovolný počet alternatívnych dvojíc adresárov na aspoň jednu konfiguráciu.</target>
-
-<source>Open the selected configuration for editing only without executing it.</source>
-<target>Otvoriť vybranú konfiguráciu na úpravu bez jej spustenia.</target>
-
-<source>Path to an alternate GlobalSettings.xml file.</source>
-<target>Cesta k alternatívnemu súboru GlobalSettings.xml.</target>
-
-<source>Installation files are corrupted. Please reinstall FreeFileSync.</source>
-<target>Inštalačný súbor je poškodený. Prosím preinštalujte FreeFileSync.</target>
-
-<source>Cannot load file %x.</source>
-<target>Nie je možné načítať súbor %x.</target>
-
-<source>Cannot find the following folders:</source>
-<target>Nie je možné nájsť následujúce priečinky:</target>
-
-<source>The following folders do not yet exist:</source>
-<target>Nasledujúce priečinky ešte neexistujú:</target>
-
-<source>The folders are created automatically when needed.</source>
-<target>V prípade potrewby sa priečinky vytvoria automaticky.</target>
-
-<source>Scanning:</source>
-<target>Vyhľadávanie:</target>
-
-<source>Comparison finished:</source>
-<target>Dokončilo sa porovnávanie:</target>
-
-<source>
-<pluralform>1 item found</pluralform>
-<pluralform>%x items found</pluralform>
-</source>
-<target>
-<pluralform>Nájdená 1 položka</pluralform>
-<pluralform>Nájdené %x položky</pluralform>
-<pluralform>Nájdených %x položiek</pluralform>
-</target>
-
-<source>File %x has an invalid date.</source>
-<target>Súbor %x má chybný dátum.</target>
-
-<source>Date:</source>
-<target>Dátum:</target>
-
-<source>Files have the same date but a different size.</source>
-<target>Súbory majú rovnaký dátum, ale rozdielnú veľkosť.</target>
-
-<source>Size:</source>
-<target>Veľkosť:</target>
-
-<source>Content comparison was skipped for excluded files.</source>
-<target>Porovnanie obsahu bolo vynechané pre vybrané súbory.</target>
-
-<source>Items differ in attributes only</source>
-<target>Položky se lišia iba v atribútoch</target>
-
-<source>Resolving symbolic link %x</source>
-<target>Nasledovať odkaz symbolického zástupcu %x</target>
-
-<source>Comparing content of files %x</source>
-<target>Porovnávanie obsahu súborov %x</target>
-
-<source>Generating file list...</source>
-<target>Vytváranie zoznamu súborov...</target>
-
-<source>Fail-safe file copy</source>
-<target>Bezpečné kopírovanie súborov</target>
-
-<source>Enabled</source>
-<target>Povolené</target>
-
-<source>Disabled</source>
-<target>Zakázané</target>
-
-<source>Copy locked files</source>
-<target>Kopírovať zamknuté súbory</target>
-
-<source>Copy file access permissions</source>
-<target>Kopírovať prístupové oprávnenie súborov</target>
-
-<source>File time tolerance</source>
-<target>Časová tolerancia súboru</target>
-
-<source>Run with background priority</source>
-<target>Vykonať s prioritou na pozadí</target>
-
-<source>Lock directories during sync</source>
-<target>Uzamknúť priečinky počas synchronizácie</target>
-
-<source>Verify copied files</source>
-<target>Overiť skopírované súbory</target>
-
-<source>Using non-default global settings:</source>
-<target>Použiť ne-predvolené globálne nastavenia:</target>
-
-<source>A folder input field is empty.</source>
-<target>Nie je zadaná vstupný priečinok.</target>
-
-<source>The corresponding folder will be considered as empty.</source>
-<target>Odpovedajúci priečinok bude považovaný za prázdny.</target>
-
-<source>Exclude:</source>
-<target>Vynechať:</target>
-
-<source>One base folder of a folder pair is contained in the other one.</source>
-<target>Jeden zo základných párov priečinkov je v obsahu druhej.</target>
-
-<source>The folder should be excluded from synchronization via filter.</source>
-<target>Priečinok by mal byť vynechaný zo synchronizácie pomocou filtra.</target>
-
-<source>Calculating sync directions...</source>
-<target>Príprava adresárov synchronizácie...</target>
-
-<source>Out of memory.</source>
-<target>Nedostatok pracovnej pamäti.</target>
-
-<source>Database file %x is incompatible.</source>
-<target>Databázy súbor %x je nekompatibilný.</target>
-
-<source>Initial synchronization:</source>
-<target>Prvá synchronizácia:</target>
-
-<source>Database file %x does not yet exist.</source>
-<target>Databázový súbor %x neexistuje.</target>
-
-<source>Database file is corrupted:</source>
-<target>Databázový súbor je poškodený:</target>
-
-<source>Cannot write file %x.</source>
-<target>Nie je možné zapísať súbor %x.</target>
-
-<source>Cannot read file %x.</source>
-<target>Nie je možné načítať súbor %x.</target>
-
-<source>The database files do not yet contain information about the last synchronization.</source>
-<target>Databázový súbor ešte neobsahuje informácie o poslednej synchronizácií.</target>
-
-<source>Loading file %x...</source>
-<target>Načítavanie súboru %x...</target>
-
-<source>Saving file %x...</source>
-<target>Ukládanie súboru %x...</target>
-
-<source>Searching for folder %x...</source>
-<target>Vyhľadávanie priečinka %x...</target>
-
-<source>Timeout while searching for folder %x.</source>
-<target>Vypršal časový limit pre nájdenie priečinka %x.</target>
-
-<source>Cannot get process information.</source>
-<target>Nie je možné získať informácie procesu.</target>
-
-<source>Cannot read file attributes of %x.</source>
-<target>Nie je možné načítať atribúty súboru %x.</target>
-
-<source>Waiting while directory is locked:</source>
-<target>Čakanie na uzamknutie adresára:</target>
-
-<source>Lock owner:</source>
-<target>Vlastník uzamknutia:</target>
-
-<source>Detecting abandoned lock...</source>
-<target>Preverovanie uzamknutia...</target>
-
-<source>
-<pluralform>1 sec</pluralform>
-<pluralform>%x sec</pluralform>
-</source>
-<target>
-<pluralform>1 sekunda</pluralform>
-<pluralform>%x sekundy</pluralform>
-<pluralform>%x sekúnd</pluralform>
-</target>
-
-<source>Item exists on left side only</source>
-<target>Položky existujúce iba vľavo</target>
-
-<source>Item exists on right side only</source>
-<target>Položky existujúce iba vpravo</target>
-
-<source>Left side is newer</source>
-<target>Ľavá strana je novšia</target>
-
-<source>Right side is newer</source>
-<target>Pravá strana je novšia</target>
-
-<source>Items have different content</source>
-<target>Obsah položiek je rozdielny</target>
-
-<source>Both sides are equal</source>
-<target>Obe strany sú zhodné</target>
-
-<source>Conflict/item cannot be categorized</source>
-<target>Konflikty/položky ktoré nemožno zaradiť</target>
-
-<source>Copy new item to left</source>
-<target>Kopírovať novú položku doľava</target>
-
-<source>Copy new item to right</source>
-<target>Kopírovať novou položku doprava</target>
-
-<source>Delete left item</source>
-<target>Zmazať položku naľavo</target>
-
-<source>Delete right item</source>
-<target>Zmazať položku napravo</target>
-
-<source>Move file on left</source>
-<target>Presunúť súbor naľavo</target>
-
-<source>Move file on right</source>
-<target>Presunúť súbor napravo</target>
-
-<source>Update left item</source>
-<target>Aktualizovať ľavú položku</target>
-
-<source>Update right item</source>
-<target>Aktualizovať pravú položku</target>
-
-<source>Do nothing</source>
-<target>Nerobiť nič</target>
-
-<source>Update attributes on left</source>
-<target>Aktualizovať atribúty naľavo</target>
-
-<source>Update attributes on right</source>
-<target>Aktualizovať atribúty napravo</target>
-
-<source>Items processed:</source>
-<target>Spracovaných položiek:</target>
-
-<source>Items remaining:</source>
-<target>Ostáva položiek:</target>
-
-<source>Total time:</source>
-<target>Celkový čas:</target>
-
-<source>Warning</source>
-<target>Varovanie</target>
-
-<source>Stopped</source>
-<target>Zastavené</target>
-
-<source>Cleaning up log files:</source>
-<target>Odstránenie log súborov:</target>
-
-<source>Error parsing file %x, row %y, column %z.</source>
-<target>Chyba spracovania súboru %x: na riadku %y v stĺpci %z.</target>
-
-<source>Cannot set directory locks for the following folders:</source>
-<target>Nie je možné nastaviť uzamknutie adresárov pre nasledujúce priečinky:</target>
-
-<source>
-<pluralform>1 thread</pluralform>
-<pluralform>%x threads</pluralform>
-</source>
-<target>
-<pluralform>1 proces</pluralform>
-<pluralform>%x procesy</pluralform>
-<pluralform>%x procesov</pluralform>
-</target>
-
-<source>Cannot read directory %x.</source>
-<target>Nie je možné načítať adresár %x.</target>
-
-<source>Show in Explorer</source>
-<target>Zobraziť v Prieskumníkovi</target>
-
-<source>Open with default application</source>
-<target>Otvoriť predvolenou aplikáciou</target>
-
-<source>Browse directory</source>
-<target>Prechádzať adresár</target>
-
-<source>Unable to connect to %x.</source>
-<target>Nie je možné vytvoriť pripojenie k %x.</target>
-
-<source>Completed successfully</source>
-<target>Dokončenie bolo úspešné</target>
-
-<source>Completed with warnings</source>
-<target>Ukončené s varovaniami</target>
-
-<source>Completed with errors</source>
-<target>Ukončené s chybami</target>
-
-<source>Cannot access the Volume Shadow Copy Service.</source>
-<target>Nie je prístup k službe Tieňové kópie.</target>
-
-<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source>
-<target>Prosím spustite 64-bitovú verziu FreeFileSync, pre vytvorenie Tieň. kópie v tomto systéme.</target>
-
-<source>Cannot determine volume name for %x.</source>
-<target>>Nie je možné zistiť názov jednotky pre %x.</target>
-
-<source>Volume name %x is not part of file path %y.</source>
-<target>Názov disku %x nie je súčásťou cesty súboru %y.</target>
-
-<source>File time and size</source>
-<target>Podľa času a veľkosti súboru</target>
-
-<source>File content</source>
-<target>Podľa obsahu súboru</target>
-
-<source>File size</source>
-<target>Podľa veľkosti súboru</target>
-
-<source>Two way</source>
-<target>Obidve strany</target>
-
-<source>Mirror</source>
-<target>Zrkadlenie</target>
-
-<source>Update</source>
-<target>Aktualizácia</target>
-
-<source>Custom</source>
-<target>Vlastné</target>
-
-<source>Multiple...</source>
-<target>Rôzne...</target>
-
-<source>Cannot write file attributes of %x.</source>
-<target>Nie je možné zapísať atribúty súboru %x.</target>
-
-<source>Cannot open file %x.</source>
-<target>Nie je možné otvoriť súbor %x.</target>
-
-<source>%x and %y have different content.</source>
-<target>%x a %y majú odlišný obsah.</target>
-
-<source>Data verification error:</source>
-<target>Chyba verifikácie údajov:</target>
-
-<source>Moving file %x to %y</source>
-<target>Presúvanie súboru %x do %y</target>
-
-<source>Moving folder %x to %y</source>
-<target>Presúvanie priečinka %x do %y</target>
-
-<source>Moving symbolic link %x to %y</source>
-<target>Presúvanie symbolického odkazu %x do %y</target>
-
-<source>Updating file %x</source>
-<target>Aktualizácia súboru %x</target>
-
-<source>Updating symbolic link %x</source>
-<target>Aktualizácia symbolického odkazu %x</target>
-
-<source>Verifying file %x</source>
-<target>Verifikácia súboru %x</target>
-
-<source>Updating attributes of %x</source>
-<target>Aktualizácia atribútov súboru %x</target>
-
-<source>Source item %x not found</source>
-<target>Zdrojová položka %x sa nenašla</target>
-
-<source>Creating a Volume Shadow Copy for %x...</source>
-<target>Vytváranie Tieňovej kópie zväzkov pre %x...</target>
-
-<source>Cannot find folder %x.</source>
-<target>Nie je možné nájsť priečinok %x.</target>
-
-<source>Target folder %x already existing.</source>
-<target>Cieľový priečinok %x už existuje.</target>
-
-<source>Target folder input field must not be empty.</source>
-<target>Cieľový priečinok nesmie byť prázdny.</target>
-
-<source>Source folder %x not found.</source>
-<target>Zdrojový priečinok %x nie je možné nájsť.</target>
-
-<source>Please enter a target folder for versioning.</source>
-<target>Prosím zadajte cieľový priečinok pre verzovanie.</target>
-
-<source>The following items have unresolved conflicts and will not be synchronized:</source>
-<target>Následujúce položky majú nevyriešené konflikty a nebudú synchronizované:</target>
-
-<source>The following folders are significantly different. Please check that the correct folders are selected for synchronization.</source>
-<target>Nasledujúce priečinky sa signifikantne líšia. Prosím overte, či sú vybrané správne priečinky pre synchronizáciu.</target>
-
-<source>Not enough free disk space available in:</source>
-<target>Nedostatok miesta na disku:</target>
-
-<source>Required:</source>
-<target>Požadované:</target>
-
-<source>Available:</source>
-<target>K dispozícií:</target>
-
-<source>Some files will be synchronized as part of multiple base folders.</source>
-<target>Niektoré súbory budú synchronizované ako súčasť viacerých základných priečinkov.</target>
-
-<source>To avoid conflicts, set up exclude filters so that each updated file is considered by only one base folder.</source>
-<target>Aby nedošlo ku konfliktom, je potrebné nastaviť filter tak, aby každý aktualiz. súbor mal iba jeden základný priečinok.</target>
-
-<source>Versioning folder:</source>
-<target>Priečinok verzovania:</target>
-
-<source>Base folder:</source>
-<target>Základný priečinok:</target>
-
-<source>The versioning folder is contained in a base folder.</source>
-<target>Priečinok pre verzovanie je obsiahnutý v základnom priečinku.</target>
-
-<source>Synchronizing folder pair:</source>
-<target>Synchronizácia dvojice priečinkov:</target>
-
-<source>Generating database...</source>
-<target>Vytváranie databázy...</target>
-
-<source>Unable to create time stamp for versioning:</source>
-<target>Nie je možné vytvoriť časovú značku verzovania:</target>
-
-<source>
-Unexpected size of data stream.
-Expected: %x bytes
-Actual: %y bytes
-</source>
-<target>
-+Neočakávana veľkosť dat. streamu.
-Očakávané: %x b
-Aktuálne: %y b
-</target>
-
-<source>Cannot write permissions of %x.</source>
-<target>Nie je možné zapísať oprávnenie pre %x.</target>
-
-<source>Operation not supported for different base folder types.</source>
-<target>Operácia nie je podporovaná pre rozdielne typy základných priečinkov.</target>
-
-<source>Cannot move file %x to %y.</source>
-<target>Nie je možné presunúť súbor %x do %y.</target>
-
-<source>Cannot copy symbolic link %x to %y.</source>
-<target>Nie je možné kopírovať symbolický odkaz %x do %y.</target>
-
-<source>Error Code %x</source>
-<target>Chybový kód %x</target>
-
-<source>Failed to get information about server %x.</source>
-<target>Získanie informácií o servere %x bolo neúspešné.</target>
-
-<source>Cannot open directory %x.</source>
-<target>Nie je možné otvoriť adresár %x.</target>
-
-<source>Cannot create directory %x.</source>
-<target>Nie je možné vytvoriť adresár %x.</target>
-
-<source>Cannot delete file %x.</source>
-<target>Nie je možné zmazať súbor %x.</target>
-
-<source>Cannot delete directory %x.</source>
-<target>Nie je možné zmazať adresár %x.</target>
-
-<source>Cannot write modification time of %x.</source>
-<target>Nie je možné zmeniť atribút času zmeny pre %x.</target>
-
-<source>Cannot determine final path for %x.</source>
-<target>Nie je možné určiť konečnú cestu pre %x.</target>
-
-<source>Cannot resolve symbolic link %x.</source>
-<target>Nie je možné nájsť odkaz zástupcu %x.</target>
-
-<source>Unable to move %x to the recycle bin.</source>
-<target>Nie je možné presunúť %x do Koša.</target>
-
-<source>Unable to access %x.</source>
-<target>Nie je možný prístup k %x.</target>
-
-<source>Cannot determine free disk space for %x.</source>
-<target>Nie je možné zistiť voľné miesto na disku %x.</target>
-
-<source>Cannot find %x.</source>
-<target>Nie je možné nájsť %x.</target>
-
-<source>Cannot find device %x.</source>
-<target>Nie je možné nájsť zariadenie %x.</target>
-
-<source>Type of item %x is not supported:</source>
-<target>Typ položky %x nie je podporovaný:</target>
-
-<source>Cannot delete symbolic link %x.</source>
-<target>Nie je možné zmazať symbolický odkaz %x.</target>
-
-<source>Incorrect command line:</source>
-<target>Neplatný príkaz:</target>
-
-<source>The server does not support authentication via %x.</source>
-<target>Server nepodporuje overenie pomocou %x.</target>
-
-<source>
-<pluralform>Operation timed out after 1 second.</pluralform>
-<pluralform>Operation timed out after %x seconds.</pluralform>
-</source>
-<target>
-<pluralform>Vypršal čas 1 sekundy pre dokončenie operácie.</pluralform>
-<pluralform>Vypršal čas %x sekúnd pre dokončenie operácie.</pluralform>
-<pluralform>Vypršal čas %x sekúnd pre dokončenie operácie.</pluralform>
-</target>
-
-<source>
-<pluralform>Cannot wait on more than 1 connection at a time.</pluralform>
-<pluralform>Cannot wait on more than %x connections at a time.</pluralform>
-</source>
-<target>
-<pluralform>Nie je možné čakať na viac ako 1 pripojenie naraz.</pluralform>
-<pluralform>Nie je možné čakať na viac ako %x pripojenia naraz.</pluralform>
-<pluralform>Nie je možné čakať na viac ako %x pripojení naraz.</pluralform>
-</target>
-
-<source>Active connections: %x</source>
-<target>Aktívne pripojenie: %x.</target>
-
-<source>Failed to open SFTP channel number %x.</source>
-<target>Nie je možné otvoriť kanál číslo %x.</target>
-
-<source>Drag && drop</source>
-<target>Pretiahni sem && pusť</target>
-
-<source>Select a folder</source>
-<target>Vyberte priečinok</target>
-
-<source>&New</source>
-<target>&Nový</target>
-
-<source>&Open...</source>
-<target>&Otvoriť...</target>
-
-<source>Save &as...</source>
-<target>Uložiť &ako...</target>
-
-<source>E&xit</source>
-<target>U&končiť</target>
-
-<source>&File</source>
-<target>&Súbor</target>
-
-<source>&View help</source>
-<target>&Nápoveda (iba anglicky)</target>
-
-<source>&About</source>
-<target>O &programe</target>
-
-<source>&Help</source>
-<target>&Pomoc</target>
-
-<source>Usage:</source>
-<target>Použitie:</target>
-
-<source>1. Select folders to watch.</source>
-<target>1. Vyberte priečinok k sledovaniu.</target>
-
-<source>2. Enter a command line.</source>
-<target>2. Zadajte príkazový riadok.</target>
-
-<source>3. Press 'Start'.</source>
-<target>3. Stlačte 'Štart'.</target>
-
-<source>To get started just import a "ffs_batch" file.</source>
-<target>Môžete načítať tiež konfiguračný súbor "ffs_batch".</target>
-
-<source>Folders to watch:</source>
-<target>Sledované priečinka:</target>
-
-<source>Add folder</source>
-<target>Pridať priečinok</target>
-
-<source>Remove folder</source>
-<target>Odstrániť priečinok</target>
-
-<source>Browse</source>
-<target>Prechádzať</target>
-
-<source>Idle time (in seconds):</source>
-<target>Doba nečinnosti (v sekundách):</target>
-
-<source>Idle time between last detected change and execution of command</source>
-<target>Doba nečinnosti medzi zistením poslednej zmeny a spustením príkazu</target>
-
-<source>Command line:</source>
-<target>Príkazový riadok:</target>
-
-<source>
-The command is triggered if:
-- files or subfolders change
-- new folders arrive (e.g. USB stick insert)
-</source>
-<target>
-Príkaz bude spustení ak:
-- dôjde k zmene v súboru alebo v priečinku
-- je zistený nový priečinok (napr. vložením USB disku)
-</target>
-
-<source>Start</source>
-<target>Štart</target>
-
-<source>About</source>
-<target>O programe</target>
-
-<source>Build: %x</source>
-<target>Verzia: %x</target>
-
-<source>All files</source>
-<target>Všetky súbory</target>
-
-<source>Automated Synchronization</source>
-<target>Automatická synchronizácia</target>
-
-<source>The %x protocol does not support directory monitoring:</source>
-<target>Protokol %x nepodporuje monitorovanie adresárov:</target>
-
-<source>Directory monitoring active</source>
-<target>Sledovanie adresárov je aktivne</target>
-
-<source>Waiting until directory is available:</source>
-<target>Čaká sa, kým nie je k dispozícii adresár:</target>
-
-<source>&Restore</source>
-<target>&Obnoviť</target>
-
-<source>&Show error</source>
-<target>&Zobraziť chybu</target>
-
-<source>&Quit</source>
-<target>U&končiť</target>
-
-<source>&Retry</source>
-<target>&Opakovať</target>
-
-<source>
-<pluralform>1 byte</pluralform>
-<pluralform>%x bytes</pluralform>
-</source>
-<target>
-<pluralform>%x B</pluralform>
-<pluralform>%x B</pluralform>
-<pluralform>%x B</pluralform>
-</target>
-
-<source>%x MB</source>
-<target>%x MB</target>
-
-<source>%x KB</source>
-<target>%x KB</target>
-
-<source>%x GB</source>
-<target>%x GB</target>
-
-<source>Loading...</source>
-<target>Načítanie...</target>
-
-<source>job name</source>
-<target>názov úlohy</target>
-
-<source>System: Sleep</source>
-<target>Systém: Uspať</target>
-
-<source>System: Shut down</source>
-<target>Systém: Vypnúť</target>
-
-<source>Nothing to synchronize</source>
-<target>Nie je čo synchronizovať</target>
-
-<source>Executing command %x</source>
-<target>Spúšťací príkaz %x</target>
-
-<source>You can switch to FreeFileSync's main window to resolve this issue.</source>
-<target>K odstráneniu tohoto problému sa môžete prepnúť do hlavného okna FreeFileSync.</target>
-
-<source>&Don't show this warning again</source>
-<target>&Nezobrazovať znova toto varovanie</target>
-
-<source>&Ignore</source>
-<target>&Ignorovať</target>
-
-<source>&Switch</source>
-<target>&Prepnúť</target>
-
-<source>Switching to FreeFileSync's main window</source>
-<target>Prepínanie do hlavného okna FreeFileSync</target>
-
-<source>Automatic retry</source>
-<target>Automatické opakovanie</target>
-
-<source>Ignore &all</source>
-<target>Ignorovať &všetky</target>
-
-<source>Retrying operation...</source>
-<target>Opakovanie operácie...</target>
-
-<source>Serious Error</source>
-<target>Závažná chyba</target>
-
-<source>Last session</source>
-<target>Posledné sedenie</target>
-
-<source>Today</source>
-<target>Dnes</target>
-
-<source>
-<pluralform>1 day</pluralform>
-<pluralform>%x days</pluralform>
-</source>
-<target>
-<pluralform>1 deň</pluralform>
-<pluralform>%x dni</pluralform>
-<pluralform>%x dní</pluralform>
-</target>
-
-<source>Name</source>
-<target>Názov</target>
-
-<source>Last sync</source>
-<target>Posledná synchronizácia</target>
-
-<source>Log</source>
-<target>Záznam spracovania</target>
-
-<source>Folder</source>
-<target>Priečinok</target>
-
-<source>Symlink</source>
-<target>Symlink</target>
-
-<source>Full path</source>
-<target>Plná cesta</target>
-
-<source>Relative path</source>
-<target>Relatívna cesta</target>
-
-<source>Item name</source>
-<target>Názov položky</target>
-
-<source>Size</source>
-<target>Veľkosť</target>
-
-<source>Date</source>
-<target>Dátum</target>
-
-<source>Extension</source>
-<target>Prípona</target>
-
-<source>Category</source>
-<target>Kategórie</target>
-
-<source>Action</source>
-<target>Akcia</target>
-
-<source>Local comparison settings</source>
-<target>Lokálne nastavenie porovnánia</target>
-
-<source>Local synchronization settings</source>
-<target>Lokálne nastavenie synchronizácie</target>
-
-<source>Local filter</source>
-<target>Lokálny filter</target>
-
-<source>Active</source>
-<target>Zapnutý</target>
-
-<source>None</source>
-<target>Žiadna</target>
-
-<source>Remove local settings</source>
-<target>Zrušiť lokálne nastavenie</target>
-
-<source>Clear local filter</source>
-<target>Vymazať lokálne nastavenie filtra</target>
-
-<source>Copy</source>
-<target>Kopírovať</target>
-
-<source>Paste</source>
-<target>Vložiť</target>
-
-<source>The selected folder %x cannot be used with FreeFileSync.</source>
-<target>Vybraný priečinok %x nie je možné použíť s FreeFileSync.</target>
-
-<source>Please select a folder on a local file system, network or an MTP device.</source>
-<target>Prosím vyberte priečinok v lokálnom súborovom systéme, sieti alebo multimediálnom zariadení.</target>
-
-<source>Defined by context of use</source>
-<target>Definované podľa kontextu používania</target>
-
-<source>Requires FreeFileSync Donation Edition</source>
-<target>Je potrebná FreeFileSync Donation Edition</target>
-
-<source>&Save</source>
-<target>&Uložiť</target>
-
-<source>Save as &batch job...</source>
-<target>Uložiť ako &dávku...</target>
-
-<source>Start &comparison</source>
-<target>Spustiť &porovnanie</target>
-
-<source>C&omparison settings</source>
-<target>Nastavenia p&orovnania</target>
-
-<source>&Filter settings</source>
-<target>Nastavenia &filtra</target>
-
-<source>S&ynchronization settings</source>
-<target>Nastavenia s&ynchronizácie</target>
-
-<source>Start &synchronization</source>
-<target>Spustiť &synchronizáciu</target>
-
-<source>&Actions</source>
-<target>&Akcie</target>
-
-<source>&Preferences</source>
-<target>&Predvoľby...</target>
-
-<source>&Language</source>
-<target>&Jazyk</target>
-
-<source>&Find...</source>
-<target>&Hľadať...</target>
-
-<source>&Export file list...</source>
-<target>&Exportovať zoznam súborov...</target>
-
-<source>&Reset layout</source>
-<target>&Obnoviť rozloženie</target>
-
-<source>&Tools</source>
-<target>&Nastavenie</target>
-
-<source>&Check for updates now</source>
-<target>&Skontrolovať aktualizácie teraz</target>
-
-<source>Check &automatically once a week</source>
-<target>Kontrolovať &automaticky raz týždenne</target>
-
-<source>Cancel</source>
-<target>Zrušiť</target>
-
-<source>Compare</source>
-<target>Porovnanie</target>
-
-<source>Synchronize</source>
-<target>Synchronizácia</target>
-
-<source>Add folder pair</source>
-<target>Pridať priečinok pre porovnanie</target>
-
-<source>Remove folder pair</source>
-<target>Odstrániť dvojicu priečinkov</target>
-
-<source>Access online storage</source>
-<target>Prístup k online úložisku</target>
-
-<source>Close search bar</source>
-<target>Zavrieť hľadanie</target>
-
-<source>Find:</source>
-<target>Hľadať:</target>
-
-<source>Match case</source>
-<target>Rozlišovať malé a veľké písmená</target>
-
-<source>New</source>
-<target>Nový</target>
-
-<source>Open...</source>
-<target>Otvoriť...</target>
-
-<source>Save</source>
-<target>Uložiť</target>
-
-<source>Save as...</source>
-<target>Uložiť ako...</target>
-
-<source>View type:</source>
-<target>Typ zobrazenia:</target>
-
-<source>Save as default</source>
-<target>Uložiť ako predvolené</target>
-
-<source>Select view:</source>
-<target>Výber zobrazenia:</target>
-
-<source>Statistics:</source>
-<target>Štatistika:</target>
-
-<source>Number of files and folders that will be deleted</source>
-<target>Počet súborov a priečinkov k zmazaniu</target>
-
-<source>Number of files that will be updated</source>
-<target>Počet súborov k aktualizácií</target>
-
-<source>Number of files and folders that will be created</source>
-<target>Počet súborov a priečinkov k vytvoreniu</target>
-
-<source>Total bytes to copy</source>
-<target>Celkový objem kopírovaných údajov</target>
-
-<source>Arrange folder pair</source>
-<target>Usporiadať dvojicu priečinkov</target>
-
-<source>Folder pair:</source>
-<target>Dvojica priečinkov:</target>
-
-<source>Main settings:</source>
-<target>Hlavné nastavenia:</target>
-
-<source>Use local settings:</source>
-<target>Použiť lokálne nastavenie:</target>
-
-<source>Select a variant:</source>
-<target>Výber varianty:</target>
-
-<source>Include &symbolic links:</source>
-<target>Aj &symbolické odkazy:</target>
-
-<source>&Follow</source>
-<target>&Nasledovať</target>
-
-<source>&Direct</source>
-<target>&Direktne</target>
-
-<source>More information</source>
-<target>Viac informácií</target>
-
-<source>&Ignore time shift [hh:mm]</source>
-<target>&Ignorovať časový posun [hh:mm]</target>
-
-<source>List of file time offsets to ignore</source>
-<target>Zoznam ignorovaných časových posunov súborov</target>
-
-<source>Example:</source>
-<target>Príklad:</target>
-
-<source>Handle daylight saving time</source>
-<target>Používať letný čas</target>
-
-<source>Ignore errors</source>
-<target>Ignorovať chyby</target>
-
-<source>Retry count:</source>
-<target>Počet opakovaní:</target>
-
-<source>Delay (in seconds):</source>
-<target>Oneskorenie (v sekundách):</target>
-
-<source>Performance improvements:</source>
-<target>Zlepšenie výkonu:</target>
-
-<source>Parallel file operations:</source>
-<target>Paralélne operácie súborov:</target>
-
-<source>How to get best performance?</source>
-<target>Ako získať najlepší výkon:</target>
-
-<source>Local settings:</source>
-<target>Lokálne Nastavenia:</target>
-
-<source>Include:</source>
-<target>Zahrnúť:</target>
-
-<source>Show examples</source>
-<target>Ukázať príklady</target>
-
-<source>Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair.</source>
-<target>Nastavte pravidlá filtra pre vynechanie niekterých súborov zo synchronizácie. Zadávajte cesty súborov relativne k odpovedajúcej dvojici priečinkov.</target>
-
-<source>File size:</source>
-<target>Veľkosť súboru:</target>
-
-<source>Minimum:</source>
-<target>Od:</target>
-
-<source>Maximum:</source>
-<target>Do:</target>
-
-<source>Time span:</source>
-<target>Časová doba:</target>
-
-<source>C&lear</source>
-<target>Vy&mazať</target>
-
-<source>Detect moved files</source>
-<target>Detekcia presunutých súborov</target>
-
-<source>
-- Not supported by all file systems
-- Requires and creates database files
-- Detection not available for first sync
-</source>
-<target>
-- Nie je podporované vštkými souborovými systémami
-- Vyžaduje vytvorenie databázového súboru
-- Detekcia rozdielov je dostupná až po prvej synchronizácií
-</target>
-
-<source>Delete files:</source>
-<target>Zmazanie súborov:</target>
-
-<source>&Recycle bin</source>
-<target>&Kôš</target>
-
-<source>&Permanent</source>
-<target>&Trvale</target>
-
-<source>&Versioning</source>
-<target>&Verzovanie</target>
-
-<source>Move files to a user-defined folder</source>
-<target>Presunúť súbory do uživateľom zadaného priečinka</target>
-
-<source>Naming convention:</source>
-<target>Pomenovanie:</target>
-
-<source>Limit file versions:</source>
-<target>Limit súborových verzií:</target>
-
-<source>Last x days:</source>
-<target>Posledných x dní:</target>
-
-<source>OK</source>
-<target>OK</target>
-
-<source>Enter your login details:</source>
-<target>Zadajte prihlasovacie údaje:</target>
-
-<source>Connection type:</source>
-<target>typ pripojenia:</target>
-
-<source>Server name or IP address:</source>
-<target>Meno servera alebo jeho IP adresa:</target>
-
-<source>Port:</source>
-<target>Port:</target>
-
-<source>Encryption:</source>
-<target>Šifrovanie:</target>
-
-<source>&Disabled</source>
-<target>&Zakázané</target>
-
-<source>&Explicit SSL/TLS</source>
-<target>&Explicitné SSl/TLS</target>
-
-<source>Authentication:</source>
-<target>Overenie:</target>
-
-<source>&Password</source>
-<target>&Heslo</target>
-
-<source>&Key file</source>
-<target>&Súbor kľúča</target>
-
-<source>&SSH agent</source>
-<target>&SSH agent</target>
-
-<source>User name:</source>
-<target>Uživateľské meno:</target>
-
-<source>Private key file:</source>
-<target>Súbor súkromného kľúča:</target>
-
-<source>&Show password</source>
-<target>&Zobraziť heslo</target>
-
-<source>Directory on server:</source>
-<target>Adresár na servery:</target>
-
-<source>SFTP channels per connection:</source>
-<target>SFTP kanály na pripojenie:</target>
-
-<source>Detect server limit</source>
-<target>Zistiť limit serveru</target>
-
-<source>Select a directory on the server:</source>
-<target>Výber adresára na servery:</target>
-
-<source>Select Folder</source>
-<target>Výber priečinka</target>
-
-<source>Start synchronization now?</source>
-<target>Spustiť synchronizáciu teraz?</target>
-
-<source>Variant:</source>
-<target>Varianta:</target>
-
-<source>&Don't show this dialog again</source>
-<target>Tento dialog už &nezobrazovať</target>
-
-<source>Items found:</source>
-<target>Nájdených položiek:</target>
-
-<source>Time remaining:</source>
-<target>Zostávajúci čas:</target>
-
-<source>Time elapsed:</source>
-<target>Uplynulý čas:</target>
-
-<source>Bytes</source>
-<target>Bytov</target>
-
-<source>Items</source>
-<target>Položky</target>
-
-<source>Synchronizing...</source>
-<target>Synchronizujem...</target>
-
-<source>Minimize to notification area</source>
-<target>Minimalizovať do oznamovacej oblasti</target>
-
-<source>When finished:</source>
-<target>Po dokončení:</target>
-
-<source>Auto-close</source>
-<target>Automaticky zavrieť</target>
-
-<source>Close</source>
-<target>Zavrieť</target>
-
-<source>&Pause</source>
-<target>&Pauza</target>
-
-<source>Stop</source>
-<target>Zastaviť</target>
-
-<source>Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x</source>
-<target>Vytvorí dávkový súbor pre automatickú synchronizáciu. Ku spusteniu dávky jednoducho pokliknite na vytvorený súbor alebo využite plánovač úloh vašeho systému: %x</target>
-
-<source>Progress dialog:</source>
-<target>Dialóg procesu:</target>
-
-<source>Run minimized</source>
-<target>Spustiť minimalizované</target>
-
-<source>&Show error dialog</source>
-<target>&Zobraziť chybový dialóg</target>
-
-<source>Show pop-up on errors or warnings</source>
-<target>Zobraziť hlásenie pri chybe alebo varovaní</target>
-
-<source>&Cancel</source>
-<target>&Zrušiť</target>
-
-<source>Stop synchronization at first error</source>
-<target>Ukončiť synchronizáciu pri prvej chybe</target>
-
-<source>How can I schedule a batch job?</source>
-<target>Ako nastaviť spustenie dávky v Plánovači?</target>
-
-<source>&Keep relative paths</source>
-<target>&Zachovať relatívnu cesty</target>
-
-<source>&Overwrite existing files</source>
-<target>&Prepísať existujúce súbory</target>
-
-<source>The following settings are used for all synchronization jobs.</source>
-<target>Toto nastavenie je platné pre všetky synchronizačné úlohy.</target>
-
-<source>
-Copy to a temporary file (*.ffs_tmp) before overwriting target.
-This guarantees a consistent state even in case of a serious error.
-</source>
-<target>Kopírovať najprv do dočasného súboru (*.ffs_tmp), pred prepisom cieľa. Tento postup zaisťuje bezpečný chod aj v prípade závažnej chyby.</target>
-
-<source>recommended</source>
-<target>doporučené</target>
-
-<source>Copy shared or locked files using the Volume Shadow Copy Service.</source>
-<target>Kopírovať zdielané alebo zamknuté súbory pomocou služby Tieňové kópie zväzkov.</target>
-
-<source>requires administrator rights</source>
-<target>vyžadujú sa práva správcu</target>
-
-<source>Transfer file and folder permissions.</source>
-<target>Preniesť prístupové oprávnenie súborov a priečinkov.</target>
-
-<source>Show all permanently hidden dialogs and warning messages again</source>
-<target>Zobraziť znovu všetky trvale skryté dialógy a varovné hlásenia</target>
-
-<source>Customize context menu:</source>
-<target>Prispôsobiť kontextovú ponuku:</target>
-
-<source>Description</source>
-<target>Popis</target>
-
-<source>&Default</source>
-<target>&Predvolené</target>
-
-<source>Home page</source>
-<target>Domovská stránka</target>
-
-<source>FreeFileSync Forum</source>
-<target>FreeFileSync fórum</target>
-
-<source>Email</source>
-<target>Email</target>
-
-<source>If you like FreeFileSync:</source>
-<target>Pokiaľ sa Vám FreeFileSync páči:</target>
-
-<source>Support with a donation</source>
-<target>Podporiť darom</target>
-
-<source>The auto updater was disabled by the administrator.</source>
-<target>Automatická aktualizácia bola zakázaná správcom.</target>
-
-<source>Donation details</source>
-<target>Detajly darovania</target>
-
-<source>Source code written in C++ using:</source>
-<target>Zdrojový kód bol napísaný kompletne v C++ pomocou:</target>
-
-<source>Many thanks for localization:</source>
-<target>Poďakovanie za preklad FreeFileSync:</target>
-
-<source>Activate the FreeFileSync Donation Edition by one of the following methods:</source>
-<target>aktivovať FreeFileSync Donation Edition pomocou jednej z nasledujúcich metód:</target>
-
-<source>1. Activate via internet now:</source>
-<target>1. Aktivovať teraz cez internet:</target>
-
-<source>Activate online</source>
-<target>Aktivovať online</target>
-
-<source>2. Retrieve an offline activation key from the following URL:</source>
-<target>Získať offline aktivačný kľúč z URL adresy:</target>
-
-<source>&Copy to clipboard</source>
-<target>&Skopírovať do schránky</target>
-
-<source>Enter activation key:</source>
-<target>Zadať aktivačný kľúč:</target>
-
-<source>Activate offline</source>
-<target>Aktivovať offline</target>
-
-<source>Highlight configurations that have not been run for more than the following number of days:</source>
-<target>Zvýrazniť konfigurácie, ktoré neboli vykonané viac ako nasledujúci počet dní:</target>
-
-<source>Synchronization Settings</source>
-<target>Nastavenia synchronizácie</target>
-
-<source>Access Online Storage</source>
-<target>Prístup k Online Storage</target>
-
-<source>Save as a Batch Job</source>
-<target>Uložiť ako Batch Job</target>
-
-<source>Delete Items</source>
-<target>Zmazať položky</target>
-
-<source>Copy Items</source>
-<target>Kopírovať položky</target>
-
-<source>Options</source>
-<target>Nastavenie programu</target>
-
-<source>Select Time Span</source>
-<target>Zadať časové rozmedzie</target>
-
-<source>Highlight Configurations</source>
-<target>Zvýrazniť konfigurácie</target>
-
-<source>Info</source>
-<target>Info</target>
-
-<source>Select all</source>
-<target>Vybrať všetko</target>
-
-<source>&Options</source>
-<target>Nastavenie &programu</target>
-
-<source>Main Bar</source>
-<target>Hlavná lišta</target>
-
-<source>Folder Pairs</source>
-<target>Priečinkové dvojice</target>
-
-<source>Find</source>
-<target>Hľadať</target>
-
-<source>View Settings</source>
-<target>Nastavenie zobrazenia</target>
-
-<source>Configuration</source>
-<target>Konfigurácia</target>
-
-<source>Overview</source>
-<target>Prehľad</target>
-
-<source>Swap sides</source>
-<target>Zámena strán</target>
-
-<source>Show "%x"</source>
-<target>Zobraziť "%x"</target>
-
-<source>&Show details</source>
-<target>&Zobraziť podrobnosti</target>
-
-<source>FreeFileSync %x is available!</source>
-<target>Je dostupná FreeFileSync verzia %x!</target>
-
-<source>Local path not available for %x.</source>
-<target>Lokálna cesta pre %x nie je k dispozícií.</target>
-
-<source>Confirm</source>
-<target>Potvrdiť</target>
-
-<source>
-<pluralform>Do you really want to execute the command %y for one item?</pluralform>
-<pluralform>Do you really want to execute the command %y for %x items?</pluralform>
-</source>
-<target>
-<pluralform>Naozaj chcete vykonať príkaz %y pre 1 položku?</pluralform>
-<pluralform>Naozaj chcete vykonať príkaz %y pre %x položky?</pluralform>
-<pluralform>Naozaj chcete vykonať príkaz %y pro %x položiek?</pluralform>
-</target>
-
-<source>&Execute</source>
-<target>&Spustiť</target>
-
-<source>
-<pluralform>1 directory</pluralform>
-<pluralform>%x directories</pluralform>
-</source>
-<target>
-<pluralform>1 adresár</pluralform>
-<pluralform>%x adresáre</pluralform>
-<pluralform>%x adresárov</pluralform>
-</target>
-
-<source>
-<pluralform>1 file</pluralform>
-<pluralform>%x files</pluralform>
-</source>
-<target>
-<pluralform>1 súbor</pluralform>
-<pluralform>%x súbory</pluralform>
-<pluralform>%x súborov</pluralform>
-</target>
-
-<source>
-<pluralform>Showing %y of 1 row</pluralform>
-<pluralform>Showing %y of %x rows</pluralform>
-</source>
-<target>
-<pluralform>Zobrazenie %y z 1 riadku</pluralform>
-<pluralform>Zobrazenie %y z %x riadky</pluralform>
-<pluralform>Zobrazenie %y z %x riadkov</pluralform>
-</target>
-
-<source>Set direction:</source>
-<target>Zadať smer:</target>
-
-<source>multiple selection</source>
-<target>viacnásobný výber</target>
-
-<source>Include via filter:</source>
-<target>Zahrnúť pomocou filtra:</target>
-
-<source>Exclude via filter:</source>
-<target>Vynechať pomocou filtra:</target>
-
-<source>Include temporarily</source>
-<target>Pridať dočasne</target>
-
-<source>Exclude temporarily</source>
-<target>Vynechať dočasne</target>
-
-<source>&Copy to...</source>
-<target>&Kopírovať do...</target>
-
-<source>&Delete</source>
-<target>&Zmazať</target>
-
-<source>Include all</source>
-<target>Zahrnúť všetko</target>
-
-<source>Exclude all</source>
-<target>Vynechať všetko</target>
-
-<source>Show icons:</source>
-<target>Zobraziť ikony:</target>
-
-<source>Small</source>
-<target>Malé</target>
-
-<source>Medium</source>
-<target>Stredné</target>
-
-<source>Large</source>
-<target>Veľké</target>
-
-<source>Select time span...</source>
-<target>Zadajte časové rozmedzie...</target>
-
-<source>Donation Edition</source>
-<target>Donation Edition</target>
-
-<source>Folder Comparison and Synchronization</source>
-<target>Porovnanie a synchronizácia priečinkov</target>
-
-<source>Configuration saved</source>
-<target>Konfigurácia uložená</target>
-
-<source>FreeFileSync batch</source>
-<target>FreeFileSync dávka</target>
-
-<source>Do you want to save changes to %x?</source>
-<target>Uložiť zmeny do %x?</target>
-
-<source>Never save &changes</source>
-<target>Nikdy &neukladať zmeny</target>
-
-<source>Do&n't save</source>
-<target>&Neukladať</target>
-
-<source>Hide configuration</source>
-<target>Skryť konfiguráciu</target>
-
-<source>Highlight...</source>
-<target>Zvýrazniť...</target>
-
-<source>Clear filter</source>
-<target>Vymazať filter</target>
-
-<source>Show files that exist on left side only</source>
-<target>Zobraziť súbory existujúce iba vľavo</target>
-
-<source>Show files that exist on right side only</source>
-<target>Zobraziť súbory existujúce iba vpravo</target>
-
-<source>Show files that are newer on left</source>
-<target>Zobraziť novšie súbory vľavo</target>
-
-<source>Show files that are newer on right</source>
-<target>Zobraziť novšie súbory vpravo</target>
-
-<source>Show files that are equal</source>
-<target>Zobraziť rovnaké súbory</target>
-
-<source>Show files that are different</source>
-<target>Zobraziť rozdielne súbory</target>
-
-<source>Show conflicts</source>
-<target>Zobraziť konflikty</target>
-
-<source>Show files that will be created on the left side</source>
-<target>Zobraziť súbory, ktoré budú vľavo vytvorené</target>
-
-<source>Show files that will be created on the right side</source>
-<target>Zobraziť súbory, ktoré budú vpravo vytvorené</target>
-
-<source>Show files that will be deleted on the left side</source>
-<target>Zobraziť súbory, ktoré budú vľavo zmazané</target>
-
-<source>Show files that will be deleted on the right side</source>
-<target>Zobraziť súbory, ktoré budú vpravo zmazané</target>
-
-<source>Show files that will be updated on the left side</source>
-<target>Zobraziť súbory, ktoré budú vľavo aktualizované</target>
-
-<source>Show files that will be updated on the right side</source>
-<target>Zobraziť súbory, ktoré budú vpravo aktualizované</target>
-
-<source>Show files that won't be copied</source>
-<target>Zobraziť súbory, ktoré nebudú kopírované</target>
-
-<source>Show filtered or temporarily excluded files</source>
-<target>Zobraziť filtrované alebo dočasne vynechané súbory</target>
-
-<source>Filter</source>
-<target>Filter</target>
-
-<source>All files are in sync</source>
-<target>Všetky súbory sú synchronizované</target>
-
-<source>Cannot find %x</source>
-<target>Nie je možné nájsť %x</target>
-
-<source>Move up</source>
-<target>Dohora</target>
-
-<source>Move down</source>
-<target>Dodola</target>
-
-<source>Comma-separated values</source>
-<target>Hodnoty oddelené čiarkami</target>
-
-<source>File list exported</source>
-<target>Zoznam súborov bol exportovaný</target>
-
-<source>Searching for program updates...</source>
-<target>Hľadanie aktualizácií programu...</target>
-
-<source>Paused</source>
-<target>Pauza</target>
-
-<source>Stop requested...</source>
-<target>Zastavenie požiadavky...</target>
-
-<source>Initializing...</source>
-<target>Inicializácia...</target>
-
-<source>Scanning...</source>
-<target>Vyhľadávanie...</target>
-
-<source>Comparing content...</source>
-<target>Porovnávanie obsahu...</target>
-
-<source>&Continue</source>
-<target>&Pokračovať</target>
-
-<source>Progress</source>
-<target>Priebeh</target>
-
-<source>Thank you, %x, for your donation and support!</source>
-<target>Ďakujem, %x, za dar a podporu!</target>
-
-<source>Connections</source>
-<target>Pripojenia</target>
-
-<source>Recommended range:</source>
-<target>Odporúčaný rozsah:</target>
-
-<source>Password:</source>
-<target>Heslo:</target>
-
-<source>Key password:</source>
-<target>Heslo kľúča:</target>
-
-<source>Please enter a file path.</source>
-<target>Prosím zadajte cestu k súboru.</target>
-
-<source>
-<pluralform>Copy the following item to another folder?</pluralform>
-<pluralform>Copy the following %x items to another folder?</pluralform>
-</source>
-<target>
-<pluralform>Kopírovať následujúcu položku do iného priečinka?</pluralform>
-<pluralform>Kopírovať následujúce %x položky do iného priečinka?</pluralform>
-<pluralform>Kopírovať následujúcich %x položiek do iného priečinka?</pluralform>
-</target>
-
-<source>Please enter a target folder.</source>
-<target>Prosím zadajte cieľový priečinok.</target>
-
-<source>
-<pluralform>Do you really want to move the following item to the recycle bin?</pluralform>
-<pluralform>Do you really want to move the following %x items to the recycle bin?</pluralform>
-</source>
-<target>
-<pluralform>Naozaj chcete presunúť následujúcu položku do Koša?</pluralform>
-<pluralform>Naozaj chcete presunúť následujúce %x položky do Koša?</pluralform>
-<pluralform>Naozaj chcete presunúť následujúcich %x položiek do Koša?</pluralform>
-</target>
-
-<source>Move</source>
-<target>Presunúť</target>
-
-<source>
-<pluralform>Do you really want to delete the following item?</pluralform>
-<pluralform>Do you really want to delete the following %x items?</pluralform>
-</source>
-<target>
-<pluralform>Naozaj chcete zmazať následujúcu položku?</pluralform>
-<pluralform>Naozaj chcete zmazať následujúce %x položky?</pluralform>
-<pluralform>Naozaj chcete zmazať následujúcich %x položiek?</pluralform>
-</target>
-
-<source>Copy DACL, SACL, Owner, Group</source>
-<target>Kopírovať DACL, SACL, Owner, Group</target>
-
-<source>Integrate external applications into context menu. The following macros are available:</source>
-<target>Integrácia externej aplikácie do kontextovéj ponuky. K dispozici jsou následující makrá:</target>
-
-<source>Full file or folder path</source>
-<target>Úplná cesta k súboru alebo priečinku</target>
-
-<source>Parent folder path</source>
-<target>Cesta k nadriadenému priečinku</target>
-
-<source>Temporary local copy for SFTP and MTP storage</source>
-<target>Dočasná lokálna kópia pre SFTP a MTP úložisko</target>
-
-<source>Parameters for opposite side</source>
-<target>Parametre pre protiľahlú stranu</target>
-
-<source>Show hidden dialogs again</source>
-<target>Znovu zobraziť skryté dialógy</target>
-
-<source>All dialogs shown</source>
-<target>Zobrazenie všetkých dialógov</target>
-
-<source>Downloading update...</source>
-<target>Sťahovanie aktualizácie...</target>
-
-<source>Identify equal files by comparing modification time and size.</source>
-<target>Rozpoznať rovnaké súbory porovnaním ich času úpravy a veľkosti.</target>
-
-<source>Identify equal files by comparing the file content.</source>
-<target>Rozpoznať rovnaké súbory porovnaním ich obsahu.</target>
-
-<source>Identify equal files by comparing their file size.</source>
-<target>Rozpoznať rovnaké súbory porovnaním ich veľkosti.</target>
-
-<source>Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database.</source>
-<target>Rozpoznať a vykonať zmeny na oboch stranách. Odstránené, presunuté alebo premenované súbory a konflikty budú detekované automaticky pomocou databázy.</target>
-
-<source>Create a mirror backup of the left folder by adapting the right folder to match.</source>
-<target>Vytvoriť zrkadlovú kópiu ľavého priečinka tak, aby po synchronizácií pravého priečinka presne odpovedal ľavému.</target>
-
-<source>Copy new and updated files to the right folder.</source>
-<target>Kopírovať nové a aktualizované súbory do pravého priečinka.</target>
-
-<source>Configure your own synchronization rules.</source>
-<target>Nastavenie vlastných pravidiel synchronizácie.</target>
-
-<source>Comparison</source>
-<target>Porovnanie</target>
-
-<source>Synchronization</source>
-<target>Synchronizácia</target>
-
-<source>This week</source>
-<target>Tento týždeň</target>
-
-<source>This month</source>
-<target>Tento mesiac</target>
-
-<source>This year</source>
-<target>Tento rok</target>
-
-<source>Byte</source>
-<target>Byte</target>
-
-<source>KB</source>
-<target>KB</target>
-
-<source>MB</source>
-<target>MB</target>
-
-<source>Retain deleted and overwritten files in the recycle bin</source>
-<target>Ponechať zmazané a prepísané sobory v Koši</target>
-
-<source>Delete and overwrite files permanently</source>
-<target>Zmazať a prepísať súbory natrvalo</target>
-
-<source>Replace</source>
-<target>Nahradiť</target>
-
-<source>Move files and replace if existing</source>
-<target>Presunúť a nahradiť súbory pokiaľ už existujú</target>
-
-<source>Time stamp</source>
-<target>Časová značka</target>
-
-<source>Move files into a time-stamped subfolder</source>
-<target>Presunúť súbory do podpriečinka s časovou značkou</target>
-
-<source>File</source>
-<target>Súbor</target>
-
-<source>Append a time stamp to each file name</source>
-<target>Pridať časovú značku ku každému názvu súboru</target>
-
-<source>On completion:</source>
-<target>Po dokončení:</target>
-
-<source>On errors:</source>
-<target>Pri chybách:</target>
-
-<source>On success:</source>
-<target>Po dokončení:</target>
-
-<source>Main config</source>
-<target>Hlavná konfigurácia</target>
-
-<source>empty</source>
-<target>prázdne</target>
-
-<source>Leave as unresolved conflict</source>
-<target>Ponechať ako nevyriešený konflikt</target>
-
-<source>YYYY-MM-DD hhmmss</source>
-<target>RRRR-MM-DD hhmmss</target>
-
-<source>Minimum version count must be smaller than maximum count.</source>
-<target>Minimálny počet verzií musí byť menší ako maximálny počet.</target>
-
-<source>Files</source>
-<target>Súbory</target>
-
-<source>Percentage</source>
-<target>Percentný podiel</target>
-
-<source>Failed to retrieve update information.</source>
-<target>Získanie informácie o aktualizácií bolo neúspešné.</target>
-
-<source>Automatic updates:</source>
-<target>Automatická aktualizácia:</target>
-
-<source>Check for Program Updates</source>
-<target>Hľadanie aktualizácií programu</target>
-
-<source>Auto-update now or download manually from the FreeFileSync home page?</source>
-<target>Automaticky aktualizovať teraz alebo ručne z domovskej stránky FreeFileSync?</target>
-
-<source>&Auto-update</source>
-<target>&Automatická aktualizácia</target>
-
-<source>&Home page</source>
-<target>&Domovská stránka</target>
-
-<source>Download now?</source>
-<target>Stiahúť teraz?</target>
-
-<source>&Download</source>
-<target>&Sťahovannie</target>
-
-<source>FreeFileSync is up to date.</source>
-<target>FreeFileSync je aktuálny.</target>
-
-<source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source>
-<target>Nie je možné nájsť online číslo verzie FreeFileSync. pravdepodobne je k dispozícií novšia verzia. Overiť teraz manuálne?</target>
-
-<source>&Check</source>
-<target>&Kontrola</target>
-
-<source>Consistency check failed for %x.</source>
-<target>Overenie konzistencie pre %x zlyhalo.</target>
-
-<source>Installation was registered on a different operating system.</source>
-<target>Inštalácia bola registrovaná na inom operačnom systéme.</target>
-
-<source>Failed to activate FreeFileSync Donation Edition.</source>
-<target>aktivácia FreeFileSync Donation Edition bola neúspešná.</target>
-
-<source>Incorrect activation key.</source>
-<target>Neplatný aktivačný kľúč.</target>
-
-<source>Unable to register to receive system messages.</source>
-<target>Nepodarilo sa registrovať k odberu systémových správ.</target>
-
-<source>The %x installation option is only available in the FreeFileSync Donation Edition.</source>
-<target>Inštalačná možnosť %x je dostupná iba pri FreeFileSync Donation Edition.</target>
-
-<source>Cannot find system function %x.</source>
-<target>Nie je možné nájsť systémovú funkciu %x.</target>
-
-<source>Unable to register device notifications for %x.</source>
-<target>Nepodarilo sa registrovať správy zaiadenia %x.</target>
-
-<source>Cannot monitor directory %x.</source>
-<target>Nie je možné nastaviť monitorovanie adresára %x.</target>
-
-<source>The file is locked by another process:</source>
-<target>Súbor je uzamknutý iným procesom:</target>
-
-<source>Cannot read security context of %x.</source>
-<target>Nie je možné načítať prístupové práva pre %x.</target>
-
-<source>Cannot write security context of %x.</source>
-<target>Nie je možné zapísať prístupové práva pre %x.</target>
-
-<source>Cannot read permissions of %x.</source>
-<target>Nie je možné načítať oprávnenie pre %x.</target>
-
-<source>Cannot copy permissions from %x to %y.</source>
-<target>Nie je možné kopírovať oprávnenie z %x do %y.</target>
-
-<source>%x is not a regular directory name.</source>
-<target>%x nie je platným názvom adresára.</target>
-
-<source>Cannot copy file %x to %y.</source>
-<target>Nie je možné kopírovať súbor %x do %y.</target>
-
-<source>Cannot copy attributes from %x to %y.</source>
-<target>Nie je možné kopírovať atribúty z %x do %y.</target>
-
-<source>%x TB</source>
-<target>%x TB</target>
-
-<source>%x PB</source>
-<target>%x PB</target>
-
-<source>
-<pluralform>1 min</pluralform>
-<pluralform>%x min</pluralform>
-</source>
-<target>
-<pluralform>1 minúta</pluralform>
-<pluralform>%x minúty</pluralform>
-<pluralform>%x minút</pluralform>
-</target>
-
-<source>
-<pluralform>1 hour</pluralform>
-<pluralform>%x hours</pluralform>
-</source>
-<target>
-<pluralform>1 hodina</pluralform>
-<pluralform>%x hodiny</pluralform>
-<pluralform>%x hodín</pluralform>
-</target>
-
-<source>Cannot set privilege %x.</source>
-<target>Nie je možné nastaviť práva pre %x.</target>
-
-<source>Unable to suspend system sleep mode.</source>
-<target>Nie je možné pozastaviť Režím spánku.</target>
-
-<source>Cannot change process I/O priorities.</source>
-<target>Nie je možné nastaviť I/O priority procesu.</target>
-
-<source>Unable to shut down the system.</source>
-<target>Systém sa nedá vypnúť.</target>
-
-<source>Checking recycle bin failed for folder %x.</source>
-<target>Zlyhala kontrola Koša pre priečinok %x.</target>
-
-<source>Prepare installation</source>
-<target>Príprava inštalácie</target>
-
-<source>Choose which components you want to install.</source>
-<target>Vyberte komponenty k inštalácií.</target>
-
-<source>Select installation type:</source>
-<target>Vyberte typ inštalácie:</target>
-
-<source>Local</source>
-<target>Lokálne</target>
-
-<source>Portable</source>
-<target>Prenosná</target>
-
-<source>Save settings in %x</source>
-<target>Uložiť nastavenia do %x</target>
-
-<source>Register FreeFileSync file extensions</source>
-<target>Zaregistruje prípony súborov FreeFileSync</target>
-
-<source>Create Explorer context menu entries</source>
-<target>Vytvoriť položky v kontextovej pnuke Prieskumníka</target>
-
-<source>Save settings in installation directory</source>
-<target>Uložiť nastavenia do zložky inštalácie</target>
-
-<source>Do not write to Registry</source>
-<target>Nezapisovať do Registrov</target>
-
-<source>Just copy the files</source>
-<target>Skopíruje iba súbory</target>
-
-<source>Choose a directory for installation:</source>
-<target>Vyberte zložku pre inštaláciu:</target>
-
-<source>Create shortcuts:</source>
-<target>Vytvoriť zástupcu:</target>
-
-<source>Desktop</source>
-<target>Plocha</target>
-
-<source>Start Menu</source>
-<target>Ponuka Štart</target>
-
-<source>Send To</source>
-<target>Odoslať kam</target>
-
-<source>Registering FreeFileSync file extensions</source>
-<target>Zaregistrovať príponu súborov FreeFileSync</target>
-
-<source>Unregistering FreeFileSync file extensions</source>
-<target>Odregistrovať príponu súborov FreeFileSync</target>
-
-<source>FreeFileSync Configuration</source>
-<target>FreeFileSync konfigurácia</target>
-
-<source>FreeFileSync Batch File</source>
-<target>Dávk. súbor FreeFileSync</target>
-
-<source>FreeFileSync Synchronization Database</source>
-<target>Synchronizačná databáza FreeFileSync</target>
-
-<source>RealTimeSync Configuration</source>
-<target>Konfigurácia RealTimeSync</target>
-
-<source>Edit with FreeFileSync</source>
-<target>Upraviť vo FreeFileSync</target>
-
-<source>Instead of an ad, here's an animal.</source>
-<target>Namiesto reklamy je tu obrázok zvieraťa.</target>
-
-<source>The FreeFileSync portable version cannot install into a subfolder of %x.</source>
-<target>Prenosnú verziu FreeFileSync nie je možné inštalovať do podpriečinka %x.</target>
-
-<source>Please choose the local installation type or select a different folder for installation.</source>
-<target>Prosím zvoľte lokálny typ inštalácie alebo vyberte iný priečinok pre inštaláciu.</target>
-
-<source>Get the Donation Edition with bonus features and help keep FreeFileSync ad-free.</source>
-<target>Získajte Donation Edition s bonusovými funkciami a pomôžte, aby ostal FreeFileSync bez reklami.</target>
-
diff --git a/FreeFileSync/Build/Languages/turkish.lng b/FreeFileSync/Build/Languages/turkish.lng
deleted file mode 100755
index 2b1e70a7..00000000
--- a/FreeFileSync/Build/Languages/turkish.lng
+++ /dev/null
@@ -1,2091 +0,0 @@
-<header>
- <language>Türkçe</language>
- <translator>Kaya Zeren</translator>
- <locale>tr_TR</locale>
- <image>flag_turkey.png</image>
- <plural_count>2</plural_count>
- <plural_definition>n == 1 ? 0 : 1</plural_definition>
-</header>
-
-<source>Both sides have changed since last synchronization.</source>
-<target>Son eşitlemeden bu yana iki tarafında içeriği değişmiş.</target>
-
-<source>Cannot determine sync-direction:</source>
-<target>Eşitleme yönü belirlenemedi:</target>
-
-<source>No change since last synchronization.</source>
-<target>Son eşitlemeden bu yana bir değişiklik olmamış.</target>
-
-<source>The database entry is not in sync considering current settings.</source>
-<target>Geçerli kayıtlar ile veritabanı kaydı aynı değil.</target>
-
-<source>Setting default synchronization directions: Old files will be overwritten with newer files.</source>
-<target>Varsayılan eşitleme yönleri ayarlanıyor: Yeni dosyalar eski dosyaların üzerine yazılacak.</target>
-
-<source>Creating file %x</source>
-<target>%x dosyası oluşturuluyor</target>
-
-<source>Creating folder %x</source>
-<target>%x klasörü oluşturuluyor</target>
-
-<source>Creating symbolic link %x</source>
-<target>%x sembolik bağlantısı oluşturuluyor</target>
-
-<source>Moving file %x to the recycle bin</source>
-<target>%x dosyası Geri Dönüşüm Kutusuna atılıyor</target>
-
-<source>Moving folder %x to the recycle bin</source>
-<target>%x klasörü Geri Dönüşüm Kutusuna atılıyor</target>
-
-<source>Moving symbolic link %x to the recycle bin</source>
-<target>%x simgesel bağlantısı Geri Dönüşüm Kutusuna atılıyor</target>
-
-<source>Deleting file %x</source>
-<target>%x dosyası siliniyor</target>
-
-<source>Deleting folder %x</source>
-<target>%x klasörü siliniyor</target>
-
-<source>Deleting symbolic link %x</source>
-<target>%x sembolik bağlantısı siliniyor</target>
-
-<source>Checking recycle bin availability for folder %x...</source>
-<target>%x klasörü için Geri Dönüşüm Kutusu kullanılabilir mi diye bakılıyor...</target>
-
-<source>The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored:</source>
-<target>Geri Dönüşüm Kutusu şu klasörler tarafından desteklenmiyor. Silinmiş ya da üzerine yazılmış klasörler geri yüklenemez:</target>
-
-<source>An exception occurred</source>
-<target>Olağan dışı bir durumla karşılaşıldı</target>
-
-<source>A left and a right directory path are expected after %x.</source>
-<target>%x ardından sol ve sağ klasör belirtilmelidir.</target>
-
-<source>Syntax error</source>
-<target>Yazım hatası</target>
-
-<source>Cannot find file %x.</source>
-<target>%x dosyası bulunamadı.</target>
-
-<source>Error</source>
-<target>Sorun</target>
-
-<source>File %x does not contain a valid configuration.</source>
-<target>%x dosyası geçerli yapılandırma bilgilerini içermiyor.</target>
-
-<source>The config file must not contain settings at directory pair level when directories are set via command line.</source>
-<target>Klasörler komut satırından seçildiği zaman, yapılandırma dosyasında klasör çifti düzeyinde ayarlar bulunmamalıdır.</target>
-
-<source>Directories cannot be set for more than one configuration file.</source>
-<target>Klasörler birden fazla yapılandırma dosyasında kullanılamaz.</target>
-
-<source>Command line</source>
-<target>Komut Satırı</target>
-
-<source>Syntax:</source>
-<target>Yazım:</target>
-
-<source>config files:</source>
-<target>yapılandırma dosyaları:</target>
-
-<source>directory</source>
-<target>klasör</target>
-
-<source>global config file:</source>
-<target>genel yapılandırma dosyası:</target>
-
-<source>Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files.</source>
-<target>FreeFileSync "ffs_gui" ya da "ffs_batch" yapılandırma dosyalarının sayısı.</target>
-
-<source>Any number of alternative directory pairs for at most one config file.</source>
-<target>En fazla bir yapılandırma dosyası için herhangi bir sayıda alternatif klasör çifti.</target>
-
-<source>Open the selected configuration for editing only, without executing it.</source>
-<target>Seçilmiş yapılandırmayı yürütmeden yalnız düzenlemek için açar.</target>
-
-<source>Path to an alternate GlobalSettings.xml file.</source>
-<target>Alternatif GlobalSettings.xml dosyasının yolu.</target>
-
-<source>Installation files are corrupted. Please reinstall FreeFileSync.</source>
-<target>Kurulum dosyaları bozulmuş. Lütfen FreeFileSync uygulamasını yeniden kurun.</target>
-
-<source>Cannot load file %x.</source>
-<target>%x dosyası yüklenemedi.</target>
-
-<source>Cannot find the following folders:</source>
-<target>Aşağıdaki klasörler bulunamadı:</target>
-
-<source>The following folders do not yet exist:</source>
-<target>Şu klasörler bulunamadı:</target>
-
-<source>The folders are created automatically when needed.</source>
-<target>Klasörler gerektiğinde otomatik olarak oluşturulur.</target>
-
-<source>The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses.</source>
-<target></target>
-
-<source>Scanning:</source>
-<target>Taranıyor:</target>
-
-<source>Comparison finished:</source>
-<target>Karşılaştırma tamamlandı:</target>
-
-<source>
-<pluralform>1 item found</pluralform>
-<pluralform>%x items found</pluralform>
-</source>
-<target>
-<pluralform>1 öge bulundu</pluralform>
-<pluralform>%x öge bulundu</pluralform>
-</target>
-
-<source>File %x has an invalid date.</source>
-<target>%x dosyasının tarihi geçersiz.</target>
-
-<source>Date:</source>
-<target>Tarih:</target>
-
-<source>Files have the same date but a different size.</source>
-<target>Dosyaların tarihleri aynı ancak boyutları farklı.</target>
-
-<source>Size:</source>
-<target>Boyut:</target>
-
-<source>Content comparison was skipped for excluded files.</source>
-<target>Katılmayan dosyalar için içerik karşılaştırması atlandı.</target>
-
-<source>Items differ in attributes only</source>
-<target>Yalnız öznitelikleri farklı olan ögeler</target>
-
-<source>The name %x is used by more than one item in the folder.</source>
-<target>%x adı klasördeki birden fazla öge için kullanılmış.</target>
-
-<source>Resolving symbolic link %x</source>
-<target>%x sembolik bağlantısı çözümleniyor</target>
-
-<source>Comparing content of files %x</source>
-<target>%x dosyalarının içeriği karşılaştırılıyor</target>
-
-<source>Generating file list...</source>
-<target>Dosya listesi oluşturuluyor...</target>
-
-<source>Fail-safe file copy</source>
-<target>Dosyalar Sorunsuz Kopyalansın</target>
-
-<source>Enabled</source>
-<target>Etkin</target>
-
-<source>Disabled</source>
-<target>Devre Dışı</target>
-
-<source>Copy locked files</source>
-<target>Kilitli Dosyalar da Kopyalansın</target>
-
-<source>Copy file access permissions</source>
-<target>Dosya Erişim İzinleri de Kopyalansın</target>
-
-<source>File time tolerance</source>
-<target>Yok sayılacak dosya zamanı farkı</target>
-
-<source>Run with background priority</source>
-<target>Artalan önceliği ile çalışsın</target>
-
-<source>Lock directories during sync</source>
-<target>Klasörler eşitleme sırasında kilitlensin</target>
-
-<source>Verify copied files</source>
-<target>Kopyalanmış dosyalar doğrulansın</target>
-
-<source>Using non-default global settings:</source>
-<target>Varsayılan olmayan genel ayarlar kullanılıyor:</target>
-
-<source>A folder input field is empty.</source>
-<target>Bir klasör giriş alanı boş.</target>
-
-<source>The corresponding folder will be considered as empty.</source>
-<target>Karşıdaki klasör boş olarak kabul edilecek.</target>
-
-<source>Exclude:</source>
-<target>Katılmayacak Ögeler:</target>
-
-<source>One base folder of a folder pair is contained in the other one.</source>
-<target>Klasör çiftindeki temel bir klasör diğerinin içinde bulunuyor.</target>
-
-<source>The folder should be excluded from synchronization via filter.</source>
-<target>Süzgeç kullanılarak klasör eşitlemeye katılmamalı.</target>
-
-<source>Calculating sync directions...</source>
-<target>Eşitleme yönleri hesaplanıyor...</target>
-
-<source>Out of memory.</source>
-<target>Bellek yetersiz.</target>
-
-<source>Database file %x is incompatible.</source>
-<target>%x veritabanı dosyası uyumsuz.</target>
-
-<source>Initial synchronization:</source>
-<target>Başlangıç eşitlemesi:</target>
-
-<source>Database file %x does not yet exist.</source>
-<target>%x veritabanı dosyası henüz yok.</target>
-
-<source>Database file is corrupted:</source>
-<target>Veritabanı dosyası bozulmuş:</target>
-
-<source>Cannot write file %x.</source>
-<target>%x dosyası yazılamadı.</target>
-
-<source>Cannot read file %x.</source>
-<target>%x dosyası okunamadı.</target>
-
-<source>The database files do not yet contain information about the last synchronization.</source>
-<target>Veritabanı dosyalarında henüz son eşitleme bilgileri yok.</target>
-
-<source>Loading file %x...</source>
-<target>%x dosyaları yükleniyor...</target>
-
-<source>Saving file %x...</source>
-<target>%x dosyası kaydediliyor...</target>
-
-<source>Searching for folder %x...</source>
-<target>%x klasörü aranıyor...</target>
-
-<source>Timeout while searching for folder %x.</source>
-<target>%x klasöründeki arama işlemi zaman aşımına uğradı.</target>
-
-<source>Cannot get process information.</source>
-<target>İşlem bilgisi alınamadı.</target>
-
-<source>Cannot read file attributes of %x.</source>
-<target>%x dosyasının öznitelikleri okunamadı.</target>
-
-<source>Waiting while directory is locked:</source>
-<target>Klasör kilitli olduğundan bekleniyor:</target>
-
-<source>Lock owner:</source>
-<target>Kilitleyen:</target>
-
-<source>Detecting abandoned lock...</source>
-<target>Kaldırılmış kilit algılanıyor...</target>
-
-<source>
-<pluralform>1 sec</pluralform>
-<pluralform>%x sec</pluralform>
-</source>
-<target>
-<pluralform>1 saniye</pluralform>
-<pluralform>%x saniye</pluralform>
-</target>
-
-<source>Item exists on left side only</source>
-<target>Yalnız solda bulunan ögeler</target>
-
-<source>Item exists on right side only</source>
-<target>Yalnız sağda bulunan ögeler</target>
-
-<source>Left side is newer</source>
-<target>Soldaki daha yeni ögeler</target>
-
-<source>Right side is newer</source>
-<target>Sağdaki daha yeni ögeler</target>
-
-<source>Items have different content</source>
-<target>İçeriği farklı ögeler</target>
-
-<source>Both sides are equal</source>
-<target>İki taraf eşit</target>
-
-<source>Conflict/item cannot be categorized</source>
-<target>Uyuşmayan/sınıflanamayan ögeler</target>
-
-<source>Copy new item to left</source>
-<target>Yeni öge sola kopyalansın</target>
-
-<source>Copy new item to right</source>
-<target>Yeni öge sağa kopyalansın</target>
-
-<source>Delete left item</source>
-<target>Soldaki öge silinsin</target>
-
-<source>Delete right item</source>
-<target>Sağdaki öge silinsin</target>
-
-<source>Move file on left</source>
-<target>Soldaki dosya taşınsın</target>
-
-<source>Move file on right</source>
-<target>Sağdaki dosya taşınsın</target>
-
-<source>Update left item</source>
-<target>Soldaki öge güncellensin</target>
-
-<source>Update right item</source>
-<target>Sağdaki öge güncellensin</target>
-
-<source>Do nothing</source>
-<target>Hiçbir işlem yapılmasın</target>
-
-<source>Update attributes on left</source>
-<target>Soldaki öznitelikler güncellensin</target>
-
-<source>Update attributes on right</source>
-<target>Sağdaki öznitelikler güncellensin</target>
-
-<source>Errors:</source>
-<target>Hatalar:</target>
-
-<source>Warnings:</source>
-<target>Uyarılar:</target>
-
-<source>Items processed:</source>
-<target>İşlenen öge:</target>
-
-<source>Items remaining:</source>
-<target>Kalan öge:</target>
-
-<source>Total time:</source>
-<target>Toplam süre:</target>
-
-<source>Warning</source>
-<target>Uyarı</target>
-
-<source>Stopped</source>
-<target>Durduruldu</target>
-
-<source>Cleaning up log files:</source>
-<target>Günlük dosyaları temizleniyor:</target>
-
-<source>Error parsing file %x, row %y, column %z.</source>
-<target>%x dosyası işlenirken sorun çıktı, satır %y, sütun %z.</target>
-
-<source>Services</source>
-<target>Hizmetler</target>
-
-<source>Show All</source>
-<target>Tümünü Görüntüle</target>
-
-<source>Hide Others</source>
-<target>Diğerlerini Gizle</target>
-
-<source>Hide %x</source>
-<target>%x Ögesini Gizle</target>
-
-<source>Quit %x</source>
-<target>%x Uygulamasından Çık</target>
-
-<source>Cannot set directory locks for the following folders:</source>
-<target>Şu klasörler kilitlenemedi:</target>
-
-<source>
-<pluralform>1 thread</pluralform>
-<pluralform>%x threads</pluralform>
-</source>
-<target>
-<pluralform>1 iş parçacığı</pluralform>
-<pluralform>%x iş parçacığı</pluralform>
-</target>
-
-<source>Cannot read directory %x.</source>
-<target>%x klasörü okunamadı.</target>
-
-<source>%x/sec</source>
-<target>%x/saniye</target>
-
-<source>%x items</source>
-<target>%x öge</target>
-
-<source>Show in Explorer</source>
-<target>Tarayıcıda Görüntüle</target>
-
-<source>Open with default application</source>
-<target>Varsayılan Uygulama ile Aç</target>
-
-<source>Browse directory</source>
-<target>Klasöre Gözat</target>
-
-<source>Unable to connect to %x.</source>
-<target>%x üzerine bağlanılamadı.</target>
-
-<source>Completed successfully</source>
-<target>Tamamlandı</target>
-
-<source>Completed with warnings</source>
-<target>Uyarılar ile tamamlandı</target>
-
-<source>Completed with errors</source>
-<target>Sorunlar ile tamamlandı</target>
-
-<source>Cannot access the Volume Shadow Copy Service.</source>
-<target>Birim Gölge Hizmetine erişilemiyor.</target>
-
-<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source>
-<target>Lütfen bu sistemde gölge kopyalar oluşturmak için FreeFileSync uygulamasının 64 bit sürümünü kullanın.</target>
-
-<source>Volume name %x is not part of file path %y.</source>
-<target>%x birim adı %y dosya yolunun bir parçası değil.</target>
-
-<source>File time and size</source>
-<target>Tarih ve Saate Göre</target>
-
-<source>File content</source>
-<target>İçeriğe Göre</target>
-
-<source>File size</source>
-<target>Boyuta Göre</target>
-
-<source>Two way</source>
-<target>Çift Yönlü</target>
-
-<source>Mirror</source>
-<target>Yansıtma</target>
-
-<source>Update</source>
-<target>Güncelleme</target>
-
-<source>Custom</source>
-<target>Özel</target>
-
-<source>Multiple...</source>
-<target>Çoklu...</target>
-
-<source>Cannot write file attributes of %x.</source>
-<target>%x dosya öznitelikleri yazılamadı.</target>
-
-<source>Cannot open file %x.</source>
-<target>%x dosyası açılamadı.</target>
-
-<source>%x and %y have different content.</source>
-<target>%x ve %y farklı içeriklere sahip.</target>
-
-<source>Data verification error:</source>
-<target>Veri doğrulama sorunu:</target>
-
-<source>Moving file %x to %y</source>
-<target>%x dosyası %y içine taşınıyor</target>
-
-<source>Moving folder %x to %y</source>
-<target>%x klasörü %y içine taşınıyor</target>
-
-<source>Moving symbolic link %x to %y</source>
-<target>%x sembolik bağlantısı %y içine taşınıyor</target>
-
-<source>Updating file %x</source>
-<target>%x dosyası güncelleniyor</target>
-
-<source>Updating symbolic link %x</source>
-<target>%x sembolik bağlantısı güncelleniyor</target>
-
-<source>Verifying file %x</source>
-<target>%x dosyası doğrulanıyor</target>
-
-<source>Updating attributes of %x</source>
-<target>%x öznitelikleri güncelleniyor</target>
-
-<source>Source item %x not found</source>
-<target>%x kaynak ögesi bulunamadı</target>
-
-<source>Cannot move file %x to %y.</source>
-<target>%x dosyası %y hedefine taşınamadı.</target>
-
-<source>Parent folder %x is not existing.</source>
-<target></target>
-
-<source>The name %x is already used by another item.</source>
-<target></target>
-
-<source>Cannot copy file %x to %y.</source>
-<target>%x dosyası %y olarak kopyalanamadı.</target>
-
-<source>Cannot copy symbolic link %x to %y.</source>
-<target>%x sembolik bağlantısı %y hedefine kopyalanamadı.</target>
-
-<source>Creating a Volume Shadow Copy for %x...</source>
-<target>%x için Birim Gölge Hizmeti oluşturuluyor...</target>
-
-<source>Cannot find folder %x.</source>
-<target>%x klasörü bulunamadı.</target>
-
-<source>Target folder %x already existing.</source>
-<target>%x hedef klasörü zaten var.</target>
-
-<source>Target folder input field must not be empty.</source>
-<target>Hedef klasör giriş alanı boş olmamalı.</target>
-
-<source>Source folder %x not found.</source>
-<target>%x kaynak klasörü bulunamadı.</target>
-
-<source>Please enter a target folder for versioning.</source>
-<target>Sürüm izlemesinde kullanılacak bir hedef klasör yazın.</target>
-
-<source>The following items have unresolved conflicts and will not be synchronized:</source>
-<target>Uyuşmazlığı çözümlenmemiş şu ögeler eşitlenmeyecek:</target>
-
-<source>Folder pair:</source>
-<target>Klasör Çifti:</target>
-
-<source>The following folders are significantly different. Please check that the correct folders are selected for synchronization.</source>
-<target>Şu klasörler birbirinden çok farklı. Lütfen eşitleme için doğru klasörleri seçtiğinizden emin olun.</target>
-
-<source>Not enough free disk space available in:</source>
-<target>Şurada yeterli disk alanı yok:</target>
-
-<source>Required:</source>
-<target>Zorunlu:</target>
-
-<source>Available:</source>
-<target>Kullanılabilir:</target>
-
-<source>Some files will be synchronized as part of multiple base folders.</source>
-<target>Bazı dosyalar çoklu temel klasörlerin bir parçası olarak eşitlenecek.</target>
-
-<source>To avoid conflicts, set up exclude filters so that each updated file is considered by only one base folder.</source>
-<target>Çakışmaları engellemek için katmama süzgeçleri ayarlayarak güncellenen her dosyanın yalnız bir temel klasör olarak değerlendirilmesini sağlayın.</target>
-
-<source>Versioning folder:</source>
-<target>Sürüm klasörü:</target>
-
-<source>Base folder:</source>
-<target>Temel klasör:</target>
-
-<source>The versioning folder is contained in a base folder.</source>
-<target>Sürümlendirme klasörü bir temel klasör içinde bulunuyor.</target>
-
-<source>Synchronizing folder pair:</source>
-<target>Eşitlenen klasör çifti:</target>
-
-<source>Generating database...</source>
-<target>Veritabanı oluşturuluyor...</target>
-
-<source>Searching for old file versions:</source>
-<target>Önceki dosya sürümleri aranıyor:</target>
-
-<source>Removing old file versions:</source>
-<target>Önceki dosya sürümleri siliniyor:</target>
-
-<source>Unable to create time stamp for versioning:</source>
-<target>Sürümlendirme için zaman damgası oluşturulamadı:</target>
-
-<source>
-Unexpected size of data stream.
-Expected: %x bytes
-Actual: %y bytes
-</source>
-<target>
-Veri akışının boyutu beklenenden farklı.
-Beklenen: %x bayt
-Gerçekleşen: %y bayt
-</target>
-
-<source>Cannot write permissions of %x.</source>
-<target>%x izinleri yazılamadı.</target>
-
-<source>Operation not supported between different devices.</source>
-<target></target>
-
-<source>Cannot delete file %x.</source>
-<target>%x dosyası silinemedi.</target>
-
-<source>Cannot delete symbolic link %x.</source>
-<target>%x sembolik bağlantısı silinemedi.</target>
-
-<source>Cannot delete directory %x.</source>
-<target>%x klasörü silinemedi.</target>
-
-<source>Error Code %x</source>
-<target>Hata Kodu %x</target>
-
-<source>Failed to get information about server %x.</source>
-<target>%x sunucusu hakkında bilgi alınamadı.</target>
-
-<source>Cannot open directory %x.</source>
-<target>%x klasörü açılamadı.</target>
-
-<source>Cannot write modification time of %x.</source>
-<target>%x dosyasının değişiklik tarihi yazılamadı.</target>
-
-<source>Cannot determine final path for %x.</source>
-<target>%x dosyasının son yolu belirlenemedi.</target>
-
-<source>Cannot create directory %x.</source>
-<target>%x klasörü oluşturulamadı.</target>
-
-<source>Operation not supported by device.</source>
-<target></target>
-
-<source>Cannot resolve symbolic link %x.</source>
-<target>%x sembolik bağlantısı çözümlenemedi.</target>
-
-<source>Unable to move %x to the recycle bin.</source>
-<target>%x geri dönüşüm kutusuna atılamadı.</target>
-
-<source>Unable to access %x.</source>
-<target>%x üzerine erişilemedi.</target>
-
-<source>Authentication completed.</source>
-<target>Kimlik doğrulandı.</target>
-
-<source>You may close this page now and continue with FreeFileSync.</source>
-<target>Bu sayfayı kapatıp FreeFileSync ile çalışmayı sürdürebilirsiniz.</target>
-
-<source>Authentication failed.</source>
-<target>Kimlik doğrulanamadı.</target>
-
-<source>Unable to disconnect from %x.</source>
-<target></target>
-
-<source>Cannot monitor directory %x.</source>
-<target>%x klasörü izlenemiyor.</target>
-
-<source>Cannot find %x.</source>
-<target>%x bulunamadı.</target>
-
-<source>Please authorize access to user account %x.</source>
-<target></target>
-
-<source>Cannot determine free disk space for %x.</source>
-<target>%x için boş disk alanı belirlenemedi.</target>
-
-<source>Cannot find device %x.</source>
-<target>%x aygıtı bulunamadı.</target>
-
-<source>Unsupported item type.</source>
-<target></target>
-
-<source>Incorrect command line:</source>
-<target>Satırdaki komut geçersiz:</target>
-
-<source>The server does not support authentication via %x.</source>
-<target>Sunucu %x üzerinden kimlik doğrulamasını desteklemiyor.</target>
-
-<source>
-<pluralform>Operation timed out after 1 second.</pluralform>
-<pluralform>Operation timed out after %x seconds.</pluralform>
-</source>
-<target>
-<pluralform>İşlem 1 saniye sonunda zaman aşımına uğradı.</pluralform>
-<pluralform>İşlem %x saniye sonunda zaman aşımına uğradı.</pluralform>
-</target>
-
-<source>
-<pluralform>Cannot wait on more than 1 connection at a time.</pluralform>
-<pluralform>Cannot wait on more than %x connections at a time.</pluralform>
-</source>
-<target>
-<pluralform>Aynı anda 1 taneden fazla bağlantı beklenemez.</pluralform>
-<pluralform>Aynı anda %x taneden fazla bağlantı beklenemez.</pluralform>
-</target>
-
-<source>Active connections: %x</source>
-<target>Etkin bağlantı sayısı: %x</target>
-
-<source>Failed to open SFTP channel number %x.</source>
-<target>%x SFTP kanal numarası açılamadı.</target>
-
-<source>Drag && drop</source>
-<target>Dosyaları sürükleyip buraya bırakın</target>
-
-<source>Select a folder</source>
-<target>Bir klasör seçin</target>
-
-<source>&New</source>
-<target>&Yeni</target>
-
-<source>&Open...</source>
-<target>&Aç...</target>
-
-<source>Save &as...</source>
-<target>F&arklı Kaydet...</target>
-
-<source>E&xit</source>
-<target>Çı&k</target>
-
-<source>&File</source>
-<target>&Dosya</target>
-
-<source>&View help</source>
-<target>&Yardım Konuları</target>
-
-<source>&About</source>
-<target>H&akkında</target>
-
-<source>&Help</source>
-<target>&Yardım</target>
-
-<source>Usage:</source>
-<target>Kullanım:</target>
-
-<source>1. Select folders to watch.</source>
-<target>1. İzlenecek klasörleri seçin.</target>
-
-<source>2. Enter a command line.</source>
-<target>2. Bir satır komutu yazın.</target>
-
-<source>3. Press 'Start'.</source>
-<target>3. 'Başlat' düğmesine tıklayın.</target>
-
-<source>To get started just import a "ffs_batch" file.</source>
-<target>"ffs_batch" dosyasını yükleyerek başlayabilirsiniz.</target>
-
-<source>Folders to watch:</source>
-<target>İzlenecek Klasörler:</target>
-
-<source>Add folder</source>
-<target>Klasör Ekle</target>
-
-<source>Remove folder</source>
-<target>Klasörü Sil</target>
-
-<source>Browse</source>
-<target>Gözat</target>
-
-<source>Idle time (in seconds):</source>
-<target>Boşta Bekleme Süresi (saniye):</target>
-
-<source>Idle time between last detected change and execution of command</source>
-<target>Son algılanan değişiklik ile komutun yürütülmesi arasında beklenecek süre</target>
-
-<source>Command line:</source>
-<target>Satır Komutu:</target>
-
-<source>
-The command is triggered if:
-- files or subfolders change
-- new folders arrive (e.g. USB stick insert)
-</source>
-<target>
-Komut şu durumlarda yürütülür:
-- dosya ya alt klasörler değiştiğinde
-- yeni klasörler algılandığında (örneğin bir USB bellek takıldığında)
-</target>
-
-<source>Start</source>
-<target>Başlat</target>
-
-<source>About</source>
-<target>Hakkında</target>
-
-<source>Build: %x</source>
-<target>Yapım: %x</target>
-
-<source>All files</source>
-<target>Tüm Dosyalar</target>
-
-<source>Automated Synchronization</source>
-<target>Otomatik Eşitleme</target>
-
-<source>The %x protocol does not support directory monitoring:</source>
-<target>%x iletişim kuralı klasör izlemesini desteklemiyor:</target>
-
-<source>Directory monitoring active</source>
-<target>Klasör izlemesi yapılıyor</target>
-
-<source>Waiting until directory is available:</source>
-<target>Klasörün kullanılabilir olması bekleniyor:</target>
-
-<source>&Restore</source>
-<target>Gö&rüntülensin</target>
-
-<source>&Show error message</source>
-<target></target>
-
-<source>&Quit</source>
-<target>Çı&k</target>
-
-<source>&Retry</source>
-<target>&Yeniden Dene</target>
-
-<source>
-<pluralform>1 byte</pluralform>
-<pluralform>%x bytes</pluralform>
-</source>
-<target>
-<pluralform>1 bayt</pluralform>
-<pluralform>%x bayt</pluralform>
-</target>
-
-<source>%x MB</source>
-<target>%x MB</target>
-
-<source>%x KB</source>
-<target>%x KB</target>
-
-<source>%x GB</source>
-<target>%x GB</target>
-
-<source>Loading...</source>
-<target>Yükleniyor...</target>
-
-<source>Scanning...</source>
-<target>Taranıyor...</target>
-
-<source>job name</source>
-<target>iş adı</target>
-
-<source>System: Sleep</source>
-<target>Sistem: Uyku</target>
-
-<source>System: Shut down</source>
-<target>Sistem: Kapat</target>
-
-<source>Nothing to synchronize</source>
-<target>Eşitlenecek bir şey yok</target>
-
-<source>Executing command %x</source>
-<target>%x komutu yürütülüyor</target>
-
-<source>You can switch to FreeFileSync's main window to resolve this issue.</source>
-<target>Bu sorunu çözmek için FreeFileSync ana penceresine geçebilirsiniz.</target>
-
-<source>&Don't show this warning again</source>
-<target>Bu &uyarı bir daha görüntülenmesin</target>
-
-<source>&Ignore</source>
-<target>&Yok Say</target>
-
-<source>&Switch</source>
-<target>&Değiştir</target>
-
-<source>Switching to FreeFileSync's main window</source>
-<target>FreeFileSync ana penceresine geçiliyor</target>
-
-<source>Automatic retry</source>
-<target>Otomatik yeniden denensin</target>
-
-<source>Ignore &all</source>
-<target>Tümünü Yok S&ay</target>
-
-<source>Retrying operation...</source>
-<target>İşlem yeniden deneniyor...</target>
-
-<source>Serious Error</source>
-<target>Ciddi Sorun</target>
-
-<source>Last session</source>
-<target>Önceki oturum</target>
-
-<source>Today</source>
-<target>Bugün</target>
-
-<source>
-<pluralform>1 day</pluralform>
-<pluralform>%x days</pluralform>
-</source>
-<target>
-<pluralform>1 gün</pluralform>
-<pluralform>%x gün</pluralform>
-</target>
-
-<source>Name</source>
-<target>Ad</target>
-
-<source>Last sync</source>
-<target>Son eşitleme</target>
-
-<source>Log</source>
-<target>Günlük</target>
-
-<source>Folder</source>
-<target>Klasör</target>
-
-<source>Symlink</source>
-<target>Smblkbağlantı</target>
-
-<source>Full path</source>
-<target>Tam Yol</target>
-
-<source>Relative path</source>
-<target>Bağıl yol</target>
-
-<source>Item name</source>
-<target>Öge adı</target>
-
-<source>Size</source>
-<target>Boyut</target>
-
-<source>Date</source>
-<target>Tarih</target>
-
-<source>Extension</source>
-<target>Uzantı</target>
-
-<source>Category</source>
-<target>Öge Türü</target>
-
-<source>Action</source>
-<target>İşlem</target>
-
-<source>Local comparison settings</source>
-<target>Yerel karşılaştırma ayarları</target>
-
-<source>Local synchronization settings</source>
-<target>Yerel eşitleme ayarları</target>
-
-<source>Local filter</source>
-<target>Yerel Süzgeç</target>
-
-<source>Active</source>
-<target>Etkin</target>
-
-<source>None</source>
-<target>Yok</target>
-
-<source>Remove local settings</source>
-<target>Yerel Ayarları Sil</target>
-
-<source>Clear local filter</source>
-<target>Yerel Süzgeci Temizle</target>
-
-<source>Copy</source>
-<target>Kopyala</target>
-
-<source>Paste</source>
-<target>Yapıştır</target>
-
-<source>The selected folder %x cannot be used with FreeFileSync.</source>
-<target>Seçilmiş %x klasörü FreeFileSync ile birlikte kullanılamaz.</target>
-
-<source>Please select a folder on a local file system, network or an MTP device.</source>
-<target>Lütfen yerel dosya sistemi, ağ ya da MTP aygıtı üzerinde bulunan bir klasör seçin.</target>
-
-<source>Defined by context of use</source>
-<target>Kullanım bağlamına göre tanımlı</target>
-
-<source>Requires FreeFileSync Donation Edition</source>
-<target>FreeFileSync Donation Edition gereklidir</target>
-
-<source>&Save</source>
-<target>&Kaydet</target>
-
-<source>Save as &batch job...</source>
-<target>&Toplu İş Olarak Kaydet...</target>
-
-<source>Show &log</source>
-<target>Gün&lüğü Görüntüle</target>
-
-<source>Start &comparison</source>
-<target>&Karşılaştırmayı Başlat</target>
-
-<source>C&omparison settings</source>
-<target>K&arşılaştırma Ayarları</target>
-
-<source>&Filter settings</source>
-<target>&Süzme Ayarları</target>
-
-<source>S&ynchronization settings</source>
-<target>Eşi&tleme Ayarları</target>
-
-<source>Start &synchronization</source>
-<target>&Eşitlemeyi Başlat</target>
-
-<source>&Actions</source>
-<target>İş&lemler</target>
-
-<source>&Preferences</source>
-<target>&Ayarlar</target>
-
-<source>&Language</source>
-<target>&Dil</target>
-
-<source>&Find...</source>
-<target>A&rama...</target>
-
-<source>&Export file list...</source>
-<target>&Dosya Listesini Ver...</target>
-
-<source>&Reset layout</source>
-<target>Görünümü &Sıfırla</target>
-
-<source>&Tools</source>
-<target>&Araçlar</target>
-
-<source>&Check for updates now</source>
-<target>&Güncellemeleri Denetle</target>
-
-<source>Check &automatically once a week</source>
-<target>&Haftada Bir Denetle</target>
-
-<source>Cancel</source>
-<target>İptal</target>
-
-<source>Compare</source>
-<target>Karşılaştır</target>
-
-<source>Synchronize</source>
-<target>Eşitle</target>
-
-<source>Add folder pair</source>
-<target>Klasör Çifti Ekle</target>
-
-<source>Remove folder pair</source>
-<target>Klasör Çiftini Sil</target>
-
-<source>Access online storage</source>
-<target>Çevrimiçi Depolama Erişimi</target>
-
-<source>Close search bar</source>
-<target>Arama Çubuğunu Kapat</target>
-
-<source>Find:</source>
-<target>Aranacak ifade:</target>
-
-<source>Match case</source>
-<target>Büyük küçük harf uyumu göz önüne alınsın</target>
-
-<source>New</source>
-<target>Yeni</target>
-
-<source>Open...</source>
-<target>Aç...</target>
-
-<source>Save</source>
-<target>Kaydet</target>
-
-<source>Save as...</source>
-<target>Farklı Kaydet...</target>
-
-<source>View type:</source>
-<target>Görünüm Kipi:</target>
-
-<source>Select view:</source>
-<target>Eşit Dosya Görünümü:</target>
-
-<source>Save as default</source>
-<target>Varsayılan Olarak Kaydet</target>
-
-<source>Statistics:</source>
-<target>İstatistikler:</target>
-
-<source>Number of files and folders that will be deleted</source>
-<target>Silinecek dosya ve klasör sayısı</target>
-
-<source>Number of files that will be updated</source>
-<target>Güncellenecek dosya sayısı</target>
-
-<source>Number of files and folders that will be created</source>
-<target>Eklenecek dosya ve klasör sayısı</target>
-
-<source>Total bytes to copy</source>
-<target>Toplam kopyalanacak bayt</target>
-
-<source>Arrange folder pair</source>
-<target>Klasör çiftini belirleyin</target>
-
-<source>Main settings:</source>
-<target>Temel ayarlar:</target>
-
-<source>Use local settings:</source>
-<target>Yerel Ayarlar Kullanılsın:</target>
-
-<source>Select a variant:</source>
-<target>İşlem Türünü Seçin:</target>
-
-<source>Include &symbolic links:</source>
-<target>&Sembolik Bağlantılar Katılsın:</target>
-
-<source>&Follow</source>
-<target>İ&zlensin</target>
-
-<source>&Direct</source>
-<target>&Yönlendirilsin</target>
-
-<source>More information</source>
-<target>Ayrıntılı bilgiler</target>
-
-<source>&Ignore time shift [hh:mm]</source>
-<target>&Yok Sayılacak Zaman Farkı [ss:dd]</target>
-
-<source>List of file time offsets to ignore</source>
-<target>Zaman farkı yok sayılacak dosyaların listesi</target>
-
-<source>Example:</source>
-<target>Örnek:</target>
-
-<source>Handle daylight saving time</source>
-<target>Yaz saati hakkında bilgiler</target>
-
-<source>Ignore errors</source>
-<target>Sorunlar yok sayılsın</target>
-
-<source>Retry count:</source>
-<target>Deneme Sayısı:</target>
-
-<source>Delay (in seconds):</source>
-<target>Bekleme (saniye):</target>
-
-<source>Performance improvements:</source>
-<target>Başarım İyileştirmeleri:</target>
-
-<source>Parallel file operations:</source>
-<target>Eş Zamanlı İşlenecek Dosya Sayısı:</target>
-
-<source>How to get best performance?</source>
-<target>En iyi başarım nasıl sağlanır?</target>
-
-<source>Local settings:</source>
-<target>Yerel ayarlar:</target>
-
-<source>Include:</source>
-<target>Katılacak Ögeler:</target>
-
-<source>Show examples</source>
-<target>Örneklere Bakın</target>
-
-<source>Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair.</source>
-<target>Eşitlenmeyecek dosyaların süzülme kurallarını belirleyin. Dosya yollarını bulundukları klasör çiftine göre yazın.</target>
-
-<source>File size:</source>
-<target>Dosya Boyutu:</target>
-
-<source>Minimum:</source>
-<target>En Küçük:</target>
-
-<source>Maximum:</source>
-<target>En Büyük:</target>
-
-<source>Time span:</source>
-<target>Zaman Aralığı:</target>
-
-<source>C&lear</source>
-<target>&Temizle</target>
-
-<source>Detect moved files</source>
-<target>Taşınmış dosyalar algılansın</target>
-
-<source>
-- Not supported by all file systems
-- Requires and creates database files
-- Detection not available for first sync
-</source>
-<target>
-- Tüm dosya sistemleri tarafından desteklenmez
-- Veritabanı dosyalarının kullanılması gerekir
-- Algılama, ilk eşitleme sırasında kullanılamaz
-</target>
-
-<source>Delete files:</source>
-<target>Dosya Silme İşlemi:</target>
-
-<source>&Recycle bin</source>
-<target>Ge&ri Dönüşüm Kutusuna Atılsın</target>
-
-<source>&Permanent</source>
-<target>&Kalıcı Olarak Silinsin</target>
-
-<source>&Versioning</source>
-<target>Eski &Sürüm Olarak Saklansın</target>
-
-<source>Move files to a user-defined folder</source>
-<target>Dosyalar kullanıcının belirteceği şu klasöre taşınsın</target>
-
-<source>Naming convention:</source>
-<target>Adlandırma Kuralı:</target>
-
-<source>Limit file versions:</source>
-<target>Dosya Sürümü Sayısı Sınırlaması:</target>
-
-<source>Last x days:</source>
-<target>Son x Gün:</target>
-
-<source>&Override default log path:</source>
-<target>Varsayılan yerine kullanılacak günlük y&olu:</target>
-
-<source>Run a command:</source>
-<target>Bir komut yürüt:</target>
-
-<source>OK</source>
-<target>Tamam</target>
-
-<source>Connection type:</source>
-<target>Bağlantı Türü:</target>
-
-<source>Connected user accounts:</source>
-<target></target>
-
-<source>&Add connection</source>
-<target></target>
-
-<source>&Disconnect</source>
-<target></target>
-
-<source>Selected user account:</source>
-<target></target>
-
-<source>Server name or IP address:</source>
-<target>Sunucu Adı / IP Adresi:</target>
-
-<source>Port:</source>
-<target>Kapı:</target>
-
-<source>Encryption:</source>
-<target>Şifreleme:</target>
-
-<source>&Disabled</source>
-<target>&Devre Dışı</target>
-
-<source>&Explicit SSL/TLS</source>
-<target>&Açık SSL/TLS</target>
-
-<source>Authentication:</source>
-<target>Kimlik Doğrulaması:</target>
-
-<source>&Password</source>
-<target>&Parola</target>
-
-<source>&Key file</source>
-<target>Anahtar &Dosyası</target>
-
-<source>&SSH agent</source>
-<target>&SSH İstemcisi</target>
-
-<source>User name:</source>
-<target>Kullanıcı Adı:</target>
-
-<source>Private key file:</source>
-<target>Özel Anahtar Dosyası:</target>
-
-<source>&Show password</source>
-<target>Parola &Görüntülensin</target>
-
-<source>Directory on server:</source>
-<target>Sunucudaki Klasör:</target>
-
-<source>Access timeout (in seconds):</source>
-<target>Erişim zaman aşımı (saniye):</target>
-
-<source>SFTP channels per connection:</source>
-<target>Bir Bağlantı için SFTP Kanalı Sayısı:</target>
-
-<source>Detect server limit</source>
-<target>Sunucu Sınırını Bul</target>
-
-<source>Select Folder</source>
-<target>Klasör Seçin</target>
-
-<source>Variant:</source>
-<target>İşlem Türü:</target>
-
-<source>&Don't show this dialog again</source>
-<target>Bu pencere bir daha &görüntülenmesin</target>
-
-<source>Items found:</source>
-<target>Bulunan öge:</target>
-
-<source>Time remaining:</source>
-<target>Kalan süre:</target>
-
-<source>Time elapsed:</source>
-<target>Geçen süre:</target>
-
-<source>Bytes</source>
-<target>Bayt</target>
-
-<source>Items</source>
-<target>Öge</target>
-
-<source>Synchronizing...</source>
-<target>Eşitleniyor...</target>
-
-<source>Minimize to notification area</source>
-<target>Bildirim alanına küçült</target>
-
-<source>When finished:</source>
-<target>Tamamlandığında:</target>
-
-<source>Auto-close</source>
-<target>Otomatik kapat</target>
-
-<source>Close</source>
-<target>Kapat</target>
-
-<source>&Pause</source>
-<target>&Duraklat</target>
-
-<source>Stop</source>
-<target>Durdur</target>
-
-<source>Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x</source>
-<target>Eşitleme işleminin hiç bir soru sorulmadan yapılması için bir toplu iş dosyası oluşturun. İşlemi başlatmak için bu dosyaya çift tıklayın ya da bir görev zamanlayıcıya şu şekilde ekleyin: %x</target>
-
-<source>Progress dialog:</source>
-<target>İlerleme penceresi:</target>
-
-<source>Run minimized</source>
-<target>Küçültülmüş Çalıştırılsın</target>
-
-<source>Show pop-up on errors or warnings</source>
-<target>Sorun ya da uyarılar açılır pencerede görüntülenir</target>
-
-<source>&Cancel</source>
-<target>İ&ptal edilsin</target>
-
-<source>Stop synchronization at first error</source>
-<target>Çıkan ilk sorunda eşitleme durdurulsun</target>
-
-<source>How can I schedule a batch job?</source>
-<target>Toplu İşlem Zamanlaması Hakkında Bilgiler</target>
-
-<source>&Keep relative paths</source>
-<target>Bağıl yollar &korunsun</target>
-
-<source>&Overwrite existing files</source>
-<target>&Varolan dosyaların üzerine yazılsın</target>
-
-<source>The following settings are used for all synchronization jobs.</source>
-<target>Aşağıdaki ayarlar tüm eşitleme işlemleri için geçerlidir.</target>
-
-<source>
-Copy to a temporary file (*.ffs_tmp) before overwriting target.
-This guarantees a consistent state even in case of a serious error.
-</source>
-<target>
-Dosyalar önce geçici dosyaya kopyalanıp (*.ffs_tmp) sonra yeniden adlandırılır.
-Bu yöntem, ciddi bir sorun çıkması durumunda bile işlemin tutarlı olarak yapılmasını sağlar.
-</target>
-
-<source>recommended</source>
-<target>önerilen</target>
-
-<source>Copy shared or locked files using the Volume Shadow Copy Service.</source>
-<target>Paylaşılan ya da kilitlenmiş dosyalar Birim Gölge Hizmetini kullanılarak kopyalanır.</target>
-
-<source>requires administrator rights</source>
-<target>yönetici izinleri gerekir</target>
-
-<source>Transfer file and folder permissions.</source>
-<target>Dosya ve klasör izinleri de aktarılır.</target>
-
-<source>Show all permanently hidden dialogs and warning messages again</source>
-<target>Kalıcı olarak gizlenmiş tüm ileti ve uyarılar yeniden görüntülenir</target>
-
-<source>Default log path:</source>
-<target>Varsayılan günlük dosyası yolu:</target>
-
-<source>&Delete logs after x days:</source>
-<target>&Günlük kayıtlarının silineceği gün sayısı:</target>
-
-<source>Customize context menu:</source>
-<target>Sağ Tık Menüsü Uyarlamaları:</target>
-
-<source>Description</source>
-<target>Açıklama</target>
-
-<source>&Default</source>
-<target>&Varsayılan</target>
-
-<source>Feedback and suggestions are welcome:</source>
-<target>Geri bildirim ve önerilerinizi bekliyoruz:</target>
-
-<source>Home page</source>
-<target>Ana Sayfa</target>
-
-<source>FreeFileSync Forum</source>
-<target>FreeFileSync Forumu</target>
-
-<source>Email</source>
-<target>E-posta</target>
-
-<source>If you like FreeFileSync:</source>
-<target>FreeFileSync hoşunuza gittiyse:</target>
-
-<source>Support with a donation</source>
-<target>Bağış yaparak destek olun</target>
-
-<source>The auto updater was disabled by the administrator.</source>
-<target>Otomatik güncelleme yönetici tarafından devre dışı bırakılmış.</target>
-
-<source>Donation details</source>
-<target>Bağış Bilgileri</target>
-
-<source>Source code written in C++ using:</source>
-<target>Kaynak kodu C++ kullanılarak yazılmıştır:</target>
-
-<source>Published under the GNU General Public License:</source>
-<target>GNU Genel Kamu Lisansı koşulları altında yayınlanmıştır:</target>
-
-<source>Many thanks for localization:</source>
-<target>Çeviriler için çok teşekkürler:</target>
-
-<source>Activate the FreeFileSync Donation Edition by one of the following methods:</source>
-<target>FreeFileSync Donation Edition şu yöntemlerden biri ile etkinleştirilebilir:</target>
-
-<source>1. Activate via internet now:</source>
-<target>1. İnternet üzerinden etkinleştirme:</target>
-
-<source>Activate online</source>
-<target>Çevrimiçi Etkinleştir</target>
-
-<source>2. Retrieve an offline activation key from the following URL:</source>
-<target>Şu adresten bir çevrimdışı etkinleştirme anahtarı alarak:</target>
-
-<source>&Copy to clipboard</source>
-<target>&Panoya Kopyala</target>
-
-<source>Enter activation key:</source>
-<target>Etkinleştirme Anahtarını Yazın:</target>
-
-<source>Activate offline</source>
-<target>Çevrimdışı Etkinleştir</target>
-
-<source>Highlight configurations that have not been run for more than the following number of days:</source>
-<target>Şu kadar gündür çalıştırılmayan yapılandırmalar vurgulansın:</target>
-
-<source>Synchronization Settings</source>
-<target>Eşitleme Ayarları</target>
-
-<source>Access Online Storage</source>
-<target>Çevrimiçi Depolama Erişimi</target>
-
-<source>Save as a Batch Job</source>
-<target>Toplu İş Olarak Kaydet</target>
-
-<source>Delete Items</source>
-<target>Ögeleri Sil</target>
-
-<source>Copy Items</source>
-<target>Ögeleri Kopyala</target>
-
-<source>Options</source>
-<target>Ayarlar</target>
-
-<source>Select Time Span</source>
-<target>Zaman Aralığı</target>
-
-<source>Highlight Configurations</source>
-<target>Yapılandırmalar Vurgulansın</target>
-
-<source>Info</source>
-<target>Bilgi</target>
-
-<source>No log entries</source>
-<target>Herhangi bir günlük kaydı yok</target>
-
-<source>Select all</source>
-<target>Tümünü Seç</target>
-
-<source>&Options</source>
-<target>&Ayarlar</target>
-
-<source>Main Bar</source>
-<target>Ana Çubuk</target>
-
-<source>Folder Pairs</source>
-<target>Klasör Çiftleri</target>
-
-<source>Find</source>
-<target>Arama</target>
-
-<source>View Settings</source>
-<target>Görünüm Ayarları</target>
-
-<source>Configuration</source>
-<target>İşlemler</target>
-
-<source>Overview</source>
-<target>Genel</target>
-
-<source>Swap sides</source>
-<target>Sağ ve Sol Tarafları Değiştir</target>
-
-<source>Show "%x"</source>
-<target>"%x" paneli görüntülensin</target>
-
-<source>&Show details</source>
-<target>&Ayrıntılara Bakın</target>
-
-<source>FreeFileSync %x is available!</source>
-<target>FreeFileSync %x sürümü yayınlanmış!</target>
-
-<source>Local path not available for %x.</source>
-<target>%x için yerel yol bulunamadı.</target>
-
-<source>Confirm</source>
-<target>Onaylayın</target>
-
-<source>
-<pluralform>Do you really want to execute the command %y for one item?</pluralform>
-<pluralform>Do you really want to execute the command %y for %x items?</pluralform>
-</source>
-<target>
-<pluralform>Bir öge için %y komutunu çalıştırmak istediğinize emin misiniz?</pluralform>
-<pluralform>%x öge için %y komutunu çalıştırmak istediğinize emin misiniz?</pluralform>
-</target>
-
-<source>&Execute</source>
-<target>Çalış&tır</target>
-
-<source>
-<pluralform>1 directory</pluralform>
-<pluralform>%x directories</pluralform>
-</source>
-<target>
-<pluralform>1 klasör</pluralform>
-<pluralform>%x klasör</pluralform>
-</target>
-
-<source>
-<pluralform>1 file</pluralform>
-<pluralform>%x files</pluralform>
-</source>
-<target>
-<pluralform>1 dosya</pluralform>
-<pluralform>%x dosya</pluralform>
-</target>
-
-<source>
-<pluralform>Showing %y of 1 row</pluralform>
-<pluralform>Showing %y of %x rows</pluralform>
-</source>
-<target>
-<pluralform>%y / 1 satır görüntüleniyor</pluralform>
-<pluralform>%y / %x satır görüntüleniyor</pluralform>
-</target>
-
-<source>Set direction:</source>
-<target>Yönü Seç:</target>
-
-<source>multiple selection</source>
-<target>çoklu seçim</target>
-
-<source>&Include via filter:</source>
-<target></target>
-
-<source>&Exclude via filter:</source>
-<target></target>
-
-<source>Include temporarily</source>
-<target>Geçici Olarak Kat</target>
-
-<source>Exclude temporarily</source>
-<target>Geçici Olarak Katma</target>
-
-<source>&Synchronize selection</source>
-<target></target>
-
-<source>&Copy to...</source>
-<target>&Farklı Konuma Kopyala...</target>
-
-<source>&Delete</source>
-<target>&Sil</target>
-
-<source>Include all</source>
-<target>Tümünü Seç</target>
-
-<source>Exclude all</source>
-<target>Tümünü Bırak</target>
-
-<source>Show icons:</source>
-<target>Simgeler Görüntülensin:</target>
-
-<source>Small</source>
-<target>Küçük</target>
-
-<source>Medium</source>
-<target>Orta</target>
-
-<source>Large</source>
-<target>Büyük</target>
-
-<source>Select time span...</source>
-<target>Zaman aralığını seçin...</target>
-
-<source>Donation Edition</source>
-<target>Bağış Sürümü</target>
-
-<source>Folder Comparison and Synchronization</source>
-<target>Klasör Karşılaştırma ve Eşitleme</target>
-
-<source>Configuration saved</source>
-<target>Yapılandırma kaydedildi</target>
-
-<source>FreeFileSync batch</source>
-<target>FreeFileSync toplu işi</target>
-
-<source>Do you want to save changes to %x?</source>
-<target>Değişiklikleri %x dosyasına kaydetmek istiyor musunuz?</target>
-
-<source>Never save &changes</source>
-<target>Değişiklikler asla &kaydedilmesin</target>
-
-<source>Do&n't save</source>
-<target>Kaydedilmesi&n</target>
-
-<source>Hide configuration</source>
-<target>Yapılandırma gizlensin</target>
-
-<source>Highlight...</source>
-<target>Vurgula...</target>
-
-<source>Clear filter</source>
-<target>Süzgeci Temizle</target>
-
-<source>Show files that exist on left side only</source>
-<target>Yalnız sol tarafta bulunan dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that exist on right side only</source>
-<target>Yalnız sağ tarafta bulunan dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that are newer on left</source>
-<target>Solda daha yeni olan dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that are newer on right</source>
-<target>Sağda daha yeni olan dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that are equal</source>
-<target>Eşit dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that are different</source>
-<target>Farklı olan dosyaları görüntüler ya da gizler</target>
-
-<source>Show conflicts</source>
-<target>Uyuşmazlıkları görüntüler ya da gizler</target>
-
-<source>Show files that will be created on the left side</source>
-<target>Sol tarafa eklenecek dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that will be created on the right side</source>
-<target>Sağ tarafa eklenecek dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that will be deleted on the left side</source>
-<target>Sol tarafta silinecek dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that will be deleted on the right side</source>
-<target>Sağ tarafta silinecek dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that will be updated on the left side</source>
-<target>Sol tarafta güncellenecek dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that will be updated on the right side</source>
-<target>Sağ tarafta güncellenecek dosyaları görüntüler ya da gizler</target>
-
-<source>Show files that won't be copied</source>
-<target>Kopyalanmayacak dosyaları görüntüler ya da gizler</target>
-
-<source>Show filtered or temporarily excluded files</source>
-<target>Süzülmüş ya da geçici olarak katılmayan dosyaları görüntüler ya da gizler</target>
-
-<source>Filter</source>
-<target>Süzme</target>
-
-<source>All files are in sync</source>
-<target>Tüm dosyalar eşit</target>
-
-<source>Cannot find %x</source>
-<target>%x bulunamadı</target>
-
-<source>Move up</source>
-<target>Yukarı taşı</target>
-
-<source>Move down</source>
-<target>Aşağı taşı</target>
-
-<source>Comma-separated values</source>
-<target>Virgül ile ayrılmış değerler</target>
-
-<source>File list exported</source>
-<target>Dosya listesi verildi</target>
-
-<source>Searching for program updates...</source>
-<target>Yazılım güncellemesine bakılıyor...</target>
-
-<source>Paused</source>
-<target>Duraklatıldı</target>
-
-<source>Stop requested...</source>
-<target>Durdurulması istendi...</target>
-
-<source>Initializing...</source>
-<target>Başlatılıyor...</target>
-
-<source>Comparing content...</source>
-<target>İçerik karşılaştırılıyor...</target>
-
-<source>&Continue</source>
-<target>&Devam</target>
-
-<source>Progress</source>
-<target>İlerleme</target>
-
-<source>Thank you, %x, for your donation and support!</source>
-<target>Sevgili %x, bağışın ve desteğin için teşekkürler!</target>
-
-<source>Connections</source>
-<target>Bağlantılar</target>
-
-<source>Recommended range:</source>
-<target>Önerilen Aralık:</target>
-
-<source>Do you really want to disconnect from user account %x?</source>
-<target></target>
-
-<source>Password:</source>
-<target>Parola:</target>
-
-<source>Key password:</source>
-<target>Anahtar Parolası:</target>
-
-<source>Please enter a file path.</source>
-<target>Lütfen bir dosya yolu yazın.</target>
-
-<source>
-<pluralform>Copy the following item to another folder?</pluralform>
-<pluralform>Copy the following %x items to another folder?</pluralform>
-</source>
-<target>
-<pluralform>Öge başka bir klasöre kopyalansın mı?</pluralform>
-<pluralform>%x öge başka bir klasöre kopyalansın mı?</pluralform>
-</target>
-
-<source>Please enter a target folder.</source>
-<target>Lütfen bir hedef klasör yazın.</target>
-
-<source>
-<pluralform>Do you really want to move the following item to the recycle bin?</pluralform>
-<pluralform>Do you really want to move the following %x items to the recycle bin?</pluralform>
-</source>
-<target>
-<pluralform>Aşağıdaki ögeyi Geri Dönüşüm Kutusuna atmak istediğinize emin misiniz?</pluralform>
-<pluralform>Aşağıdaki %x ögeyi Geri Dönüşüm Kutusuna atmak istediğinize emin misiniz?</pluralform>
-</target>
-
-<source>Move</source>
-<target>Atılsın</target>
-
-<source>
-<pluralform>Do you really want to delete the following item?</pluralform>
-<pluralform>Do you really want to delete the following %x items?</pluralform>
-</source>
-<target>
-<pluralform>Aşağıdaki ögeyi silmek istediğinize emin misiniz?</pluralform>
-<pluralform>Aşağıdaki %x ögeyi silmek istediğinize emin misiniz?</pluralform>
-</target>
-
-<source>Start to synchronize the selection?</source>
-<target></target>
-
-<source>Start synchronization now?</source>
-<target>Eşitleme başlatılsın mı?</target>
-
-<source>Copy DACL, SACL, Owner, Group</source>
-<target>DACL, SACL, Sahip, Grup Kopyalansın</target>
-
-<source>Integrate external applications into context menu. The following macros are available:</source>
-<target>Sağ tık menüsüne dış uygulamalar eklenebilir. Şu kodlar kullanılabilir:</target>
-
-<source>Full file or folder path</source>
-<target>Tam dosya ya da klasör yolu</target>
-
-<source>Parent folder path</source>
-<target>Üst klasör yolu</target>
-
-<source>Temporary local copy for SFTP and MTP storage</source>
-<target>SFTP ve MTP depolama için geçici yerel kopya</target>
-
-<source>Parameters for opposite side</source>
-<target>Diğer tarafın parametreleri</target>
-
-<source>Show hidden dialogs again</source>
-<target>Gizlenmiş Pencereleri Yeniden Görüntüle</target>
-
-<source>All dialogs shown</source>
-<target>Tüm İletiler Görüntüleniyor</target>
-
-<source>Downloading update...</source>
-<target>Güncelleme indiriliyor...</target>
-
-<source>Identify equal files by comparing modification time and size.</source>
-<target>Dosyaların eşit olup olmadığı, son değişiklik zamanı ve boyuta göre belirlenir.</target>
-
-<source>Identify equal files by comparing the file content.</source>
-<target>Dosyaların eşit olup olmadığı, içeriklerine göre belirlenir.</target>
-
-<source>Identify equal files by comparing their file size.</source>
-<target>Dosyaların eşit olup olmadığı boyutlarına göre belirlenir.</target>
-
-<source>Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database.</source>
-<target>İki taraftaki değişiklikler de belirlenir ve kopyalanır. Silinme, taşınma ve çakışmalar, veritabanı kullanılarak otomatik olarak belirlenir.</target>
-
-<source>Create a mirror backup of the left folder by adapting the right folder to match.</source>
-<target>Sağ klasör, sola uyacak şekilde değiştirilerek, sol klasörün yansı yedeği oluşturulur.</target>
-
-<source>Copy new and updated files to the right folder.</source>
-<target>Sol taraftaki yeni ya da güncellenmiş dosyalar sağ tarafa kopyalanır.</target>
-
-<source>Configure your own synchronization rules.</source>
-<target>Eşitleme kuralları kullanıcının isteğine göre yapılandırılır.</target>
-
-<source>Comparison</source>
-<target>Karşılaştırma</target>
-
-<source>Synchronization</source>
-<target>Eşitleme</target>
-
-<source>This week</source>
-<target>Bu hafta</target>
-
-<source>This month</source>
-<target>Bu ay</target>
-
-<source>This year</source>
-<target>Bu yıl</target>
-
-<source>Byte</source>
-<target>Bayt</target>
-
-<source>KB</source>
-<target>KB</target>
-
-<source>MB</source>
-<target>MB</target>
-
-<source>Retain deleted and overwritten files in the recycle bin</source>
-<target>Silinmiş ve üzerine yazılmış dosyalar geri dönüşüm kutusunda korunsun</target>
-
-<source>Delete and overwrite files permanently</source>
-<target>Dosyalar silinsin ve kalıcı olarak üzerine yazılsın</target>
-
-<source>Replace</source>
-<target>Ad Değiştirme</target>
-
-<source>Move files and replace if existing</source>
-<target>Dosyalar taşınır ve varsa üzerine yazılır</target>
-
-<source>Time stamp</source>
-<target>Zaman Damgalama</target>
-
-<source>Move files into a time-stamped subfolder</source>
-<target>Dosyalar zaman damgalı bir alt klasöre taşınır</target>
-
-<source>File</source>
-<target>Dosya</target>
-
-<source>Append a time stamp to each file name</source>
-<target>Dosya adlarına zaman damgası eklenir</target>
-
-<source>On completion:</source>
-<target>Tamamlandığında:</target>
-
-<source>On errors:</source>
-<target>Sorun Çıktığında:</target>
-
-<source>On success:</source>
-<target>Başarılı Olduğunda:</target>
-
-<source>Main config</source>
-<target>Temel Yapılandırma</target>
-
-<source>empty</source>
-<target>boş</target>
-
-<source>Leave as unresolved conflict</source>
-<target>Uyuşmazlık çözümlenmeden bırakılsın</target>
-
-<source>YYYY-MM-DD hhmmss</source>
-<target>YYYY-AA-GG SSddss</target>
-
-<source>Minimum version count must be smaller than maximum count.</source>
-<target>En az sürüm sayısı en çok sürüm sayısı değerinden küçük olmalıdır.</target>
-
-<source>Files</source>
-<target>Dosyalar</target>
-
-<source>Percentage</source>
-<target>Yüzde</target>
-
-<source>Failed to retrieve update information.</source>
-<target>Güncelleme bilgileri alınamadı.</target>
-
-<source>Automatic updates:</source>
-<target>Otomatik güncellemeler:</target>
-
-<source>Check for Program Updates</source>
-<target>Güncelleme Denetimi</target>
-
-<source>Auto-update now or download manually from the FreeFileSync home page?</source>
-<target>Şimdi otomatik olarak güncelle ya da FreeFileSync ana sayfasından indir</target>
-
-<source>&Auto-update</source>
-<target>&Otomatik Güncelle</target>
-
-<source>&Home page</source>
-<target>&Ana Sayfadan İndir</target>
-
-<source>Download now?</source>
-<target>İndirmek ister misiniz?</target>
-
-<source>&Download</source>
-<target>İn&dirin</target>
-
-<source>FreeFileSync is up to date.</source>
-<target>FreeFileSync güncel.</target>
-
-<source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source>
-<target>Geçerli FreeFileSync sürümü çevrimiçi olarak öğrenilemedi. Yeni bir sürüm yayınlanmış gibi görünüyor. El ile denetlemek ister misiniz?</target>
-
-<source>&Check</source>
-<target>&Denetle</target>
-
-<source>Consistency check failed for %x.</source>
-<target>%x tutarlılık sınamasından geçemedi.</target>
-
-<source>Installation was registered on a different operating system.</source>
-<target>Kurulum başka bir işletim sistemi üzerinde kayıt edilmiş.</target>
-
-<source>Failed to activate FreeFileSync Donation Edition.</source>
-<target>FreeFileSync Donation Edition etkinleştirilemedi.</target>
-
-<source>Incorrect activation key.</source>
-<target>Etkinleştirme anahtarı hatalı.</target>
-
-<source>Unable to register to receive system messages.</source>
-<target>Sistem iletilerini alabilmek için gerekli kayıt eklenemedi.</target>
-
-<source>The %x installation option is only available in the FreeFileSync Donation Edition.</source>
-<target>%x kurulumu yalnız FreeFileSync Donation Sürümü ile yapılabilir.</target>
-
-<source>Cannot find system function %x.</source>
-<target>%x sistem işlevi bulunamadı.</target>
-
-<source>Unable to register device notifications for %x.</source>
-<target>%x aygıtının bildirimleri için gerekli kayıt eklenemedi.</target>
-
-<source>The file is locked by another process:</source>
-<target>Dosya başka bir işlem tarafından kilitlenmiş:</target>
-
-<source>Cannot read security context of %x.</source>
-<target>%x için güvenlik bağlamı okunamadı.</target>
-
-<source>Cannot write security context of %x.</source>
-<target>%x için güvenlik bağlamı yazılamadı.</target>
-
-<source>Cannot read permissions of %x.</source>
-<target>%x izinleri okunamadı.</target>
-
-<source>Cannot copy permissions from %x to %y.</source>
-<target>İzinler %x üzerinden %y üzerine kopyalanamadı.</target>
-
-<source>%x is not a regular directory name.</source>
-<target>%x geçerli bir klasör adı değil.</target>
-
-<source>Cannot copy attributes from %x to %y.</source>
-<target>Öznitelikler %x üzerinden %y üzerine kopyalanamadı.</target>
-
-<source>%x TB</source>
-<target>%x TB</target>
-
-<source>%x PB</source>
-<target>%x PB</target>
-
-<source>
-<pluralform>1 min</pluralform>
-<pluralform>%x min</pluralform>
-</source>
-<target>
-<pluralform>1 dakika</pluralform>
-<pluralform>%x dakika</pluralform>
-</target>
-
-<source>
-<pluralform>1 hour</pluralform>
-<pluralform>%x hours</pluralform>
-</source>
-<target>
-<pluralform>1 saat</pluralform>
-<pluralform>%x saat</pluralform>
-</target>
-
-<source>Cannot set privilege %x.</source>
-<target>%x izni verilemedi.</target>
-
-<source>Unable to suspend system sleep mode.</source>
-<target>Sistem uyku kipine geçirilemedi.</target>
-
-<source>Cannot change process I/O priorities.</source>
-<target>Giriş/Çıkış işlemi öncelikleri değiştirilemedi.</target>
-
-<source>Unable to shut down the system.</source>
-<target>Bilgisayar kapatılamıyor.</target>
-
-<source>Checking recycle bin failed for folder %x.</source>
-<target>%x klasörü için Geri Dönüşüm Kutusu denetlenemedi.</target>
-
-<source>Prepare installation</source>
-<target>Kuruluma hazırlanıyor</target>
-
-<source>Choose which components you want to install.</source>
-<target>Kurmak istediğiniz bileşenleri seçin.</target>
-
-<source>Select installation type:</source>
-<target>Kurulum türünü seçin:</target>
-
-<source>Local</source>
-<target>Yerel</target>
-
-<source>Portable</source>
-<target>Taşınabilir</target>
-
-<source>Save settings in %x</source>
-<target>Ayarlar %x üzerine kaydedilsin</target>
-
-<source>Register FreeFileSync file extensions</source>
-<target>FreeFileSync Dosya Uzantıları İlişkilendirilsin</target>
-
-<source>Create Explorer context menu entries</source>
-<target>Windows Gezgini Sağ Tık Menü Kayıtları Eklensin</target>
-
-<source>Save settings in installation directory</source>
-<target>Ayarlar Kurulum Klasörüne Kaydedilsin</target>
-
-<source>Do not write to Registry</source>
-<target>Kayıt Defterine Yazılmasın</target>
-
-<source>Just copy the files</source>
-<target>Yalnız Dosyalar Kopyalansın</target>
-
-<source>Choose a directory for installation:</source>
-<target>Kurulum Klasörünü Seçin:</target>
-
-<source>Create shortcuts:</source>
-<target>Oluşturulacak Kısayollar:</target>
-
-<source>Desktop</source>
-<target>Masaüstü</target>
-
-<source>Start Menu</source>
-<target>Başlat Menüsü</target>
-
-<source>Send To</source>
-<target>Gönder</target>
-
-<source>Registering FreeFileSync file extensions</source>
-<target>FreeFileSync dosya uzantıları kayıt defterine ekleniyor</target>
-
-<source>Unregistering FreeFileSync file extensions</source>
-<target>FreeFileSync dosya uzantıları kayıt defterinden siliniyor</target>
-
-<source>FreeFileSync Configuration</source>
-<target>FreeFileSync Yapılandırması</target>
-
-<source>FreeFileSync Batch File</source>
-<target>FreeFileSync Toplu İşlem Dosyası</target>
-
-<source>FreeFileSync Synchronization Database</source>
-<target>FreeFileSync Eşitleme Veritabanı</target>
-
-<source>RealTimeSync Configuration</source>
-<target>RealTimeSync Yapılandırması</target>
-
-<source>Edit with FreeFileSync</source>
-<target>FreeFileSync ile Düzenlensin</target>
-
-<source>Instead of an ad, here's an animal.</source>
-<target>Burada bir reklam yerine bir hayvan var.</target>
-
-<source>The FreeFileSync portable version cannot install into a subfolder of %x.</source>
-<target>FreeFileSync taşınabilir sürümü bir %x alt klasörüne yüklenemez.</target>
-
-<source>Please choose the local installation type or select a different folder for installation.</source>
-<target>Kurulum için farklı bir klasör ya da yerel kurulum türünü seçin.</target>
-
-<source>Get the Donation Edition with bonus features and help keep FreeFileSync ad-free.</source>
-<target>Hediye özellikleri edinmek ve FreeFileSync yazılımını reklamsız kullanmak için Bağış Sürümünü alın.</target>
-
diff --git a/FreeFileSync/Build/Languages/ukrainian.lng b/FreeFileSync/Build/Languages/ukrainian.lng
deleted file mode 100755
index aa73fea8..00000000
--- a/FreeFileSync/Build/Languages/ukrainian.lng
+++ /dev/null
@@ -1,2107 +0,0 @@
-<header>
- <language>Українська</language>
- <translator>Mykola Pavluchynskyi</translator>
- <locale>uk_UA</locale>
- <image>flag_ukraine.png</image>
- <plural_count>3</plural_count>
- <plural_definition>n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2</plural_definition>
-</header>
-
-<source>Both sides have changed since last synchronization.</source>
-<target>З моменту останньої синхронізації з обох сторін відбулися зміни.</target>
-
-<source>Cannot determine sync-direction:</source>
-<target>Не можна визначити напрям синхронізації:</target>
-
-<source>No change since last synchronization.</source>
-<target>Жодних змін з останньої синхронізації.</target>
-
-<source>The database entry is not in sync considering current settings.</source>
-<target>Запис бази даних не синхронізований з урахуванням поточних налаштувань.</target>
-
-<source>Setting default synchronization directions: Old files will be overwritten with newer files.</source>
-<target>Налаштування напрямку синхронізації за замовчуванням: Старі файли будуть замінені новішими файлами.</target>
-
-<source>Creating file %x</source>
-<target>Створення файлу %x</target>
-
-<source>Creating folder %x</source>
-<target>Створення папки %x</target>
-
-<source>Creating symbolic link %x</source>
-<target>Створення символьного посилання %x</target>
-
-<source>Moving file %x to the recycle bin</source>
-<target>Переміщення файлу %x до корзини</target>
-
-<source>Moving folder %x to the recycle bin</source>
-<target>Переміщення папки %x до корзини</target>
-
-<source>Moving symbolic link %x to the recycle bin</source>
-<target>Переміщення символьного посилання %x до корзини</target>
-
-<source>Deleting file %x</source>
-<target>Вилучення файлу %x</target>
-
-<source>Deleting folder %x</source>
-<target>Вилучення папки %x</target>
-
-<source>Deleting symbolic link %x</source>
-<target>Вилучення символьного посилання %x</target>
-
-<source>Checking recycle bin availability for folder %x...</source>
-<target>Перевірка доступності корзини для папки %x...</target>
-
-<source>The recycle bin is not supported by the following folders. Deleted or overwritten files will not be able to be restored:</source>
-<target>Корзина недоступна для поточних папок. Видалені чи перезаписані файли буде неможливо відновити:</target>
-
-<source>An exception occurred</source>
-<target>Відбулось виключення</target>
-
-<source>A left and a right directory path are expected after %x.</source>
-<target>Шлях до каталогу ліворуч і праворуч очікується після %x.</target>
-
-<source>Syntax error</source>
-<target>Синтаксична помилка</target>
-
-<source>Cannot find file %x.</source>
-<target>Неможливо знайти файл %x.</target>
-
-<source>Error</source>
-<target>Помилка</target>
-
-<source>File %x does not contain a valid configuration.</source>
-<target>Файл %x не містить правильної конфігурації.</target>
-
-<source>The config file must not contain settings at directory pair level when directories are set via command line.</source>
-<target>Конфігураційний файл не повинен містити налаштувань на рівні пар папок, якщо папки задаються командним рядком.</target>
-
-<source>Directories cannot be set for more than one configuration file.</source>
-<target>Папки не можуть бути призначені більш ніж одному файлу конфігурації.</target>
-
-<source>Command line</source>
-<target>Командний рядок</target>
-
-<source>Syntax:</source>
-<target>Синтаксис:</target>
-
-<source>config files:</source>
-<target>файли конфігурації:</target>
-
-<source>directory</source>
-<target>папка</target>
-
-<source>global config file:</source>
-<target>глобальний конфігураційний файл:</target>
-
-<source>Any number of FreeFileSync "ffs_gui" and/or "ffs_batch" configuration files.</source>
-<target>Будь-яка кількість FreeFileSync "ffs_gui" та/або "ffs_batch" файлів конфігурації.</target>
-
-<source>Any number of alternative directory pairs for at most one config file.</source>
-<target>Будь-яка кількість альтернативних пар папок для не більше одного конфігураційного файлу.</target>
-
-<source>Open the selected configuration for editing only, without executing it.</source>
-<target>Відкрити вибрану конфігурацію тільки для редагування без її виконання.</target>
-
-<source>Path to an alternate GlobalSettings.xml file.</source>
-<target>Шлях до альтернативного файлу GlobalSettings.xml.</target>
-
-<source>Installation files are corrupted. Please reinstall FreeFileSync.</source>
-<target>Файли встановлення пошкоджені. Будь ласка, перевстановіть FreeFileSync.</target>
-
-<source>Cannot load file %x.</source>
-<target>Не вдається завантажити файл %x.</target>
-
-<source>Cannot find the following folders:</source>
-<target>Не вдається знайти такі папки:</target>
-
-<source>The following folders do not yet exist:</source>
-<target>Наступні папки ще не існують:</target>
-
-<source>The folders are created automatically when needed.</source>
-<target>Папки створюються автоматично, коли це потрібно.</target>
-
-<source>The following folder paths differ in case. Please use a single form in order to avoid duplicate accesses.</source>
-<target></target>
-
-<source>Scanning:</source>
-<target>Сканування:</target>
-
-<source>Comparison finished:</source>
-<target>Порівняння завершено:</target>
-
-<source>
-<pluralform>1 item found</pluralform>
-<pluralform>%x items found</pluralform>
-</source>
-<target>
-<pluralform>Знайдено %x элемент</pluralform>
-<pluralform>Знайдено %x элементи</pluralform>
-<pluralform>Знайдено %x элементів</pluralform>
-</target>
-
-<source>File %x has an invalid date.</source>
-<target>Файл %x має неіснуючу дату.</target>
-
-<source>Date:</source>
-<target>Дата:</target>
-
-<source>Files have the same date but a different size.</source>
-<target>Файли мають одинакову дату, але різний розмір.</target>
-
-<source>Size:</source>
-<target>Розмір:</target>
-
-<source>Content comparison was skipped for excluded files.</source>
-<target>Порівняння вмісту було пропущене для виключених файлів.</target>
-
-<source>Items differ in attributes only</source>
-<target>Елементи відрізняються тільки атрибутами</target>
-
-<source>The name %x is used by more than one item in the folder.</source>
-<target>Ім'я %x використовується більше ніж одним елементом у папці.</target>
-
-<source>Resolving symbolic link %x</source>
-<target>Вирішення символьного посилання %x</target>
-
-<source>Comparing content of files %x</source>
-<target>Порівнювання вмісту файлів %x</target>
-
-<source>Generating file list...</source>
-<target>Створення списку файлів...</target>
-
-<source>Fail-safe file copy</source>
-<target>Відмовостійке копіювання файлів</target>
-
-<source>Enabled</source>
-<target>Увімкнути</target>
-
-<source>Disabled</source>
-<target>Вимкнути</target>
-
-<source>Copy locked files</source>
-<target>Копіювати заблоковані файли</target>
-
-<source>Copy file access permissions</source>
-<target>Копіювати права доступу до файлів</target>
-
-<source>File time tolerance</source>
-<target>Толеранс часу файлу</target>
-
-<source>Run with background priority</source>
-<target>Запустити з фоновим пріоритетом</target>
-
-<source>Lock directories during sync</source>
-<target>Заблокувати папки на час синхронізації</target>
-
-<source>Verify copied files</source>
-<target>Перевірити скопійовані файли</target>
-
-<source>Using non-default global settings:</source>
-<target>Використовувати глобальні налаштування не за замовчуванням:</target>
-
-<source>A folder input field is empty.</source>
-<target>Порожнє поле папки.</target>
-
-<source>The corresponding folder will be considered as empty.</source>
-<target>Відповідна папка буде вважатися порожньою.</target>
-
-<source>Exclude:</source>
-<target>Виключити:</target>
-
-<source>One base folder of a folder pair is contained in the other one.</source>
-<target>Одна основна папка з пари папок міститься всередині іншої.</target>
-
-<source>The folder should be excluded from synchronization via filter.</source>
-<target>Папку потрібно виключити з синхронізації за допомогою фільтрів.</target>
-
-<source>Calculating sync directions...</source>
-<target>Встановлення напрямку синхронізації...</target>
-
-<source>Out of memory.</source>
-<target>Недостатньо пам'яті.</target>
-
-<source>Database file %x is incompatible.</source>
-<target>Несумісний файл бази даних %x.</target>
-
-<source>Initial synchronization:</source>
-<target>Початкова синхронізація:</target>
-
-<source>Database file %x does not yet exist.</source>
-<target>Файл бази даних %x ще не існує.</target>
-
-<source>Database file is corrupted:</source>
-<target>Файл бази даних пошкоджений:</target>
-
-<source>Cannot write file %x.</source>
-<target>Не вдається записати файл %x.</target>
-
-<source>Cannot read file %x.</source>
-<target>Не вдається прочитати файл %x.</target>
-
-<source>The database files do not yet contain information about the last synchronization.</source>
-<target>Файли бази даних не містять інформації про останню синхронізацію.</target>
-
-<source>Loading file %x...</source>
-<target>Завантажується файл %x...</target>
-
-<source>Saving file %x...</source>
-<target>Збереження файлу %x...</target>
-
-<source>Searching for folder %x...</source>
-<target>Пошук папки %x...</target>
-
-<source>Timeout while searching for folder %x.</source>
-<target>Вичерпався час пошуку папки %x.</target>
-
-<source>Cannot get process information.</source>
-<target>Не вдається отримати інформацію про процес.</target>
-
-<source>Cannot read file attributes of %x.</source>
-<target>Не вдається прочитати атрибути файлу %x.</target>
-
-<source>Waiting while directory is locked:</source>
-<target>Очікування поки папка заблокована:</target>
-
-<source>Lock owner:</source>
-<target>Власник блокування:</target>
-
-<source>Detecting abandoned lock...</source>
-<target>Виявлено покинуте блокування...</target>
-
-<source>
-<pluralform>1 sec</pluralform>
-<pluralform>%x sec</pluralform>
-</source>
-<target>
-<pluralform>%x сек</pluralform>
-<pluralform>%x сек</pluralform>
-<pluralform>%x сек</pluralform>
-</target>
-
-<source>Item exists on left side only</source>
-<target>Елемент існує тільки ліворуч</target>
-
-<source>Item exists on right side only</source>
-<target>Елемент існує тільки праворуч</target>
-
-<source>Left side is newer</source>
-<target>Ліва сторона новіша</target>
-
-<source>Right side is newer</source>
-<target>Права сторона новіша</target>
-
-<source>Items have different content</source>
-<target>Елементи мають різний вміст</target>
-
-<source>Both sides are equal</source>
-<target>Сторони ідентичні</target>
-
-<source>Conflict/item cannot be categorized</source>
-<target>Не вдається категоризувати конфлікт/елемент</target>
-
-<source>Copy new item to left</source>
-<target>Копіювати нові елементи ліворуч</target>
-
-<source>Copy new item to right</source>
-<target>Копіювати нові елементи праворуч</target>
-
-<source>Delete left item</source>
-<target>Вилучити елемент ліворуч</target>
-
-<source>Delete right item</source>
-<target>Вилучити елемент праворуч</target>
-
-<source>Move file on left</source>
-<target>Перемістити файли ліворуч</target>
-
-<source>Move file on right</source>
-<target>Перемістити файли праворуч</target>
-
-<source>Update left item</source>
-<target>Оновити елемент ліворуч</target>
-
-<source>Update right item</source>
-<target>Оновити елемент праворуч</target>
-
-<source>Do nothing</source>
-<target>Нічого не робити</target>
-
-<source>Update attributes on left</source>
-<target>Оновити атрибути ліворуч</target>
-
-<source>Update attributes on right</source>
-<target>Оновити атрибути праворуч</target>
-
-<source>Errors:</source>
-<target>Помилки:</target>
-
-<source>Warnings:</source>
-<target>Попередження:</target>
-
-<source>Items processed:</source>
-<target>Елементів оброблено:</target>
-
-<source>Items remaining:</source>
-<target>Елементів залишилось:</target>
-
-<source>Total time:</source>
-<target>Загальний час:</target>
-
-<source>Warning</source>
-<target>Увага</target>
-
-<source>Stopped</source>
-<target>Зупинено</target>
-
-<source>Cleaning up log files:</source>
-<target>Очищення файлів журналу:</target>
-
-<source>Error parsing file %x, row %y, column %z.</source>
-<target>Помилка розбору файлу %x, рядок %y, колонка %z.</target>
-
-<source>Services</source>
-<target>Служби</target>
-
-<source>Show All</source>
-<target>Показати Усі</target>
-
-<source>Hide Others</source>
-<target>Сховати Інші</target>
-
-<source>Hide %x</source>
-<target>Сховати %x</target>
-
-<source>Quit %x</source>
-<target>Вихід %x</target>
-
-<source>Cannot set directory locks for the following folders:</source>
-<target>Неможливо встановити блокування каталогів для таких папок:</target>
-
-<source>
-<pluralform>1 thread</pluralform>
-<pluralform>%x threads</pluralform>
-</source>
-<target>
-<pluralform>%x потік виконання</pluralform>
-<pluralform>%x потоки виконання</pluralform>
-<pluralform>%x потоків виконання</pluralform>
-</target>
-
-<source>Cannot read directory %x.</source>
-<target>Не вдається прочитати папку %x.</target>
-
-<source>%x/sec</source>
-<target>%x/сек</target>
-
-<source>%x items</source>
-<target>%x елементів</target>
-
-<source>Show in Explorer</source>
-<target>Показати у Провіднику</target>
-
-<source>Open with default application</source>
-<target>Відкрити за допомогою програми за замовчуванням</target>
-
-<source>Browse directory</source>
-<target>Переглянути папку</target>
-
-<source>Unable to connect to %x.</source>
-<target>Не вдається з'єднатися з %x.</target>
-
-<source>Completed successfully</source>
-<target>Завершено успішно</target>
-
-<source>Completed with warnings</source>
-<target>Завершено з попередженнями</target>
-
-<source>Completed with errors</source>
-<target>Завершено з помилками</target>
-
-<source>Cannot access the Volume Shadow Copy Service.</source>
-<target>Не вдається отримати доступ до послуги Тіньового Копіювання Тому.</target>
-
-<source>Please run the 64-bit version of FreeFileSync to create shadow copies on this system.</source>
-<target>Будь ласка, використовуйте 64-розрядну версію FreeFileSync для створення тіньових копій у цій системі.</target>
-
-<source>Volume name %x is not part of file path %y.</source>
-<target>Ім'я тому %x не є частиною шляху до файлу %y.</target>
-
-<source>File time and size</source>
-<target>Дата та розмір файлу</target>
-
-<source>File content</source>
-<target>Вміст файлу</target>
-
-<source>File size</source>
-<target>Розмір файлу</target>
-
-<source>Two way</source>
-<target>Обидва напрямки</target>
-
-<source>Mirror</source>
-<target>Дзеркало</target>
-
-<source>Update</source>
-<target>Оновити</target>
-
-<source>Custom</source>
-<target>Вибірково</target>
-
-<source>Multiple...</source>
-<target>Різні варіанти...</target>
-
-<source>Cannot write file attributes of %x.</source>
-<target>Не вдається записати атрибути файлу %x.</target>
-
-<source>Cannot open file %x.</source>
-<target>Не вдається відкрити файл %x.</target>
-
-<source>%x and %y have different content.</source>
-<target>%x і %y мають різний вміст.</target>
-
-<source>Data verification error:</source>
-<target>Помилка перевірки даних:</target>
-
-<source>Moving file %x to %y</source>
-<target>Переміщення файлу %x до %y</target>
-
-<source>Moving folder %x to %y</source>
-<target>Переміщення папки %x до %y</target>
-
-<source>Moving symbolic link %x to %y</source>
-<target>Переміщення символьного посилання %x до %y</target>
-
-<source>Updating file %x</source>
-<target>Оновлення файлу %x</target>
-
-<source>Updating symbolic link %x</source>
-<target>Оновлення символьних посилань %x</target>
-
-<source>Verifying file %x</source>
-<target>Перевірка файлу %x</target>
-
-<source>Updating attributes of %x</source>
-<target>Оновлення атрибутів %x</target>
-
-<source>Source item %x not found</source>
-<target>Вихідний елемент %x не знайдено</target>
-
-<source>Cannot move file %x to %y.</source>
-<target>Не вдається перемістити файл %x до %y.</target>
-
-<source>Parent folder %x is not existing.</source>
-<target></target>
-
-<source>The name %x is already used by another item.</source>
-<target></target>
-
-<source>Cannot copy file %x to %y.</source>
-<target>Не вдається скопіювати файл %x до %y.</target>
-
-<source>Cannot copy symbolic link %x to %y.</source>
-<target>Не вдається скопіювати символьне посилання %x до %y.</target>
-
-<source>Creating a Volume Shadow Copy for %x...</source>
-<target>Створення Тіньової Копії для %x...</target>
-
-<source>Cannot find folder %x.</source>
-<target>Неможливо знайти папку %x.</target>
-
-<source>Target folder %x already existing.</source>
-<target>Цільова папка %x вже існує.</target>
-
-<source>Target folder input field must not be empty.</source>
-<target>Поле цільової папки не повинно бути порожнім.</target>
-
-<source>Source folder %x not found.</source>
-<target>Вихідну папку %x не знайдено.</target>
-
-<source>Please enter a target folder for versioning.</source>
-<target>Будь ласка, введіть цільову папку для версій.</target>
-
-<source>The following items have unresolved conflicts and will not be synchronized:</source>
-<target>Наступні елементи мають невирішені конфлікти і не будуть синхронізовані:</target>
-
-<source>Folder pair:</source>
-<target>Пара папок:</target>
-
-<source>The following folders are significantly different. Please check that the correct folders are selected for synchronization.</source>
-<target>Наступні папки значно відрізняються. Будь ласка, перевірте що вибрані правильні папки для синхронізації.</target>
-
-<source>Not enough free disk space available in:</source>
-<target>Не достатньо вільного місця на:</target>
-
-<source>Required:</source>
-<target>Потрібно:</target>
-
-<source>Available:</source>
-<target>Доступно:</target>
-
-<source>Some files will be synchronized as part of multiple base folders.</source>
-<target>Деякі файли були синхронізовані як частина декількох основних папок.</target>
-
-<source>To avoid conflicts, set up exclude filters so that each updated file is considered by only one base folder.</source>
-<target>Для уникнення конфліктів, встановлюйте фільтри для виключення так щоб кожен оновлений файл розглядався тільки однією основною папкою.</target>
-
-<source>Versioning folder:</source>
-<target>Папка з версіями:</target>
-
-<source>Base folder:</source>
-<target>Основна папка:</target>
-
-<source>The versioning folder is contained in a base folder.</source>
-<target>Папка з версіями містить основну папку.</target>
-
-<source>Synchronizing folder pair:</source>
-<target>Синхронізація пари папок:</target>
-
-<source>Generating database...</source>
-<target>Створення бази даних...</target>
-
-<source>Searching for old file versions:</source>
-<target>Пошук старих версій файлів:</target>
-
-<source>Removing old file versions:</source>
-<target>Видалення старих версій файлів:</target>
-
-<source>Unable to create time stamp for versioning:</source>
-<target>Не вдається створити часової мітки для версій:</target>
-
-<source>
-Unexpected size of data stream.
-Expected: %x bytes
-Actual: %y bytes
-</source>
-<target>
-Неочікуваний розмір потоку даних.
-Очікуваний: %x байт
-Дійсний: %y байт
-</target>
-
-<source>Cannot write permissions of %x.</source>
-<target>Не вдається записати права доступу до %x.</target>
-
-<source>Operation not supported between different devices.</source>
-<target></target>
-
-<source>Cannot delete file %x.</source>
-<target>Не вдається видалити файл %x.</target>
-
-<source>Cannot delete symbolic link %x.</source>
-<target>Не вдалося вилучити символьне посилання %x.</target>
-
-<source>Cannot delete directory %x.</source>
-<target>Не вдається видалити папку %x.</target>
-
-<source>Error Code %x</source>
-<target>Код помилки %x</target>
-
-<source>Failed to get information about server %x.</source>
-<target>Не вдається отримати інформацію про сервер %x.</target>
-
-<source>Cannot open directory %x.</source>
-<target>Не вдається відкрити папку %x.</target>
-
-<source>Cannot write modification time of %x.</source>
-<target>Не вдається записати час модифікації %x.</target>
-
-<source>Cannot determine final path for %x.</source>
-<target>Не вдається визначити кінцевого шляху для %x.</target>
-
-<source>Cannot create directory %x.</source>
-<target>Не вдається створити папку %x.</target>
-
-<source>Operation not supported by device.</source>
-<target></target>
-
-<source>Cannot resolve symbolic link %x.</source>
-<target>Не вдається вирішити символьне посилання %x.</target>
-
-<source>Unable to move %x to the recycle bin.</source>
-<target>Не вдається перемістити %x до корзини.</target>
-
-<source>Unable to access %x.</source>
-<target>Не вдалося отримати доступ до %x.</target>
-
-<source>Authentication completed.</source>
-<target>Автентифікація виконана.</target>
-
-<source>You may close this page now and continue with FreeFileSync.</source>
-<target>Ви можете закрити цю сторінку зараз і продовжити з FreeFileSync.</target>
-
-<source>Authentication failed.</source>
-<target>Автентифікація не виконана.</target>
-
-<source>Unable to disconnect from %x.</source>
-<target></target>
-
-<source>Cannot monitor directory %x.</source>
-<target>Не вдається спостереження за папкою %x.</target>
-
-<source>Cannot find %x.</source>
-<target>Не вдається знайти %x.</target>
-
-<source>Please authorize access to user account %x.</source>
-<target></target>
-
-<source>Cannot determine free disk space for %x.</source>
-<target>Не вдається визначити об'єм вільного місця для %x.</target>
-
-<source>Cannot find device %x.</source>
-<target>Не вдається знайти пристрій %x.</target>
-
-<source>Unsupported item type.</source>
-<target></target>
-
-<source>Incorrect command line:</source>
-<target>Неправильний командний рядок:</target>
-
-<source>The server does not support authentication via %x.</source>
-<target>Сервер не підтримує аутентифікацію за допомогою %x.</target>
-
-<source>
-<pluralform>Operation timed out after 1 second.</pluralform>
-<pluralform>Operation timed out after %x seconds.</pluralform>
-</source>
-<target>
-<pluralform>Вичерпався час очікування операції після %x секунди.</pluralform>
-<pluralform>Вичерпався час очікування операції після %x секунд.</pluralform>
-<pluralform>Вичерпався час очікування операції після %x секунд.</pluralform>
-</target>
-
-<source>
-<pluralform>Cannot wait on more than 1 connection at a time.</pluralform>
-<pluralform>Cannot wait on more than %x connections at a time.</pluralform>
-</source>
-<target>
-<pluralform>Неможливо очікувати більше ніж на %x з'єднанні одночасно.</pluralform>
-<pluralform>Неможливо очікувати більше ніж на %x з'єднання одночасно.</pluralform>
-<pluralform>Неможливо очікувати більше ніж на %x з'єднань одночасно.</pluralform>
-</target>
-
-<source>Active connections: %x</source>
-<target>Активні з'єднання: %x</target>
-
-<source>Failed to open SFTP channel number %x.</source>
-<target>Не вдалося відкрити SFTP канал номер %x.</target>
-
-<source>Drag && drop</source>
-<target>Drag && drop</target>
-
-<source>Select a folder</source>
-<target>Вибрати папку</target>
-
-<source>&New</source>
-<target>&Створити</target>
-
-<source>&Open...</source>
-<target>&Відкрити...</target>
-
-<source>Save &as...</source>
-<target>Зберегти &як...</target>
-
-<source>E&xit</source>
-<target>В&ихід</target>
-
-<source>&File</source>
-<target>&Файл</target>
-
-<source>&View help</source>
-<target>П&ерегляд довідки</target>
-
-<source>&About</source>
-<target>Пр&о програму</target>
-
-<source>&Help</source>
-<target>&Довідка</target>
-
-<source>Usage:</source>
-<target>Використання:</target>
-
-<source>1. Select folders to watch.</source>
-<target>1. Виберіть папки для моніторингу.</target>
-
-<source>2. Enter a command line.</source>
-<target>2. Введіть рядок команди.</target>
-
-<source>3. Press 'Start'.</source>
-<target>3. Натисніть 'Запуск'.</target>
-
-<source>To get started just import a "ffs_batch" file.</source>
-<target>Щоб запустити імпортуйте "ffs_batch" файл.</target>
-
-<source>Folders to watch:</source>
-<target>Папки для спостереження:</target>
-
-<source>Add folder</source>
-<target>Додати папку</target>
-
-<source>Remove folder</source>
-<target>Вилучити папку</target>
-
-<source>Browse</source>
-<target>Переглянути</target>
-
-<source>Idle time (in seconds):</source>
-<target>Час очікування (секунд):</target>
-
-<source>Idle time between last detected change and execution of command</source>
-<target>Час очікування між виявленням останньої зміни та виконанням команди</target>
-
-<source>Command line:</source>
-<target>Командний рядок:</target>
-
-<source>
-The command is triggered if:
-- files or subfolders change
-- new folders arrive (e.g. USB stick insert)
-</source>
-<target>
-Команда спрацьовує, якщо:
-- змінилися файли або підпапки
-- з'явилися нові папки (наприклад, підключений USB флеш-носій)
-</target>
-
-<source>Start</source>
-<target>Запуск</target>
-
-<source>About</source>
-<target>Про</target>
-
-<source>Build: %x</source>
-<target>Збірка: %x</target>
-
-<source>All files</source>
-<target>Всі файли</target>
-
-<source>Automated Synchronization</source>
-<target>Автоматична Синхронізація</target>
-
-<source>The %x protocol does not support directory monitoring:</source>
-<target>Протокол %x не підтримує моніторинг папок:</target>
-
-<source>Directory monitoring active</source>
-<target>Моніторинг папок активний</target>
-
-<source>Waiting until directory is available:</source>
-<target>Очікування поки каталог не стане доступним:</target>
-
-<source>&Restore</source>
-<target>Від&новити</target>
-
-<source>&Show error message</source>
-<target></target>
-
-<source>&Quit</source>
-<target>В&ихід</target>
-
-<source>&Retry</source>
-<target>&Повторити</target>
-
-<source>
-<pluralform>1 byte</pluralform>
-<pluralform>%x bytes</pluralform>
-</source>
-<target>
-<pluralform>%x байт</pluralform>
-<pluralform>%x байти</pluralform>
-<pluralform>%x байтів</pluralform>
-</target>
-
-<source>%x MB</source>
-<target>%x МБ</target>
-
-<source>%x KB</source>
-<target>%x КБ</target>
-
-<source>%x GB</source>
-<target>%x ГБ</target>
-
-<source>Loading...</source>
-<target>Завантаження...</target>
-
-<source>Scanning...</source>
-<target>Сканування...</target>
-
-<source>job name</source>
-<target>назва завдання</target>
-
-<source>System: Sleep</source>
-<target>Система: Сон</target>
-
-<source>System: Shut down</source>
-<target>Система: Завершення роботи</target>
-
-<source>Nothing to synchronize</source>
-<target>Нічого синхронізувати</target>
-
-<source>Executing command %x</source>
-<target>Виконати команду %x</target>
-
-<source>You can switch to FreeFileSync's main window to resolve this issue.</source>
-<target>Ви можете перейти до головного вікна FreeFileSync щоб вирішити це питання.</target>
-
-<source>&Don't show this warning again</source>
-<target>&Надалі не показувати це попередження</target>
-
-<source>&Ignore</source>
-<target>&Ігнорувати</target>
-
-<source>&Switch</source>
-<target>&Перейти</target>
-
-<source>Switching to FreeFileSync's main window</source>
-<target>Перехід до головного вікна FreeFileSync</target>
-
-<source>Automatic retry</source>
-<target>Автоматична повторна спроба</target>
-
-<source>Ignore &all</source>
-<target>Ігнорувати &усі</target>
-
-<source>Retrying operation...</source>
-<target>Повтор операції...</target>
-
-<source>Serious Error</source>
-<target>Серйозна помилка</target>
-
-<source>Last session</source>
-<target>Остання сесія</target>
-
-<source>Today</source>
-<target>Сьогодні</target>
-
-<source>
-<pluralform>1 day</pluralform>
-<pluralform>%x days</pluralform>
-</source>
-<target>
-<pluralform>%x день</pluralform>
-<pluralform>%x дні</pluralform>
-<pluralform>%x днів</pluralform>
-</target>
-
-<source>Name</source>
-<target>Назва</target>
-
-<source>Last sync</source>
-<target>Остання синхронізація</target>
-
-<source>Log</source>
-<target>Лог</target>
-
-<source>Folder</source>
-<target>Папка</target>
-
-<source>Symlink</source>
-<target>Символьне посилання</target>
-
-<source>Full path</source>
-<target>Повний шлях</target>
-
-<source>Relative path</source>
-<target>Відносний шлях</target>
-
-<source>Item name</source>
-<target>Назва елементу:</target>
-
-<source>Size</source>
-<target>Розмір</target>
-
-<source>Date</source>
-<target>Дата</target>
-
-<source>Extension</source>
-<target>Розширення</target>
-
-<source>Category</source>
-<target>Категорія</target>
-
-<source>Action</source>
-<target>Дія</target>
-
-<source>Local comparison settings</source>
-<target>Налаштування локального порівняння</target>
-
-<source>Local synchronization settings</source>
-<target>Налаштування локальної синхронізації</target>
-
-<source>Local filter</source>
-<target>Локальний фільтр</target>
-
-<source>Active</source>
-<target>Активний</target>
-
-<source>None</source>
-<target>Не задано</target>
-
-<source>Remove local settings</source>
-<target>Вилучити локальні налаштування</target>
-
-<source>Clear local filter</source>
-<target>Очистити локальний фільтр</target>
-
-<source>Copy</source>
-<target>Копіювати</target>
-
-<source>Paste</source>
-<target>Вставити</target>
-
-<source>The selected folder %x cannot be used with FreeFileSync.</source>
-<target>Вибрана папка %x не може бути використана з FreeFileSync.</target>
-
-<source>Please select a folder on a local file system, network or an MTP device.</source>
-<target>Будь ласка, виберіть папку на локальній файловій системі, в мережі чи на MTP пристрої.</target>
-
-<source>Defined by context of use</source>
-<target>Визначено контекстом використання</target>
-
-<source>Requires FreeFileSync Donation Edition</source>
-<target>Потрібна FreeFileSync Donation Edition</target>
-
-<source>&Save</source>
-<target>&Зберегти</target>
-
-<source>Save as &batch job...</source>
-<target>Зберегти як &пакетне завдання...</target>
-
-<source>Show &log</source>
-<target>Показати &журнал</target>
-
-<source>Start &comparison</source>
-<target>Запуск по&рівняння</target>
-
-<source>C&omparison settings</source>
-<target>Налаштування п&орівняння</target>
-
-<source>&Filter settings</source>
-<target>Налаштування &фільтру</target>
-
-<source>S&ynchronization settings</source>
-<target>Н&алаштування синхронізації</target>
-
-<source>Start &synchronization</source>
-<target>Запуск &синхронізації</target>
-
-<source>&Actions</source>
-<target>Ді&ї</target>
-
-<source>&Preferences</source>
-<target>&Уподобання</target>
-
-<source>&Language</source>
-<target>&Мова</target>
-
-<source>&Find...</source>
-<target>З&найти...</target>
-
-<source>&Export file list...</source>
-<target>&Експортувати список файлів...</target>
-
-<source>&Reset layout</source>
-<target>&Скинути розташування</target>
-
-<source>&Tools</source>
-<target>&Інструменти</target>
-
-<source>&Check for updates now</source>
-<target>&Перевірити оновлення зараз</target>
-
-<source>Check &automatically once a week</source>
-<target>Перевіряти &автоматично щотижня</target>
-
-<source>Cancel</source>
-<target>Відмінити</target>
-
-<source>Compare</source>
-<target>Порівняти</target>
-
-<source>Synchronize</source>
-<target>Синхронізувати</target>
-
-<source>Add folder pair</source>
-<target>Додати пару папок</target>
-
-<source>Remove folder pair</source>
-<target>Вилучити пару папок</target>
-
-<source>Access online storage</source>
-<target>Доступ до online сховища</target>
-
-<source>Close search bar</source>
-<target>Закрити панель пошуку</target>
-
-<source>Find:</source>
-<target>Знайти:</target>
-
-<source>Match case</source>
-<target>Враховувати регістр</target>
-
-<source>New</source>
-<target>Нова</target>
-
-<source>Open...</source>
-<target>Відкрити...</target>
-
-<source>Save</source>
-<target>Зберегти</target>
-
-<source>Save as...</source>
-<target>Зберегти як...</target>
-
-<source>View type:</source>
-<target>Тип перегляду:</target>
-
-<source>Select view:</source>
-<target>Вибрати перегляд:</target>
-
-<source>Save as default</source>
-<target>Зберегти як замовчування</target>
-
-<source>Statistics:</source>
-<target>Статистика:</target>
-
-<source>Number of files and folders that will be deleted</source>
-<target>Кількість файлів і папок, які будуть вилучені</target>
-
-<source>Number of files that will be updated</source>
-<target>Кількість файлів і папок, які будуть оновлені</target>
-
-<source>Number of files and folders that will be created</source>
-<target>Кількість файлів і папок, які будуть створені</target>
-
-<source>Total bytes to copy</source>
-<target>Всього скопіювати байтів</target>
-
-<source>Arrange folder pair</source>
-<target>Упорядкувати пару папок</target>
-
-<source>Main settings:</source>
-<target>Головні налаштування:</target>
-
-<source>Use local settings:</source>
-<target>Використати локальні налаштування:</target>
-
-<source>Select a variant:</source>
-<target>Виберіть варіант:</target>
-
-<source>Include &symbolic links:</source>
-<target>Включити &символьні посилання:</target>
-
-<source>&Follow</source>
-<target>&Переходити</target>
-
-<source>&Direct</source>
-<target>&Безпосередньо</target>
-
-<source>More information</source>
-<target>Додаткова інформація</target>
-
-<source>&Ignore time shift [hh:mm]</source>
-<target>&Ігнорувати зсув у часі [hh:mm]</target>
-
-<source>List of file time offsets to ignore</source>
-<target>Список ігнорованих файлових зсувів у часі</target>
-
-<source>Example:</source>
-<target>Приклад:</target>
-
-<source>Handle daylight saving time</source>
-<target>Перехід на літній час вручну</target>
-
-<source>Ignore errors</source>
-<target>Ігнорувати помилки</target>
-
-<source>Retry count:</source>
-<target>Кількість спроб:</target>
-
-<source>Delay (in seconds):</source>
-<target>Затримка (секунд):</target>
-
-<source>Performance improvements:</source>
-<target>Підвищення продуктивності:</target>
-
-<source>Parallel file operations:</source>
-<target>Паралельні файлові операції:</target>
-
-<source>How to get best performance?</source>
-<target>Як отримати найкращу швидкодію?</target>
-
-<source>Local settings:</source>
-<target>Локальні налаштування:</target>
-
-<source>Include:</source>
-<target>Включити:</target>
-
-<source>Show examples</source>
-<target>Показати приклади</target>
-
-<source>Select filter rules to exclude certain files from synchronization. Enter file paths relative to their corresponding folder pair.</source>
-<target>Виберіть правила фільтрації для виключення деяких файлів із синхронізації. Введіть шляхи до файлів відносно відповідної пари папок.</target>
-
-<source>File size:</source>
-<target>Розмір файлу:</target>
-
-<source>Minimum:</source>
-<target>Мінімум:</target>
-
-<source>Maximum:</source>
-<target>Максимум:</target>
-
-<source>Time span:</source>
-<target>Відрізок часу:</target>
-
-<source>C&lear</source>
-<target>О&чистити</target>
-
-<source>Detect moved files</source>
-<target>Виявляти переміщені файли</target>
-
-<source>
-- Not supported by all file systems
-- Requires and creates database files
-- Detection not available for first sync
-</source>
-<target>
-- Не підтримується всіма файловими системами
-- Вимагає та створює файли баз даних
-- Визначення недоступне для першої синхронізації
-</target>
-
-<source>Delete files:</source>
-<target>Вилучати файли:</target>
-
-<source>&Recycle bin</source>
-<target>&Корзина</target>
-
-<source>&Permanent</source>
-<target>&Безповоротно</target>
-
-<source>&Versioning</source>
-<target>&Управління версіями</target>
-
-<source>Move files to a user-defined folder</source>
-<target>Перемістити файли у визначену користувачем папку</target>
-
-<source>Naming convention:</source>
-<target>Метод іменування:</target>
-
-<source>Limit file versions:</source>
-<target>Обмежити версії файлів:</target>
-
-<source>Last x days:</source>
-<target>Останні x днів:</target>
-
-<source>&Override default log path:</source>
-<target>&Перевизначити шлях журналу за замовчуванням:</target>
-
-<source>Run a command:</source>
-<target>Запустити команду:</target>
-
-<source>OK</source>
-<target>OK</target>
-
-<source>Connection type:</source>
-<target>Тип з'єднання:</target>
-
-<source>Connected user accounts:</source>
-<target></target>
-
-<source>&Add connection</source>
-<target></target>
-
-<source>&Disconnect</source>
-<target></target>
-
-<source>Selected user account:</source>
-<target></target>
-
-<source>Server name or IP address:</source>
-<target>Ім'я серверу чи IP адреса:</target>
-
-<source>Port:</source>
-<target>Порт:</target>
-
-<source>Encryption:</source>
-<target>Шифрування:</target>
-
-<source>&Disabled</source>
-<target>&Вимкнено</target>
-
-<source>&Explicit SSL/TLS</source>
-<target>&Явний SSL/TLS</target>
-
-<source>Authentication:</source>
-<target>Аутентифікація:</target>
-
-<source>&Password</source>
-<target>&Пароль</target>
-
-<source>&Key file</source>
-<target>&Файл ключа</target>
-
-<source>&SSH agent</source>
-<target>&SSH агент</target>
-
-<source>User name:</source>
-<target>Ім'я користувача:</target>
-
-<source>Private key file:</source>
-<target>Приватний файл ключа:</target>
-
-<source>&Show password</source>
-<target>&Показати пароль</target>
-
-<source>Directory on server:</source>
-<target>Папка на сервері:</target>
-
-<source>Access timeout (in seconds):</source>
-<target>Тайм-аут доступу (у секундах):</target>
-
-<source>SFTP channels per connection:</source>
-<target>SFTP канали на з'єднання:</target>
-
-<source>Detect server limit</source>
-<target>Визначити ліміти сервера</target>
-
-<source>Select Folder</source>
-<target>Вибрати Папку</target>
-
-<source>Variant:</source>
-<target>Варіант:</target>
-
-<source>&Don't show this dialog again</source>
-<target>Більше &не показувати цей діалог</target>
-
-<source>Items found:</source>
-<target>Елементів знайдено:</target>
-
-<source>Time remaining:</source>
-<target>Залишилось часу:</target>
-
-<source>Time elapsed:</source>
-<target>Пройшло часу:</target>
-
-<source>Bytes</source>
-<target>Байт</target>
-
-<source>Items</source>
-<target>Елементи</target>
-
-<source>Synchronizing...</source>
-<target>Синхронізація...</target>
-
-<source>Minimize to notification area</source>
-<target>Згорнути в область повідомлень</target>
-
-<source>When finished:</source>
-<target>Після завершення:</target>
-
-<source>Auto-close</source>
-<target>Автозавершення</target>
-
-<source>Close</source>
-<target>Закрити</target>
-
-<source>&Pause</source>
-<target>&Пауза</target>
-
-<source>Stop</source>
-<target>Зупинити</target>
-
-<source>Create a batch file for unattended synchronization. To start, double-click this file or schedule in a task planner: %x</source>
-<target>Створити пакетний файл для автоматичної синхронізації. Щоб запустити двічі клацніть цей файл або заплануйте в планувальнику завдань: %x</target>
-
-<source>Progress dialog:</source>
-<target>Діалог прогресу:</target>
-
-<source>Run minimized</source>
-<target>Запустити згорнутим</target>
-
-<source>Show pop-up on errors or warnings</source>
-<target>Показувати виринаючі вікна при помилках та попередженнях</target>
-
-<source>&Cancel</source>
-<target>&Відмінити</target>
-
-<source>Stop synchronization at first error</source>
-<target>Зупинити синхронізацію при першій помилці</target>
-
-<source>How can I schedule a batch job?</source>
-<target>Як можна запланувати пакетне завдання?</target>
-
-<source>&Keep relative paths</source>
-<target>&Зберегти відносні шляхи</target>
-
-<source>&Overwrite existing files</source>
-<target>&Перезаписати існуючі файли</target>
-
-<source>The following settings are used for all synchronization jobs.</source>
-<target>Наступні налаштування використовуються для всіх завдань синхронізації.</target>
-
-<source>
-Copy to a temporary file (*.ffs_tmp) before overwriting target.
-This guarantees a consistent state even in case of a serious error.
-</source>
-<target>
-Скопіювати в тимчасовий файл (*.ffs_tmp) перед перезаписом цільового.
-Це гарантує цілісність навіть у випадку серйозної помилки.
-</target>
-
-<source>recommended</source>
-<target>рекомендовано</target>
-
-<source>Copy shared or locked files using the Volume Shadow Copy Service.</source>
-<target>Копіювати спільні та заблоковані файли за допомогою сервісу Тіньового Копіювання Тому.</target>
-
-<source>requires administrator rights</source>
-<target>потрібні права адміністратора</target>
-
-<source>Transfer file and folder permissions.</source>
-<target>Перенести права доступу файлів і папок.</target>
-
-<source>Show all permanently hidden dialogs and warning messages again</source>
-<target>Показати всі сховані діалоги і повідомлення з попередженнями знову</target>
-
-<source>Default log path:</source>
-<target>Шлях до журналу за замовчуванням:</target>
-
-<source>&Delete logs after x days:</source>
-<target>&Видалити журнали після x днів:</target>
-
-<source>Customize context menu:</source>
-<target>Налаштування контекстного меню:</target>
-
-<source>Description</source>
-<target>Опис</target>
-
-<source>&Default</source>
-<target>&За замовчуванням</target>
-
-<source>Feedback and suggestions are welcome:</source>
-<target>Зворотній зв'язок і пропозиції вітаються:</target>
-
-<source>Home page</source>
-<target>Домашня сторінка</target>
-
-<source>FreeFileSync Forum</source>
-<target>Форум FreeFileSync</target>
-
-<source>Email</source>
-<target>Пошта</target>
-
-<source>If you like FreeFileSync:</source>
-<target>Якщо Вам сподобався FreeFileSync:</target>
-
-<source>Support with a donation</source>
-<target>Підтримати пожертвуванням.</target>
-
-<source>The auto updater was disabled by the administrator.</source>
-<target>Автоматичне оновлення було відключене адміністратором.</target>
-
-<source>Donation details</source>
-<target>Докладно про пожертвування</target>
-
-<source>Source code written in C++ using:</source>
-<target>Код програми написаний на C++ з використанням:</target>
-
-<source>Published under the GNU General Public License:</source>
-<target>Опубліковано за GNU General Public License:</target>
-
-<source>Many thanks for localization:</source>
-<target>Подяка за локалізацію:</target>
-
-<source>Activate the FreeFileSync Donation Edition by one of the following methods:</source>
-<target>Активувати FreeFileSync Donation Edition за допомогою одного з наступних методів:</target>
-
-<source>1. Activate via internet now:</source>
-<target>1. Активувати через інтернет зараз:</target>
-
-<source>Activate online</source>
-<target>Активувати online</target>
-
-<source>2. Retrieve an offline activation key from the following URL:</source>
-<target>2. Отримати ключ для offline активації за допомогою наступного посилання:</target>
-
-<source>&Copy to clipboard</source>
-<target>&Копіювати в буфер обміну</target>
-
-<source>Enter activation key:</source>
-<target>Ввести ключ активації:</target>
-
-<source>Activate offline</source>
-<target>Активувати offline</target>
-
-<source>Highlight configurations that have not been run for more than the following number of days:</source>
-<target>Виділити конфігурації що не запускались більше ніж наступну кількість днів:</target>
-
-<source>Synchronization Settings</source>
-<target>Налаштування Синхронізації</target>
-
-<source>Access Online Storage</source>
-<target>Доступ до Online Сховища</target>
-
-<source>Save as a Batch Job</source>
-<target>Зберегти як Пакетне Завдання</target>
-
-<source>Delete Items</source>
-<target>Вилучити Елементи</target>
-
-<source>Copy Items</source>
-<target>Копіювати Елементи</target>
-
-<source>Options</source>
-<target>Опції</target>
-
-<source>Select Time Span</source>
-<target>Виберіть Інтервал Часу</target>
-
-<source>Highlight Configurations</source>
-<target>Налаштування виділення</target>
-
-<source>Info</source>
-<target>Інформація</target>
-
-<source>No log entries</source>
-<target>Немає записів журналу</target>
-
-<source>Select all</source>
-<target>Виділити все</target>
-
-<source>&Options</source>
-<target>&Опції</target>
-
-<source>Main Bar</source>
-<target>Головна панель</target>
-
-<source>Folder Pairs</source>
-<target>Пари Папок</target>
-
-<source>Find</source>
-<target>Знайти</target>
-
-<source>View Settings</source>
-<target>Налаштування перегляду</target>
-
-<source>Configuration</source>
-<target>Конфігурація</target>
-
-<source>Overview</source>
-<target>Огляд</target>
-
-<source>Swap sides</source>
-<target>Поміняти місцями</target>
-
-<source>Show "%x"</source>
-<target>Показати "%x"</target>
-
-<source>&Show details</source>
-<target>&Показати докладніше</target>
-
-<source>FreeFileSync %x is available!</source>
-<target>FreeFileSync %x доступний!</target>
-
-<source>Local path not available for %x.</source>
-<target>Локальний шлях не доступний для %x.</target>
-
-<source>Confirm</source>
-<target>Підтвердити</target>
-
-<source>
-<pluralform>Do you really want to execute the command %y for one item?</pluralform>
-<pluralform>Do you really want to execute the command %y for %x items?</pluralform>
-</source>
-<target>
-<pluralform>Справді хочете виконати команду %y для %x елемента?</pluralform>
-<pluralform>Справді хочете виконати команду %y для %x елементів?</pluralform>
-<pluralform>Справді хочете виконати команду %y для %x елементів?</pluralform>
-</target>
-
-<source>&Execute</source>
-<target>&Виконати</target>
-
-<source>
-<pluralform>1 directory</pluralform>
-<pluralform>%x directories</pluralform>
-</source>
-<target>
-<pluralform>%x папка</pluralform>
-<pluralform>%x папки</pluralform>
-<pluralform>%x папок</pluralform>
-</target>
-
-<source>
-<pluralform>1 file</pluralform>
-<pluralform>%x files</pluralform>
-</source>
-<target>
-<pluralform>%x файл</pluralform>
-<pluralform>%x файли</pluralform>
-<pluralform>%x файлів</pluralform>
-</target>
-
-<source>
-<pluralform>Showing %y of 1 row</pluralform>
-<pluralform>Showing %y of %x rows</pluralform>
-</source>
-<target>
-<pluralform>Показано %y з %x рядка</pluralform>
-<pluralform>Показано %y з %x рядків</pluralform>
-<pluralform>Показано %y з %x рядків</pluralform>
-</target>
-
-<source>Set direction:</source>
-<target>Виберіть напрям:</target>
-
-<source>multiple selection</source>
-<target>груповий вибір</target>
-
-<source>&Include via filter:</source>
-<target></target>
-
-<source>&Exclude via filter:</source>
-<target></target>
-
-<source>Include temporarily</source>
-<target>Включити тимчасово</target>
-
-<source>Exclude temporarily</source>
-<target>Виключити тимчасово</target>
-
-<source>&Synchronize selection</source>
-<target></target>
-
-<source>&Copy to...</source>
-<target>&Копіювати до...</target>
-
-<source>&Delete</source>
-<target>Ви&далити</target>
-
-<source>Include all</source>
-<target>Включити всі</target>
-
-<source>Exclude all</source>
-<target>Виключити всі</target>
-
-<source>Show icons:</source>
-<target>Показати іконки:</target>
-
-<source>Small</source>
-<target>Малий</target>
-
-<source>Medium</source>
-<target>Середній</target>
-
-<source>Large</source>
-<target>Великий</target>
-
-<source>Select time span...</source>
-<target>Виберіть інтервал часу...</target>
-
-<source>Donation Edition</source>
-<target>Donation Edition</target>
-
-<source>Folder Comparison and Synchronization</source>
-<target>Порівнювання та Синхронізація папок</target>
-
-<source>Configuration saved</source>
-<target>Налаштування синхронізації збережено</target>
-
-<source>FreeFileSync batch</source>
-<target>Командний файл FreeFileSync</target>
-
-<source>Do you want to save changes to %x?</source>
-<target>Зберегти зміни в %x?</target>
-
-<source>Never save &changes</source>
-<target>Ніколи не зберігати &зміни</target>
-
-<source>Do&n't save</source>
-<target>&Не зберігати</target>
-
-<source>Hide configuration</source>
-<target>Сховати конфігурацію</target>
-
-<source>Highlight...</source>
-<target>Виділити...</target>
-
-<source>Clear filter</source>
-<target>Очистити фільтр</target>
-
-<source>Show files that exist on left side only</source>
-<target>Показати файли, які є тільки ліворуч</target>
-
-<source>Show files that exist on right side only</source>
-<target>Показати файли, які є тільки праворуч</target>
-
-<source>Show files that are newer on left</source>
-<target>Показати файли, які новіші ліворуч</target>
-
-<source>Show files that are newer on right</source>
-<target>Показати файли, які новіші праворуч</target>
-
-<source>Show files that are equal</source>
-<target>Показати однакові файли</target>
-
-<source>Show files that are different</source>
-<target>Показати файли що відрізняються</target>
-
-<source>Show conflicts</source>
-<target>Показати конфлікти</target>
-
-<source>Show files that will be created on the left side</source>
-<target>Показати файли, які будуть створені ліворуч</target>
-
-<source>Show files that will be created on the right side</source>
-<target>Показати файли, які будуть створені праворуч</target>
-
-<source>Show files that will be deleted on the left side</source>
-<target>Показати файли, які будуть вилучені ліворуч</target>
-
-<source>Show files that will be deleted on the right side</source>
-<target>Показати файли, які будуть вилучені праворуч</target>
-
-<source>Show files that will be updated on the left side</source>
-<target>Показати файли, які будуть оновлені ліворуч</target>
-
-<source>Show files that will be updated on the right side</source>
-<target>Показати файли, які будуть оновлені праворуч</target>
-
-<source>Show files that won't be copied</source>
-<target>Показати файли, які не будуть скопійовані</target>
-
-<source>Show filtered or temporarily excluded files</source>
-<target>Показати відфільтровані чи тимчасово виключені елементи</target>
-
-<source>Filter</source>
-<target>Фільтр</target>
-
-<source>All files are in sync</source>
-<target>Всі файли синхронні</target>
-
-<source>Cannot find %x</source>
-<target>Неможливо знайти %x</target>
-
-<source>Move up</source>
-<target>Перемістити вверх</target>
-
-<source>Move down</source>
-<target>Перемістити вниз</target>
-
-<source>Comma-separated values</source>
-<target>Значення розділені комою</target>
-
-<source>File list exported</source>
-<target>Список файлів експортовано</target>
-
-<source>Searching for program updates...</source>
-<target>Пошук оновлень програми...</target>
-
-<source>Paused</source>
-<target>Призупинено</target>
-
-<source>Stop requested...</source>
-<target>Зупинити запит...</target>
-
-<source>Initializing...</source>
-<target>Ініціалізація...</target>
-
-<source>Comparing content...</source>
-<target>Порівнювання вмісту...</target>
-
-<source>&Continue</source>
-<target>&Продовжити</target>
-
-<source>Progress</source>
-<target>Прогрес</target>
-
-<source>Thank you, %x, for your donation and support!</source>
-<target>Дякуємо Вам, %x, за ваше пожертвування та підтримку!</target>
-
-<source>Connections</source>
-<target>З'єднання</target>
-
-<source>Recommended range:</source>
-<target>Рекомендований діапазон:</target>
-
-<source>Do you really want to disconnect from user account %x?</source>
-<target></target>
-
-<source>Password:</source>
-<target>Пароль:</target>
-
-<source>Key password:</source>
-<target>Пароль ключа:</target>
-
-<source>Please enter a file path.</source>
-<target>Будь-ласка, введіть шлях до файлу.</target>
-
-<source>
-<pluralform>Copy the following item to another folder?</pluralform>
-<pluralform>Copy the following %x items to another folder?</pluralform>
-</source>
-<target>
-<pluralform>Копіювати цей %x єлемент у іншу папку?</pluralform>
-<pluralform>Копіювати ці %x елементи у іншу папку?</pluralform>
-<pluralform>Копіювати ці %x елементів у іншу папку?</pluralform>
-</target>
-
-<source>Please enter a target folder.</source>
-<target>Будь ласка, введіть цільову папку.</target>
-
-<source>
-<pluralform>Do you really want to move the following item to the recycle bin?</pluralform>
-<pluralform>Do you really want to move the following %x items to the recycle bin?</pluralform>
-</source>
-<target>
-<pluralform>Ви дійсно хочете перемістити цей %x елемент у корзину?</pluralform>
-<pluralform>Ви дійсно хочете перемістити ці %x елементи у корзину?</pluralform>
-<pluralform>Ви дійсно хочете перемістити ці %x елементів у корзину?</pluralform>
-</target>
-
-<source>Move</source>
-<target>Перемістити</target>
-
-<source>
-<pluralform>Do you really want to delete the following item?</pluralform>
-<pluralform>Do you really want to delete the following %x items?</pluralform>
-</source>
-<target>
-<pluralform>Ви дійсно хочете вилучити цей %x елемент?</pluralform>
-<pluralform>Ви дійсно хочете вилучити ці %x елементи?</pluralform>
-<pluralform>Ви дійсно хочете вилучити ці %x елементів?</pluralform>
-</target>
-
-<source>Start to synchronize the selection?</source>
-<target></target>
-
-<source>Start synchronization now?</source>
-<target>Запустити синхронізацію зараз?</target>
-
-<source>Copy DACL, SACL, Owner, Group</source>
-<target>Скопіювати DACL, SACL, власника, групу</target>
-
-<source>Integrate external applications into context menu. The following macros are available:</source>
-<target>Інтеграція зовнішніх додатків до контекстного меню. Наступні макроси доступні:</target>
-
-<source>Full file or folder path</source>
-<target>Повна назва файлу чи папки</target>
-
-<source>Parent folder path</source>
-<target>Шлях до батьківської папки:</target>
-
-<source>Temporary local copy for SFTP and MTP storage</source>
-<target>Тимчасова локальна копія для SFTP і MTP сховища</target>
-
-<source>Parameters for opposite side</source>
-<target>Параметри для протилежної сторони:</target>
-
-<source>Show hidden dialogs again</source>
-<target>Показати сховані діалоги знову</target>
-
-<source>All dialogs shown</source>
-<target>Показано всі діалоги</target>
-
-<source>Downloading update...</source>
-<target>Завантажується оновлення...</target>
-
-<source>Identify equal files by comparing modification time and size.</source>
-<target>Визначити однакові файли порівнюючи час модифікації та розмір.</target>
-
-<source>Identify equal files by comparing the file content.</source>
-<target>Визначати однакові файли порівнюючи їх вміст.</target>
-
-<source>Identify equal files by comparing their file size.</source>
-<target>Визначати однакові файли порівнюючи їх розмір.</target>
-
-<source>Identify and propagate changes on both sides. Deletions, moves and conflicts are detected automatically using a database.</source>
-<target>Виявити та поширити зміни на обидві сторони. Видалення, перейменування та конфлікти визначаються автоматично використовуючи базу даних.</target>
-
-<source>Create a mirror backup of the left folder by adapting the right folder to match.</source>
-<target>Створення дзеркальної резервної копії лівої папки шляхом приведення правої папки у повну відповідність.</target>
-
-<source>Copy new and updated files to the right folder.</source>
-<target>Скопіювати нові та оновлені файли в праву папку.</target>
-
-<source>Configure your own synchronization rules.</source>
-<target>Налаштувати власні правила синхронізації.</target>
-
-<source>Comparison</source>
-<target>Порівняння</target>
-
-<source>Synchronization</source>
-<target>Синхронізація</target>
-
-<source>This week</source>
-<target>Цього тижня</target>
-
-<source>This month</source>
-<target>Цього місяця</target>
-
-<source>This year</source>
-<target>Цього року</target>
-
-<source>Byte</source>
-<target>Байт</target>
-
-<source>KB</source>
-<target>КБ</target>
-
-<source>MB</source>
-<target>МБ</target>
-
-<source>Retain deleted and overwritten files in the recycle bin</source>
-<target>Залишити видалені і перезаписані файли у корзині</target>
-
-<source>Delete and overwrite files permanently</source>
-<target>Видалити і перезаписати файли назавжди</target>
-
-<source>Replace</source>
-<target>Замінити</target>
-
-<source>Move files and replace if existing</source>
-<target>Перемістити файли замінюючи існуючі</target>
-
-<source>Time stamp</source>
-<target>Відмітка часу</target>
-
-<source>Move files into a time-stamped subfolder</source>
-<target>Перемістити файли в підпапку з часовим шаблоном</target>
-
-<source>File</source>
-<target>Файл</target>
-
-<source>Append a time stamp to each file name</source>
-<target>Приєднати відмітку часу до кожної назви файлу</target>
-
-<source>On completion:</source>
-<target>Після завершення:</target>
-
-<source>On errors:</source>
-<target>Після завершення з помилками:</target>
-
-<source>On success:</source>
-<target>Після успішного завершення:</target>
-
-<source>Main config</source>
-<target>Головна конфігурація</target>
-
-<source>empty</source>
-<target>пусто</target>
-
-<source>Leave as unresolved conflict</source>
-<target>Залишити як невирішений конфлікт</target>
-
-<source>YYYY-MM-DD hhmmss</source>
-<target>YYYY-MM-DD hhmmss</target>
-
-<source>Minimum version count must be smaller than maximum count.</source>
-<target>Мінімальна кількість версій повинна бути меншою, ніж максимальна кількість.</target>
-
-<source>Files</source>
-<target>Файли</target>
-
-<source>Percentage</source>
-<target>Проценти</target>
-
-<source>Failed to retrieve update information.</source>
-<target>Не вдалося отримати інформацію про оновлення.</target>
-
-<source>Automatic updates:</source>
-<target>Автоматичні оновлення:</target>
-
-<source>Check for Program Updates</source>
-<target>Перевірка Оновлень Програми</target>
-
-<source>Auto-update now or download manually from the FreeFileSync home page?</source>
-<target>Автоматично оновити зараз чи завантажити вручную з домашньї сторінки FreeFileSync?</target>
-
-<source>&Auto-update</source>
-<target>&Автоматичне оновлення</target>
-
-<source>&Home page</source>
-<target>&Домашня сторінка</target>
-
-<source>Download now?</source>
-<target>Завантажити зараз?</target>
-
-<source>&Download</source>
-<target>&Завантажити</target>
-
-<source>FreeFileSync is up to date.</source>
-<target>У Вас найновіша версія FreeFileSync.</target>
-
-<source>Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?</source>
-<target>Не вдається знайти номер поточної версії FreeFileSync он-лайн. Нова версія схоже доступна. Перевірити вручну зараз?</target>
-
-<source>&Check</source>
-<target>&Перевірити</target>
-
-<source>Consistency check failed for %x.</source>
-<target>Перевірка цілісності неуспішна для %x.</target>
-
-<source>Installation was registered on a different operating system.</source>
-<target>Встановлення було зареєстровано на іншій операційній системі.</target>
-
-<source>Failed to activate FreeFileSync Donation Edition.</source>
-<target>Не вдалося активувати FreeFileSync Donation Edition.</target>
-
-<source>Incorrect activation key.</source>
-<target>Неправильний код активації.</target>
-
-<source>Unable to register to receive system messages.</source>
-<target>Не вдається зареєструватися для отримання системних повідомлень.</target>
-
-<source>The %x installation option is only available in the FreeFileSync Donation Edition.</source>
-<target>Варіант установки %x доступний тільки у FreeFileSync Donation Edition.</target>
-
-<source>Cannot find system function %x.</source>
-<target>Не вдається знайти системну функцію %x.</target>
-
-<source>Unable to register device notifications for %x.</source>
-<target>Не вдається зареєструвати повідомлення пристрою для %x.</target>
-
-<source>The file is locked by another process:</source>
-<target>Файл заблоковано іншим процесом:</target>
-
-<source>Cannot read security context of %x.</source>
-<target>Не вдається прочитати контекст безпеки %x.</target>
-
-<source>Cannot write security context of %x.</source>
-<target>Не вдається записати контекст безпеки %x.</target>
-
-<source>Cannot read permissions of %x.</source>
-<target>Не вдається прочитати права доступу до %x.</target>
-
-<source>Cannot copy permissions from %x to %y.</source>
-<target>Не вдається скопіювати права доступу з %x до %y.</target>
-
-<source>%x is not a regular directory name.</source>
-<target>%x не є звичайним іменем папки.</target>
-
-<source>Cannot copy attributes from %x to %y.</source>
-<target>Не вдається скопіювати атрибути з %x до %y.</target>
-
-<source>%x TB</source>
-<target>%x ТБ</target>
-
-<source>%x PB</source>
-<target>%x ПБ</target>
-
-<source>
-<pluralform>1 min</pluralform>
-<pluralform>%x min</pluralform>
-</source>
-<target>
-<pluralform>%x хв</pluralform>
-<pluralform>%x хв</pluralform>
-<pluralform>%x хв</pluralform>
-</target>
-
-<source>
-<pluralform>1 hour</pluralform>
-<pluralform>%x hours</pluralform>
-</source>
-<target>
-<pluralform>%x година</pluralform>
-<pluralform>%x години</pluralform>
-<pluralform>%x годин</pluralform>
-</target>
-
-<source>Cannot set privilege %x.</source>
-<target>Не вдається встановити привілеї %x.</target>
-
-<source>Unable to suspend system sleep mode.</source>
-<target>Не вдається призупинити режим сну системи.</target>
-
-<source>Cannot change process I/O priorities.</source>
-<target>Не вдалося змінити пріоритетів Вх/Вих процесу.</target>
-
-<source>Unable to shut down the system.</source>
-<target>Не вдається завершити роботу системи.</target>
-
-<source>Checking recycle bin failed for folder %x.</source>
-<target>Перевірка корзини для папки %x не вдалася.</target>
-
-<source>Prepare installation</source>
-<target>Підготовка встановлення</target>
-
-<source>Choose which components you want to install.</source>
-<target>Виберіть які компоненти ви хочете встановити.</target>
-
-<source>Select installation type:</source>
-<target>Виберіть тип встановлення:</target>
-
-<source>Local</source>
-<target>Локальна</target>
-
-<source>Portable</source>
-<target>Портативна</target>
-
-<source>Save settings in %x</source>
-<target>Зберегти налаштування в %x</target>
-
-<source>Register FreeFileSync file extensions</source>
-<target>Зареєструвати розширення файлів FreeFileSync</target>
-
-<source>Create Explorer context menu entries</source>
-<target>Створити пункти контекстного меню Провідника</target>
-
-<source>Save settings in installation directory</source>
-<target>Зберегти налаштування у папці встановлення</target>
-
-<source>Do not write to Registry</source>
-<target>Не записувати у Реєстр</target>
-
-<source>Just copy the files</source>
-<target>Просто скопіювати файли</target>
-
-<source>Choose a directory for installation:</source>
-<target>Виберіть папку для встановлення:</target>
-
-<source>Create shortcuts:</source>
-<target>Створити ярлики:</target>
-
-<source>Desktop</source>
-<target>Робочий стіл</target>
-
-<source>Start Menu</source>
-<target>Меню "Пуск"</target>
-
-<source>Send To</source>
-<target>Відправити</target>
-
-<source>Registering FreeFileSync file extensions</source>
-<target>Реєстрація розширень файлів FreeFileSync</target>
-
-<source>Unregistering FreeFileSync file extensions</source>
-<target>Вилучення реєстрації розширень файлів FreeFileSync</target>
-
-<source>FreeFileSync Configuration</source>
-<target>Конфігурація FreeFileSync</target>
-
-<source>FreeFileSync Batch File</source>
-<target>Файл пакетного завдання FreeFileSync</target>
-
-<source>FreeFileSync Synchronization Database</source>
-<target>База даних синхронізації FreeFileSync</target>
-
-<source>RealTimeSync Configuration</source>
-<target>Конфігурація RealTimeSync</target>
-
-<source>Edit with FreeFileSync</source>
-<target>Редагувати за допомогою FreeFileSync</target>
-
-<source>Instead of an ad, here's an animal.</source>
-<target>Замість реклами, ось тварина.</target>
-
-<source>The FreeFileSync portable version cannot install into a subfolder of %x.</source>
-<target>Портативна версія FreeFileSync не може бути встановлена в підпапку %x.</target>
-
-<source>Please choose the local installation type or select a different folder for installation.</source>
-<target>Будь ласка, виберіть локальний тип інсталяції чи іншу папку для встановлення.</target>
-
-<source>Get the Donation Edition with bonus features and help keep FreeFileSync ad-free.</source>
-<target>Отримайте Donation Edition з бонусними функціями та допоможіть зберегти FreeFileSync без реклами.</target>
-
diff --git a/FreeFileSync/Build/ding.wav b/FreeFileSync/Build/ding.wav
deleted file mode 100755
index 9a24acc4..00000000
--- a/FreeFileSync/Build/ding.wav
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/gong.wav b/FreeFileSync/Build/gong.wav
deleted file mode 100755
index 96dd2a15..00000000
--- a/FreeFileSync/Build/gong.wav
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/harp.wav b/FreeFileSync/Build/harp.wav
deleted file mode 100755
index 3fe95e5d..00000000
--- a/FreeFileSync/Build/harp.wav
+++ /dev/null
Binary files differ
diff --git a/FreeFileSync/Build/styles.gtk_rc b/FreeFileSync/Build/styles.gtk_rc
deleted file mode 100755
index b13985a0..00000000
--- a/FreeFileSync/Build/styles.gtk_rc
+++ /dev/null
@@ -1,7 +0,0 @@
-style "no-inner-border"
-{
- GtkButton::inner-border = {0, 0, 0, 0} /*remove excessive borders on Gnome*/
- /*GtkButton::focus-padding = 0 => keep default: minor difference + looks better on KDE */
-}
-
-class "GtkButton" style "no-inner-border"
diff --git a/FreeFileSync/Source/base/error_log.h b/FreeFileSync/Source/base/error_log.h
deleted file mode 100755
index a27e423b..00000000
--- a/FreeFileSync/Source/base/error_log.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef ERROR_LOG_H_89734181783491324134
-#define ERROR_LOG_H_89734181783491324134
-
-#include <cassert>
-#include <zen/file_io.h>
-#include <zen/time.h>
-#include "ffs_paths.h"
-
-
-namespace fff
-{
-//write error message to a file (even with corrupted stack)- call in desperate situations when no other means of error handling is available
-void logFatalError(const std::string& msg); //noexcept
-
-
-
-
-
-
-
-
-
-//##################### implementation ############################
-inline
-void logFatalError(const std::string& msg) //noexcept
-{
- using namespace zen;
-
- assert(false); //this is stuff we like to debug
- const std::string logEntry = "[" + formatTime<std::string>(FORMAT_DATE) + " " + formatTime<std::string>(FORMAT_TIME) + "] " + msg;
- try
- {
- saveBinContainer(getConfigDirPathPf() + Zstr("LastError.log"), logEntry, nullptr /*notifyUnbufferedIO*/); //throw FileError
- }
- catch (FileError&) {}
-}
-}
-
-#endif //ERROR_LOG_H_89734181783491324134
diff --git a/FreeFileSync/Source/base/hard_filter.cpp b/FreeFileSync/Source/base/hard_filter.cpp
deleted file mode 100755
index dda78b6b..00000000
--- a/FreeFileSync/Source/base/hard_filter.cpp
+++ /dev/null
@@ -1,366 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#include "hard_filter.h"
-#include <set>
-#include <stdexcept>
-#include <vector>
-#include <typeinfo>
-#include <iterator>
-
-using namespace zen;
-using namespace fff;
-
-
-bool fff::operator<(const HardFilter& lhs, const HardFilter& rhs)
-{
- if (typeid(lhs) != typeid(rhs))
- return typeid(lhs).before(typeid(rhs)); //in worst case, order is guaranteed to be stable only during each program run
-
- //lhs, rhs have same type:
- return lhs.cmpLessSameType(rhs);
-}
-
-
-namespace
-{
-//constructing Zstrings of these in addFilterEntry becomes perf issue for large filter lists => use global POD!
-const Zchar sepAsterisk[] = Zstr("/*");
-const Zchar asteriskSep[] = Zstr("*/");
-static_assert(FILE_NAME_SEPARATOR == '/');
-
-
-void addFilterEntry(const Zstring& filterPhrase, std::vector<Zstring>& masksFileFolder, std::vector<Zstring>& masksFolder)
-{
- warn_static("3. ignore path separator => bug regarding copyFilterAddingExclusion() after failed directory reads when dir has path separator from other OS in name")
-
- //normalize filter input: 1. ignore Unicode normalization form 2. ignore case 3. ignore path separator
- Zstring filterFmt = makeUpperCopy(filterPhrase);
- if constexpr (FILE_NAME_SEPARATOR != Zstr('/' )) replace(filterFmt, Zstr('/'), FILE_NAME_SEPARATOR);
- if constexpr (FILE_NAME_SEPARATOR != Zstr('\\')) replace(filterFmt, Zstr('\\'), FILE_NAME_SEPARATOR);
- /*
- phrase | action
- +---------+--------
- | \blah | remove \
- | \*blah | remove \
- | \*\blah | remove \
- | \*\* | remove \
- +---------+--------
- | *blah |
- | *\blah | -> add blah
- | *\*blah | -> add *blah
- +---------+--------
- | blah\ | remove \; folder only
- | blah*\ | remove \; folder only
- | blah\*\ | remove \; folder only
- +---------+--------
- | blah* |
- | blah\* | remove \*; folder only
- | blah*\* | remove \*; folder only
- +---------+--------
- */
- auto processTail = [&masksFileFolder, &masksFolder](const Zstring& phrase)
- {
- if (endsWith(phrase, FILE_NAME_SEPARATOR) || //only relevant for folder filtering
- endsWith(phrase, sepAsterisk)) // abc\*
- {
- const Zstring dirPhrase = beforeLast(phrase, FILE_NAME_SEPARATOR, IF_MISSING_RETURN_NONE);
- if (!dirPhrase.empty())
- masksFolder.push_back(dirPhrase);
- }
- else if (!phrase.empty())
- masksFileFolder.push_back(phrase);
- };
-
- if (startsWith(filterFmt, FILE_NAME_SEPARATOR)) // \abc
- processTail(afterFirst(filterFmt, FILE_NAME_SEPARATOR, IF_MISSING_RETURN_NONE));
- else
- {
- processTail(filterFmt);
- if (startsWith(filterFmt, asteriskSep)) // *\abc
- processTail(afterFirst(filterFmt, asteriskSep, IF_MISSING_RETURN_NONE));
- }
-}
-
-
-template <class Char> inline
-const Char* cStringFind(const Char* str, Char ch) //= strchr(), wcschr()
-{
- for (;;)
- {
- const Char s = *str;
- if (s == ch) //ch is allowed to be 0 by contract! must return end of string in this case
- return str;
-
- if (s == 0)
- return nullptr;
- ++str;
- }
-}
-
-
-/*
-struct FullMatch
-{
- static bool matchesMaskEnd (const Zchar* path) { return *path == 0; }
- static bool matchesMaskStar(const Zchar* path) { return true; }
-};
-*/
-
-struct ParentFolderMatch //strict match of parent folder path!
-{
- static bool matchesMaskEnd (const Zchar* path) { return *path == FILE_NAME_SEPARATOR; }
- static bool matchesMaskStar(const Zchar* path) { return cStringFind(path, FILE_NAME_SEPARATOR) != nullptr; }
-};
-
-struct AnyMatch
-{
- static bool matchesMaskEnd (const Zchar* path) { return *path == 0 || *path == FILE_NAME_SEPARATOR; }
- static bool matchesMaskStar(const Zchar* path) { return true; }
-};
-
-
-template <class PathEndMatcher>
-bool matchesMask(const Zchar* path, const Zchar* mask)
-{
- for (;; ++mask, ++path)
- {
- Zchar m = *mask;
- switch (m)
- {
- case 0:
- return PathEndMatcher::matchesMaskEnd(path);
-
- case Zstr('?'):
- if (*path == 0)
- return false;
- break;
-
- case Zstr('*'):
- do //advance mask to next non-* char
- {
- m = *++mask;
- }
- while (m == Zstr('*'));
-
- if (m == 0) //mask ends with '*':
- return PathEndMatcher::matchesMaskStar(path);
-
- //*? - pattern
- if (m == Zstr('?'))
- {
- ++mask;
- while (*path++ != 0)
- if (matchesMask<PathEndMatcher>(path, mask))
- return true;
- return false;
- }
-
- //*[letter] - pattern
- ++mask;
- for (;;)
- {
- path = cStringFind(path, m);
- if (!path)
- return false;
-
- ++path;
- if (matchesMask<PathEndMatcher>(path, mask))
- return true;
- }
-
- default:
- if (*path != m)
- return false;
- }
- }
-}
-
-
-//returns true if string matches at least the beginning of mask
-inline
-bool matchesMaskBegin(const Zchar* str, const Zchar* mask)
-{
- for (;; ++mask, ++str)
- {
- const Zchar m = *mask;
- switch (m)
- {
- case 0:
- return *str == 0;
-
- case Zstr('?'):
- if (*str == 0)
- return true;
- break;
-
- case Zstr('*'):
- return true;
-
- default:
- if (*str != m)
- return *str == 0;
- }
- }
-}
-
-
-template <class PathEndMatcher> inline
-bool matchesMask(const Zstring& name, const std::vector<Zstring>& masks)
-{
- return std::any_of(masks.begin(), masks.end(), [&](const Zstring& mask) { return matchesMask<PathEndMatcher>(name.c_str(), mask.c_str()); });
-}
-
-
-inline
-bool matchesMaskBegin(const Zstring& name, const std::vector<Zstring>& masks)
-{
- return std::any_of(masks.begin(), masks.end(), [&](const Zstring& mask) { return matchesMaskBegin(name.c_str(), mask.c_str()); });
-}
-}
-
-
-std::vector<Zstring> fff::splitByDelimiter(const Zstring& filterPhrase)
-{
- //delimiters may be FILTER_ITEM_SEPARATOR or '\n'
- std::vector<Zstring> output;
-
- for (const Zstring& str : split(filterPhrase, FILTER_ITEM_SEPARATOR, SplitType::SKIP_EMPTY)) //split by less common delimiter first (create few, large strings)
- for (Zstring entry : split(str, Zstr('\n'), SplitType::SKIP_EMPTY))
- {
- trim(entry);
- if (!entry.empty())
- output.push_back(std::move(entry));
- }
-
- return output;
-}
-
-//#################################################################################################
-
-NameFilter::NameFilter(const Zstring& includePhrase, const Zstring& excludePhrase)
-{
- //setup include/exclude filters for files and directories
- for (const Zstring& entry : splitByDelimiter(includePhrase)) addFilterEntry(entry, includeMasksFileFolder, includeMasksFolder);
- for (const Zstring& entry : splitByDelimiter(excludePhrase)) addFilterEntry(entry, excludeMasksFileFolder, excludeMasksFolder);
-
- removeDuplicates(includeMasksFileFolder);
- removeDuplicates(includeMasksFolder);
- removeDuplicates(excludeMasksFileFolder);
- removeDuplicates(excludeMasksFolder);
-}
-
-
-void NameFilter::addExclusion(const Zstring& excludePhrase)
-{
- for (const Zstring& entry : splitByDelimiter(excludePhrase)) addFilterEntry(entry, excludeMasksFileFolder, excludeMasksFolder);
-
- removeDuplicates(excludeMasksFileFolder);
- removeDuplicates(excludeMasksFolder);
-}
-
-
-bool NameFilter::passFileFilter(const Zstring& relFilePath) const
-{
- assert(!startsWith(relFilePath, FILE_NAME_SEPARATOR));
-
- //normalize input: 1. ignore Unicode normalization form 2. ignore case
- const Zstring& pathFmt = makeUpperCopy(relFilePath);
-
- if (matchesMask<AnyMatch >(pathFmt, excludeMasksFileFolder) || //either full match on file or partial match on any parent folder
- matchesMask<ParentFolderMatch>(pathFmt, excludeMasksFolder)) //partial match on any parent folder only
- return false;
-
- return matchesMask<AnyMatch >(pathFmt, includeMasksFileFolder) ||
- matchesMask<ParentFolderMatch>(pathFmt, includeMasksFolder);
-}
-
-
-bool NameFilter::passDirFilter(const Zstring& relDirPath, bool* childItemMightMatch) const
-{
- assert(!startsWith(relDirPath, FILE_NAME_SEPARATOR));
- assert(!childItemMightMatch || *childItemMightMatch); //check correct usage
-
- //normalize input: 1. ignore Unicode normalization form 2. ignore case
- const Zstring& pathFmt = makeUpperCopy(relDirPath);
-
- if (matchesMask<AnyMatch>(pathFmt, excludeMasksFileFolder) ||
- matchesMask<AnyMatch>(pathFmt, excludeMasksFolder))
- {
- if (childItemMightMatch)
- *childItemMightMatch = false; //perf: no need to traverse deeper; subfolders/subfiles would be excluded by filter anyway!
- /*
- Attention: the design choice that "childItemMightMatch" is optional implies that the filter must provide correct results no matter if this
- value is considered by the client!
- In particular, if *childItemMightMatch == false, then any filter evaluations for child items must also return "false"!
- This is not a problem for folder traversal which stops at the first *childItemMightMatch == false anyway, but other code continues recursing further,
- e.g. the database update code in db_file.cpp recurses unconditionally without filter check! It's possible to construct edge cases with incorrect
- behavior if "childItemMightMatch" were not optional:
- 1. two folders including a subfolder with some files are in sync with up-to-date database files
- 2. deny access to this subfolder on both sides and start sync ignoring errors
- 3. => database entries of this subfolder are incorrectly deleted! (if sub-folder is excluded, but child items are not!)
- */
- return false;
- }
-
- if (!matchesMask<AnyMatch>(pathFmt, includeMasksFileFolder) &&
- !matchesMask<AnyMatch>(pathFmt, includeMasksFolder))
- {
- if (childItemMightMatch)
- {
- const Zstring& childPathBegin = pathFmt + FILE_NAME_SEPARATOR;
-
- *childItemMightMatch = matchesMaskBegin(childPathBegin, includeMasksFileFolder) || //might match a file or folder in subdirectory
- matchesMaskBegin(childPathBegin, includeMasksFolder); //
- }
- return false;
- }
-
- return true;
-}
-
-
-bool NameFilter::isNull(const Zstring& includePhrase, const Zstring& excludePhrase)
-{
- const Zstring include = trimCpy(includePhrase);
- const Zstring exclude = trimCpy(excludePhrase);
-
- return include == Zstr("*") && exclude.empty();
- //return NameFilter(includePhrase, excludePhrase).isNull(); -> very expensive for huge lists
-}
-
-
-bool NameFilter::isNull() const
-{
- return includeMasksFileFolder.size() == 1 && includeMasksFileFolder[0] == Zstr("*") &&
- includeMasksFolder .empty() &&
- excludeMasksFileFolder.empty() &&
- excludeMasksFolder .empty();
- //avoid static non-POD null-NameFilter instance; instead test manually and verify function on startup:
-}
-
-
-
-bool NameFilter::cmpLessSameType(const HardFilter& other) const
-{
- assert(typeid(*this) == typeid(other)); //always given in this context!
-
- const NameFilter& otherNameFilt = static_cast<const NameFilter&>(other);
-
- if (includeMasksFileFolder != otherNameFilt.includeMasksFileFolder)
- return includeMasksFileFolder < otherNameFilt.includeMasksFileFolder;
-
- if (includeMasksFolder != otherNameFilt.includeMasksFolder)
- return includeMasksFolder < otherNameFilt.includeMasksFolder;
-
- if (excludeMasksFileFolder != otherNameFilt.excludeMasksFileFolder)
- return excludeMasksFileFolder < otherNameFilt.excludeMasksFileFolder;
-
- if (excludeMasksFolder != otherNameFilt.excludeMasksFolder)
- return excludeMasksFolder < otherNameFilt.excludeMasksFolder;
-
- return false; //all equal
-}
diff --git a/FreeFileSync/Source/base/hard_filter.h b/FreeFileSync/Source/base/hard_filter.h
deleted file mode 100755
index 682c2502..00000000
--- a/FreeFileSync/Source/base/hard_filter.h
+++ /dev/null
@@ -1,241 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef HARD_FILTER_H_825780275842758345
-#define HARD_FILTER_H_825780275842758345
-
-#include <vector>
-#include <memory>
-#include <zen/zstring.h>
-
-
-namespace fff
-{
-//------------------------------------------------------------------
-/*
-Semantics of HardFilter:
-1. using it creates a NEW folder hierarchy! -> must be considered by <Two way> variant!
-2. it applies equally to both sides => it always matches either both sides or none! => can be used while traversing a single folder!
-
- class hierarchy:
-
- HardFilter (interface)
- /|\
- _________|_____________
- | | |
-NullFilter NameFilter CombinedFilter
-*/
-
-class HardFilter //interface for filtering
-{
-public:
- virtual ~HardFilter() {}
-
- //filtering
- virtual bool passFileFilter(const Zstring& relFilePath) const = 0;
- virtual bool passDirFilter (const Zstring& relDirPath, bool* childItemMightMatch) const = 0;
- //childItemMightMatch: file/dir in subdirectories could(!) match
- //note: this hint is only set if passDirFilter returns false!
-
- virtual bool isNull() const = 0; //filter is equivalent to NullFilter, but may be technically slower
-
- using FilterRef = std::shared_ptr<const HardFilter>; //always bound by design! Thread-safety: internally synchronized!
-
- virtual FilterRef copyFilterAddingExclusion(const Zstring& excludePhrase) const = 0;
-
-private:
- friend bool operator<(const HardFilter& lhs, const HardFilter& rhs);
-
- virtual bool cmpLessSameType(const HardFilter& other) const = 0; //typeid(*this) == typeid(other) in this context!
-};
-
-bool operator<(const HardFilter& lhs, const HardFilter& rhs); //GCC: friend-declaration is not a "proper" declaration
-inline bool operator==(const HardFilter& lhs, const HardFilter& rhs) { return !(lhs < rhs) && !(rhs < lhs); }
-inline bool operator!=(const HardFilter& lhs, const HardFilter& rhs) { return !(lhs == rhs); }
-
-
-//small helper method: merge two hard filters (thereby remove Null-filters)
-HardFilter::FilterRef combineFilters(const HardFilter::FilterRef& first,
- const HardFilter::FilterRef& second);
-
-
-class NullFilter : public HardFilter //no filtering at all
-{
-public:
- bool passFileFilter(const Zstring& relFilePath) const override { return true; }
- bool passDirFilter(const Zstring& relDirPath, bool* childItemMightMatch) const override;
- bool isNull() const override { return true; }
- FilterRef copyFilterAddingExclusion(const Zstring& excludePhrase) const override;
-
-private:
- bool cmpLessSameType(const HardFilter& other) const override;
-};
-
-
-class NameFilter : public HardFilter //filter by base-relative file path
-{
-public:
- NameFilter(const Zstring& includePhrase, const Zstring& excludePhrase);
-
- void addExclusion(const Zstring& excludePhrase);
-
- bool passFileFilter(const Zstring& relFilePath) const override;
- bool passDirFilter(const Zstring& relDirPath, bool* childItemMightMatch) const override;
-
- bool isNull() const override;
- static bool isNull(const Zstring& includePhrase, const Zstring& excludePhrase); //*fast* check without expensive NameFilter construction!
- FilterRef copyFilterAddingExclusion(const Zstring& excludePhrase) const override;
-
-private:
- bool cmpLessSameType(const HardFilter& other) const override;
-
- std::vector<Zstring> includeMasksFileFolder; //
- std::vector<Zstring> includeMasksFolder; //upper-case + Unicode-normalized by construction
- std::vector<Zstring> excludeMasksFileFolder; //
- std::vector<Zstring> excludeMasksFolder; //
-};
-
-
-class CombinedFilter : public HardFilter //combine two filters to match if and only if both match
-{
-public:
- CombinedFilter(const NameFilter& first, const NameFilter& second) : first_(first), second_(second) { assert(!first.isNull() && !second.isNull()); } //if either is null, then wy use CombinedFilter?
-
- bool passFileFilter(const Zstring& relFilePath) const override;
- bool passDirFilter(const Zstring& relDirPath, bool* childItemMightMatch) const override;
- bool isNull() const override;
- FilterRef copyFilterAddingExclusion(const Zstring& excludePhrase) const override;
-
-private:
- bool cmpLessSameType(const HardFilter& other) const override;
-
- const NameFilter first_;
- const NameFilter second_;
-};
-
-const Zchar FILTER_ITEM_SEPARATOR = Zstr('|');
-
-
-
-
-
-//--------------- inline implementation ---------------------------------------
-inline
-bool NullFilter::passDirFilter(const Zstring& relDirPath, bool* childItemMightMatch) const
-{
- assert(!childItemMightMatch || *childItemMightMatch); //check correct usage
- return true;
-}
-
-
-inline
-bool NullFilter::cmpLessSameType(const HardFilter& other) const
-{
- assert(typeid(*this) == typeid(other)); //always given in this context!
- return false;
-}
-
-
-inline
-HardFilter::FilterRef NullFilter::copyFilterAddingExclusion(const Zstring& excludePhrase) const
-{
- auto filter = std::make_shared<NameFilter>(Zstr("*"), excludePhrase);
- if (filter->isNull())
- return std::make_shared<NullFilter>();
- return filter;
-}
-
-
-inline
-HardFilter::FilterRef NameFilter::copyFilterAddingExclusion(const Zstring& excludePhrase) const
-{
- auto tmp = std::make_shared<NameFilter>(*this);
- tmp->addExclusion(excludePhrase);
- return tmp;
-}
-
-
-inline
-bool CombinedFilter::passFileFilter(const Zstring& relFilePath) const
-{
- return first_ .passFileFilter(relFilePath) && //short-circuit behavior
- second_.passFileFilter(relFilePath);
-}
-
-
-inline
-bool CombinedFilter::passDirFilter(const Zstring& relDirPath, bool* childItemMightMatch) const
-{
- if (first_.passDirFilter(relDirPath, childItemMightMatch))
- return second_.passDirFilter(relDirPath, childItemMightMatch);
- else
- {
- if (childItemMightMatch && *childItemMightMatch)
- second_.passDirFilter(relDirPath, childItemMightMatch);
- return false;
- }
-}
-
-
-inline
-bool CombinedFilter::isNull() const
-{
- return first_.isNull() && second_.isNull();
-}
-
-
-inline
-HardFilter::FilterRef CombinedFilter::copyFilterAddingExclusion(const Zstring& excludePhrase) const
-{
- NameFilter tmp(first_);
- tmp.addExclusion(excludePhrase);
-
- return std::make_shared<CombinedFilter>(tmp, second_);
-}
-
-
-inline
-bool CombinedFilter::cmpLessSameType(const HardFilter& other) const
-{
- assert(typeid(*this) == typeid(other)); //always given in this context!
-
- const CombinedFilter& otherCombFilt = static_cast<const CombinedFilter&>(other);
-
- if (first_ != otherCombFilt.first_)
- return first_ < otherCombFilt.first_;
-
- return second_ < otherCombFilt.second_;
-}
-
-
-inline
-HardFilter::FilterRef constructFilter(const Zstring& includePhrase,
- const Zstring& excludePhrase,
- const Zstring& includePhrase2,
- const Zstring& excludePhrase2)
-{
- if (NameFilter::isNull(includePhrase, Zstring()))
- {
- std::shared_ptr<HardFilter> filterTmp = std::make_shared<NameFilter>(includePhrase2, excludePhrase + Zstr("\n") + excludePhrase2);
- if (filterTmp->isNull())
- return std::make_shared<NullFilter>();
-
- return filterTmp;
- }
- else
- {
- if (NameFilter::isNull(includePhrase2, Zstring()))
- return std::make_shared<NameFilter>(includePhrase, excludePhrase + Zstr("\n") + excludePhrase2);
- else
- return std::make_shared<CombinedFilter>(NameFilter(includePhrase, excludePhrase + Zstr("\n") + excludePhrase2), NameFilter(includePhrase2, Zstring()));
- }
-}
-
-
-std::vector<Zstring> splitByDelimiter(const Zstring& filterPhrase); //keep external linkage for unit test
-}
-
-#endif //HARD_FILTER_H_825780275842758345
diff --git a/FreeFileSync/Source/fs/concrete_impl.h b/FreeFileSync/Source/fs/concrete_impl.h
deleted file mode 100755
index aa308372..00000000
--- a/FreeFileSync/Source/fs/concrete_impl.h
+++ /dev/null
@@ -1,213 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef IMPL_HELPER_H_873450978453042524534234
-#define IMPL_HELPER_H_873450978453042524534234
-
-#include "abstract.h"
-#include <zen/thread.h>
-
-
-namespace fff
-{
-template <class Function> inline //return ignored error message if available
-std::wstring tryReportingDirError(Function cmd /*throw FileError*/, AbstractFileSystem::TraverserCallback& cb /*throw X*/)
-{
- for (size_t retryNumber = 0;; ++retryNumber)
- try
- {
- cmd(); //throw FileError
- return std::wstring();
- }
- catch (const zen::FileError& e)
- {
- assert(!e.toString().empty());
- switch (cb.reportDirError(e.toString(), retryNumber)) //throw X
- {
- case AbstractFileSystem::TraverserCallback::ON_ERROR_CONTINUE:
- return e.toString();
- case AbstractFileSystem::TraverserCallback::ON_ERROR_RETRY:
- break; //continue with loop
- }
- }
-}
-
-
-template <class Context, class Function>
-struct Task
-{
- Function getResult; //throw FileError
- /* [[no_unique_address]] */ Context ctx;
-};
-
-
-template <class Context, class Function>
-struct TaskResult
-{
- Task<Context, Function> wi;
- std::exception_ptr error; //mutually exclusive
- decltype(wi.getResult()) value; //
-};
-
-enum class SchedulerStatus
-{
- HAVE_RESULT,
- FINISHED,
-};
-
-template <class Context, class... Functions> //avoid std::function memory alloc + virtual calls
-class TaskScheduler
-{
-public:
- TaskScheduler(size_t threadCount, const std::string& groupName) :
- threadGroup_(zen::ThreadGroup<std::function<void()>>(threadCount, groupName)) {}
-
- ~TaskScheduler() { threadGroup_ = {}; } //TaskScheduler must out-live threadGroup! (captured "this")
-
- //context of controlling thread, non-blocking:
- template <class Function>
- void run(Task<Context, Function>&& wi, bool insertFront = false)
- {
- threadGroup_->run([this, wi = std::move(wi)]
- {
- try { this->returnResult<Function>({ wi, nullptr, wi.getResult() }); } //throw FileError
- catch (...) { this->returnResult<Function>({ wi, std::current_exception(), {} }); }
- }, insertFront);
-
- std::lock_guard dummy(lockResult_);
- ++resultsPending_;
- }
-
- //context of controlling thread, blocking:
- SchedulerStatus getResults(std::tuple<std::vector<TaskResult<Context, Functions>>...>& results)
- {
- std::apply([](auto&... r) { (..., r.clear()); }, results);
-
- std::unique_lock dummy(lockResult_);
-
- auto resultsReady = [&]
- {
- bool ready = false;
- std::apply([&ready](const auto&... r) { ready = (... || !r.empty()); }, results_);
- return ready;
- };
-
- if (!resultsReady() && resultsPending_ == 0)
- return SchedulerStatus::FINISHED;
-
- conditionNewResult_.wait(dummy, [&resultsReady] { return resultsReady(); });
-
- results.swap(results_); //reuse memory + avoid needless item-level mutex locking
- return SchedulerStatus::HAVE_RESULT;
- }
-
-private:
- TaskScheduler (const TaskScheduler&) = delete;
- TaskScheduler& operator=(const TaskScheduler&) = delete;
-
- //context of worker threads, non-blocking:
- template <class Function>
- void returnResult(TaskResult<Context, Function>&& r)
- {
- {
- std::lock_guard dummy(lockResult_);
-
- std::get<std::vector<TaskResult<Context, Function>>>(results_).push_back(std::move(r));
- --resultsPending_;
- }
- conditionNewResult_.notify_all();
- }
-
- std::optional<zen::ThreadGroup<std::function<void()>>> threadGroup_;
-
- std::mutex lockResult_;
- size_t resultsPending_ = 0;
- std::tuple<std::vector<TaskResult<Context, Functions>>...> results_;
- std::condition_variable conditionNewResult_;
-};
-
-
-struct TravContext
-{
- Zstring errorItemName; //empty if all items affected
- size_t errorRetryCount = 0;
- std::shared_ptr<AbstractFileSystem::TraverserCallback> cb; //call by controlling thread only! => don't require traverseFolderParallel() callbacks to be thread-safe!
-};
-
-
-template <class... Functions>
-class GenericDirTraverser
-{
-public:
- using Function1 = zen::GetFirstOfT<Functions...>;
-
- GenericDirTraverser(std::vector<Task<TravContext, Function1>>&& initialTasks /*throw X*/, size_t parallelOps, const std::string& threadGroupName) :
- scheduler_(parallelOps, threadGroupName)
- {
- //set the initial work load
- for (auto& item : initialTasks)
- scheduler_.template run<Function1>(std::move(item));
-
- //run loop
- std::tuple<std::vector<TaskResult<TravContext, Functions>>...> results; //avoid per-getNextResults() memory allocations (=> swap instead!)
-
- while (scheduler_.getResults(results) == SchedulerStatus::HAVE_RESULT)
- std::apply([&](auto&... r) { (..., this->evalResultList(r)); }, results); //throw X
- }
-
-private:
- GenericDirTraverser (const GenericDirTraverser&) = delete;
- GenericDirTraverser& operator=(const GenericDirTraverser&) = delete;
-
- template <class Function>
- void evalResultList(std::vector<TaskResult<TravContext, Function>>& results /*throw X*/)
- {
- for (TaskResult<TravContext, Function>& result : results)
- evalResult(result); //throw X
- }
-
- template <class Function>
- void evalResult(TaskResult<TravContext, Function>& result /*throw X*/);
-
- //specialize!
- template <class Function>
- void evalResultValue(const typename Function::Result& r, std::shared_ptr<AbstractFileSystem::TraverserCallback>& cb /*throw X*/);
-
- TaskScheduler<TravContext, Functions...> scheduler_;
-};
-
-
-template <class... Functions>
-template <class Function>
-void GenericDirTraverser<Functions...>::evalResult(TaskResult<TravContext, Function>& result /*throw X*/)
-{
- auto& cb = result.wi.ctx.cb;
- try
- {
- if (result.error)
- std::rethrow_exception(result.error); //throw FileError
- }
- catch (const zen::FileError& e)
- {
- switch (result.wi.ctx.errorItemName.empty() ?
- cb->reportDirError (e.toString(), result.wi.ctx.errorRetryCount) : //throw X
- cb->reportItemError(e.toString(), result.wi.ctx.errorRetryCount, result.wi.ctx.errorItemName)) //throw X
- {
- case AbstractFileSystem::TraverserCallback::ON_ERROR_RETRY:
- //user expects that the task is retried immediately => we can't do much about other errors already waiting in the queue, but at least *prepend* to the work load!
- scheduler_.template run<Function>({ std::move(result.wi.getResult), TravContext{ result.wi.ctx.errorItemName, result.wi.ctx.errorRetryCount + 1, cb }},
- true /*insertFront*/);
- return;
-
- case AbstractFileSystem::TraverserCallback::ON_ERROR_CONTINUE:
- return;
- }
- }
- evalResultValue<Function>(result.value, cb); //throw X
-}
-}
-
-#endif //IMPL_HELPER_H_873450978453042524534234
diff --git a/FreeFileSync/Source/ui/search.cpp b/FreeFileSync/Source/ui/search.cpp
deleted file mode 100755
index dd46c7f8..00000000
--- a/FreeFileSync/Source/ui/search.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#include "search.h"
-#include <zen/zstring.h>
-#include <zen/perf.h>
-
-using namespace zen;
-using namespace fff;
-
-
-namespace
-{
-template <bool respectCase>
-class MatchFound
-{
-public:
- MatchFound(const std::wstring& textToFind) : textToFind_(textToFind) {}
- bool operator()(const std::wstring& phrase) const { return contains(phrase, textToFind_); }
-
-private:
- const std::wstring textToFind_;
-};
-
-
-template <>
-class MatchFound<false>
-{
-public:
- MatchFound(const std::wstring& textToFind) : textToFind_(makeUpperCopy(textToFind)) {}
- bool operator()(std::wstring&& phrase) const { return contains(makeUpperCopy(phrase), textToFind_); }
-
-private:
- const std::wstring textToFind_;
-};
-
-//###########################################################################################
-
-template <bool respectCase>
-ptrdiff_t findRow(const Grid& grid, //return -1 if no matching row found
- const std::wstring& searchString,
- bool searchAscending,
- size_t rowFirst, //specify area to search:
- size_t rowLast) // [rowFirst, rowLast)
-{
- if (auto prov = grid.getDataProvider())
- {
- std::vector<Grid::ColAttributes> colAttr = grid.getColumnConfig();
- erase_if(colAttr, [](const Grid::ColAttributes& ca) { return !ca.visible; });
- if (!colAttr.empty())
- {
- const MatchFound<respectCase> matchFound(searchString);
-
- if (searchAscending)
- {
- for (size_t row = rowFirst; row < rowLast; ++row)
- for (const Grid::ColAttributes& ca : colAttr)
- if (matchFound(prov->getValue(row, ca.type)))
- return row;
- }
- else
- for (size_t row = rowLast; row-- > rowFirst;)
- for (const Grid::ColAttributes& ca : colAttr)
- if (matchFound(prov->getValue(row, ca.type)))
- return row;
- }
- }
- return -1;
-}
-}
-
-
-std::pair<const Grid*, ptrdiff_t> fff::findGridMatch(const Grid& grid1, const Grid& grid2, const std::wstring& searchString, bool respectCase, bool searchAscending)
-{
- //PERF_START
-
- const size_t rowCount1 = grid1.getRowCount();
- const size_t rowCount2 = grid2.getRowCount();
-
- size_t cursorRow1 = grid1.getGridCursor();
- if (cursorRow1 >= rowCount1)
- cursorRow1 = 0;
-
- std::pair<const Grid*, ptrdiff_t> result(nullptr, -1);
-
- auto finishSearch = [&](const Grid& grid, size_t rowFirst, size_t rowLast)
- {
- const ptrdiff_t targetRow = respectCase ?
- findRow<true >(grid, searchString, searchAscending, rowFirst, rowLast) :
- findRow<false>(grid, searchString, searchAscending, rowFirst, rowLast);
- if (targetRow >= 0)
- {
- result = { &grid, targetRow };
- return true;
- }
- return false;
- };
-
- if (searchAscending)
- {
- if (!finishSearch(grid1, cursorRow1 + 1, rowCount1))
- if (!finishSearch(grid2, 0, rowCount2))
- finishSearch(grid1, 0, cursorRow1 + 1);
- }
- else
- {
- if (!finishSearch(grid1, 0, cursorRow1))
- if (!finishSearch(grid2, 0, rowCount2))
- finishSearch(grid1, cursorRow1, rowCount1);
- }
- return result;
-}
diff --git a/FreeFileSync/Source/ui/search.h b/FreeFileSync/Source/ui/search.h
deleted file mode 100755
index 81560f7c..00000000
--- a/FreeFileSync/Source/ui/search.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef SEARCH_H_423905762345342526587
-#define SEARCH_H_423905762345342526587
-
-#include <wx+/grid.h>
-
-
-namespace fff
-{
-std::pair<const zen::Grid*, ptrdiff_t> findGridMatch(const zen::Grid& grid1, const zen::Grid& grid2, const std::wstring& searchString, bool respectCase, bool searchAscending);
-//returns (grid/row) where the value was found, (nullptr, -1) if not found
-}
-
-#endif //SEARCH_H_423905762345342526587
diff --git a/FreeFileSync/Source/ui/version_check_impl.h b/FreeFileSync/Source/ui/version_check_impl.h
deleted file mode 100755
index 64030de3..00000000
--- a/FreeFileSync/Source/ui/version_check_impl.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef VERSION_ID_HEADER_2348769284769242
-#define VERSION_ID_HEADER_2348769284769242
-
-#include <ctime>
-#include <zen/basic_math.h>
-#include "../version/version.h"
-
-
-namespace fff
-{
-inline
-time_t getVersionCheckInactiveId()
-{
- //use current version to calculate a changing number for the inactive state near UTC begin, in order to always check for updates after installing a new version
- //=> interpret version as 11-based *unique* number (this breaks lexicographical version ordering, but that's irrelevant!)
- int id = 0;
- const char* first = ffsVersion;
- const char* last = first + zen::strLength(ffsVersion);
- std::for_each(first, last, [&](char c)
- {
- id *= 11;
- if ('0' <= c && c <= '9')
- id += c - '0';
- else
- {
- assert(c == FFS_VERSION_SEPARATOR);
- id += 10;
- }
- });
- assert(0 < id && id < 3600 * 24 * 365); //as long as value is within a year after UTC begin (1970) there's no risk to clash with *current* time
- return id;
-}
-
-
-inline
-time_t getVersionCheckCurrentTime()
-{
- return std::time(nullptr);
-}
-
-
-//as declared in version_check.h:
-bool shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck)
-{
- if (lastUpdateCheck == getVersionCheckInactiveId())
- return false;
-
- const time_t now = std::time(nullptr);
- return numeric::dist(now, lastUpdateCheck) >= 7 * 24 * 3600; //check weekly
-}
-}
-
-#endif //VERSION_ID_HEADER_2348769284769242
diff --git a/wx+/zlib_wrap.cpp b/wx+/zlib_wrap.cpp
deleted file mode 100755
index fbbe2f09..00000000
--- a/wx+/zlib_wrap.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#include "zlib_wrap.h"
-//Windows: use the SAME zlib version that wxWidgets is linking against! //C:\Data\Projects\wxWidgets\Source\src\zlib\zlib.h
-//Linux/macOS: use zlib system header for both wxWidgets and Curl (zlib is required for HTTP)
-// => don't compile wxWidgets with: --with-zlib=builtin
-#include <zlib.h>
-
-using namespace zen;
-
-
-size_t zen::impl::zlib_compressBound(size_t len)
-{
- return ::compressBound(static_cast<uLong>(len)); //upper limit for buffer size, larger than input size!!!
-}
-
-
-size_t zen::impl::zlib_compress(const void* src, size_t srcLen, void* trg, size_t trgLen, int level) //throw ZlibInternalError
-{
- uLongf bufferSize = static_cast<uLong>(trgLen);
- const int rv = ::compress2(static_cast<Bytef*>(trg), //Bytef* dest,
- &bufferSize, //uLongf* destLen,
- static_cast<const Bytef*>(src), //const Bytef* source,
- static_cast<uLong>(srcLen), //uLong sourceLen,
- level); //int level
- // Z_OK: success
- // Z_MEM_ERROR: not enough memory
- // Z_BUF_ERROR: not enough room in the output buffer
- if (rv != Z_OK || bufferSize > trgLen)
- throw ZlibInternalError();
- return bufferSize;
-}
-
-
-size_t zen::impl::zlib_decompress(const void* src, size_t srcLen, void* trg, size_t trgLen) //throw ZlibInternalError
-{
- uLongf bufferSize = static_cast<uLong>(trgLen);
- const int rv = ::uncompress(static_cast<Bytef*>(trg), //Bytef* dest,
- &bufferSize, //uLongf* destLen,
- static_cast<const Bytef*>(src), //const Bytef* source,
- static_cast<uLong>(srcLen)); //uLong sourceLen
- // Z_OK: success
- // Z_MEM_ERROR: not enough memory
- // Z_BUF_ERROR: not enough room in the output buffer
- // Z_DATA_ERROR: input data was corrupted or incomplete
- if (rv != Z_OK || bufferSize > trgLen)
- throw ZlibInternalError();
- return bufferSize;
-}
diff --git a/wx+/zlib_wrap.h b/wx+/zlib_wrap.h
deleted file mode 100755
index d3bb017b..00000000
--- a/wx+/zlib_wrap.h
+++ /dev/null
@@ -1,114 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef ZLIB_WRAP_H_428597064566
-#define ZLIB_WRAP_H_428597064566
-
-#include <zen/serialize.h>
-
-
-namespace zen
-{
-class ZlibInternalError {};
-
-// compression level must be between 0 and 9:
-// 0: no compression
-// 9: best compression
-template <class BinContainer> //as specified in serialize.h
-BinContainer compress(const BinContainer& stream, int level); //throw ZlibInternalError
-//caveat: output stream is physically larger than input! => strip additional reserved space if needed: "BinContainer(output.begin(), output.end())"
-
-template <class BinContainer>
-BinContainer decompress(const BinContainer& stream); //throw ZlibInternalError
-
-
-
-
-
-
-
-
-
-
-
-//######################## implementation ##########################
-namespace impl
-{
-size_t zlib_compressBound(size_t len);
-size_t zlib_compress (const void* src, size_t srcLen, void* trg, size_t trgLen, int level); //throw ZlibInternalError
-size_t zlib_decompress(const void* src, size_t srcLen, void* trg, size_t trgLen); //throw ZlibInternalError
-}
-
-
-template <class BinContainer>
-BinContainer compress(const BinContainer& stream, int level) //throw ZlibInternalError
-{
- BinContainer contOut;
- if (!stream.empty()) //don't dereference iterator into empty container!
- {
- //save uncompressed stream size for decompression
- const uint64_t uncompressedSize = stream.size(); //use portable number type!
- contOut.resize(sizeof(uncompressedSize));
- std::copy(reinterpret_cast<const std::byte*>(&uncompressedSize),
- reinterpret_cast<const std::byte*>(&uncompressedSize) + sizeof(uncompressedSize),
- &*contOut.begin());
-
- const size_t bufferEstimate = impl::zlib_compressBound(stream.size()); //upper limit for buffer size, larger than input size!!!
-
- contOut.resize(contOut.size() + bufferEstimate);
-
- const size_t bytesWritten = impl::zlib_compress(&*stream.begin(),
- stream.size(),
- &*contOut.begin() + contOut.size() - bufferEstimate,
- bufferEstimate,
- level); //throw ZlibInternalError
- if (bytesWritten < bufferEstimate)
- contOut.resize(contOut.size() - (bufferEstimate - bytesWritten)); //caveat: unsigned arithmetics
- //caveat: physical memory consumption still *unchanged*!
- }
- return contOut;
-}
-
-
-template <class BinContainer>
-BinContainer decompress(const BinContainer& stream) //throw ZlibInternalError
-{
- BinContainer contOut;
- if (!stream.empty()) //don't dereference iterator into empty container!
- {
- //retrieve size of uncompressed data
- uint64_t uncompressedSize = 0; //use portable number type!
- if (stream.size() < sizeof(uncompressedSize))
- throw ZlibInternalError();
- std::copy(&*stream.begin(),
- &*stream.begin() + sizeof(uncompressedSize),
- reinterpret_cast<std::byte*>(&uncompressedSize));
- //attention: contOut MUST NOT be empty! Else it will pass a nullptr to zlib_decompress() => Z_STREAM_ERROR although "uncompressedSize == 0"!!!
- //secondary bug: don't dereference iterator into empty container!
- if (uncompressedSize == 0) //cannot be 0: compress() directly maps empty -> empty container skipping zlib!
- throw ZlibInternalError();
-
- try
- {
- contOut.resize(static_cast<size_t>(uncompressedSize)); //throw std::bad_alloc
- }
- catch (std::bad_alloc&) //most likely due to data corruption!
- {
- throw ZlibInternalError();
- }
-
- const size_t bytesWritten = impl::zlib_decompress(&*stream.begin() + sizeof(uncompressedSize),
- stream.size() - sizeof(uncompressedSize),
- &*contOut.begin(),
- static_cast<size_t>(uncompressedSize)); //throw ZlibInternalError
- if (bytesWritten != static_cast<size_t>(uncompressedSize))
- throw ZlibInternalError();
- }
- return contOut;
-}
-}
-
-#endif //ZLIB_WRAP_H_428597064566
diff --git a/zen/xml_io.cpp b/zen/xml_io.cpp
deleted file mode 100755
index dd116ef0..00000000
--- a/zen/xml_io.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#include "xml_io.h"
-#include "file_access.h"
-#include "file_io.h"
-
-using namespace zen;
-
-
-XmlDoc zen::loadXmlDocument(const Zstring& filePath) //throw FileError
-{
- FileInput fileIn(filePath, nullptr /*notifyUnbufferedIO*/); //throw FileError, ErrorFileLocked
- const size_t blockSize = fileIn.getBlockSize();
- const std::string xmlPrefix = "<?xml version=";
- bool xmlPrefixChecked = false;
-
- std::string buffer;
- for (;;)
- {
- buffer.resize(buffer.size() + blockSize);
- const size_t bytesRead = fileIn.read(&*(buffer.end() - blockSize), blockSize); //throw FileError, ErrorFileLocked, (X); return "bytesToRead" bytes unless end of stream!
- buffer.resize(buffer.size() - blockSize + bytesRead); //caveat: unsigned arithmetics
-
- //quick test whether input is an XML: avoid loading large binary files up front!
- if (!xmlPrefixChecked && buffer.size() >= xmlPrefix.size() + strLength(BYTE_ORDER_MARK_UTF8))
- {
- xmlPrefixChecked = true;
- if (!startsWith(buffer, xmlPrefix) &&
- !startsWith(buffer, BYTE_ORDER_MARK_UTF8 + xmlPrefix)) //allow BOM!
- throw FileError(replaceCpy(_("File %x does not contain a valid configuration."), L"%x", fmtPath(filePath)));
- }
-
- if (bytesRead < blockSize) //end of file
- break;
- }
-
- try
- {
- return parse(buffer); //throw XmlParsingError
- }
- catch (const XmlParsingError& e)
- {
- throw FileError(
- replaceCpy(replaceCpy(replaceCpy(_("Error parsing file %x, row %y, column %z."),
- L"%x", fmtPath(filePath)),
- L"%y", numberTo<std::wstring>(e.row + 1)),
- L"%z", numberTo<std::wstring>(e.col + 1)));
- }
-}
-
-
-void zen::saveXmlDocument(const XmlDoc& doc, const Zstring& filePath) //throw FileError
-{
- const std::string stream = serialize(doc); //noexcept
-
- //only update XML file if there are real changes
- try
- {
- if (getFileSize(filePath) == stream.size()) //throw FileError
- if (loadBinContainer<std::string>(filePath, nullptr /*notifyUnbufferedIO*/) == stream) //throw FileError
- return;
- }
- catch (FileError&) {}
-
- saveBinContainer(filePath, stream, nullptr /*notifyUnbufferedIO*/); //throw FileError
-}
-
-
-void zen::checkForMappingErrors(const XmlIn& xmlInput, const Zstring& filePath) //throw FileError
-{
- if (xmlInput.errorsOccured())
- {
- std::wstring msg = _("The following XML elements could not be read:") + L"\n";
- for (const std::wstring& elem : xmlInput.getErrorsAs<std::wstring>())
- msg += L"\n" + elem;
-
- throw FileError(replaceCpy(_("Configuration file %x is incomplete. The missing elements will be set to their default values."), L"%x", fmtPath(filePath)) + L"\n\n" + msg);
- }
-}
diff --git a/zen/xml_io.h b/zen/xml_io.h
deleted file mode 100755
index 81b45aa1..00000000
--- a/zen/xml_io.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef XML_IO_H_8914759321263879
-#define XML_IO_H_8914759321263879
-
-#include <zenxml/xml.h>
-#include "file_error.h"
-
-
-//combine zen::Xml and zen file I/O
-//-> loadXmlDocument vs loadStream:
-//1. better error reporting
-//2. quick exit if (potentially large) input file is not an XML
-namespace zen
-{
-XmlDoc loadXmlDocument(const Zstring& filePath); //throw FileError
-void checkForMappingErrors(const XmlIn& xmlInput, const Zstring& filePath); //throw FileError
-
-void saveXmlDocument(const XmlDoc& doc, const Zstring& filePath); //throw FileError
-}
-
-#endif //XML_IO_H_8914759321263879
diff --git a/zenXml/zenxml/bind.h b/zenXml/zenxml/bind.h
deleted file mode 100755
index 28f02745..00000000
--- a/zenXml/zenxml/bind.h
+++ /dev/null
@@ -1,390 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef BIND_H_9081740816593478258435
-#define BIND_H_9081740816593478258435
-
-#include <set>
-#include "cvrt_struc.h"
-#include "parser.h"
-#include "io.h"
-
-
-namespace zen
-{
-/**
-\file
-\brief Map user data types to XML
-*/
-
-///Load XML document from a file
-/**
-Convenience function that does nothing more than calling loadStream() and parse().
-
-\tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...
-\param filename Input file name
-\returns The loaded XML document
-\throw XmlFileError
-\throw XmlParsingError
-*/
-template <class String> inline
-XmlDoc load(const String& filename) //throw XmlFileError, XmlParsingError
-{
- std::string stream = loadStream(filename); //throw XmlFileError
- return parse(stream); //throw XmlParsingError
-}
-
-
-///Save XML document to a file
-/**
-Convenience function that does nothing more than calling serialize() and saveStream().
-
-\tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...
-\param doc The XML document to save
-\param filename Output file name
-\param lineBreak Line break, default: carriage return + new line
-\param indent Indentation, default: four space characters
-\throw XmlFileError
-*/
-template <class String> inline
-void save(const XmlDoc& doc,
- const String& filename,
- const std::string& lineBreak = "\r\n",
- const std::string& indent = " ") //throw XmlFileError
-{
- std::string stream = serialize(doc, lineBreak, indent); //noexcept
- saveStream(stream, filename); //throw XmlFileError
-}
-
-
-///Proxy class to conveniently convert user data into XML structure
-class XmlOut
-{
-public:
- ///Construct an output proxy for an XML document
- /**
- \code
- zen::XmlDoc doc;
-
- zen::XmlOut out(doc);
- out["elem1"]( 1); //
- out["elem2"]( 2); //write data into XML elements
- out["elem3"](-3); //
-
- save(doc, "out.xml"); //throw XmlFileError
- \endcode
- Output:
- \verbatim
- <?xml version="1.0" encoding="utf-8"?>
- <Root>
- <elem1>1</elem1>
- <elem2>2</elem2>
- <elem3>-3</elem3>
- </Root>
- \endverbatim
- */
- XmlOut(XmlDoc& doc) : ref_(&doc.root()) {}
- ///Construct an output proxy for a single XML element
- /**
- \sa XmlOut(XmlDoc& doc)
- */
- XmlOut(XmlElement& element) : ref_(&element) {}
-
- ///Retrieve a handle to an XML child element for writing
- /**
- The child element will be created if it is not yet existing.
- \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...
- \param name The name of the child element
- */
- template <class String>
- XmlOut operator[](const String& name) const
- {
- const std::string utf8name = utfTo<std::string>(name);
- XmlElement* child = ref_->getChild(utf8name);
- return child ? *child : ref_->addChild(utf8name);
- }
-
- ///Write user data to the underlying XML element
- /**
- This conversion requires a specialization of zen::writeText() or zen::writeStruc() for type T.
- \tparam T User type that is converted into an XML element value.
- */
- template <class T>
- void operator()(const T& value) { writeStruc(value, *ref_); }
-
- ///Write user data to an XML attribute
- /**
- This conversion requires a specialization of zen::writeText() for type T.
- \code
- zen::XmlDoc doc;
-
- zen::XmlOut out(doc);
- out["elem"].attribute("attr1", 1); //
- out["elem"].attribute("attr2", 2); //write data into XML attributes
- out["elem"].attribute("attr3", -3); //
-
- save(doc, "out.xml"); //throw XmlFileError
- \endcode
- Output:
- \verbatim
- <?xml version="1.0" encoding="utf-8"?>
- <Root>
- <elem attr1="1" attr2="2" attr3="-3"/>
- </Root>
- \endverbatim
-
- \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...
- \tparam T String-convertible user data type: e.g. any string-like type, all built-in arithmetic numbers
- \sa XmlElement::setAttribute()
- */
- template <class String, class T>
- void attribute(const String& name, const T& value) { ref_->setAttribute(name, value); }
-
- ///Return a reference to the underlying Xml element
- XmlElement& ref() { return *ref_; }
-
-private:
- XmlElement* ref_; //always bound!
-};
-
-
-///Proxy class to conveniently convert XML structure to user data
-class XmlIn
-{
- class ErrorLog;
-
-public:
- ///Construct an input proxy for an XML document
- /**
- \code
- zen::XmlDoc doc;
- ... //load document
- zen::XmlIn in(doc);
- in["elem1"](value1); //
- in["elem2"](value2); //read data from XML elements into variables "value1", "value2", "value3"
- in["elem3"](value3); //
- \endcode
- */
- XmlIn(const XmlDoc& doc) : log_(std::make_shared<ErrorLog>()) { refList_.push_back(&doc.root()); }
- ///Construct an input proxy for a single XML element, may be nullptr
- /**
- \sa XmlIn(const XmlDoc& doc)
- */
- XmlIn(const XmlElement* element) : log_(std::make_shared<ErrorLog>()) { refList_.push_back(element); }
- ///Construct an input proxy for a single XML element
- /**
- \sa XmlIn(const XmlDoc& doc)
- */
- XmlIn(const XmlElement& element) : log_(std::make_shared<ErrorLog>()) { refList_.push_back(&element); }
-
- ///Retrieve a handle to an XML child element for reading
- /**
- It is \b not an error if the child element does not exist, but only later if a conversion to user data is attempted.
- \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...
- \param name The name of the child element
- */
- template <class String>
- XmlIn operator[](const String& name) const
- {
- std::vector<const XmlElement*> childList;
-
- if (refIndex_ < refList_.size())
- {
- auto iterPair = refList_[refIndex_]->getChildren(name);
- std::for_each(iterPair.first, iterPair.second,
- [&](const XmlElement& child) { childList.push_back(&child); });
- }
-
- return XmlIn(childList, childList.empty() ? getChildNameFormatted(name) : std::string(), log_);
- }
-
- ///Refer to next sibling element with the same name
- /**
- <b>Example:</b> Loop over all XML child elements named "Item"
- \verbatim
- <?xml version="1.0" encoding="utf-8"?>
- <Root>
- <Item>1</Item>
- <Item>3</Item>
- <Item>5</Item>
- </Root>
- \endverbatim
-
- \code
- zen::XmlIn in(doc);
- ...
- for (zen::XmlIn child = in["Item"]; child; child.next())
- {
- ...
- }
- \endcode
- */
- void next() { ++refIndex_; }
-
- ///Read user data from the underlying XML element
- /**
- This conversion requires a specialization of zen::readText() or zen::readStruc() for type T.
- \tparam T User type that receives the data
- \return "true" if data was read successfully
- */
- template <class T>
- bool operator()(T& value) const
- {
- if (refIndex_ < refList_.size())
- {
- bool success = readStruc(*refList_[refIndex_], value);
- if (!success)
- log_->notifyConversionError(getNameFormatted());
- return success;
- }
- else
- {
- log_->notifyMissingElement(getNameFormatted());
- return false;
- }
- }
-
- ///Read user data from an XML attribute
- /**
- This conversion requires a specialization of zen::readText() for type T.
-
- \code
- zen::XmlDoc doc;
- ... //load document
- zen::XmlIn in(doc);
- in["elem"].attribute("attr1", value1); //
- in["elem"].attribute("attr2", value2); //read data from XML attributes into variables "value1", "value2", "value3"
- in["elem"].attribute("attr3", value3); //
- \endcode
-
- \tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...
- \tparam T String-convertible user data type: e.g. any string-like type, all built-in arithmetic numbers
- \returns "true" if the attribute was found and the conversion to the output value was successful.
- \sa XmlElement::getAttribute()
- */
- template <class String, class T>
- bool attribute(const String& name, T& value) const
- {
- if (refIndex_ < refList_.size())
- {
- bool success = refList_[refIndex_]->getAttribute(name, value);
- if (!success)
- log_->notifyMissingAttribute(getNameFormatted(), utfTo<std::string>(name));
- return success;
- }
- else
- {
- log_->notifyMissingElement(getNameFormatted());
- return false;
- }
- }
-
- ///Return a pointer to the underlying Xml element, may be nullptr
- const XmlElement* get() const { return refIndex_ < refList_.size() ? refList_[refIndex_] : nullptr; }
-
- ///Test whether the underlying XML element exists
- /**
- \code
- XmlIn in(doc);
- XmlIn child = in["elem1"];
- if (child)
- ...
- \endcode
- Use member pointer as implicit conversion to bool (C++ Templates - Vandevoorde/Josuttis; chapter 20)
- */
- explicit operator bool() const { return get() != nullptr; }
-
- ///Notifies errors while mapping the XML to user data
- /**
- Error logging is shared by each hiearchy of XmlIn proxy instances that are created from each other. Consequently it doesn't matter which instance you query for errors:
- \code
- XmlIn in(doc);
- XmlIn inItem = in["item1"];
-
- int value = 0;
- inItem(value); //let's assume this conversion failed
-
- assert(in.errorsOccured() == inItem.errorsOccured());
- assert(in.getErrorsAs<std::string>() == inItem.getErrorsAs<std::string>());
- \endcode
-
- Note that error logging is \b NOT global, but owned by all instances of a hierarchy of XmlIn proxies.
- Therefore it's safe to use unrelated XmlIn proxies in multiple threads.
- \n\n
- However be aware that the chain of connected proxy instances will be broken once you call XmlIn::get() to retrieve the underlying pointer.
- Errors that occur when working with this pointer are not logged by the original set of related instances.
- */
- bool errorsOccured() const { return !log_->elementList().empty(); }
-
- ///Get a list of XML element and attribute names which failed to convert to user data.
- /**
- \tparam String Arbitrary string class: e.g. std::string, std::wstring, wxString, MyStringClass, ...
- \returns A list of XML element and attribute names, empty list if no errors occured.
- */
- template <class String>
- std::vector<String> getErrorsAs() const
- {
- std::vector<String> output;
- const auto& elements = log_->elementList();
- std::transform(elements.begin(), elements.end(), std::back_inserter(output), [](const std::string& str) { return utfTo<String>(str); });
- return output;
- }
-
-private:
- XmlIn(const std::vector<const XmlElement*>& siblingList, const std::string& elementNameFmt, const std::shared_ptr<ErrorLog>& sharedlog) :
- refList_(siblingList), formattedName_(elementNameFmt), log_(sharedlog)
- { assert((!siblingList.empty() && elementNameFmt.empty()) || (siblingList.empty() && !elementNameFmt.empty())); }
-
- static std::string getNameFormatted(const XmlElement& elem) //"<Root> <Level1> <Level2>"
- {
- return (elem.parent() ? getNameFormatted(*elem.parent()) + " " : std::string()) + "<" + elem.getNameAs<std::string>() + ">";
- }
-
- std::string getNameFormatted() const
- {
- if (refIndex_ < refList_.size())
- {
- assert(formattedName_.empty());
- return getNameFormatted(*refList_[refIndex_]);
- }
- else
- return formattedName_;
- }
-
- std::string getChildNameFormatted(const std::string& childName) const
- {
- std::string parentName = getNameFormatted();
- return (parentName.empty() ? std::string() : (parentName + " ")) + "<" + childName + ">";
- }
-
- class ErrorLog
- {
- public:
- void notifyConversionError (const std::string& displayName) { insert(displayName); }
- void notifyMissingElement (const std::string& displayName) { insert(displayName); }
- void notifyMissingAttribute(const std::string& displayName, const std::string& attribName) { insert(displayName + " @" + attribName); }
-
- const std::vector<std::string>& elementList() const { return failedElements; }
-
- private:
- void insert(const std::string& newVal)
- {
- if (usedElements.insert(newVal).second)
- failedElements.push_back(newVal);
- }
-
- std::vector<std::string> failedElements; //unique list of failed elements
- std::set<std::string> usedElements;
- };
-
- std::vector<const XmlElement*> refList_; //all sibling elements with same name (all pointers bound!)
- size_t refIndex_ = 0; //this sibling's index in refList_
- std::string formattedName_; //contains full and formatted element name if (and only if) refList_ is empty
- std::shared_ptr<ErrorLog> log_; //always bound
-};
-}
-
-#endif //BIND_H_9081740816593478258435
diff --git a/zenXml/zenxml/error.h b/zenXml/zenxml/error.h
deleted file mode 100755
index ceb36816..00000000
--- a/zenXml/zenxml/error.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef ERROR_H_01873461843302148947321
-#define ERROR_H_01873461843302148947321
-
-namespace zen
-{
-///Exception base class for zen::Xml
-struct XmlError
-{
- virtual ~XmlError() {}
-};
-}
-
-#endif //ERROR_H_01873461843302148947321
diff --git a/zenXml/zenxml/io.h b/zenXml/zenxml/io.h
deleted file mode 100755
index 6d5a21d5..00000000
--- a/zenXml/zenxml/io.h
+++ /dev/null
@@ -1,98 +0,0 @@
-// *****************************************************************************
-// * This file is part of the FreeFileSync project. It is distributed under *
-// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
-// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
-// *****************************************************************************
-
-#ifndef IO_H_8917640501480763248343343
-#define IO_H_8917640501480763248343343
-
-#include <cstdio>
-#include <cerrno>
-#include <zen/scope_guard.h>
-#include <zen/utf.h>
-#include "error.h"
-
-
-namespace zen
-{
-/**
-\file
-\brief Save and load byte streams from files
-*/
-
-
-
-///Exception thrown due to failed file I/O
-struct XmlFileError : public XmlError
-{
- using ErrorCode = int;
-
- explicit XmlFileError(ErrorCode ec) : lastError(ec) {}
- ///Native error code: errno
- ErrorCode lastError;
-};
-
-
-
-
-///Save byte stream to a file
-/**
-\tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...
-\param stream Input byte stream
-\param filename Output file name
-\throw XmlFileError
-*/
-template <class String>
-void saveStream(const std::string& stream, const String& filename) //throw XmlFileError
-{
- FILE* handle = ::fopen(utfTo<std::string>(filename).c_str(), "w");
- if (!handle)
- throw XmlFileError(errno);
- ZEN_ON_SCOPE_EXIT(::fclose(handle));
-
- const size_t bytesWritten = ::fwrite(stream.c_str(), 1, stream.size(), handle);
- if (::ferror(handle) != 0)
- throw XmlFileError(errno);
-
- (void)bytesWritten;
- assert(bytesWritten == stream.size());
-}
-
-
-///Load byte stream from a file
-/**
-\tparam String Arbitrary string-like type: e.g. std::string, wchar_t*, char[], wchar_t, wxString, MyStringClass, ...
-\param filename Input file name
-\return Output byte stream
-\throw XmlFileError
-*/
-template <class String>
-std::string loadStream(const String& filename) //throw XmlFileError
-{
- FILE* handle = ::fopen(utfTo<std::string>(filename).c_str(), "r");
- if (!handle)
- throw XmlFileError(errno);
- ZEN_ON_SCOPE_EXIT(::fclose(handle));
-
- std::string stream;
- const size_t blockSize = 64 * 1024;
- do
- {
- stream.resize(stream.size() + blockSize); //let's pray std::string implements exponential growth!
-
- const size_t bytesRead = ::fread(&*(stream.end() - blockSize), 1, blockSize, handle);
- if (::ferror(handle))
- throw XmlFileError(errno);
- if (bytesRead > blockSize)
- throw XmlFileError(0);
- if (bytesRead < blockSize)
- stream.resize(stream.size() - blockSize + bytesRead); //caveat: unsigned arithmetics
- }
- while (!::feof(handle));
-
- return stream;
-}
-}
-
-#endif //IO_H_8917640501480763248343343
bgstack15